blob: 7cd0b1c340a4927e906b22318797d1297dd4af6a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import dbus
import geckoembed
import threading
import gobject
import sugar.env
from sugar.browser.WebActivity import WebActivity
from sugar.browser.BrowserActivity import BrowserActivity
class BrowserShell(dbus.service.Object):
instance = None
_lock = threading.Lock()
def get_instance():
BrowserShell._lock.acquire()
if not BrowserShell.instance:
BrowserShell.instance = BrowserShell()
BrowserShell._lock.release()
return BrowserShell.instance
get_instance = staticmethod(get_instance)
def __init__(self):
geckoembed.set_profile_path(sugar.env.get_user_dir())
session_bus = dbus.SessionBus()
bus_name = dbus.service.BusName('com.redhat.Sugar.Browser', bus=session_bus)
object_path = '/com/redhat/Sugar/Browser'
dbus.service.Object.__init__(self, bus_name, object_path)
self.__browsers = []
def open_web_activity(self):
web_activity = WebActivity(self)
web_activity.connect_to_shell()
@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
@dbus.service.method('com.redhat.Sugar.BrowserShell')
def open_browser(self, uri):
browser = BrowserActivity(None, uri)
self.__browsers.append(browser)
browser.connect_to_shell()
|