Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--browser.py21
-rw-r--r--edittoolbar.py12
-rw-r--r--progresslistener.py18
-rw-r--r--sessionhistory.py15
-rw-r--r--webactivity.py9
-rw-r--r--webtoolbar.py9
6 files changed, 36 insertions, 48 deletions
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)