Re: Subclassing Gtk2::CellRenderer

Thanks a lot, muppet. You're confirming my most pessimistic suspicions. I took at quick look at the xs code (and even some gtk+ code) and I'm now starting to get a glimmer of understanding (and appreciation) of the magic that goes on to make the perl interface work so well as it does.

Still, wouldn't it be nice to be able to do anything you can do in C in perl as well? Not necessarily making it simple to do in perl, but at least possible? Some additional magic during code generation, maybe? Exposing in special-purpose perl classes what you're doing your best to hide in the normal case?

muppet wrote:

On Wednesday, October 1, 2003, at 10:50 AM, Bjarne Steinsbø wrote:

A method invocation in GObject is just a signal, right? So I should override the proper signal name in order to let my own routine handle this method.

i wish it was just that simple.

Yepp, that's where I went wrong, allright. Reality is never as simple as you think it is after just a few days exposure to a new system/job/API/whatever...

now to be perfectly honest, the render method would be called a *lot*, so they probably assume that you'd have to be insane to want to implement that in a non-c or c++ language. given that i can't see a way to attach a widget to the treeview and you'll probably wind up rendering something that looks like an optionmenu by hand, i can't say that i really fault them for that assumption.

An optionmenu shouldn't really be that hard to render in the normal case, it's just a string and a pixmap. It's the editing phase that's complicated. But I see your point. The elegant way to extend the treeview would be to allow widgets in the cells, much like a gnome canvas or (just saw this in the docs, really neat!) in a Combo. And yes, it would hurt performance, which is probably one of the reasons they didn't put it in.

if you don't mind having a little bit of extra XS for your custom cellrenderer, i think you can pull it off a little more easily by mixing C and perl.

Since it's not simple to do, I'll probably implement the functionality some other way, at least initially. Probably a popup when the user clicks in a column of a certain type. I'll probably sub-class the widget and hide it down there, so that I can come back and change the implementation at a later stage, if and when I want to do it properly.


P.S. I think I stumbled across a typo in the xs documentation for Glib. Please see attached diff.
*** /usr/src/Gtk2-perl/Glib-1.00rc3/GType.xs    Fri Sep 26 01:26:32 2003
--- GType.xs    Thu Oct  2 12:55:29 2003
*** 453,455 ****
! =item GType gperl_type_from_package (GType gtype)
--- 453,455 ----
! =item GType gperl_package_from_type (GType gtype)

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]