class PPCurses::Menu

noinspection RubyResolve

Attributes

selection[RW]

Public Instance Methods

handle_menu_selection(c) click to toggle source
# File lib/ppcurses/menu/Menu.rb, line 48
def handle_menu_selection(c)
  n_choices = @menu_items.length

  if c == KEY_UP
    (@selection == 0) ? @selection = n_choices - 1 : @selection -= 1
    self.show
    return true
  end

  if c == KEY_DOWN
    (@selection == n_choices-1) ? @selection = 0 : @selection += 1
    self.show
    return true
  end

  if c == ENTER && !@global_action.nil?

    unless @global_action.nil?
      @global_action.execute
    end

    self.show
    return true
  end

  item_consumed = @menu_items[@selection].handle_key(c)
  if item_consumed
    self.show
  end

  item_consumed
end
menu_selection() click to toggle source
set_global_action(action) click to toggle source
# File lib/ppcurses/menu/Menu.rb, line 25
def set_global_action(action)
  PPCurses.implements_protocol(action, %w(execute))
  @global_action = action
end
show() click to toggle source
# File lib/ppcurses/menu/Menu.rb, line 7
def show
  @win.box(self.side_wall_char, self.top_bot_wall_char)
  y = 2
  x = 2

  (0...@menu_items.length).each { |i|
    @win.setpos(y, x)
    @win.attron(Curses::A_REVERSE) if @selection == i
    @win.addstr(@menu_items[i].display_string)
    @win.attroff(Curses::A_REVERSE) if @selection == i
    y += 1
  }

   @win.refresh

   @sub_menu.show if @sub_menu
end