diff options
Diffstat (limited to 'activities/browser/BrowserShell.py')
-rw-r--r-- | activities/browser/BrowserShell.py | 51 |
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) |