diff options
author | Pootle 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) |
commit | dcdd79441cc7c2d4395ecfa82a3fbe3e7bd0fc3f (patch) | |
tree | 3bca552d824f741119d237f6cff066710656644e | |
parent | 0e19edca93ed48b9096c6b62f5dec2d3813c64a3 (diff) | |
parent | 381918bd05a49b72c2ac19cfee11fbda2197514c (diff) |
Merge branch 'master' of git.sugarlabs.org:browse/mainline
-rw-r--r-- | browser.py | 81 | ||||
-rw-r--r-- | webactivity.py | 9 | ||||
-rw-r--r-- | webtoolbar.py | 37 |
3 files changed, 66 insertions, 61 deletions
@@ -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 |