+# app - zavai main window
+#
+# Copyright (C) 2009 Enrico Zini <enrico@enricozini.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
+
import sys
-import gtk
+from gettext import gettext as _
+import gtk, gobject
+import zavai
-class Zavai(gtk.Window):
+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