Custom Glade-3 Widgets in PYGTK
Recent versions of Glade 3 allow you to write custom widgets in PyGTK. This is great.
Catalog
<?xml version="1.0" encoding="UTF-8"?>
<glade-catalog name="pythontest" library="pythontest" domain="glade-3" depends="gtk+" language="python">
<glade-widget-classes>
<glade-widget-class title="TextView" name="TextView" generic-name="textview"/>
</glade-widget-classes>
<glade-widget-group name="python" title="Python">
<glade-widget-class-ref name="TextView"/>
</glade-widget-group>
</glade-catalog>
Adapter Code
import gtk
import gobject
import glade
class GladeTextViewAdaptor(glade.get_adaptor_for_type ('GtkHBox')):
__gtype_name__ = 'GladeTextViewAdaptor'
def __init__(self):
glade.GladeGtkHBoxAdaptor.__init__(self)
def do_post_create(self, obj, reason):
print "hola\n";
def do_child_set_property(self, container, child, property_name, value):
glade.GladeGtkHBoxAdaptor.do_child_set_property(self,container, child, property_name, value);
print "hola do_child_set_property\n";
def do_child_get_property(self, container, child, property_name):
a = glade.GladeGtkHBoxAdaptor.do_child_get_property(self,container, child, property_name);
print "hola do_child_get_property\n";
return a;
def do_get_children(self, container):
a = glade.GladeGtkHBoxAdaptor.do_get_children(self, container);
print "hola do_get_children\n";
return a;
class TextView(gtk.HBox):
__gtype_name__ = 'TextView'
def __init__(self):
gtk.HBox.__init__(self)
Notes:
- The adapter module should reside in $install_prefix/lib/glade3/modules/
- The adapter code must be in PYTHONPATH
- import glade in the adapter code is actually a glade module provided by glade ui core, only for the embedded interpreter.
- if widgets need support code you have to define an adaptor class named Glade"yourcustomwidgetname"Adaptor
