Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/console/console.py
diff options
context:
space:
mode:
Diffstat (limited to 'shell/console/console.py')
-rw-r--r--shell/console/console.py50
1 files changed, 38 insertions, 12 deletions
diff --git a/shell/console/console.py b/shell/console/console.py
index 9e4578b..be2d93c 100644
--- a/shell/console/console.py
+++ b/shell/console/console.py
@@ -5,28 +5,54 @@ import hippo
from sugar.graphics.roundbox import CanvasRoundBox
+from model.shellmodel import ShellModel
+
class Console(gtk.Window):
def __init__(self, shell_model):
gtk.Window.__init__(self)
self._shell_model = shell_model
+ self._home_model = shell_model.get_home()
+ self._shell_model.connect('notify::zoom-level',
+ self._zoom_level_changed_cb)
+ self._home_model.connect('active-activity-changed',
+ self._active_activity_changed_cb)
- self.set_default_size(gtk.gdk.screen_width() * 3 / 4,
- gtk.gdk.screen_height() * 3 / 4)
+ self.set_default_size(gtk.gdk.screen_width() * 5 / 6,
+ gtk.gdk.screen_height() * 5 / 6)
self.set_decorated(False)
self.set_position(gtk.WIN_POS_CENTER_ALWAYS)
self.connect('realize', self._realize_cb)
- canvas = hippo.Canvas()
- self.add(canvas)
- canvas.show()
+ self.canvas = hippo.Canvas()
+ self.add(self.canvas)
+ self.canvas.show()
+
+ self.registry = Registry()
+ self.context = 'shell'
+ self._update_view()
+ def _update_view(self):
box = hippo.CanvasBox(padding=20, background_color=0x000000FF)
- canvas.set_root(box)
+ self.canvas.set_root(box)
- self.registry = Registry()
for module in self.registry.view_modules:
- box.append(module.create_view('shell'), hippo.PACK_EXPAND)
+ box.append(module.create_view(self.context), hippo.PACK_EXPAND)
+
+ def _active_activity_changed_cb(self, home_model, activity):
+ if self._shell_model.get_zoom_level() == ShellModel.ZOOM_HOME:
+ self.context = 'activity:' + activity.get_type()
+ self._update_view()
+
+ def _zoom_level_changed_cb(self, shell_model, pspec):
+ if shell_model.props.zoom_level == ShellModel.ZOOM_HOME:
+ self.set_context('home')
+ elif shell_model.props.zoom_level == ShellModel.ZOOM_ACTIVITY:
+ activity = self._home_model.get_active_activity()
+ self.context = 'activity:' + activity.get_type()
+ self._update_view()
+ else:
+ self.set_context('mesh')
def _realize_cb(self, widget):
self.window.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
@@ -35,11 +61,11 @@ class Registry(object):
def __init__(self):
self.view_modules = []
- base_extensions = [ 'console.logviewer' ]
- for extension in base_extensions:
- self.load_extension(extension)
+ view_modules = [ 'console.logviewer' ]
+ for module in view_modules:
+ self.load_view_modules(module)
- def load_extension(self, name):
+ def load_view_modules(self, name):
module = __import__(name)
components = name.split('.')
for component in components[1:]: