[pygtk] Subclassing GObject and virtual functions

John Finlay finlay at moeraki.com
Fri Aug 11 10:00:58 WST 2006


Samuel Cormier-Iijima wrote:
> Hey everybody,
>
> First of all, I'm new to the list, and thanks for the great python 
> bindings :-)
>
> I've been trying to learn some stuff about GObjects and PyGTK and I
> was wondering how PyGObject handles virtual functions. h2defs.py
> doesn't read the vfunc table from the header, so you have to manually
> edit the defs file. I have something like this in the .defs:
>
> (define-vfunc on_connected
>  (of-object "TorqueSocket")
>  (return-type "none")
> )
>
PyGTK defines virtuals like:

(define-virtual start_editing
  (of-object "GtkCellEditable")
  (return-type "none")
  (parameters
    '("GdkEvent*" "event")
  )
)

I added a new program in pygtk cvs head to replace h2def.py. It 
generates the virtual definitions. It's called defsgen.py. It depends on 
the Python ctypes modules to extract object info from installed shared 
libraries. Alternatively Gustavo wrote a program scanvirtuals.py to 
generate virtual defs.
> This is how the gtkmm bindings create virtual functions. However, this
> isn't working very well. I was wondering if there was any
> documentation about how this works? If I subclass my object in Python,
> can calling the virtual function from the C call the Python function?
> I read something about marshallers, but I don't quite understand them.
> I've also read [1] but its a little old and doesn't talk about vfuncs
> in particular. Any tips or pointers would be appreciated :-)
>
There are some examples of using virtuals in the PyGTK examples directory.

John


More information about the pygtk mailing list