This adds some functions to to start/stop the tabbing and to switch to the
next and previous activity. It also takes care of raising the activities
window after a short delay.
---
src/view/Shell.py | 63 +
1 files changed, 63 insertions(+), 0 deletions(-)
diff --git a/src/view/Shell.py b/src/view/Shell.py
index b77465d..35f4073 100644
--- a/src/view/Shell.py
+++ b/src/view/Shell.py
@@ -57,6 +57,7 @@ class Shell(gobject.GObject):
self._screen = wnck.screen_get_default()
self._current_host = None
self._screen_rotation = 0
+self._tabbing_timeout = None
self._key_handler = KeyHandler()
@@ -222,6 +223,68 @@ class Shell(gobject.GObject):
self.take_activity_screenshot()
next_activity.get_window().activate(gtk.get_current_event_time())
+def tabbing_activate_current(self):
+home_model = self._model.get_home()
+activity = home_model.get_active_activity()
+if activity and activity.get_window():
+activity.get_window().activate(1)
+
+def __tabbing_timeout_cb(self):
+self._tabbing_timeout = None
+self.tabbing_activate_current()
+return False
+
+def tabbing_previous_activity(self, first_switch):
+home_model = self._model.get_home()
+zoom_level = self._model.get_zoom_level()
+
+if first_switch and zoom_level != shellmodel.ShellModel.ZOOM_ACTIVITY:
+activity = home_model.get_active_activity()
+else:
+activity = home_model.get_previous_activity()
+
+home_model.tabbing_set_activity(activity)
+
+if self._tabbing_timeout:
+gobject.source_remove(self._tabbing_timeout)
+self._tabbing_timeout = \
+gobject.timeout_add(250, self.__tabbing_timeout_cb)
+
+def tabbing_next_activity(self, first_switch):
+home_model = self._model.get_home()
+zoom_level = self._model.get_zoom_level()
+
+if first_switch and zoom_level != shellmodel.ShellModel.ZOOM_ACTIVITY:
+activity = home_model.get_active_activity()
+else:
+activity = home_model.get_next_activity()
+
+home_model.tabbing_set_activity(activity)
+
+if self._tabbing_timeout:
+gobject.source_remove(self._tabbing_timeout)
+self._tabbing_timeout = \
+gobject.timeout_add(250, self.__tabbing_timeout_cb)
+
+def tabbing_start(self):
+self.take_activity_screenshot()
+self._frame.show(self._frame.MODE_NON_INTERACTIVE)
+
+home_model = self._model.get_home()
+home_model.tabbing_start()
+
+def tabbing_stop(self):
+self._frame.hide()
+
+if self._tabbing_timeout:
+gobject.source_remove(self._tabbing_timeout)
+
+self.tabbing_activate_current()
+self._model.get_home().tabbing_stop()
+
+home_model = self._model.get_home()
+home_model.tabbing_stop()
+
def close_current_activity(self):
if self._model.get_zoom_level() != shellmodel.ShellModel.ZOOM_ACTIVITY:
return
___
Sugar mailing list
Sugar@lists.laptop.org
http://lists.laptop.org/listinfo/sugar