class PPCurses::BaseMenu

noinspection RubyResolve

Attributes

menu_items[RW]
selection[RW]
side_wall_char[RW]
top_bot_wall_char[RW]

Public Class Methods

new(menu_items, action_items=nil) click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 13
def initialize(menu_items, action_items=nil)
  @selection=0
  @max_menu_width = 0

  @side_wall_char = '|'
  @top_bot_wall_char = '-'

  case menu_items[0]
    when String
      # Case 1: menu_items is a list of strings, with an associated action list
      build_menu_items(menu_items, action_items)
    else
      # Case 2: Received a list of MenuItem, or objects that implement
      # MenuItem protocol
      @menu_items=menu_items
  end

  find_max_menu_width

  create_window

end

Public Instance Methods

build_menu_items(menu_items, action_items) click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 36
def build_menu_items(menu_items, action_items)
  @menu_items = []

  (0...menu_items.length).each { |i|
    menu_item = MenuItem.new(menu_items[i])
    unless action_items.nil?
      menu_item.target= action_items[i].method(:execute)
    end

    @menu_items.push(menu_item)
  }
end
close() click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 83
def close
  @win.close
end
create_window() click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 61
def create_window
  w_height = @menu_items.length + 4
  w_width = @max_menu_width + 4
  @win = PPCurses::Window.new(w_height,w_width,(Curses.lines-w_height) / 2, (Curses.cols-w_width)/2)
  @win.timeout=-1
end
find_max_menu_width() click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 49
def find_max_menu_width
  @max_menu_width = 0
  (0...menu_items.length).each { |i|
    display = menu_items[i].display_string
    @max_menu_width = display.length if display.length > @max_menu_width
  }
end
hide() click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 72
def hide
  @win.clear
  @win.refresh

  @sub_menu.hide if @sub_menu
end
selected_menu_name() click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 79
def selected_menu_name
  @menu_items[@selection].title
end
set_origin( point ) click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 57
def set_origin( point )
  @win.move_to_point( point )
end
set_sub_menu(menu) click to toggle source
# File lib/ppcurses/menu/BaseMenu.rb, line 68
def set_sub_menu(menu)
  @sub_menu = menu
end