diff options
Diffstat (limited to 'src/jarabe/desktop/homewindow.py')
-rw-r--r-- | src/jarabe/desktop/homewindow.py | 82 |
1 files changed, 47 insertions, 35 deletions
diff --git a/src/jarabe/desktop/homewindow.py b/src/jarabe/desktop/homewindow.py index e673414..e88fca6 100644 --- a/src/jarabe/desktop/homewindow.py +++ b/src/jarabe/desktop/homewindow.py @@ -40,7 +40,6 @@ class HomeWindow(gtk.Window): self.add_accel_group(accel_group) self._active = False - self._level = ShellModel.ZOOM_HOME self.set_default_size(gtk.gdk.screen_width(), gtk.gdk.screen_height()) @@ -62,16 +61,14 @@ class HomeWindow(gtk.Window): self._mesh_box = MeshBox() self._transition_box = TransitionBox() - self._activate_view() self.add(self._home_box) self._home_box.show() self._transition_box.connect('completed', self._transition_completed_cb) - model = shell.get_model() - model.connect('notify::zoom-level', self.__zoom_level_changed_cb) - print model + shell.get_model().zoom_level_changed.connect( + self.__zoom_level_changed_cb) def _enter_notify_event_cb(self, window, event): if event.x != gtk.gdk.screen_width() / 2 or \ @@ -92,18 +89,18 @@ class HomeWindow(gtk.Window): self.disconnect(self._motion_sid) self.disconnect(self._enter_sid) - def _deactivate_view(self): + def _deactivate_view(self, level): group = palettegroup.get_group("default") group.popdown() - if self._level == ShellModel.ZOOM_HOME: + if level == ShellModel.ZOOM_HOME: self._home_box.suspend() - elif self._level == ShellModel.ZOOM_MESH: + elif level == ShellModel.ZOOM_MESH: self._mesh_box.suspend() - def _activate_view(self): - if self._level == ShellModel.ZOOM_HOME: + def _activate_view(self, level): + if level == ShellModel.ZOOM_HOME: self._home_box.resume() - elif self._level == ShellModel.ZOOM_MESH: + elif level == ShellModel.ZOOM_MESH: self._mesh_box.resume() def _visibility_notify_event_cb(self, window, event): @@ -112,40 +109,55 @@ class HomeWindow(gtk.Window): else: self._activate_view() - def __zoom_level_changed_cb(self, model, pspec): - level = model.props.zoom_level + def __zoom_level_changed_cb(self, **kwargs): + old_level = kwargs['old_level'] + new_level = kwargs['new_level'] + + self._deactivate_view(old_level) + self._activate_view(new_level) + + if old_level != ShellModel.ZOOM_ACTIVITY and \ + new_level != ShellModel.ZOOM_ACTIVITY: + self.remove(self.get_child()) + self.add(self._transition_box) + self._transition_box.show() + + if new_level == ShellModel.ZOOM_HOME: + end_size = style.XLARGE_ICON_SIZE + elif new_level == ShellModel.ZOOM_GROUP: + end_size = style.LARGE_ICON_SIZE + elif new_level == ShellModel.ZOOM_MESH: + end_size = style.STANDARD_ICON_SIZE + + if old_level == ShellModel.ZOOM_HOME: + start_size = style.XLARGE_ICON_SIZE + elif old_level == ShellModel.ZOOM_GROUP: + start_size = style.LARGE_ICON_SIZE + elif old_level == ShellModel.ZOOM_MESH: + start_size = style.STANDARD_ICON_SIZE + + self._transition_box.start_transition(start_size, end_size) + else: + self._update_view(new_level) + + def _transition_completed_cb(self, transition_box): + self._update_view(shell.get_model().zoom_level) + + def _update_view(self, level): if level == ShellModel.ZOOM_ACTIVITY: return - self._deactivate_view() - self._level = level - self._activate_view() - - self.remove(self.get_child()) - self.add(self._transition_box) - self._transition_box.show() - - if self._level == ShellModel.ZOOM_HOME: - size = style.XLARGE_ICON_SIZE - elif self._level == ShellModel.ZOOM_GROUP: - size = style.LARGE_ICON_SIZE - elif self._level == ShellModel.ZOOM_MESH: - size = style.STANDARD_ICON_SIZE - - self._transition_box.set_size(size) - - def _transition_completed_cb(self, transition_box): - current_child = self.get_child() + current_child = self.get_child() self.remove(current_child) - if self._level == ShellModel.ZOOM_HOME: + if level == ShellModel.ZOOM_HOME: self.add(self._home_box) self._home_box.show() self._home_box.focus_search_entry() - elif self._level == ShellModel.ZOOM_GROUP: + elif level == ShellModel.ZOOM_GROUP: self.add(self._group_box) self._group_box.show() - elif self._level == ShellModel.ZOOM_MESH: + elif level == ShellModel.ZOOM_MESH: self.add(self._mesh_box) self._mesh_box.show() self._mesh_box.focus_search_entry() |