age
f598cb33e4
* ./images als Standarddownloadverz. * GTK_WIDGET_CAN_DEFAULT gefixt * 5 versch. Zeiten
33 lines
1.2 KiB
Python
33 lines
1.2 KiB
Python
#This requires pygtk2
|
|
|
|
import gettext
|
|
import gtk
|
|
import gtk.glade
|
|
|
|
class GladeWrapper:
|
|
"""
|
|
Superclass for glade based applications. Just derive from this
|
|
and your subclass should create methods whose names correspond to
|
|
the signal handlers defined in the glade file. Any other attributes
|
|
in your class will be safely ignored.
|
|
|
|
This class will give you the ability to do:
|
|
subclass_instance.GtkWindow.method(...)
|
|
subclass_instance.widget_name...
|
|
"""
|
|
def __init__(self, Filename, WindowName):
|
|
#load glade file.
|
|
self.widgets = gtk.glade.XML(Filename, WindowName, gettext.textdomain())
|
|
self.GtkWindow = getattr(self, WindowName)
|
|
|
|
instance_attributes = {}
|
|
for attribute in dir(self.__class__):
|
|
instance_attributes[attribute] = getattr(self, attribute)
|
|
self.widgets.signal_autoconnect(instance_attributes)
|
|
|
|
def __getattr__(self, attribute): #Called when no attribute in __dict__
|
|
widget = self.widgets.get_widget(attribute)
|
|
if widget is None:
|
|
raise AttributeError("Widget [" + attribute + "] not found")
|
|
self.__dict__[attribute] = widget #add reference to cache
|
|
return widget
|