Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/activities/browser/BrowserShell.py
diff options
context:
space:
mode:
Diffstat (limited to 'activities/browser/BrowserShell.py')
-rw-r--r--activities/browser/BrowserShell.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/activities/browser/BrowserShell.py b/activities/browser/BrowserShell.py
new file mode 100644
index 0000000..c1e0c44
--- /dev/null
+++ b/activities/browser/BrowserShell.py
@@ -0,0 +1,51 @@
+import dbus
+import geckoembed
+import pygtk
+pygtk.require('2.0')
+import gtk
+import gobject
+
+import sugar.env
+from sugar.presence import Service
+
+from BrowserActivity import BrowserActivity
+
+class BrowserShell(dbus.service.Object):
+ def __init__(self, bus_name, object_path = '/com/redhat/Sugar/Browser'):
+ dbus.service.Object.__init__(self, bus_name, object_path)
+
+ geckoembed.set_profile_path(sugar.env.get_user_dir())
+ self.__browsers = []
+
+ def start(self):
+ gtk.main()
+
+ @dbus.service.method('com.redhat.Sugar.BrowserShell')
+ def get_links(self):
+ links = []
+ for browser in self.__browsers:
+ embed = browser.get_embed()
+ link = {}
+ link['title'] = embed.get_title()
+ link['address'] = embed.get_address()
+ links.append(link)
+ return links
+
+ def _start_browser_cb(self, browser, service):
+ browser.connect_to_shell(service)
+
+ @dbus.service.method('com.redhat.Sugar.BrowserShell')
+ def open_browser(self, uri, serialized_service=None):
+ service = None
+ if serialized_service is not None:
+ service = Service.deserialize(serialized_service)
+ browser = BrowserActivity(uri)
+ self.__browsers.append(browser)
+ gobject.idle_add(self._start_browser_cb, browser, service)
+
+ @dbus.service.method('com.redhat.Sugar.BrowserShell')
+ def open_browser_from_service_foobar(self, uri, serialized_service):
+ service = Service.deserialize(serialized_service)
+ browser = BrowserActivity(uri)
+ self.__browsers.append(browser)
+ gobject.idle_add(self._start_browser_cb, browser, service)