Class: PPCurses::MenuBar
- Defined in:
- lib/ppcurses/menu_bar.rb
Overview
The menubar is activated and deactivated by the ESCAPE key.
Any responders further down the responder chain will never receive ESCAPE key events.
Instance Attribute Summary collapse
-
#selected ⇒ Object
Returns the value of attribute selected.
Attributes inherited from Responder
Instance Method Summary collapse
- #add_menu_item(menu_item) ⇒ Object
-
#initialize ⇒ MenuBar
constructor
A new instance of MenuBar.
- #key_down(key) ⇒ Object
- #remove_menu_item(menu_item) ⇒ Object
-
#show(screen) ⇒ Object
Expects screen to be a PPCurses::Screen object Need to convert to work with a window or a view.
Methods inherited from Responder
#accepts_first_responder, #become_first_responder, isa, #resign_first_responder
Constructor Details
#initialize ⇒ MenuBar
Returns a new instance of MenuBar.
13 14 15 16 |
# File 'lib/ppcurses/menu_bar.rb', line 13 def initialize @menu_items = [] @selected = false end |
Instance Attribute Details
#selected ⇒ Object
Returns the value of attribute selected.
11 12 13 |
# File 'lib/ppcurses/menu_bar.rb', line 11 def selected @selected end |
Instance Method Details
#add_menu_item(menu_item) ⇒ Object
47 48 49 |
# File 'lib/ppcurses/menu_bar.rb', line 47 def () @menu_items.push() end |
#key_down(key) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/ppcurses/menu_bar.rb', line 55 def key_down( key ) if key == ESCAPE @selected = !@selected return end if @selected @menu_items.each do || if key == .key .action.call return end end return end @next_responder.key_down(key) unless @next_responder.nil? end |
#remove_menu_item(menu_item) ⇒ Object
51 52 53 |
# File 'lib/ppcurses/menu_bar.rb', line 51 def () @menu_items.delete() end |
#show(screen) ⇒ Object
Expects screen to be a PPCurses::Screen object Need to convert to work with a window or a view.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/ppcurses/menu_bar.rb', line 20 def show(screen) screen.set_pos_by_point(ZERO_POINT) if @selected screen.attron(A_REVERSE) else screen.attron(A_UNDERLINE) end @menu_items.each do || screen.addstr( "#{} ") end p = screen.cur_point screen.addstr( ' ' * (screen.width - p.x) ) if @selected screen.attroff(A_REVERSE) else screen.attroff(A_UNDERLINE) end end |