On the subject of ruby-gtk2, the absence of (sufficient) docs is
a shame, and the raw GTK docs don't always help. But perhaps one
of you folk can help me.
I've modified one of the TreeView examples to add a toggle as a
second column, but I can't work out what signal to connect to
allow the toggle to be clicked. My code is below, can you see
how to make the toggle clickable?
Is there a dynamic way to list all signals that an object can
generate?
Clifford Heath.
require 'gtk2'
def build_tree(tree, model)
root = model.append(nil)
root.set_value(0, "Root")
for i in 1..4
sub = model.append(root)
sub.set_value(0, "Foo#{i}")
for i in 1..2
sub2 = model.append(sub)
sub2.set_value(0, "Bar#{i}")
sub2.set_value(1, i == 1) # Bar 1 is enabled
end
end
@window.show_all
end
# Initialize Gtk
Gtk.init
# Create the main window:
@window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
@window.set_size_request(400, 400)
@window.signal_connect("delete_event") { Gtk.main_quit }
@window.set_border_width(5)
@window.set_title("TreeStore Example");
# Put a scrollable vbox in it:
vbox2 = Gtk::VBox.new(false, 0)
scroller = Gtk::ScrolledWindow.new
scroller.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC)
@window.add(vbox2)
vbox2.pack_start(scroller, true, true, 0)
# Create the TreeStore with two columns
model = Gtk::TreeStore.new(String, TrueClass)
# Create the TreeView adding the TreeStore
tree = Gtk::TreeView.new(model)
# Create the Text renderer and set properties
render1 = Gtk::CellRendererText.new
# Create the Toggle renderer and set properties
render2 = Gtk::CellRendererToggle.new
render2.activatable = true
# Create the columns
c1 = Gtk::TreeViewColumn.new("Headings", render1, {:text => 0})
c2 = Gtk::TreeViewColumn.new("Enabled", render2, {:active => 1})
## This doesn't work:
#c2.signal_connect("clicked") { |view, path, column|
# p column
# p column.class.name
#}
# append the columns to treeview
tree.append_column(c1)
tree.append_column(c2)
# add the treeview to the scroller
scroller.add(tree)
build_tree(tree, model)
@window.show_all
Gtk.main