Module: GtkApp::ViewHelpers
- Included in:
- View
- Defined in:
- lib/gtk_app/view_helpers.rb
Instance Method Summary collapse
-
#build_listview(widget_name, columns, options = {}, &block) ⇒ Object
:yields: index, header, column, renderer.
-
#desensitize(*widgets) ⇒ Object
Set *widgets sensitive property to false == Example @view.desensitize(:txtFoo, :cmbBar).
-
#sensitize(*widgets) ⇒ Object
Set *widgets sensitive property to true == Example @view.sensitize(:txtFoo, :cmbBar).
Instance Method Details
#build_listview(widget_name, columns, options = {}, &block) ⇒ Object
:yields: index, header, column, renderer
4 5 6 7 8 9 10 11 12 13 14 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 |
# File 'lib/gtk_app/view_helpers.rb', line 4 def build_listview(, columns, ={}, &block) # :yields: index, header, column, renderer list = self.send(:"#{}") list.model = Gtk::ListStore.new(*columns.values) columns.each_with_index do |keyval, index| header, data_type = keyval renderer, attrs = case data_type when String, Integer [Gtk::CellRendererText.new, :text => index] when TrueClass toggle = Gtk::CellRendererToggle.new toggle.signal_connect('toggled') do |, path| iter = list.model.get_iter(path) iter[index] = !iter[index] end [toggle, :active => index] when Gtk::ListStore _renderer = Gtk::CellRendererCombo.new model = Gtk::ListStore.new(String) _renderer.signal_connect("edited") do |cell, path, text| model.get_iter(path)[index] = text end [_renderer, :text_column => 0, :model => model, :text => index, :editable => index] else raise("GtkApp::View##{__method__} does not know how to handle " + "'#{data_type}' data types.") end column = Gtk::TreeViewColumn.new("#{header}".titleize, renderer, attrs) column.visible = false if index == 0 yield(index, header, column, renderer) if block_given? if .key?(:formatter) && [:formatter].is_a?(Proc) column.set_cell_data_func(renderer, &[:formatter]) end list.append_column(column) end end |
#desensitize(*widgets) ⇒ Object
Set *widgets sensitive property to false
Example
@view.desensitize(:txtFoo, :cmbBar)
54 55 56 |
# File 'lib/gtk_app/view_helpers.rb', line 54 def desensitize(*) .each { |w| self["#{w}"].sensitive = false } end |
#sensitize(*widgets) ⇒ Object
Set *widgets sensitive property to true
Example
@view.sensitize(:txtFoo, :cmbBar)
47 48 49 |
# File 'lib/gtk_app/view_helpers.rb', line 47 def sensitize(*) .each { |w| self["#{w}"].sensitive = true } end |