class Redwood::HorizontalSelector

Attributes

changed_by_user[RW]
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 8
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
  @changed_by_user = false
end

Public Instance Methods

can_set_to?(val) click to toggle source
# File lib/sup/horizontal_selector.rb, line 23
def can_set_to? val
  @vals.include? val
end
line(width=nil) click to toggle source
# File lib/sup/horizontal_selector.rb, line 29
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 48
def roll_left
  @selection = (@selection - 1) % @labels.length
  @changed_by_user = true
end
roll_right() click to toggle source
# File lib/sup/horizontal_selector.rb, line 53
def roll_right
  @selection = (@selection + 1) % @labels.length
  @changed_by_user = true
end
set_to(val) click to toggle source
# File lib/sup/horizontal_selector.rb, line 18
def set_to val
  raise UnknownValue, val.inspect unless can_set_to? val
  @selection = @vals.index(val)
end
val() click to toggle source
# File lib/sup/horizontal_selector.rb, line 27
def val; @vals[@selection] end