X-Git-Url: https://git.toastfreeware.priv.at/gregoa/zavai.git/blobdiff_plain/e51db273937e7ff7f8005eadd8def89e24d03c8d..1e74918242c3d247f507158c955a539ddf6b1b28:/zavai/app.py diff --git a/zavai/app.py b/zavai/app.py index 1d902ce..2d8020e 100644 --- a/zavai/app.py +++ b/zavai/app.py @@ -17,25 +17,74 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import sys -import gtk +from gettext import gettext as _ +import gtk, gobject import zavai class Zavai(gtk.Window, zavai.Resource): def __init__(self, registry, name): super(Zavai, self).__init__() self.registry = registry - self.add(registry.menu("main")) + self.current = None + self.activate_resource("menu.main") - def show_widget(self, name): - widget = self.registry.get_existing(name) + def activate_resource(self, name): + widget = self.registry.resource(name) if widget is None: - widget = self.registry.menu("main") - self.remove(self.get_child()) + widget = self.registry.resource("menu.main") + if isinstance(widget, gtk.Action): + widget.activate() + else: + self.show_widget(name, widget) + + def show_widget(self, name, widget): + # Remove the current widget. + # If it is an Applet, stop it + if self.current is not None: + cur = self.registry.resource(self.current) + if isinstance(cur, zavai.Applet): + cur.stop() + self.remove(self.get_child()) + self.current = None + + # Add the new widget. If it is an applet, start it self.add(widget) + self.current = name + if isinstance(widget, zavai.Applet): + widget.start() widget.show_all() def run(self): - self.fullscreen() + #self.fullscreen() self.show_all() gtk.main() +class Applet(gtk.VBox): + name = gobject.property(type=str) + label = gobject.property(type=str) + + def __init__(self, registry, name, label = None): + super(Applet, self).__init__() + + self.zavai_registry = registry + + self.props.name = name + if label is None: + self.props.label = zavai.default_label(name) + else: + self.props.label = label + + self.back_link = zavai.LinkButton(registry, zavai.get_parent(name), _("Back")) + self.pack_end(self.back_link, False, False) + + def add(self, widget): + self.pack_start(widget, True, True) + + def shutdown(self): + self.stop() + + def start(self, *args): + pass + + def stop(self, *args): + pass