Viewing file: LibGladeApplication.py (1.89 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
"""This module contains the LibGladeApplication class."""
import signal import gtk from gtk import glade
from GtkAttributesFacade import GtkAttributesFacade
class LibGladeApplication:
"""This is the base class for applications that use Glade. The following attributes are used:
xml - This is an instance of glade.XML which encapsulates the Glade GUI.
The following private variables are used:
_signalsAreDone - The UNIX signal handlers only have to be set once.
"""
_signalsAreDone = False
def __init__(self, gladeFile): """Setup the appropriate signal handlers and call setHandlers.""" if not self._signalsAreDone: self._signalsAreDone = True signal.signal(signal.SIGINT, signal.SIG_DFL) self.xml = glade.XML(gladeFile) self.setHandlers()
def setHandlers(self): """Automatically autoconnect all of the handlers. Any methods (even in subclasses) that start with "on_" will be treated as a handler that is automatically connected to by xml.signal_autoconnect.
""" handlers = {} for i in dir(self): if i.startswith("on_"): handlers[i] = getattr(self, i) self.xml.signal_autoconnect(handlers)
def __getattr__(self, name): """If self doesn't have the attribute, check self.xml.
If self.xml does have the attribute, wrap it in a GtkAttributesFacade instance, cache it in self, and return it. """ obj = self.xml.get_widget(name) if obj: obj = GtkAttributesFacade(obj) setattr(self, name, obj) return obj raise AttributeError("%s instance has no attribute '%s'" % (self.__class__.__name__, name))
def on_quit_activate(self, *args): """Ignore args and call gtk.mainquit().""" gtk.main_quit()
|