[sugar] running the journal inside the shell process

Tomeu Vizoso tomeu at tomeuvizoso.net
Tue May 27 05:28:56 EDT 2008


Hi,

talking with Morgan about journal object transfer (see link below), he
commented that if the journal was part of the shell, the invitations
stuff would be easier to implement.

http://wiki.laptop.org/go/Specifications/Object_Transfers

The hack below almost works fine, there just seem to be a problem with
the shell calling TakeScreenshot to itself...

Any idea how this could be done in a more appropriate way?

Thanks,

Tomeu

diff --git a/src/view/Shell.py b/src/view/Shell.py
index f45923d..6befd91 100644
--- a/src/view/Shell.py
+++ b/src/view/Shell.py
@@ -92,8 +92,19 @@ class Shell(gobject.GObject):
         # Checking for the bundle existence will also ensure
         # that the shell service is started up.
         registry = activity.get_registry()
-        if registry.get_activity('org.laptop.JournalActivity'):
-            self.start_activity('org.laptop.JournalActivity')
+        activity_info = registry.get_activity('org.laptop.JournalActivity')
+        if activity_info is not None:
+            import sys, os
+            from sugar.activity.activityhandle import ActivityHandle
+            from sugar.activity import activityfactory
+            sys.path.insert(0, activity_info.path)
+
+            from journalactivity import JournalActivity
+
+            os.environ['SUGAR_BUNDLE_ID'] = 'org.laptop.JournalActivity'
+            handle = ActivityHandle(activityfactory.create_activity_id())
+            journal_activity = JournalActivity(handle)
+            journal_activity.show_all()

     def _activity_started_cb(self, home_model, home_activity):
         activity_host = ActivityHost(home_activity)


More information about the Sugar mailing list