Blame doc/gladepython.sgml

Packit 1e8aac
<refentry id="pythonsupport" revision="26 Feb 2011">
Packit 1e8aac
 <refmeta>
Packit 1e8aac
   <refentrytitle>Python Gtk widgets support</refentrytitle>
Packit 1e8aac
   <refmiscinfo>Glade UI</refmiscinfo>
Packit 1e8aac
 </refmeta>
Packit 1e8aac
 <refnamediv>
Packit 1e8aac
   <refname>Add python support to your catalog</refname>
Packit 1e8aac
   <refpurpose>
Packit 1e8aac
How to write and install a catalog for a python widget library
Packit 1e8aac
   </refpurpose>
Packit 1e8aac
 </refnamediv>
Packit 1e8aac
Packit 1e8aac
 <refsect1>
Packit 1e8aac
   <title>Introduction</title>
Packit 1e8aac
   <para>
Packit 1e8aac
Glade supports loading widgets coded in python by linking and running the python
Packit 1e8aac
interpreter from the gladepython catalog plugin.
Packit 1e8aac
   </para>
Packit 1e8aac
Packit 1e8aac
   <para>
Packit 1e8aac
So in order for glade to include your python gtk widgets you will have to:
Packit 1e8aac
Packit 1e8aac
<varlistentry><listitem>
Packit 1e8aac
a) specify gladepython support code as your plugin library.
Packit 1e8aac
</listitem></varlistentry>
Packit 1e8aac
Packit 1e8aac
<varlistentry><listitem>
Packit 1e8aac
b) set glade_python_init as you init function.
Packit 1e8aac
</listitem></varlistentry>
Packit 1e8aac
Packit 1e8aac
<varlistentry><listitem>
Packit 1e8aac
c) make sure your catalog name is the same as your python import library since
Packit 1e8aac
glade_python_init() will use this name to import your widgets into the
Packit 1e8aac
interpreter.
Packit 1e8aac
</listitem></varlistentry>
Packit 1e8aac
Packit 1e8aac
     <programlisting>
Packit 1e8aac
Packit 1e8aac
Packit 1e8aac
domain="glade-3" depends="gtk+">
Packit 1e8aac
 <init-function>glade_python_init</init-function>
Packit 1e8aac
Packit 1e8aac
 <glade-widget-classes>
Packit 1e8aac
   <glade-widget-class title="MyBox" name="MyBox" generic-name="mybox"/>
Packit 1e8aac
 </glade-widget-classes>
Packit 1e8aac
Packit 1e8aac
 <glade-widget-group name="python" title="Python">
Packit 1e8aac
   <glade-widget-class-ref name="MyBox"/>
Packit 1e8aac
 </glade-widget-group>
Packit 1e8aac
</glade-catalog>]]>
Packit 1e8aac
     </programlisting>
Packit 1e8aac
   </para>
Packit 1e8aac
Packit 1e8aac
   <para>
Packit 1e8aac
Glade's python interpreter will look up for your widgets in the same
Packit 1e8aac
places it looks
Packit 1e8aac
for regular catalogs plugins, that is $GLADE_ENV_MODULE_PATH
Packit 1e8aac
enviroment variable
Packit 1e8aac
and `pkg-config --variable=moduledir gladeui-2.0`
Packit 1e8aac
Packit 1e8aac
So the easiest thing would be to make a symlink in one of those directory, just
Packit 1e8aac
do not forget that the name should be the one specified in your catalog name.
Packit 1e8aac
   </para>
Packit 1e8aac
Packit 1e8aac
   <para>
Packit 1e8aac
pythonplugin.py
Packit 1e8aac
     <programlisting>
Packit 1e8aac
Packit 1e8aac
from gi.repository import Gtk
Packit 1e8aac
Packit 1e8aac
class MyBox(Gtk.HBox):
Packit 1e8aac
       __gtype_name__ = 'MyBox'
Packit 1e8aac
Packit 1e8aac
       def __init__(self):
Packit 1e8aac
               Gtk.HBox.__init__(self)
Packit 1e8aac
]]>
Packit 1e8aac
     </programlisting>
Packit 1e8aac
   </para>
Packit 1e8aac
 </refsect1>
Packit 1e8aac
</refentry>