Re: Subclassing Gtk2::TreeModel
- From: muppet <scott asofyet org>
- To: "Gtk-Perl-List" <gtk-perl-list gnome org>
- Subject: Re: Subclassing Gtk2::TreeModel
- Date: Sun, 21 Sep 2003 23:30:29 -0400
On Sunday, September 21, 2003, at 04:56 PM, Dan Lyke wrote:
The thing I want right now is a node that reports itself as having
children, but that I don't have to fill in children for until it's
actually clicked on, and I could do this by entering dummy data and
then deleting and reinserting when I actually have to expand it, but
fooling Gtk2::TreeStore that way seems like an awful lot of work.
i believe the nautilus guys have done something to figure out how to
populate a tree on demand. you might check their irc channels and
mailing lists. but in fact, what you describe sounds rather a bit like
what i seem to recall hearing from them.
So, in my heat coma yesterday evening, I slapped together a little
class that had Gtk2::TreeModel in its @ISA, had all the appropriate
interface functions, and...
a normal perl object isn't enough to have signals called on it, because
signals, virtual overrides, and all of that sort of mess require you to
fiddle with a GObjectClass. for that, you need to *register* a GObject
subclass with g_type_register(); perl's front-end to that is the
Glib::Object::Subclass module.
now the fact of the matter is, GtkTreeModel is a GInterface, not a
GObject. GtkTreeStore is a GObject which implements the GtkTreeModel
interface. this mumbo jumbo actually refers to the fact that the
GObjectClass for GtkTreeStore contains a pointer to a GtkTreeModel
vtable filled in with the right functions for GtkTreeStore.
frankly, i didn't really understand this GInterface stuff until a few
days ago (and i'm still far from an expert on it), so you may not be
surprised that there's currently no way to implement a GInterface from
perl. i mean, you could try it, but i don't think it would work. what
a downer.
now, if you're not afraid of C and/or XS, you could implement the
crucial portions of your custom model in C and bind it to perl with
very little extra effort, and things should work fine.
And if not, then I'll go back to fooling Gtk2::TreeStore into showing
what I want by playing silly games with its data.
let us know what you find ...
--
muppet <scott at asofyet dot org>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]