From eade4bff033bc4c9839711937bb7598c6dce3c60 Mon Sep 17 00:00:00 2001 From: Tomeu Vizoso Date: Thu, 14 Dec 2006 16:45:52 +0100 Subject: [PATCH 1/5] Improve error reporting when a non-activity window is opened. --- shell/view/Shell.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/shell/view/Shell.py b/shell/view/Shell.py index 9166cef6..48b3b09f 100644 --- a/shell/view/Shell.py +++ b/shell/view/Shell.py @@ -14,9 +14,12 @@ # 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 gobject import wnck +import dbus import view.stylesheet from sugar.graphics import style @@ -128,7 +131,14 @@ class Shell(gobject.GObject): def __window_opened_cb(self, screen, window): if window.get_window_type() == wnck.WINDOW_NORMAL: - activity_host = ActivityHost(self.get_model(), window) + try: + activity_host = ActivityHost(self.get_model(), window) + except dbus.DBusException: + logging.debug('Shell.__window_opened_cb: opened unknown window ' + + window.get_name() + ' with xid ' + + str(window.get_xid())) + return + self._hosts[activity_host.get_xid()] = activity_host self.emit('activity-opened', activity_host) From cb38a2c1fa4b5671879af84ee7594f13e5fa2091 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 14 Dec 2006 13:45:13 -0500 Subject: [PATCH 2/5] Install a service file for activating the datastore upon demand --- services/datastore/.gitignore | 1 + services/datastore/Makefile.am | 9 ++++++++- services/datastore/org.laptop.sugar.DataStore.service.in | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 services/datastore/.gitignore create mode 100644 services/datastore/org.laptop.sugar.DataStore.service.in diff --git a/services/datastore/.gitignore b/services/datastore/.gitignore new file mode 100644 index 00000000..c0ede5ed --- /dev/null +++ b/services/datastore/.gitignore @@ -0,0 +1 @@ +org.laptop.sugar.DataStore.service diff --git a/services/datastore/Makefile.am b/services/datastore/Makefile.am index ff8a4e5a..29b044c9 100644 --- a/services/datastore/Makefile.am +++ b/services/datastore/Makefile.am @@ -1,3 +1,10 @@ +servicedir = $(datadir)/dbus-1/services +service_in_files = org.laptop.sugar.DataStore.service.in +service_DATA = $(service_in_files:.service.in=.service) + +$(service_DATA): $(service_in_files) Makefile + @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ + sugardir = $(pkgdatadir)/services/data-store sugar_PYTHON = \ __init__.py \ @@ -6,4 +13,4 @@ sugar_PYTHON = \ bin_SCRIPTS = sugar-data-store -EXTRA_DIST = $(bin_SCRIPTS) +EXTRA_DIST = $(bin_SCRIPTS) org.laptop.sugar.DataStore.service.in diff --git a/services/datastore/org.laptop.sugar.DataStore.service.in b/services/datastore/org.laptop.sugar.DataStore.service.in new file mode 100644 index 00000000..9523788f --- /dev/null +++ b/services/datastore/org.laptop.sugar.DataStore.service.in @@ -0,0 +1,4 @@ +[D-BUS Service] +Name = org.laptop.sugar.DataStore +Exec = @bindir@/sugar-data-store + From 461b5ae2a93a0cdca8d57d7f07de77f5741d0c45 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 14 Dec 2006 17:21:04 -0500 Subject: [PATCH 3/5] Fix name so imports work --- services/datastore/Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/datastore/Makefile.am b/services/datastore/Makefile.am index 29b044c9..90e2b673 100644 --- a/services/datastore/Makefile.am +++ b/services/datastore/Makefile.am @@ -5,7 +5,7 @@ service_DATA = $(service_in_files:.service.in=.service) $(service_DATA): $(service_in_files) Makefile @sed -e "s|\@bindir\@|$(bindir)|" $< > $@ -sugardir = $(pkgdatadir)/services/data-store +sugardir = $(pkgdatadir)/services/datastore sugar_PYTHON = \ __init__.py \ datastore.py \ From 72b538321415729325b2e368a742c4a1a3760ac6 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 14 Dec 2006 17:21:25 -0500 Subject: [PATCH 4/5] Export session bus address for testing purposes --- shell/sugar-shell | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/shell/sugar-shell b/shell/sugar-shell index 1620aa32..67c80291 100755 --- a/shell/sugar-shell +++ b/shell/sugar-shell @@ -44,6 +44,15 @@ if not name or not len(name): dialog.run() profile.update() +# Save our DBus Session Bus address somewhere it can be found +# +# WARNING!!! this is going away at some near future point, do not rely on it +# +dsba_file = os.path.join(env.get_profile_path(), "session_bus_address") +f = open(dsba_file, "w") +f.write(os.environ["DBUS_SESSION_BUS_ADDRESS"]) +f.close() + model = ShellModel() shell = Shell(model) @@ -53,10 +62,11 @@ args = ["sugar-nm-applet"] flags = gobject.SPAWN_SEARCH_PATH result = gobject.spawn_async(args, flags=flags, standard_output=False) - tbh = TracebackUtils.TracebackHelper() try: gtk.main() except KeyboardInterrupt: print 'Ctrl+C pressed, exiting...' del tbh + +os.remove(dsba_file) From 5103f1fb27fcfa0153caf5e6b76e59a48f08df36 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 14 Dec 2006 17:21:46 -0500 Subject: [PATCH 5/5] run data store from emulator when needed --- sugar-emulator | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sugar-emulator b/sugar-emulator index 6e829e14..b8c290c3 100755 --- a/sugar-emulator +++ b/sugar-emulator @@ -58,6 +58,11 @@ if sourcedir: util.write_service('org.laptop.Clipboard', bin, env.get_user_service_dir()) + bin = os.path.join(sourcedir, + 'services/datastore/sugar-data-store') + util.write_service('org.laptop.sugar.DataStore', bin, + env.get_user_service_dir()) + from sugar.emulator import Emulator program = 'sugar-shell'