From 7d3a1a97044b902d83e901c30fdc5a5d4a1f6d55 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 15 Oct 2008 10:44:49 +0000 Subject: Adapt to hulahop API changes and start to clean up the singletons mess. --- diff --git a/browser.py b/browser.py index fec52f1..4ca84c1 100644 --- a/browser.py +++ b/browser.py @@ -27,7 +27,6 @@ from xpcom.nsError import * from xpcom import components from xpcom.components import interfaces from hulahop.webview import WebView -from hulahop.webview import lookup_view from sugar.datastore import datastore from sugar import profile @@ -37,6 +36,8 @@ from sugar.graphics import style import sessionstore from palettes import ContentInvoker +from sessionhistory import HistoryListener +from progresslistener import ProgressListener _ZOOM_AMOUNT = 0.1 @@ -96,6 +97,12 @@ class Browser(WebView): def __init__(self): WebView.__init__(self) + self.history = HistoryListener() + self.progress = ProgressListener() + + cls = components.classes["@mozilla.org/typeaheadfind;1"] + self.typeahead = cls.createInstance(interfaces.nsITypeAheadFind) + self._jobject = None io_service_class = components.classes[ \ @@ -123,6 +130,9 @@ class Browser(WebView): style_sheet_service.loadAndRegisterSheet(user_sheet_uri, interfaces.nsIStyleSheetService.USER_SHEET) + def do_setup(self): + WebView.do_setup(self) + listener = xpcom.server.WrapObject(ContentInvoker(self), interfaces.nsIDOMEventListener) self.window_root.addEventListener('click', listener, False) @@ -131,6 +141,12 @@ class Browser(WebView): interfaces.nsIDOMEventListener) self.window_root.addEventListener('command', listener, False) + self.progress.setup(self) + + self.history.setup(self.web_navigation) + + self.typeahead.init(self.doc_shell) + def get_session(self): return sessionstore.get_session(self) @@ -233,7 +249,8 @@ class WindowCreator: def createChromeWindow(self, parent, flags): dialog = PopupDialog() - parent_view = lookup_view(parent) + parent_dom_window = parent.webBrowser.contentDOMWindow + parent_view = hulahop.get_view_for_window(parent_dom_window) if parent_view: dialog.set_transient_for(parent_view.get_toplevel()) diff --git a/edittoolbar.py b/edittoolbar.py index e6d460a..08ebd76 100644 --- a/edittoolbar.py +++ b/edittoolbar.py @@ -69,10 +69,6 @@ class EditToolbar(activity.EditToolbar): self.insert(separator, -1) separator.show() - cls = components.classes["@mozilla.org/typeaheadfind;1"] - self._typeahead = cls.createInstance(interfaces.nsITypeAheadFind) - self._typeahead.init(self._browser.doc_shell) - search_item = gtk.ToolItem() self.search_entry = iconentry.IconEntry() self.search_entry.set_icon_from_name(iconentry.ICON_ENTRY_PRIMARY, @@ -126,10 +122,10 @@ class EditToolbar(activity.EditToolbar): return requestor.getInterface(interfaces.nsICommandManager) def __search_entry_activate_cb(self, entry): - self._typeahead.findAgain(False, False) + self._browser.typeahead.findAgain(False, False) def __search_entry_changed_cb(self, entry): - found = self._typeahead.find(entry.props.text, False) + found = self._browser.typeahead.find(entry.props.text, False) if found == interfaces.nsITypeAheadFind.FIND_NOTFOUND: self._prev.props.sensitive = False self._next.props.sensitive = False @@ -142,7 +138,7 @@ class EditToolbar(activity.EditToolbar): style.COLOR_BLACK.get_gdk_color()) def __find_previous_cb(self, button): - self._typeahead.findAgain(True, False) + self._browser.typeahead.findAgain(True, False) def __find_next_cb(self, button): - self._typeahead.findAgain(False, False) + self._browser.typeahead.findAgain(False, False) diff --git a/progresslistener.py b/progresslistener.py index 3a3a049..23d4966 100644 --- a/progresslistener.py +++ b/progresslistener.py @@ -33,7 +33,7 @@ class ProgressListener(gobject.GObject): ([float])) } - def __init__(self, browser): + def __init__(self): gobject.GObject.__init__(self) self.total_requests = 0 @@ -43,12 +43,14 @@ class ProgressListener(gobject.GObject): self, interfaces.nsIWebProgressListener) weak_ref = xpcom.client.WeakReference(self._wrapped_self) + self._reset_requests_count() + + def setup(self, browser): mask = interfaces.nsIWebProgress.NOTIFY_STATE_NETWORK | \ interfaces.nsIWebProgress.NOTIFY_STATE_REQUEST | \ interfaces.nsIWebProgress.NOTIFY_LOCATION - browser.web_progress.addProgressListener(self._wrapped_self, mask) - self._reset_requests_count() + browser.web_progress.addProgressListener(self._wrapped_self, mask) def _reset_requests_count(self): self.total_requests = 0 @@ -88,13 +90,3 @@ class ProgressListener(gobject.GObject): def onStatusChange(self, webProgress, request, status, message): pass - -_progress_listener = None - -def init(browser): - global _progress_listener - _progress_listener = ProgressListener(browser) - -def get_instance(): - global _progress_listener - return _progress_listener diff --git a/sessionhistory.py b/sessionhistory.py index 3f781bf..b50bb45 100644 --- a/sessionhistory.py +++ b/sessionhistory.py @@ -31,14 +31,15 @@ class HistoryListener(gobject.GObject): ([str])) } - def __init__(self, browser): + def __init__(self): gobject.GObject.__init__(self) self._wrapped_self = xpcom.server.WrapObject( \ self, interfaces.nsISHistoryListener) weak_ref = xpcom.client.WeakReference(self._wrapped_self) - self._session_history = browser.web_navigation.sessionHistory + def setup(self, web_navigation): + self._session_history = web_navigation.sessionHistory self._session_history.addSHistoryListener(self._wrapped_self) def OnHistoryGoBack(self, back_uri): @@ -73,13 +74,3 @@ class HistoryListener(gobject.GObject): self.emit('session-link-changed', reload_uri.spec) logging.debug("OnHistoryReload: %s" % reload_uri.spec) return True - -_session_history_listener = None - -def init(browser): - global _session_history_listener - _session_history_listener = HistoryListener(browser) - -def get_instance(): - global _session_history_listener - return _session_history_listener diff --git a/webactivity.py b/webactivity.py index e17d3b2..6576252 100644 --- a/webactivity.py +++ b/webactivity.py @@ -69,8 +69,6 @@ from edittoolbar import EditToolbar from webtoolbar import WebToolbar from viewtoolbar import ViewToolbar import downloadmanager -import sessionhistory -import progresslistener import filepicker import globalhistory @@ -100,8 +98,6 @@ class WebActivity(activity.Activity): temp_path = os.path.join(self.get_activity_root(), 'instance') downloadmanager.init(self._browser, self, temp_path) - sessionhistory.init(self._browser) - progresslistener.init(self._browser) filepicker.init(self) toolbox = activity.ActivityToolbox(self) @@ -128,9 +124,8 @@ class WebActivity(activity.Activity): self.set_canvas(self._browser) self._browser.show() - self.session_history = sessionhistory.get_instance() - self.session_history.connect('session-link-changed', - self._session_history_changed_cb) + self._browser.history.connect('session-link-changed', + self._session_history_changed_cb) self._web_toolbar.connect('add-link', self._link_add_button_cb) self._browser.connect("notify::title", self._title_changed_cb) diff --git a/webtoolbar.py b/webtoolbar.py index 03fc2f5..428fd89 100644 --- a/webtoolbar.py +++ b/webtoolbar.py @@ -27,8 +27,6 @@ from sugar.graphics.toolbutton import ToolButton from sugar.graphics.menuitem import MenuItem from sugar._sugarext import AddressEntry -import sessionhistory -import progresslistener import filepicker import places @@ -265,7 +263,7 @@ class WebToolbar(gtk.Toolbar): self.insert(self._link_add, -1) self._link_add.show() - progress_listener = progresslistener.get_instance() + progress_listener = browser.progress progress_listener.connect('location-changed', self._location_changed_cb) progress_listener.connect('loading-start', self._loading_start_cb) @@ -273,9 +271,8 @@ class WebToolbar(gtk.Toolbar): progress_listener.connect('loading-progress', self._loading_progress_cb) - session_history = sessionhistory.get_instance() - session_history.connect('session-history-changed', - self._session_history_changed_cb) + self._browser.history.connect('session-history-changed', + self._session_history_changed_cb) self._browser.connect("notify::title", self._title_changed_cb) -- cgit v0.9.1