Class: PPCurses::Form
- Inherits:
-
View
- Object
- Responder
- ResponderManager
- View
- PPCurses::Form
- Defined in:
- lib/ppcurses/form/form.rb
Instance Attribute Summary collapse
-
#selected_element ⇒ Object
Returns the value of attribute selected_element.
Attributes inherited from View
Attributes inherited from ResponderManager
Attributes inherited from Responder
Instance Method Summary collapse
-
#add(element) ⇒ Object
Formal protocol required Adds an element to the form.
-
#clear ⇒ Object
clears or resets all values of elements in the form.
-
#display(screen) ⇒ Object
TODO – call display of subview???.
-
#initialize ⇒ Form
constructor
Screen should be of type Curses::Window.
- #key_down(key) ⇒ Object
- #submitted? ⇒ Boolean
Methods inherited from View
#setFrameOrigin, #setFrameSize
Methods inherited from ResponderManager
#accepts_first_responder, #make_first_responder
Methods inherited from Responder
#accepts_first_responder, #become_first_responder, isa, #resign_first_responder
Constructor Details
#initialize ⇒ Form
Screen should be of type Curses::Window
10 11 12 13 14 15 |
# File 'lib/ppcurses/form/form.rb', line 10 def initialize super origin = Point.new( 1, 1 ) setFrameOrigin(origin) @elements = [] end |
Instance Attribute Details
#selected_element ⇒ Object
Returns the value of attribute selected_element.
5 6 7 |
# File 'lib/ppcurses/form/form.rb', line 5 def selected_element @selected_element end |
Instance Method Details
#add(element) ⇒ Object
Formal protocol required Adds an element to the form. Elements are rendered in the order they are added.
An element must implement the following protocol:
-
def show(screen)
-
def height
-
def set_curs_pos(screen)
-
def key_down(key)
-
def selected=
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/ppcurses/form/form.rb', line 28 def add (element) PPCurses.implements_protocol( element, %w(show height set_curs_pos key_down selected= clear)) @elements.push(element) if @selected_element.nil? set_selected_element(@elements[0]) end @frame.size.height += element.height end |
#clear ⇒ Object
clears or resets all values of elements in the form
84 85 86 87 88 |
# File 'lib/ppcurses/form/form.rb', line 84 def clear for i in 0..@elements.length - 1 @elements[i].clear end end |
#display(screen) ⇒ Object
TODO – call display of subview???
68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/ppcurses/form/form.rb', line 68 def display(screen) y = @frame.origin.y x = @frame.origin.x for i in 0..@elements.length - 1 element = @elements[i] screen.setpos(y, x) element.show(screen) y += element.height end @selected_element.set_curs_pos(screen) unless @selected_element.nil? end |
#key_down(key) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/ppcurses/form/form.rb', line 46 def key_down( key ) if key == KEY_UP or key == KEY_DOWN or key == TAB selected_index = @elements.index(@selected_element) n_choices = @elements.length if key == KEY_DOWN or key == TAB (selected_index == n_choices-1) ? next_selection = 0 : next_selection = selected_index + 1 else (selected_index == 0) ? next_selection = n_choices - 1 : next_selection = selected_index - 1 end set_selected_element(@elements[next_selection]) return end @selected_element.key_down(key) end |
#submitted? ⇒ Boolean
41 42 43 |
# File 'lib/ppcurses/form/form.rb', line 41 def submitted? ..pushed end |