From 33545aa0346a7216257e3af870da888926730d59 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Fri, 21 Apr 2006 16:25:34 -0400 Subject: [PATCH] Use activity.py --- browser/browser.py | 146 ++--------------------------- shell/example-activity/activity.py | 7 ++ 2 files changed, 14 insertions(+), 139 deletions(-) diff --git a/browser/browser.py b/browser/browser.py index 9da67960..bb0491a3 100755 --- a/browser/browser.py +++ b/browser/browser.py @@ -10,141 +10,9 @@ import gtk import geckoembed -################################################################################ -# Code below will be moved to a module someday - -class Activity(dbus.service.Object): - - def __init__(self): - pass - - def name_owner_changed(self, service_name, old_service_name, new_service_name): - #print "in name_owner_changed: svc=%s oldsvc=%s newsvc=%s"%(service_name, old_service_name, new_service_name) - if service_name == "com.redhat.Sugar.Shell" and new_service_name == "": - self.activity_on_disconnected_from_shell() - #elif service_name == "com.redhat.Sugar.Shell" and old_service_name == "": - # self.activity_on_shell_reappeared() - - def activity_connect_to_shell(self): - self.__bus = dbus.SessionBus() - - self.__bus.add_signal_receiver(self.name_owner_changed, dbus_interface = "org.freedesktop.DBus", signal_name = "NameOwnerChanged") - - self.__activity_container_object = self.__bus.get_object("com.redhat.Sugar.Shell", \ - "/com/redhat/Sugar/Shell/ActivityContainer") - self.__activity_container = dbus.Interface(self.__activity_container_object, \ - "com.redhat.Sugar.Shell.ActivityContainer") - - self.__activity_id = self.__activity_container.add_activity("") - self.__object_path = "/com/redhat/Sugar/Shell/Activities/%d"%self.__activity_id - - print "object_path = %s"%self.__object_path - - self.__activity_object = dbus.Interface(self.__bus.get_object("com.redhat.Sugar.Shell", self.__object_path), \ - "com.redhat.Sugar.Shell.ActivityHost") - self.__window_id = self.__activity_object.get_host_xembed_id() - - print "XEMBED window_id = %d"%self.__window_id - - self.__plug = gtk.Plug(self.__window_id) - - # Now let the Activity register a peer service so the Shell can poke it - self.__peer_service_name = "com.redhat.Sugar.Activity%d"%self.__activity_id - self.__peer_object_name = "/com/redhat/Sugar/Activity/%d"%self.__activity_id - self.__service = dbus.service.BusName(self.__peer_service_name, bus=self.__bus) - dbus.service.Object.__init__(self, self.__service, self.__peer_object_name) - - self.__activity_object.set_peer_service_name(self.__peer_service_name, self.__peer_object_name) - - self.activity_on_connected_to_shell() - - def activity_get_gtk_plug(self): - return self.__plug - - def activity_set_can_close(self, can_close): - self.__activity_object.set_can_close(can_close) - - @dbus.service.method("com.redhat.Sugar.Activity", \ - in_signature="", \ - out_signature="") - - def activity_set_tab_text(self, text): - self.__activity_object.set_tab_text(text) - - @dbus.service.method("com.redhat.Sugar.Activity", \ - in_signature="", \ - out_signature="") - def lost_focus(self): - self.activity_on_lost_focus() - - @dbus.service.method("com.redhat.Sugar.Activity", \ - in_signature="", \ - out_signature="") - def got_focus(self): - self.activity_on_got_focus() - - - @dbus.service.method("com.redhat.Sugar.Activity", \ - in_signature="", \ - out_signature="") - def close_from_user(self): - self.activity_on_close_from_user() - - def activity_get_id(self): - return self.__activity_id - - - def __shutdown_reply_cb(self): - print "in __reply_cb" - - self.__plug.destroy() - self.__plug = None - - self.__bus = None - self.__activity_container_object = None - self.__activity_container = None - self.__activity_object = None - self.__service = None - - self.__bus.remove_signal_receiver(self.name_owner_changed, dbus_interface = "org.freedesktop.DBus", signal_name = "NameOwnerChanged") - - self.activity_on_disconnected_from_shell() - - - del self - - - - def __shutdown_error_cb(self, error): - print "in __error_cb" - - def activity_shutdown(self): - self.__activity_object.shutdown(reply_handler = self.__shutdown_reply_cb, error_handler = self.__shutdown_error_cb) - - # pure virtual methods - - def activity_on_connected_to_shell(self): - print "act %d: you need to override activity_on_connected_to_shell"%self.activity_get_id() - - def activity_on_disconnected_from_shell(self): - print "act %d: you need to override activity_on_disconnected_from_shell"%self.activity_get_id() - - def activity_on_close_from_user(self): - print "act %d: you need to override activity_on_close_from_user"%self.activity_get_id() - - def activity_on_lost_focus(self): - print "act %d: you need to override activity_on_lost_focus"%self.activity_get_id() - - def activity_on_got_focus(self): - print "act %d: you need to override activity_on_got_focus"%self.activity_get_id() - -def my_exit(): - sys.exit(0) - -def deferred_exit(): - gobject.timeout_add(0, my_exit) - -################################################################################ +import sys +sys.path.append('../shell/example-activity/') +import activity class AddressToolbar(gtk.Toolbar): def __init__(self): @@ -274,9 +142,9 @@ class NavigationToolbar(gtk.Toolbar): def __open_address_cb(self, address): self.embed.load_url(address) -class BrowserActivity(Activity): +class BrowserActivity(activity.Activity): def __init__(self, uri): - Activity.__init__(self) + activity.Activity.__init__(self) self.uri = uri def activity_on_connected_to_shell(self): @@ -308,9 +176,9 @@ class BrowserActivity(Activity): def activity_on_close_from_user(self): self.activity_shutdown() -class WebActivity(Activity): +class WebActivity(activity.Activity): def __init__(self): - Activity.__init__(self) + activity.Activity.__init__(self) def activity_on_connected_to_shell(self): self.activity_set_tab_text("Web Browser") diff --git a/shell/example-activity/activity.py b/shell/example-activity/activity.py index 834e1b3c..986a91d4 100644 --- a/shell/example-activity/activity.py +++ b/shell/example-activity/activity.py @@ -60,7 +60,14 @@ class Activity(dbus.service.Object): def activity_get_gtk_plug(self): return self.__plug + + def activity_set_can_close(self, can_close): + self.__activity_object.set_can_close(can_close) + @dbus.service.method("com.redhat.Sugar.Activity", \ + in_signature="", \ + out_signature="") + def activity_set_tab_text(self, text): self.__activity_object.set_tab_text(text)