You are correct there is no cell renderer that works like a GtkButton, so the only way would be to write your own cell renderer object.
Here is a guide for writing your own renderers, although it is written for C, the principles would be the same.
Frage
Hy, I have do Build a tool which shows the Content of an Database that works fine but the user has to delete rows on click on a Button in the row.
This is what i have now for setting up the ListStore
def setup_tree_view(treeview)
renderer = Gtk::CellRendererText.new
renderer.foreground = "#ff0000"
column = Gtk::TreeViewColumn.new("Bestellnummer", renderer, :text => ID)
treeview.append_column(column)
renderer = Gtk::CellRendererText.new
column = Gtk::TreeViewColumn.new("Produkt", renderer, :text => PRODUCT)
treeview.append_column(column)
renderer = Gtk::CellRendererText.new
column = Gtk::TreeViewColumn.new("Kunde", renderer, :text => CUSTOMER)
treeview.append_column(column)
renderer = Gtk::CellRendererText.new
renderer = Gtk::CellRendererText.new
column = Gtk::TreeViewColumn.new("Kontakt", renderer, :text => CONTACT)
treeview.append_column(column)
renderer = Gtk::CellRendererToggle.new
renderer.set_activatable true
renderer.signal_connect('toggled') do |renderer, path|
@handler.updateData ((@store.get_iter path).get_value ID), "ordered", toInt( (!((@store.get_iter path).get_value ORDERED)))
@store.clear
showData @handler.start
end
column = Gtk::TreeViewColumn.new("Bestellt", renderer, :active => ORDERED)
treeview.append_column(column)
renderer = Gtk::CellRendererToggle.new
renderer.signal_connect('toggled') do |renderer, path|
@handler.updateData ((@store.get_iter path).get_value ID), "arrived", toInt( (!((@store.get_iter path).get_value ARRIVED)))
@store.clear
showData @handler.start
end
column = Gtk::TreeViewColumn.new("Angekommen", renderer, :active => ARRIVED)
treeview.append_column(column)
renderer = Gtk::CellRendererToggle.new
renderer.signal_connect('toggled') do |renderer, path|
@handler.updateData ((@store.get_iter path).get_value ID), "informed", toInt( (!((@store.get_iter path).get_value ORDERED)))
@store.clear
showData @handler.start
end
column = Gtk::TreeViewColumn.new("Informiert", renderer, :active => INFORMED)
treeview.append_column(column)
end
Now I want to add a new column in which are the button to open the delete dialog but I can't find a cell renderer which allow me to put a button into it.
How can I do that?
Lösung
You are correct there is no cell renderer that works like a GtkButton, so the only way would be to write your own cell renderer object.
Here is a guide for writing your own renderers, although it is written for C, the principles would be the same.