3 class HorizontalSelector
6 def initialize label, vals, labels, base_color=:horizontal_selector_unselected_color, selected_color=:horizontal_selector_selected_color
10 @base_color = base_color
11 @selected_color = selected_color
17 @selection = @vals.index(val)
19 error "Invalid option ", val.inspect, " (valid options: ", @vals.inspect, ")"
23 def val; @vals[@selection] end
28 sprintf "%#{width}s ", @label
33 [[@base_color, label]] +
34 (0 ... @labels.length).inject([]) do |array, i|
37 [@selected_color, @labels[i]]
39 [@base_color, @labels[i]]
40 end] + [[@base_color, " "]]
41 end + [[@base_color, ""]]
45 @selection = (@selection - 1) % @labels.length
49 @selection = (@selection + 1) % @labels.length