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]