class PPCurses::Form

Attributes

selected_element[RW]

Public Class Methods

new() click to toggle source

Screen should be of type Curses::Window

Calls superclass method
# File lib/ppcurses/form/form.rb, line 10
def initialize
  super
  origin = Point.new( 1, 1 )
  setFrameOrigin(origin)
  @elements = []
end

Public Instance Methods

add(element) click to toggle source

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=

# 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() click to toggle source

clears or resets all values of elements in the form

# File lib/ppcurses/form/form.rb, line 84
def clear
  for i in 0..@elements.length - 1
    @elements[i].clear
  end
end
display(screen) click to toggle source

TODO – call display of subview???

# 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 ) click to toggle source
# 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?() click to toggle source
# File lib/ppcurses/form/form.rb, line 41
def submitted?
  @button_pair.button1.pushed
end

Protected Instance Methods

set_selected_element(new_element) click to toggle source

# File lib/ppcurses/form/form.rb, line 95
def set_selected_element(new_element)

  unless @selected_element.nil?
    @selected_element.selected=false
  end

  @selected_element = new_element
  @selected_element.selected=true

end