GtkBuilder/Glade on IronPython
August 28, 2009
Thanks to Stephane for his answer to my query about using GtkBuilder in IronPython. It turns out his Gtk#Beans package provides the magic sauce that is currently missing from ~~gtk# trunk~~ the current stable release.
For completeness, here's the code I sent him that accomplishes the same thing using the older Glade.XML object for those that are interested. It answers a long standing mailing list question about using Glade.XML.Autoconnect in IronPython.
import clr
clr.AddReference('gtk-sharp')
clr.AddReference('glade-sharp')
import Gtk
import Glade
def PyGladeAutoconnect(gxml, target):
def _connect(handler_name, event_obj, signal_name, *args):
name = ''.join([frag.title() for frag in signal_name.split('_')])
event = getattr(event_obj, name)
event += getattr(target, handler_name)
# add all widgets
for widget in gxml.GetWidgetPrefix(''):
setattr(target, gxml.GetWidgetName(widget), widget)
# connect all signals
gxml.SignalAutoconnectFull(_connect)
class Application:
def __init__(self):
gxml = Glade.XML("test.glade", "window1", None)
PyGladeAutoconnect(gxml, self)
# window1 comes from glade file
self.window1.ShowAll()
def onWindowDelete(self, o, args):
# connected via glade file definition
Gtk.Application.Quit()
Gtk.Application.Init()
app = Application()
Gtk.Application.Run()