# 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