Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPootle daemon <pootle@pootle.sugarlabs.org>2012-01-08 05:32:54 (GMT)
committer Pootle daemon <pootle@pootle.sugarlabs.org>2012-01-08 05:32:54 (GMT)
commitdcdd79441cc7c2d4395ecfa82a3fbe3e7bd0fc3f (patch)
tree3bca552d824f741119d237f6cff066710656644e
parent0e19edca93ed48b9096c6b62f5dec2d3813c64a3 (diff)
parent381918bd05a49b72c2ac19cfee11fbda2197514c (diff)
Merge branch 'master' of git.sugarlabs.org:browse/mainline
-rw-r--r--browser.py81
-rw-r--r--webactivity.py9
-rw-r--r--webtoolbar.py37
3 files changed, 66 insertions, 61 deletions
diff --git a/browser.py b/browser.py
index aad54a7..2d65237 100644
--- a/browser.py
+++ b/browser.py
@@ -176,36 +176,30 @@ class TabbedView(BrowserNotebook):
return browser
def _insert_tab_next(self, browser):
- scrolled_window = Gtk.ScrolledWindow()
- scrolled_window.add(browser)
- browser.show()
-
- label = TabLabel(scrolled_window)
- label.connect('tab-close', self.__tab_close_cb)
+ tab_page = TabPage(browser)
+ label = TabLabel(browser)
+ label.connect('tab-close', self.__tab_close_cb, tab_page)
next_index = self.get_current_page() + 1
- self.insert_page(scrolled_window, label, next_index)
- scrolled_window.show()
+ self.insert_page(tab_page, label, next_index)
+ tab_page.show()
self.set_current_page(next_index)
def _append_tab(self, browser):
- scrolled_window = Gtk.ScrolledWindow()
- scrolled_window.add(browser)
- browser.show()
-
- label = TabLabel(scrolled_window)
- label.connect('tab-close', self.__tab_close_cb)
+ tab_page = TabPage(browser)
+ label = TabLabel(browser)
+ label.connect('tab-close', self.__tab_close_cb, tab_page)
- self.append_page(scrolled_window, label)
- scrolled_window.show()
+ self.append_page(tab_page, label)
+ tab_page.show()
self.set_current_page(-1)
def on_add_tab(self, gobject):
self.add_tab()
- def __tab_close_cb(self, label, browser_window):
- self.remove_page(self.page_num(browser_window))
- browser_window.destroy()
+ def __tab_close_cb(self, label, tab_page):
+ self.remove_page(self.page_num(tab_page))
+ tab_page.destroy()
def _update_tab_sizes(self):
"""Update ta widths based in the amount of tabs."""
@@ -254,7 +248,7 @@ class TabbedView(BrowserNotebook):
def _get_current_browser(self):
if self.get_n_pages():
- return self.get_nth_page(self.get_current_page()).get_child()
+ return self.get_nth_page(self.get_current_page()).browser
else:
return None
@@ -264,9 +258,8 @@ class TabbedView(BrowserNotebook):
def get_history(self):
tab_histories = []
for index in xrange(0, self.get_n_pages()):
- scrolled_window = self.get_nth_page(index)
- browser = scrolled_window.get_child()
- tab_histories.append(browser.get_history())
+ tab_page = self.get_nth_page(index)
+ tab_histories.append(tab_page.browser.get_history())
return tab_histories
def set_history(self, tab_histories):
@@ -292,6 +285,42 @@ Gtk.rc_parse_string('''
widget "*browse-tab-close" style "browse-tab-close"''')
+class TabPage(Gtk.Overlay):
+ def __init__(self, browser):
+ GObject.GObject.__init__(self)
+
+ self._browser = browser
+
+ link_info = Gtk.Label()
+ link_info.set_halign(Gtk.Align.START)
+ link_info.set_valign(Gtk.Align.END)
+ self.add_overlay(link_info)
+ link_info.show()
+
+ scrolled_window = Gtk.ScrolledWindow()
+ self.add(scrolled_window)
+ scrolled_window.show()
+
+ scrolled_window.add(browser)
+ browser.show()
+
+ browser.connect('hovering-over-link', self.__hovering_over_link_cb,
+ link_info)
+
+ def _get_browser(self):
+ return self._browser
+
+ browser = GObject.property(type=object,
+ getter=_get_browser)
+
+ def __hovering_over_link_cb(self, webview, title, uri, link_info):
+ if uri is None:
+ link_info.hide()
+ else:
+ link_info.set_text(uri)
+ link_info.show()
+
+
class TabLabel(Gtk.HBox):
__gtype_name__ = 'TabLabel'
@@ -301,11 +330,9 @@ class TabLabel(Gtk.HBox):
([object])),
}
- def __init__(self, browser_window):
+ def __init__(self, browser):
GObject.GObject.__init__(self)
- self._browser_window = browser_window
- browser = browser_window.get_child()
browser.connect('notify::title', self.__title_changed_cb)
self._label = Gtk.Label(label=_('Untitled'))
@@ -339,7 +366,7 @@ class TabLabel(Gtk.HBox):
self._close_button.show()
def __button_clicked_cb(self, button):
- self.emit('tab-close', self._browser_window)
+ self.emit('tab-close')
def __title_changed_cb(self, widget, param):
if widget.props.title:
diff --git a/webactivity.py b/webactivity.py
index 092a8e3..34f9b59 100644
--- a/webactivity.py
+++ b/webactivity.py
@@ -401,9 +401,8 @@ class WebActivity(activity.Activity):
logging.debug('########## reading %s', data)
self._tabbed_view.set_history(self.model.data['history'])
for number, tab in enumerate(self.model.data['currents']):
- scrolled_window = self._tabbed_view.get_nth_page(number)
- browser = scrolled_window.get_child()
- browser.set_history_index(tab['history_index'])
+ tab_page = self._tabbed_view.get_nth_page(number)
+ tab_page.browser.set_history_index(tab['history_index'])
self._tabbed_view.set_current_page(self.model.data['current_tab'])
elif self.metadata['mime_type'] == 'text/uri-list':
@@ -437,8 +436,8 @@ class WebActivity(activity.Activity):
self.model.data['currents'] = []
for n in range(0, self._tabbed_view.get_n_pages()):
- scrolled_window = self._tabbed_view.get_nth_page(n)
- n_browser = scrolled_window.get_child()
+ tab_page = self._tabbed_view.get_nth_page(n)
+ n_browser = tab_page.browser
if n_browser != None:
uri = n_browser.get_uri()
history_index = n_browser.get_history_index()
diff --git a/webtoolbar.py b/webtoolbar.py
index 461fc5c..badaf5d 100644
--- a/webtoolbar.py
+++ b/webtoolbar.py
@@ -287,7 +287,6 @@ class PrimaryToolbar(ToolbarBase):
toolbar.insert(stop_button, -1)
self._progress_listener = None
- self._history = None
self._browser = None
self._loading_changed_hid = None
@@ -306,16 +305,6 @@ class PrimaryToolbar(ToolbarBase):
self._connect_to_browser(tabbed_view.props.current_browser)
def _connect_to_browser(self, browser):
-
- # FIXME
- # if self._history is not None:
- # self._history.disconnect(self._session_history_changed_hid)
-
- # self._history = browser.history
- # self._session_history_changed_hid = self._history.connect(
- # 'session-history-changed', self._session_history_changed_cb)
- # self._reload_session_history()
-
if self._browser is not None:
self._browser.disconnect(self._title_changed_hid)
self._browser.disconnect(self._uri_changed_hid)
@@ -339,10 +328,6 @@ class PrimaryToolbar(ToolbarBase):
self._update_navigation_buttons()
- def _session_history_changed_cb(self, session_history, current_page_index):
- # We have to wait until the history info is updated.
- GObject.idle_add(self._reload_session_history, current_page_index)
-
def __loading_changed_cb(self, widget, param):
status = widget.get_load_status()
if status <= WebKit.LoadStatus.COMMITTED:
@@ -374,31 +359,26 @@ class PrimaryToolbar(ToolbarBase):
'browse-view-refresh')
def _update_navigation_buttons(self):
- browser = self._tabbed_view.props.current_browser
-
- can_go_back = browser.can_go_back()
+ can_go_back = self._browser.can_go_back()
self._back.props.sensitive = can_go_back
- can_go_forward = browser.can_go_forward()
+ can_go_forward = self._browser.can_go_forward()
self._forward.props.sensitive = can_go_forward
def _entry_activate_cb(self, entry):
- browser = self._tabbed_view.props.current_browser
url = entry.props.text
effective_url = self._tabbed_view.normalize_or_autosearch_url(url)
- browser.load_uri(effective_url)
- browser.grab_focus()
+ self._browser.load_uri(effective_url)
+ self._browser.grab_focus()
def _go_home_cb(self, button):
self.emit('go-home')
def _go_back_cb(self, button):
- browser = self._tabbed_view.props.current_browser
- browser.go_back()
+ self._browser.go_back()
def _go_forward_cb(self, button):
- browser = self._tabbed_view.props.current_browser
- browser.go_forward()
+ self._browser.go_forward()
def _title_changed_cb(self, widget, param):
self._set_title(widget.get_title())
@@ -410,11 +390,10 @@ class PrimaryToolbar(ToolbarBase):
# filepicker.cleanup_temp_files()
def _stop_and_reload_cb(self, entry, icon_pos, button):
- browser = self._tabbed_view.props.current_browser
if self._loading:
- browser.stop_loading()
+ self._browser.stop_loading()
else:
- browser.reload()
+ self._browser.reload()
def _set_loading(self, loading):
self._loading = loading