Supposons que j’ai créé un widget gtk comme celui-ci:
class AwesomeTextView (gtk.TextView): def set_font(self, font_description): self.modify_font(pango.FontDescription(font_description))
Comment append mon nouveau widget à la palette dans Glade Interface Builder?
Ok, ça va être étape par étape:
AwesomeTextView
, le module dans awesome_text_view
il se trouve s’appellera awesome_text_view
. Ce sont les seuls noms dont nous avons besoin. Un widget Glade se compose de deux parties, le module et le catalogue.
Nous créons un catalogue, awesome_text_view.xml
, et (en tant que root), l’enregistrons dans /usr/share/glade3/catalogs/
Voici à quoi ça ressemble:
glade_python_init
Vous devez copier et adapter ce modèle, comme il fonctionne . 🙂
Nous créons un module, awesome_text_view.py
, et (encore une fois en tant que root), l’enregistrons dans /usr/lib/glade3/modules/
Voici à quoi ça ressemble:
import gobject import gtk import pango class AwesomeTextView (gtk.TextView): __gtype_name__ = 'AwesomeTextView' def __init__(self): gtk.TextView.__init__(self) def set_font(self, font_description): self.modify_font(pango.FontDescription(font_description))
Il est maintenant affiché dans Glade et vous pouvez l’append à votre application.
Enfin, vous aurez juste besoin de
export PYTHONPATH="$PYTHONPATH:/usr/lib/glade3/modules/"
C’est tout!
Voici une petite application de test montrant comment utiliser votre widget:
import gtk import awesome_text_view class App (object): builder = gtk.Builder() def __init__(self): self.builder.add_from_file("test.glade") self.builder.connect_signals(self) self.builder.get_object("awesome_text_view1").set_font("mono") gtk.main() def on_window1_destroy(self, widget): gtk.main_quit() App()
Vous devez créer un catalogue pour vos widgets, voir ce dossier: /usr/share/glade3/catalogs/
et vous verrez gnome.xml
, cherchez un exemple.
Voir aussi la documentation de gnome: