Class: MenuWidget
- Inherits:
-
Object
- Object
- MenuWidget
- Defined in:
- lib/delve/widgets/menu.rb
Instance Method Summary collapse
- #draw(display) ⇒ Object
-
#initialize(x, y, items, foreground = :white, background = :black, highlight = :red) ⇒ MenuWidget
constructor
A new instance of MenuWidget.
- #next ⇒ Object
- #previous ⇒ Object
- #select(key) ⇒ Object
- #selected_item ⇒ Object
Constructor Details
#initialize(x, y, items, foreground = :white, background = :black, highlight = :red) ⇒ MenuWidget
Returns a new instance of MenuWidget.
2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/delve/widgets/menu.rb', line 2 def initialize(x, y, items, foreground=:white, background=:black, highlight=:red) raise 'Cannot initialize menu widget when x is nil' unless x raise 'Cannot initialize menu widget when y is nil' unless y raise 'Cannot initialize menu widget when items is nil' unless items raise 'Cannot initialize menu widget when items is empty' if items.empty? @x = x @y = y @items = items @selected_index = 0 @fg = foreground @bg = background @highlight = highlight end |
Instance Method Details
#draw(display) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/delve/widgets/menu.rb', line 41 def draw(display) raise 'Cannot draw text when display is nil' unless display items = 0 @items.keys.each do |key| chars = 0 y = determine_y display @items[key].each_char do |c| fg = @selected_index == items ? @bg : @fg bg = @selected_index == items ? @fg : @bg x = determine_x display text_color = (c == key || c == key.upcase) ? @highlight : fg display.draw(x + chars, y + items, c, text_color, bg) chars += 1 end items += 1 end end |
#next ⇒ Object
22 23 24 25 26 27 |
# File 'lib/delve/widgets/menu.rb', line 22 def next @selected_index += 1 if @selected_index >= @items.keys.length @selected_index = 0 end end |
#previous ⇒ Object
29 30 31 32 33 34 |
# File 'lib/delve/widgets/menu.rb', line 29 def previous @selected_index -= 1 if @selected_index < 0 @selected_index = @items.keys.length - 1 end end |
#select(key) ⇒ Object
36 37 38 39 |
# File 'lib/delve/widgets/menu.rb', line 36 def select(key) return false if !@items.keys.include? key @selected_index = @items.keys.index key end |
#selected_item ⇒ Object
17 18 19 20 |
# File 'lib/delve/widgets/menu.rb', line 17 def selected_item key = @items.keys[@selected_index] @items[key] end |