Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpgritti@gmail.com>2008-10-05 23:10:54 (GMT)
committer Marco Pesenti Gritti <mpgritti@gmail.com>2008-10-05 23:10:54 (GMT)
commit044e457dc6432b7ccda27ebcf5778fd3cb82b14e (patch)
tree3349aab206674ef25ad997f3aa713539b76ed29d
parent594fc9f4a674b93b7e43c70f2db13f1236ba8547 (diff)
Move launcher management outside shell.
-rw-r--r--bin/sugar-shell3
-rw-r--r--src/jarabe/view/Makefile.am2
-rw-r--r--src/jarabe/view/launcher.py (renamed from src/jarabe/view/launchwindow.py)37
-rw-r--r--src/jarabe/view/shell.py33
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