Implement links. Require new gecko-embed

This commit is contained in:
Marco Pesenti Gritti
2006-04-25 17:47:49 -04:00
parent e5cd418e7e
commit 1676e5edcc
4 changed files with 159 additions and 22 deletions
+2 -2
View File
@@ -3,5 +3,5 @@ DEPENDENCIES
gecko-embed
http://gnome.org/~marco/gecko-embed-0.1-4.i386.rpm
http://gnome.org/~marco/gecko-embed-0.1-4.src.rpm
http://gnome.org/~marco/gecko-embed-0.1-5.i386.rpm
http://gnome.org/~marco/gecko-embed-0.1-5.src.rpm
+36 -8
View File
@@ -23,8 +23,7 @@ class AddressToolbar(gtk.Toolbar):
address_item.show()
def __open_address_cb(self, address):
browser = BrowserActivity(address)
browser.activity_connect_to_shell()
browser_shell.open_browser(address)
class AddressItem(gtk.ToolItem):
def __init__(self, callback):
@@ -140,7 +139,7 @@ class NavigationToolbar(gtk.Toolbar):
self._update_sensitivity()
def __open_address_cb(self, address):
self.embed.load_url(address)
self.embed.load_address(address)
class BrowserActivity(activity.Activity):
def __init__(self, uri):
@@ -159,7 +158,7 @@ class BrowserActivity(activity.Activity):
vbox.pack_start(self.embed)
self.embed.show()
self.embed.load_url(self.uri)
self.embed.load_address(self.uri)
nav_toolbar = NavigationToolbar(self.embed)
vbox.pack_start(nav_toolbar, False)
@@ -170,7 +169,10 @@ class BrowserActivity(activity.Activity):
plug.show()
vbox.show()
def get_embed(self):
return self.embed
def __title_cb(self, embed):
self.activity_set_tab_text(embed.get_title())
@@ -201,18 +203,44 @@ class WebActivity(activity.Activity):
vbox.show()
self.embed.load_url("http://www.google.com")
self.embed.load_address("http://www.google.com")
def __open_address(self, embed, uri, data=None):
if uri.startswith("http://www.google.com"):
return False
else:
browser = BrowserActivity(uri)
browser.activity_connect_to_shell()
browser_shell.open_browser(uri)
return True
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)
self.__browsers = []
@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(uri)
self.__browsers.append(browser)
browser.activity_connect_to_shell()
web_activity = WebActivity()
web_activity.activity_connect_to_shell()
session_bus = dbus.SessionBus()
bus_name = dbus.service.BusName('com.redhat.Sugar.Browser', bus=session_bus)
browser_shell = BrowserShell(bus_name)
try:
gtk.main()
except KeyboardInterrupt: