Python Gtk widgets supportAdd python support to your catalog — How to write and install a catalog for a python widget library |
Glade supports loading widgets coded in python by linking and running the python interpreter from the gladepython catalog plugin.
So in order for glade to include your python gtk widgets you will have to:
<glade-catalog name="pythonplugin" library="gladepython" domain="glade-3" depends="gtk+"> <init-function>glade_python_init</init-function> <glade-widget-classes> <glade-widget-class title="MyPythonBox" name="MyPythonBox" generic-name="mypythonbox"/> </glade-widget-classes> <glade-widget-group name="python" title="Python"> <glade-widget-class-ref name="MyPythonBox"/> </glade-widget-group> </glade-catalog>
Glade's python interpreter will look up for your widgets in the same places it looks for regular catalogs plugins, that is $GLADE_ENV_MODULE_PATH environment variable and `pkg-config --variable=moduledir gladeui-2.0` So the easiest thing would be to make a symlink in one of those directory, just do not forget that the name should be the one specified in your catalog name.
pythonplugin.py
from gi.repository import GLib, Gtk, GObject class MyPythonBox(Gtk.Box): __gtype_name__ = 'MyPythonBox' foo = GObject.Property(type=int, nick='An integer') bar = GObject.Property(type=str, nick='A String') def _update(self, obj, pspec): self.label.set_text ('Python Properties\nInteger = ' + str(self.foo) + '\nString = \'' + self.bar + '\'') def __init__ (self): Gtk.Box.__init__ (self) self.label = Gtk.Label (visible = True) self.add (self.label) self.connect('notify::foo', self._update) self.connect('notify::bar', self._update) self._update(None, None)