Hello,
I'm trying to compile my old GTK-- 2.0 application with 2.4, and it
almost works out of the box, except SigC renaming the slot function.
The only thing that I can't get to work is the custom cellrenderer I had
implemented: one of the TreeView columns has a set<string> datatype, and
I subclassed Gtk::CellRendererText with a simple render_vfunc function
that prepares a string with a comma-separated list of the items in the
set and allows CellRendererText to do the job:
void TagsetCellRenderer::render_vfunc(const Glib::RefPtr<Gdk::Window>& window,
Gtk::Widget& widget,
const Gdk::Rectangle& rect1,
const Gdk::Rectangle& cell_area,
const Gdk::Rectangle& rect2,
Gtk::CellRendererState flags)
{
set<string> ts = _property_tagset.get_value();
fprintf(stderr, "%d tags in line\n", ts.size());
string tags;
for (set<string>::const_iterator j = ts.begin();
j != ts.end(); j++)
if (j == ts.begin())
tags += *j;
else
tags += ", " + *j;
property_text().set_value(tags);
Gtk::CellRendererText::render_vfunc(window, widget, rect1, cell_area, rect2, flags);
}
Here's how I add the column:
TagsetCellRenderer*const renderer = new TagsetCellRenderer(*this);
Gtk::TreeViewColumn*const column = new Gtk::TreeViewColumn("Tags", *Gtk::manage(renderer));
itemList.append_column(*Gtk::manage(column));
column->add_attribute(renderer->property_tagset(), itemListModelColumns.tags);
Now, it did work, it doesn't now. The fprintf in render_vfunc doesn't
get called, so it appears that the method itself doesn't get called.
However, Gtk::CellRendererText::render_vfunc is still there in the
header file...
Question 1: what happened?
Question 2: is there a 2.0->2.4 migration guide?
Question 3: will there be a whole chapter on creating custom cell
renderers in the Gtk-- tutorial? In my history with Gtk--,
everything has always been smooth except cell renderers:
appearently, some work is still needed in that field :(
Ciao,
Enrico
--
GPG key: 1024D/797EBFAB 2000-12-05 Enrico Zini <enrico debian org>
Attachment:
signature.asc
Description: Digital signature