class Demo::TreeStore
Constants
- TOPLEVEL
tree data
- TreeItem
TreeItem structure
Public Class Methods
new()
click to toggle source
Calls superclass method
Demo::BasicWindow.new
# File gtk2/sample/gtk-demo/tree_store.rb, line 137 def initialize # create window, etc super('Card planning sheet') vbox = Gtk::VBox.new(false, 8) vbox.border_width = 8 add(vbox) vbox.pack_start(Gtk::Label.new("Jonathan's Holiday Card Planning Sheet"), false, false, 0) sw = Gtk::ScrolledWindow.new(nil, nil) sw.shadow_type = Gtk::SHADOW_ETCHED_IN sw.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC) vbox.pack_start(sw, true, true, 0) # create model model = create_model # create tree view treeview = Gtk::TreeView.new(model) treeview.rules_hint = true treeview.selection.mode = Gtk::SELECTION_MULTIPLE add_columns(treeview) sw.add(treeview) # expand all rows after the treeview widget has been realized treeview.signal_connect('realize') do treeview.expand_all end set_default_size(650, 400) end
Public Instance Methods
add_columns(treeview)
click to toggle source
# File gtk2/sample/gtk-demo/tree_store.rb, line 209 def add_columns(treeview) model = treeview.model # column for holiday names renderer = Gtk::CellRendererText.new renderer.xalign = 0.0 col_offset = treeview.insert_column(-1, 'Holiday', renderer, 'text' => HOLIDAY_NAME_COLUMN) column = treeview.get_column(col_offset - 1) column.clickable = true [ ['Alex', true ], ['Havoc', false], ['Tim', true ], ['Owen', false], ['Dave', false], ].each_with_index do |args, i| person, european = *args renderer = Gtk::CellRendererToggle.new renderer.xalign = 0.0 eval(%Q[def renderer.column; #{ALEX_COLUMN + i}; end]) renderer.signal_connect('toggled') do |cell, path| item_toggled(cell, path, model) end attributes = { 'active' => (ALEX_COLUMN + i), 'visible' => VISIBLE_COLUMN, } if european attributes['activatable'] = WORLD_COLUMN end col_offset = treeview.insert_column(-1, person, renderer, attributes) column = treeview.get_column(col_offset - 1) column.sizing = Gtk::TreeViewColumn::FIXED column.fixed_width = 50 column.clickable = true end end
create_model()
click to toggle source
# File gtk2/sample/gtk-demo/tree_store.rb, line 173 def create_model # create tree store model = Gtk::TreeStore.new(String, TrueClass, TrueClass, TrueClass, TrueClass, TrueClass, TrueClass, TrueClass) # add data to the tree store TOPLEVEL.each do |month_name, holidays| iter = model.append(nil) iter[HOLIDAY_NAME_COLUMN] = month_name (ALEX_COLUMN..DAVE_COLUMN).each do |index| iter[index] = false end # add children holidays.each do |holiday| child_iter = model.append(iter) child_iter[HOLIDAY_NAME_COLUMN] = holiday.label[0] %w(alex havoc tim owen dave).each_with_index do |person, i| child_iter[ALEX_COLUMN + i] = holiday[person] end child_iter[VISIBLE_COLUMN] = true child_iter[WORLD_COLUMN] = holiday.world_holiday end end return model end
item_toggled(cell, path_str, model)
click to toggle source
# File gtk2/sample/gtk-demo/tree_store.rb, line 254 def item_toggled (cell, path_str, model) path = Gtk::TreePath.new(path_str) column = cell.column # get toggled iter iter = model.get_iter(path) toggle_item = iter[column] # do something with the value toggle_item ^= 1 # set new value iter[column] = toggle_item end