Class: Gtk::ComboBox
- Defined in:
- lib/knj/jruby-gtk2/combobox.rb,
lib/knj/ironruby-gtk2/gtk_combobox.rb,
lib/knj/gtk2_cb.rb
Instance Method Summary collapse
- #add_attribute(*paras) ⇒ Object
-
#append_model(args) ⇒ Object
Appens a model to the list-store.
-
#init(items) ⇒ Object
Shortcut to initialize a combobox with items (or models).
- #model ⇒ Object
- #model=(newmodel) ⇒ Object
- #pack_start(widget, val) ⇒ Object
-
#resort ⇒ Object
Resorts all items in the list-store.
-
#sel ⇒ Object
Returns the active item (or model) for the combobox.
-
#sel=(actob) ⇒ Object
Sets the active element (or model) in the combobox.
Instance Method Details
#add_attribute(*paras) ⇒ Object
13 14 15 |
# File 'lib/knj/jruby-gtk2/combobox.rb', line 13 def add_attribute(arg1, arg2, arg3) #do nothing - this method does not exist on Java GTK's ComboBox. end |
#append_model(args) ⇒ Object
Appens a model to the list-store.
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/knj/gtk2_cb.rb', line 55 def append_model(args) iter = @ls.append appendob = args[:model] if appendob.respond_to?(:name) iter[0] = appendob.name elsif appendob.respond_to?(:title) iter[0] = appendob.title else raise "Could not figure out of the name of the object." end @knj[:items] << { :iter => iter, :object => appendob } return {} end |
#init(items) ⇒ Object
Shortcut to initialize a combobox with items (or models).
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/knj/gtk2_cb.rb', line 15 def init(items) @knj = { :items => [] } @ls = Gtk::ListStore.new(String, String) cr = Gtk::CellRendererText.new self.pack_start(cr, false) self.add_attribute(cr, "text", 0) if items.is_a?(Array) items.each do |appendob| if appendob.is_a?(String) iter = @ls.append iter[0] = appendob elsif appendob.respond_to?(:is_knj?) self.append_model(:model => appendob) end end elsif items.is_a?(Hash) @knj[:type] = :hash items.each do |key, val| iter = @ls.append iter[0] = val @knj[:items] << { :iter => iter, :object => key } end else raise "Unsupported type: '#{items.class.name}'." end self.model = @ls self.active = 0 end |
#model ⇒ Object
26 27 28 |
# File 'lib/knj/jruby-gtk2/combobox.rb', line 26 def model return @model end |
#model=(newmodel) ⇒ Object
17 18 19 20 21 22 23 24 |
# File 'lib/knj/jruby-gtk2/combobox.rb', line 17 def model=(newmodel) @model = newmodel @ob.model = newmodel.ob if !@renderer_set @renderer.text = self.model.dcol[0] end end |
#pack_start(widget, val) ⇒ Object
2 3 4 5 6 7 8 9 10 11 |
# File 'lib/knj/jruby-gtk2/combobox.rb', line 2 def pack_start(, arg1, arg2 = false) #widget is useually a Gtk::CellRendererText which is started by this way in Java GTK. @renderer = .init(self) if self.model .text = self.model.dcol[0] @renderer_set = true end end |
#resort ⇒ Object
Resorts all items in the list-store. If an item doesnt have an ID, then that item will be put first (for ‘Choose’, ‘All’ and such options).
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/knj/gtk2_cb.rb', line 126 def resort @ls.set_sort_column_id(0) @ls.set_sort_func(0, &lambda{|iter1, iter2| item_id_1 = iter1[1].to_i item_id_2 = iter2[1].to_i item_name_1 = iter1[0].to_s.downcase item_name_2 = iter2[0].to_s.downcase if item_id_1 == 0 return -1 elsif item_id_2 == 0 return 1 else return item_name_1 <=> item_name_2 end }) end |
#sel ⇒ Object
Returns the active item (or model) for the combobox.
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/knj/gtk2_cb.rb', line 76 def sel iter = self.active_iter if @knj[:items].length > 0 @knj[:items].each do |item| if item[:iter] == iter return item[:object] end end return false else return { "active" => self.active, "text" => iter[0] } end end |
#sel=(actob) ⇒ Object
Sets the active element (or model) in the combobox.
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/knj/gtk2_cb.rb', line 96 def sel=(actob) if actob.respond_to?(:is_knj?) @knj[:items].each do |item| if item[:object].id == actob.id self.active_iter = item[:iter] return nil end end elsif @knj[:type] == :hash @knj[:items].each do |item| if item[:object] == actob self.active_iter = item[:iter] return nil end end else self.model.each do |model, path, iter| text = self.model.get_value(iter, 0) if text == actob self.active_iter = iter return nil end end end raise "Could not find such a row: '#{actob}'." end |