Class: VR::ListView

Inherits:
Gtk::TreeView
  • Object
show all
Includes:
ViewCommon
Defined in:
lib/treeview/ListView.rb

Constant Summary collapse

LISTVIEW_GTYPE =
self.name.split(":").collect {|x| x.empty? ? nil : x}.compact.join("_")

Instance Method Summary collapse

Methods included from ViewCommon

#col_attr, #column, #each_renderer, #each_row, #flatten_hash, #id, #load_columns, #method_missing, #ren_attr, #renderer, #selected_rows, #turn_on_comboboxes, #vr_row

Constructor Details

#initialize(cls) ⇒ ListView

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:

You can create columns with any type of data including your own classes, and classes subclassed from ActiveRecordBase. 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

  • GdkPixbuf - 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 GtkSpinButton

  • VR::ComboCol - Displays String, edits like a GtkComboBoxEntry

  • VR::ProgressCol - Displays a GtkProgressBar, 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.



39
40
41
42
43
44
45
# File 'lib/treeview/ListView.rb', line 39

def initialize(cls)
	super()
  hash = flatten_hash(cls)
  vals = hash.values
	self.model = Gtk::ListStore.new(*vals)
	load_columns(cls)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class VR::ViewCommon

Instance Method Details

#[](row, col) ⇒ Object

:nodoc:



55
56
57
# File 'lib/treeview/ListView.rb', line 55

def []( row )	# :nodoc:
	model.get_iter(Gtk::TreePath.new("#{row}"))
end

#add_active_record_rows(ar) ⇒ Object

:nodoc:



47
48
49
50
51
52
53
# File 'lib/treeview/ListView.rb', line 47

def add_active_record_rows(ar) # :nodoc:
	ar.each do |obj|
		row = add_row()
		matches = obj.attributes.keys & @column_keys #intersection
		matches.each { |field| row[field] = obj.attributes[field] }   
	end
end

#add_row(hash = {}) ⇒ Object

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 => “[email protected]”)

  • hash: A ruby Hash object with pairs of column ISs (symbols) and values.



82
83
84
85
86
# File 'lib/treeview/ListView.rb', line 82

def add_row(hash = {})
row = vr_row(model.append)
hash.each_pair { |key, val| row[key] = val }
	return row
end

#select_row(row_number = 0) ⇒ Object

This method will select a given row number. The row will be hilighted, and the GtkSelection object will point to that row. It uses the GtkTreeView#set_cursor method to move the cursor to the specified row.

  • row_number: Integer (FixNum)



70
71
72
# File 'lib/treeview/ListView.rb', line 70

def select_row(row_number = 0)
	set_cursor(Gtk::TreePath.new(row_number), nil, false)
end