Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--browser.py2
-rw-r--r--palettes.py17
2 files changed, 15 insertions, 4 deletions
diff --git a/browser.py b/browser.py
index c5782f3..f57bafa 100644
--- a/browser.py
+++ b/browser.py
@@ -99,7 +99,7 @@ class Browser(WebView):
style_sheet_service.loadAndRegisterSheet(user_sheet_uri,
interfaces.nsIStyleSheetService.USER_SHEET)
- listener = xpcom.server.WrapObject(ContentInvoker(),
+ listener = xpcom.server.WrapObject(ContentInvoker(self),
interfaces.nsIDOMEventListener)
self.get_window_root().addEventListener('click', listener, False)
diff --git a/palettes.py b/palettes.py
index 03358a6..2b6d489 100644
--- a/palettes.py
+++ b/palettes.py
@@ -31,9 +31,10 @@ from sugar import profile
class ContentInvoker(Invoker):
_com_interfaces_ = interfaces.nsIDOMEventListener
- def __init__(self):
+ def __init__(self, browser):
Invoker.__init__(self)
self._position_hint = self.AT_CURSOR
+ self._browser = browser
def get_default_position(self):
return self.AT_CURSOR
@@ -56,7 +57,7 @@ class ContentInvoker(Invoker):
else:
title = None
- self.palette = LinkPalette(title, target.href)
+ self.palette = LinkPalette(self._browser, title, target.href)
self.notify_right_click()
elif target.tagName.lower() == 'img':
if target.title:
@@ -72,10 +73,11 @@ class ContentInvoker(Invoker):
self.notify_right_click()
class LinkPalette(Palette):
- def __init__(self, title, url):
+ def __init__(self, browser, title, url):
Palette.__init__(self)
self._url = url
+ self._browser = browser
if title is not None:
self.props.primary_text = title
@@ -83,6 +85,11 @@ class LinkPalette(Palette):
else:
self.props.primary_text = url
+ menu_item = MenuItem(_('Follow link'), 'edit-copy')
+ menu_item.connect('activate', self.__follow_activate_cb)
+ self.menu.append(menu_item)
+ menu_item.show()
+
menu_item = MenuItem(_('Copy'))
icon = Icon(icon_name='edit-copy', xo_color=profile.get_color(),
icon_size=gtk.ICON_SIZE_MENU)
@@ -91,6 +98,10 @@ class LinkPalette(Palette):
self.menu.append(menu_item)
menu_item.show()
+ def __follow_activate_cb(self, menu_item):
+ self._browser.load_uri(self._url)
+ self._browser.grab_focus()
+
def __copy_activate_cb(self, menu_item):
clipboard = gtk.Clipboard()
targets = gtk.target_list_add_uri_targets()