diff options
author | Julien Valroff <julien@kirya.net> | 2011-03-25 22:07:02 +0100 |
---|---|---|
committer | Julien Valroff <julien@kirya.net> | 2011-03-25 22:07:02 +0100 |
commit | 59350657b70c3c2bb9e1cf90817bb4607a00e4fe (patch) | |
tree | 4eb598ac0235c9cf1614eaf9e33b1d7d290e9e3d /rapid/gnomeglade.py | |
parent | 478f6858602c736b67d420cbf198aeab3313cc23 (diff) | |
parent | 6866d4a5b74779f087b8e44148a49163d8b7327b (diff) |
Merge commit 'upstream/0.4.0_alpha1' into experimental
Diffstat (limited to 'rapid/gnomeglade.py')
-rw-r--r-- | rapid/gnomeglade.py | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/rapid/gnomeglade.py b/rapid/gnomeglade.py deleted file mode 100644 index c0b0860..0000000 --- a/rapid/gnomeglade.py +++ /dev/null @@ -1,166 +0,0 @@ -### Copyright (C) 2002-2006 Stephen Kennedy <stevek@gnome.org> - -### This program is free software; you can redistribute it and/or modify -### it under the terms of the GNU General Public License as published by -### the Free Software Foundation; either version 2 of the License, or -### (at your option) any later version. - -### This program is distributed in the hope that it will be useful, -### but WITHOUT ANY WARRANTY; without even the implied warranty of -### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -### GNU General Public License for more details. - -### You should have received a copy of the GNU General Public License -### along with this program; if not, write to the Free Software -### Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -"""Utility classes for working with glade files. - -""" -# modified by Damon Lynch May 2009 to update i18n - -import gtk -import gtk.glade -import gnome -import gnome.ui -#import gettext -import config -from common import Configi18n - -class Base(object): - """Base class for all glade objects. - - This class handles loading the xml glade file and connects - all methods name 'on_*' to the signals in the glade file. - - The handle to the xml file is stored in 'self.xml'. The - toplevel widget is stored in 'self.widget'. - - In addition it calls widget.set_data("pyobject", self) - this - allows us to get the python object given only the 'raw' gtk+ - object, which is sadly sometimes necessary. - """ - - def __init__(self, file, root, override={}): - """Load the widgets from the node 'root' in file 'file'. - - Automatically connects signal handlers named 'on_*'. - """ - global _ - _ = Configi18n._ - if Configi18n.locale_path: - gtk.glade.bindtextdomain(config.APP_NAME, Configi18n.locale_path) - gtk.glade.textdomain(config.APP_NAME) - self.xml = gtk.glade.XML(file, root, typedict=override ) - handlers = {} - for h in filter(lambda x:x.startswith("on_"), dir(self.__class__)): - handlers[h] = getattr(self, h) - self.xml.signal_autoconnect( handlers ) - self.widget = getattr(self, root) - self.widget.set_data("pyobject", self) - - def __getattr__(self, key): - """Allow glade widgets to be accessed as self.widgetname. - """ - widget = self.xml.get_widget(key) - if widget: # cache lookups - setattr(self, key, widget) - return widget - raise AttributeError(key) - - def flushevents(self): - """Handle all the events currently in the main queue and return. - """ - while gtk.events_pending(): - gtk.main_iteration(); - - def _map_widgets_into_lists(self, widgetnames): - """Put sequentially numbered widgets into lists. - - e.g. If an object had widgets self.button0, self.button1, ..., - then after a call to object._map_widgets_into_lists(["button"]) - object has an attribute self.button == [self.button0, self.button1, ...]." - """ - for item in widgetnames: - setattr(self,item, []) - lst = getattr(self,item) - i = 0 - while 1: - key = "%s%i"%(item,i) - try: - val = getattr(self, key) - except AttributeError: - break - lst.append(val) - i += 1 - - -class Component(Base): - """A convenience base class for widgets which use glade. - """ - - def __init__(self, file, root, override={}): - Base.__init__(self, file, root, override) - - -class GtkApp(Base): - """A convenience base class for gtk+ apps created in glade. - """ - - def __init__(self, file, root=None): - Base.__init__(self, file, root) - - def main(self): - """Enter the gtk main loop. - """ - gtk.main() - - def quit(self, *args): - """Signal the gtk main loop to quit. - """ - gtk.main_quit() - - -class GnomeApp(GtkApp): - """A convenience base class for apps created in glade. - """ - - def __init__(self, name, version, file, root): - """Initialise program 'name' and version from 'file' containing root node 'root'. - """ - self.program = gnome.program_init(name, version) - GtkApp.__init__(self,file,root) - if 0: - self.client = gnome.ui.Client() - self.client.disconnect() - def connected(*args): - print "CONNECTED", args - def cb(name): - def cb2(*args): - print name, args, "\n" - return cb2 - self.client.connect("connect", cb("CON")) - self.client.connect("die", cb("DIE")) - self.client.connect("disconnect", cb("DIS")) - self.client.connect("save-yourself", cb("SAVE")) - self.client.connect("shutdown-cancelled", cb("CAN")) - self.client.connect_to_session_manager() - - -def load_pixbuf(fname, size=0): - """Load an image from a file as a pixbuf, with optional resizing. - """ - image = gtk.Image() - image.set_from_file(fname) - image = image.get_pixbuf() - if size: - aspect = float(image.get_height()) / image.get_width() - image = image.scale_simple(size, int(aspect*size), 2) - return image - -def url_show(url): - return gnome.url_show(url) - -def FileEntry(*args): - return gnome.ui.FileEntry(*args) - |