Hi,
I need a treeview expert to set a background color of a particular
cell of a liststore,
here the code i extracted from my project.
The goal is to set only the cell corresponding to severity “high” to
background color red, as the data are dynamically added to the
liststore using the append method which is using the same cell
renderer all the column is set to red ;(
Any idea ?
thanks,
david
#######################################################################################
#!/usr/bin/ruby
require ‘gtk2’
require ‘gnomecanvas2’
Gtk.init
w = Gtk::Window.new
ls = Gtk::ListStore.new(Integer, String, Integer, String, String)
treeview = Gtk::TreeView.new(ls)
w.add treeview
column1 = Gtk::TreeViewColumn.new(“Selected”,
Gtk::CellRendererToggle.new, {:active => 0})
column2 = Gtk::TreeViewColumn.new(“Protocol”,
Gtk::CellRendererText.new, {:text => 1})
column3 = Gtk::TreeViewColumn.new(“Port”, Gtk::CellRendererText.new,
{:text => 2})
column4 = Gtk::TreeViewColumn.new(“Service”,
Gtk::CellRendererText.new, {:text => 3})
column5 = Gtk::TreeViewColumn.new(“Severity”,
Gtk::CellRendererText.new, {:text => 4})
treeview.append_column(column1)
treeview.append_column(column2)
treeview.append_column(column3)
treeview.append_column(column4)
treeview.append_column(column5)
treeview.show
array = [[1, “tcp”,80,“http”,“high”], [1, “udp”,53,“dns”,“medium”]]
array.each {|cb, proto, port, service, sev|
iter = treeview.model.append
iter[0] = cb
iter[1] = proto
iter[2] = port
iter[3] = service
iter[4] = sev
if sev == “high”
sev_column = treeview.get_column(4)
cells = sev_column.cell_renderers
puts cells
if cells.size > 0
sev_column.cell_renderers[0].set_cell_background_gdk(Gdk::Color.new(64515,
0, 0))
end
end
}
w.show_all
Gtk.main