Notify trackdir creation
[gregoa/zavai.git] / zavai / app.py
index 537ff8516aae54a65fdf1c524dc41241f7fe7f16..22be04e3cfafc85d002e75d0f660c6bde20d995e 100644 (file)
@@ -18,7 +18,7 @@
 
 import sys
 from gettext import gettext as _
-import gtk
+import gtk, gobject
 import zavai
 
 class Zavai(gtk.Window, zavai.Resource):
@@ -26,9 +26,18 @@ class Zavai(gtk.Window, zavai.Resource):
         super(Zavai, self).__init__()
         self.registry = registry
         self.current = None
-        self.show_widget("menu.main")
+        self.activate_resource("menu.main")
 
-    def show_widget(self, name):
+    def activate_resource(self, name):
+        widget = self.registry.resource(name)
+        if widget is None:
+            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:
@@ -39,9 +48,6 @@ class Zavai(gtk.Window, zavai.Resource):
             self.current = None
 
         # Add the new widget. If it is an applet, start it
-        widget = self.registry.resource(name)
-        if widget is None:
-            widget = self.registry.resource("menu.main")
         self.add(widget)
         self.current = name
         if isinstance(widget, zavai.Applet):
@@ -53,14 +59,26 @@ class Zavai(gtk.Window, zavai.Resource):
         self.show_all()
         gtk.main()
 
-class Applet(zavai.Resource):
-    def __init__(self, registry, name):
+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.zavai_name = name
 
-    def make_parent_link(self):
-        return zavai.LinkButton(self.zavai_registry, zavai.get_parent(self.zavai_name), _("Back"))
+        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()