From 6c90cdbb2c32be26662e2214a236494e4e629053 Mon Sep 17 00:00:00 2001 From: wmorgan Date: Sat, 8 Dec 2007 22:13:33 +0000 Subject: [PATCH] whoops, forgot to add this to svn git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@748 5c8cc53c-5e98-4d25-b20a-d8db53a31250 --- lib/sup/horizontal-selector.rb | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 lib/sup/horizontal-selector.rb diff --git a/lib/sup/horizontal-selector.rb b/lib/sup/horizontal-selector.rb new file mode 100644 index 0000000..8ef30fe --- /dev/null +++ b/lib/sup/horizontal-selector.rb @@ -0,0 +1,66 @@ +module Redwood + +class HorizontalSelector + attr_accessor :label + + 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 + + def set_to val; @selection = @vals.index(val) end + + def val; @vals[@selection] end + + def old_line width=nil + label = + if width + sprintf "%#{width}s ", @label + else + "#{@label} " + end + + [[:none, label]] + + (0 ... @labels.length).inject([]) do |array, i| + array + [ + if i == @selection + [@selected_color, "[" + @labels[i] + "]"] + else + [@base_color, " " + @labels[i] + " "] + end] + [[:none, " "]] + end + [[:none, ""]] + end + + def line width=nil + label = + if width + sprintf "%#{width}s ", @label + else + "#{@label} " + end + + [[:none, label]] + + (0 ... @labels.length).inject([]) do |array, i| + array + [ + if i == @selection + [@selected_color, @labels[i]] + else + [@base_color, @labels[i]] + end] + [[:none, " "]] + end + [[:none, ""]] + end + + def roll_left + @selection = (@selection - 1) % @labels.length + end + + def roll_right + @selection = (@selection + 1) % @labels.length + end +end + +end -- 2.45.2