diff options
-rw-r--r-- | bin/sugar-shell | 3 | ||||
-rw-r--r-- | src/jarabe/view/Makefile.am | 2 | ||||
-rw-r--r-- | src/jarabe/view/launcher.py (renamed from src/jarabe/view/launchwindow.py) | 37 | ||||
-rw-r--r-- | src/jarabe/view/shell.py | 33 |
4 files changed, 41 insertions, 34 deletions
diff --git a/bin/sugar-shell b/bin/sugar-shell index fb3f96d..acdfa89 100644 --- a/bin/sugar-shell +++ b/bin/sugar-shell @@ -43,6 +43,7 @@ from jarabe.nmservice import NMService from jarabe.model import sound from jarabe.model import screen from jarabe.journal import journalactivity +from jarabe.view import launcher from jarabe import logsmanager from jarabe import config @@ -103,6 +104,8 @@ def main(): shell.get_instance() ShellService() + launcher.setup() + session_manager = get_session_manager() session_manager.start() diff --git a/src/jarabe/view/Makefile.am b/src/jarabe/view/Makefile.am index f09e20f..6b46af8 100644 --- a/src/jarabe/view/Makefile.am +++ b/src/jarabe/view/Makefile.am @@ -4,7 +4,7 @@ sugar_PYTHON = \ buddyicon.py \ buddymenu.py \ keyhandler.py \ - launchwindow.py \ + launcher.py \ pulsingicon.py \ tabbinghandler.py \ palettes.py \ diff --git a/src/jarabe/view/launchwindow.py b/src/jarabe/view/launcher.py index 480d2f0..a8cf72a 100644 --- a/src/jarabe/view/launchwindow.py +++ b/src/jarabe/view/launcher.py @@ -14,6 +14,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import logging + import gtk import hippo import gobject @@ -111,3 +113,38 @@ class _Animation(animator.Animation): def next_frame(self, current): d = (self.end_size - self.start_size) * current self._icon.props.size = self.start_size + d + +_launchers = {} + +def setup(): + model = shell.get_model() + model.connect('launch-started', __launch_started_cb) + model.connect('launch-failed', __launch_failed_cb) + model.connect('launch-completed', __launch_completed_cb) + +def __launch_started_cb(home_model, home_activity): + if home_activity.is_journal(): + return + + launch_window = LaunchWindow(home_activity) + launch_window.show() + + _launchers[home_activity.get_activity_id()] = launch_window + shell.get_model().set_zoom_level(shell.ShellModel.ZOOM_ACTIVITY) + +def __launch_failed_cb(home_model, home_activity): + if not home_activity.is_journal(): + _destroy_launcher(home_activity) + +def __launch_completed_cb(home_model, home_activity): + if not home_activity.is_journal(): + _destroy_launcher(home_activity) + +def _destroy_launcher(home_activity): + activity_id = home_activity.get_activity_id() + + if activity_id in _launchers: + _launchers[activity_id].destroy() + del _launchers[activity_id] + else: + logging.error('Launcher for %s is missing' % activity_id) diff --git a/src/jarabe/view/shell.py b/src/jarabe/view/shell.py index 9486070..8073b94 100644 --- a/src/jarabe/view/shell.py +++ b/src/jarabe/view/shell.py @@ -20,7 +20,6 @@ import gobject import gtk import wnck -from jarabe.view.launchwindow import LaunchWindow from jarabe.model import shell class Shell(gobject.GObject): @@ -28,7 +27,6 @@ class Shell(gobject.GObject): gobject.GObject.__init__(self) self._model = shell.get_model() - self._launchers = {} self._screen = wnck.screen_get_default() self._screen_rotation = 0 @@ -42,37 +40,6 @@ class Shell(gobject.GObject): self.home_window = HomeWindow() self.home_window.show() - self._model.connect('launch-started', self.__launch_started_cb) - self._model.connect('launch-failed', self.__launch_failed_cb) - self._model.connect('launch-completed', self.__launch_completed_cb) - - def __launch_started_cb(self, home_model, home_activity): - if home_activity.is_journal(): - return - - launch_window = LaunchWindow(home_activity) - launch_window.show() - - self._launchers[home_activity.get_activity_id()] = launch_window - self._model.set_zoom_level(shell.ShellModel.ZOOM_ACTIVITY) - - def __launch_failed_cb(self, home_model, home_activity): - if not home_activity.is_journal(): - self._destroy_launcher(home_activity) - - def __launch_completed_cb(self, home_model, home_activity): - if not home_activity.is_journal(): - self._destroy_launcher(home_activity) - - def _destroy_launcher(self, home_activity): - activity_id = home_activity.get_activity_id() - - if activity_id in self._launchers: - self._launchers[activity_id].destroy() - del self._launchers[activity_id] - else: - logging.error('Launcher for %s is missing' % activity_id) - def get_frame(self): return self._frame |