The new() constructor takes a Hash that defines the columns as its only argument. The Hash defines symbols as the keys to give an ID to each column. The Hash also defines the type (class) of the column. A simple constructor looks like this:
@view = VR::ListView.new(:name => String, :date => DateTime)
You can create columns with any type of data including your own classes, and classes subclassed from ActiveRecord::Base. The common types that are included by default are:
String - Displays and edits as a String.
Integer - Displays number, edits like a String.
FixNum - ditto
Integer - ditto
Float - ditto
DateTime - Displays in a default date format(editable), edits like a String
TrueClass - Displays as a GtkCheckButton, click checkbox to edit
Gdk::Pixbuf - Just an Image, uneditable
VR::CalendarCol - Displays in a default date format(editable), calendar window to edit.
VR::SpinCol - Displays as a number with default number of digits, edits like a Gtk::SpinButton
VR::ComboCol - Displays String, edits like a Gtk::ComboBoxEntry
VR::ProgressCol - Displays a Gtk::ProgressBar, uneditable
VR::TextCol - For long strings. Displays first 20 characters in view, edits with simple text editor.
You can also add your own user-defined column types. See: Adding Your Own Objects to ListView.
# File lib/treeview/ListView.rb, line 34 def initialize(cls) super() hash = flatten_hash(cls) vals = hash.values self.model = Gtk::ListStore.new(*vals) load_columns(cls) end
This will add a row to the data model, and fill-in the values from a Hash. This example would add a row to the model and set the name and email fields:
@view.add_row(:name => "Chester", :email => "chester@chester.com")
hash: A ruby Hash object with pairs of column ISs (symbols) and values.
# File lib/treeview/ListView.rb, line 77 def add_row(hash = {}) row = vr_row(model.append) hash.each_pair { |key, val| row[key] = val } return row end
This method will select a given row number. The row will be hilighted, and the Gtk::Selection object will point to that row. It uses the Gtk::TreeView#set_cursor method to move the cursor to the specified row.
row_number: Integer (FixNum)
# File lib/treeview/ListView.rb, line 65 def select_row(row_number = 0) set_cursor(Gtk::TreePath.new(row_number), nil, false) end