Thanks, I figured it was something like that. One stylistic
suggestion...when "generating" functions like this that aren't
part of the C gtk implementation, would it be more appropriate
to make the generated function name pygtk_<widget>_<etc>
to clarify this isn't actually wrapping a base gtk function?
Just a thought. Not sure how valuable it would be, but it might've
pointed me in the right direction.
Mike
----- Original Message -----
From: James Henstridge <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Saturday, December 18, 1999 10:32 AM
Subject: Re: [pygtk] Patches for GtkTreeItem.subtree
> Here is the implementation of gtk_tree_item_get_subtree:
> static PyObject *_wrap_gtk_tree_item_get_subtree(PyObject *self, PyObject
*args)
> {
> PyObject *obj;
>
> if (!PyArg_ParseTuple(args, "O!:gtk_tree_item_get_subtree",
&PyGtk_Type, &ob
> j))
> return NULL;
> return PyGtk_New((GtkObject *)GTK_TREE_ITEM(PyGtk_Get(obj))->subtree);
> }
>
> The function is just an accessor for the subtree attribute. Of course,
> this has some problems if the tree item doesn't have a subtree, which will
> have to be fixed for the next release.
>
> James.
>
> --
> Email: [EMAIL PROTECTED]
> WWW: http://www.daa.com.au/~james/
>
>
> On Sat, 18 Dec 1999, Mike Kestner wrote:
>
> > Both this patch and the latest version's gtk.py file
> > call the function _gtk.gtk_tree_item_get_subtree to
> > access the item's subtree. Where is this function
> > defined/generated? I see a "set_subtree" gtk function,
> > but the 'get' operation seems to be provided by the
> > GTK_TREE_ITEM_SUBTREE(item) macro.
> >
> > Am I totally daft, or is the wrapper trying to access a
> > function that doesn't exist?
> >
> > Regards,
> > Mike
> >
> > ----- Original Message -----
> > From: John Ehresman <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Thursday, December 09, 1999 1:15 PM
> > Subject: [pygtk] Patches for GtkTreeItem.subtree
> >
> >
> > >
> > > Hi,
> > >
> > > I encountered problems when I tried to access the subtree attribute of
> > > a GtkItem instance. I think I've solved them (I solved my immediate
> > > problems, at least) by making several changes to pygtk. I've attached
> > > diffs for gtk.py and generate/generate.py made against the pygtk 0.6.3
> > > distribution. The changes are:
> > >
> > > * A typo corrected in GtkTreeItem.__getattr__ and a wrapper around
> > > _gtk.gtk_tree_item_get_subtree to convert the C extension object ref
to
> > > a Python class instance.
> > > * Modified generate.py to emit C code to check for a NULL GtkObject
when
> > > returning a field of the GtkObject. If NULL is found, a reference
to
> > > the Python None object is returned.
> > > * Modified _obj2inst in gtk.py to return None if the input argument is
> > > None.
> > >
> > > With these changes, the subtree attribute will be None if the item
does
> > > not have a subtree, and a GtkTree instance if it does.
> > >
> > > Thanks to all the people who have contributed to pygtk, especially
James
> > > Henstridge.
> > >
> > > John
> > >
> > > diff -c for gtk.py
> > > *** gtk.py Fri Dec 3 15:32:24 1999
> > > --- /home/jpe/down/pygtk-0.6.3/gtk.py Thu Sep 30 01:33:14 1999
> > > ***************
> > > *** 782,791 ****
> > > self._o = _gtk.gtk_tree_item_new_with_label(label)
> > > def __getattr__(self, attr):
> > > attrs = {
> > > ! 'subtree': (lambda o:
> > > !
_obj2inst(_gtk.gtk_tree_item_get_subtree(o)))
> > > }
> > > ! if attrs.has_key(attr):
> > > return attrs[attr](self._o)
> > > return GtkItem.__getattr__(self, attr)
> > > def set_subtree(self, subtree):
> > > --- 782,790 ----
> > > self._o = _gtk.gtk_tree_item_new_with_label(label)
> > > def __getattr__(self, attr):
> > > attrs = {
> > > ! 'subtree': _gtk.gtk_tree_item_get_subtree,
> > > }
> > > ! if attrs.has_key(attrs):
> > > return attrs[attr](self._o)
> > > return GtkItem.__getattr__(self, attr)
> > > def set_subtree(self, subtree):
> > > ***************
> > > *** 2484,2491 ****
> > > _gtk.gtk_accel_group_remove(self._ag, key, mods, obj._o)
> > >
> > > def _obj2inst(obj):
> > > - if obj == None:
> > > - return None
> > > objname = _gtk.gtk_type_name(_gtk.GTK_OBJECT_TYPE(obj))
> > > if _name2cls.has_key(objname):
> > > return _name2cls[objname](_obj=obj)
> > > --- 2483,2488 ----
> > >
> > > diff -c for generate/generate.py:
> > > *** generate/generate.py Fri Dec 3 15:24:46 1999
> > > --- /home/jpe/down/pygtk-0.6.3/generate/generate.py Thu Sep 30
> > > 01:33:15 1999
> > > ***************
> > > *** 421,435 ****
> > > impl.write(funcCall)
> > > impl.write(');\n')
> > > elif retType in objects.keys():
> > > ! impl.write(' {\n')
> > > ! impl.write(' GtkObject* _o =
(GtkObject*)')
> > > ! impl.write(funcCall)
> > > ! impl.write(';\n')
> > > ! impl.write(' if ( _o != NULL )\n')
> > > ! impl.write(' return
PyGtk_New(_o);\n')
> > > ! impl.write(' Py_INCREF(Py_None);\n')
> > > ! impl.write(' return Py_None;\n')
> > > ! impl.write(' }\n')
> > > else:
> > > print "%s: unknown return type '%s'" % (name,
> > retType)
> > > return 1
> > > --- 421,429 ----
> > > impl.write(funcCall)
> > > impl.write(');\n')
> > > elif retType in objects.keys():
> > > ! impl.write(' return PyGtk_New((GtkObject
*)')
> > > ! impl.write(funcCall)
> > > ! impl.write(');\n')
> > > else:
> > > print "%s: unknown return type '%s'" % (name,
> > retType)
> > > return 1
> > >
> > >
> > >
> > >
> > >
> > > To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]
> > >
> >
> > To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]
> >
>
> To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]
>
To unsubscribe: echo "unsubscribe" | mail [EMAIL PROTECTED]