On 06/17/2011 05:05 PM, Arjan Molenaar wrote:
On 17 Jun 2011, at 05:25, Just Fill Bugs wrote:
On 06/17/2011 12:44 AM, Arjan Molenaar wrote:
Hi,
I've started porting Gaphas to GTK+ 3 now, using PyGI on Linux. It all goes
quite smoothly. Only now I'm running
into the problem that my widget should implement the Gtk.Scrollable interface.
For that it should define
a few properties.
In C those need to be declared using g_object_class_override_property(). What's
the Python counterpart for this?
It seems the PyGobject examples/properties.py works okey once you replaced
gobject with GObject to make it gi compatible. So take a look at the
PyGobject's examples directory.
Did that. Only there the creation of new properties is demoed. I need to
implement properties defined in an interface. For that the protocol is slightly
different. I can't find how that is covered.
Aha, looking into pygobject source tree under the
tests/test_properties.py, it shows how to do the getter/setter in the
class TestProperty(unittest.TestCase):
def testCustomGetter(self):
class C(gobject.GObject):
def get_prop(self):
return 'value'
prop = gobject.property(getter=get_prop)
o = C()
self.assertEqual(o.prop, 'value')
self.assertRaises(TypeError, setattr, o, 'prop', 'xxx')
def testCustomSetter(self):
class C(gobject.GObject):
def set_prop(self, value):
self._value = value
prop = gobject.property(setter=set_prop)
def __init__(self):
self._value = None
gobject.GObject.__init__(self)
o = C()
self.assertEquals(o._value, None)
o.prop = 'bar'
self.assertEquals(o._value, 'bar')
self.assertRaises(TypeError, getattr, o, 'prop')
So you have to specify getter/setter when declare properties at
gobject.property().
Someone should make a better example for the new style property
specification in the doc.
_______________________________________________
pygtk mailing list [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://faq.pygtk.org/