To match the __gsignals__ special attribute that gobject.type_register() 
recognises, I am now looking at adding support for creating new 
properties on python classes.

At the moment, the idea is that if a __gproperties__ attribute is found 
in the class dictionary, it will be processed for property definitions. 
 This attribute will be a dict, like __gsignals__.  The keys will be 
property names, and the values will be tuples of the form:
    (type, nick, blurb, [type specific args], flags)

The appropriate GParamSpec will be created for the requested property 
type, and then be added as a property for hte new class.

At the moment, I am leaving out the property_id tag -- instead the 
property name can be looked up as pspec.name.  If anyone thinks worrying 
about the property ids is worth it, please reply to this message :)

gobject.type_register will also set a class_init function for the new 
type that sets the get_property and set_property virtual functions.  The 
C functions stuffed into these slots will simply call 
"self.do_get_property" or "self.do_set_property" (to match the naming 
convention of signals, and because set_property,get_property are already 
used).  These python functions should have the following form:
    def do_get_property(self, pspec):
        return something # the value corresponding to the property 
pspec.name
    def do_set_property(self, pspec, value):
        setit(pspec.name, value)

Possibly making the function arguments more similar to the C 
counterparts would be good though.

Any comments?

James.

-- 
Email: [EMAIL PROTECTED]
WWW:   http://www.daa.com.au/~james/


_______________________________________________
pygtk mailing list   [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk

Reply via email to