class Redwood::HorizontalSelector

Attributes

label[RW]

Public Class Methods

new(label, vals, labels, base_color=:horizontal_selector_unselected_color, selected_color=:horizontal_selector_selected_color) click to toggle source
# File lib/sup/horizontal-selector.rb, line 6
def initialize label, vals, labels, base_color=:horizontal_selector_unselected_color, selected_color=:horizontal_selector_selected_color
  @label = label
  @vals = vals
  @labels = labels
  @base_color = base_color
  @selected_color = selected_color
  @selection = 0
end

Public Instance Methods

line(width=nil) click to toggle source
# File lib/sup/horizontal-selector.rb, line 19
def line width=nil
  label =
    if width
      sprintf "%#{width}s ", @label
    else
      "#{@label} "
    end

  [[@base_color, label]] + 
    (0 ... @labels.length).inject([]) do |array, i|
      array + [
        if i == @selection
          [@selected_color, @labels[i]]
        else
          [@base_color, @labels[i]]
        end] + [[@base_color, "  "]]
    end + [[@base_color, ""]]
end
roll_left() click to toggle source
# File lib/sup/horizontal-selector.rb, line 38
def roll_left
  @selection = (@selection - 1) % @labels.length
end
roll_right() click to toggle source
# File lib/sup/horizontal-selector.rb, line 42
def roll_right
  @selection = (@selection + 1) % @labels.length
end
set_to(val;) click to toggle source
# File lib/sup/horizontal-selector.rb, line 15
def set_to val; @selection = @vals.index(val) end
val() click to toggle source
# File lib/sup/horizontal-selector.rb, line 17
def val; @vals[@selection] end