class Demo::ListStore

Constants

Bug
DATA
NUM_COLUMNS

Public Class Methods

new() click to toggle source
Calls superclass method Demo::BasicWindow::new
# File gtk2/sample/gtk-demo/list_store.rb, line 38
def initialize
  super('GtkListStore demo')
  self.border_width = 8

  vbox = Gtk::VBox.new(false, 8)
  add(vbox)

  label = Gtk::Label.new('This is the bug list (note: not based on real data, it would be nice to have a nice ODBC interface to bugzilla or so, though).')
  vbox.pack_start(label, false, false, 0)

  sw = Gtk::ScrolledWindow.new(nil, nil)
  sw.shadow_type = Gtk::SHADOW_ETCHED_IN
  sw.set_policy(Gtk::POLICY_NEVER, Gtk::POLICY_AUTOMATIC)
  vbox.pack_start(sw, true, true, 0)

  # create tree model
  model = create_model

  # create tree view
  treeview = Gtk::TreeView.new(model)
  treeview.rules_hint = true
  treeview.search_column = COLUMN_DESCRIPTION

  sw.add(treeview)

  # add columns to the tree view
  add_columns(treeview)

  set_default_size(280, 250)
end

Public Instance Methods

add_columns(treeview) click to toggle source
# File gtk2/sample/gtk-demo/list_store.rb, line 83
def add_columns(treeview)
  # column for fixed toggles
  renderer = Gtk::CellRendererToggle.new
  renderer.signal_connect('toggled') do |cell, path|
    fixed_toggled(treeview.model, path)
  end

  column = Gtk::TreeViewColumn.new('Fixed?',
                                   renderer,
                                   'active' => COLUMN_FIXED)

  # set this column to a fixed sizing (of 50 pixels)
  column.sizing = Gtk::TreeViewColumn::FIXED
  column.fixed_width = 50
  treeview.append_column(column)

  # column for bug numbers
  renderer = Gtk::CellRendererText.new
  column = Gtk::TreeViewColumn.new('Bug number',
                                   renderer,
                                   'text' => COLUMN_NUMBER)
  column.set_sort_column_id(COLUMN_NUMBER)
  treeview.append_column(column)

  # column for severities
  renderer = Gtk::CellRendererText.new
  column = Gtk::TreeViewColumn.new('Severity',
                                   renderer,
                                   'text' => COLUMN_SEVERITY)
  column.set_sort_column_id(COLUMN_SEVERITY)
  treeview.append_column(column)

  # column for description
  renderer = Gtk::CellRendererText.new
  column = Gtk::TreeViewColumn.new('Description',
                                   renderer,
                                   'text' => COLUMN_DESCRIPTION)
  column.set_sort_column_id(COLUMN_DESCRIPTION)
  treeview.append_column(column)
end
create_model() click to toggle source
# File gtk2/sample/gtk-demo/list_store.rb, line 69
def create_model
  # create list store
  store = Gtk::ListStore.new(TrueClass, Integer, String, String)

  # add data to the list store
  DATA.each do |bug|
    iter = store.append
    bug.each_with_index do |value, index|
      iter[index] = value
    end
  end
  return store
end
fixed_toggled(model, path_str) click to toggle source
# File gtk2/sample/gtk-demo/list_store.rb, line 124
def fixed_toggled(model, path_str)
  path = Gtk::TreePath.new(path_str)

  # get toggled iter
  iter = model.get_iter(path)
  fixed =iter[COLUMN_FIXED]

  # do something with the value
  fixed ^= 1

  # set new value
  iter[COLUMN_FIXED] = fixed
end