diff options
author | Bobby Powers <bobby@laptop.org> | 2009-03-04 06:43:58 (GMT) |
---|---|---|
committer | Bobby Powers <bobby@laptop.org> | 2009-03-04 06:44:30 (GMT) |
commit | 5c616c522bb63160ec619c521bc596ac22525fc5 (patch) | |
tree | ad5e02e1407983a837cf347655c42666e1871aa1 | |
parent | a5b8f80e0a2e8fb1bfe73b6cf70f2913a9df8707 (diff) |
(re)working back and forward buttons & title/uri updating
-rw-r--r-- | browser.py | 36 | ||||
-rw-r--r-- | palettes.py | 60 | ||||
-rw-r--r-- | progresslistener.py | 94 | ||||
-rw-r--r-- | webactivity.py | 4 | ||||
-rw-r--r-- | webtoolbar.py | 46 |
5 files changed, 36 insertions, 204 deletions
@@ -35,36 +35,6 @@ from sugar.graphics import style import sessionstore from palettes import ContentInvoker from sessionhistory import HistoryListener -from progresslistener import ProgressListener - -_ZOOM_AMOUNT = 0.1 - -class GetSourceListener(object): - #_com_interfaces_ = interfaces.nsIWebProgressListener - - def __init__(self, file_path, async_cb, async_err_cb): - self._file_path = file_path - self._async_cb = async_cb - self._async_err_cb = async_err_cb - - def onStateChange(self, webProgress, request, stateFlags, status): - #if stateFlags & interfaces.nsIWebProgressListener.STATE_IS_REQUEST and \ - # stateFlags & interfaces.nsIWebProgressListener.STATE_STOP: - # self._async_cb(self._file_path) - pass - - def onProgressChange(self, progress, request, curSelfProgress, - maxSelfProgress, curTotalProgress, maxTotalProgress): - pass - - def onLocationChange(self, progress, request, location): - pass - - def onStatusChange(self, progress, request, status, message): - pass - - def onSecurityChange(self, progress, request, state): - pass class CommandListener(object): #_com_interfaces_ = interfaces.nsIDOMEventListener @@ -94,7 +64,6 @@ class Browser(WebView): WebView.__init__(self) self.history = HistoryListener() - self.progress = ProgressListener() #cls = components.classes["@mozilla.org/typeaheadfind;1"] #self.typeahead = cls.createInstance(interfaces.nsITypeAheadFind) @@ -126,7 +95,6 @@ class Browser(WebView): # interfaces.nsIDOMEventListener) #self.window_root.addEventListener('command', listener, False) - self.progress.setup(self) self.history.setup(self.web_navigation) @@ -163,10 +131,6 @@ class Browser(WebView): local_file = cls.createInstance(interfaces.nsILocalFile) local_file.initWithPath(file_path) - progresslistener = GetSourceListener(file_path, async_cb, async_err_cb) - persist.progressListener = xpcom.server.WrapObject( - progresslistener, interfaces.nsIWebProgressListener) - uri = self.web_navigation.currentURI persist.saveURI(uri, self.doc_shell, None, None, None, local_file) diff --git a/palettes.py b/palettes.py index 7353c1a..942d269 100644 --- a/palettes.py +++ b/palettes.py @@ -179,54 +179,26 @@ class ImagePalette(Palette): os.close(fd) os.chmod(temp_file, 0664) - cls = components.classes['@mozilla.org/network/io-service;1'] - io_service = cls.getService(interfaces.nsIIOService) - uri = io_service.newURI(self._url, None, None) - - cls = components.classes['@mozilla.org/file/local;1'] - target_file = cls.createInstance(interfaces.nsILocalFile) - target_file.initWithPath(temp_file) - - cls = components.classes[ \ - '@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] - persist = cls.createInstance(interfaces.nsIWebBrowserPersist) - persist.persistFlags = 1 # PERSIST_FLAGS_FROM_CACHE - listener = xpcom.server.WrapObject(_ImageProgressListener(temp_file), - interfaces.nsIWebProgressListener) - persist.progressListener = listener - persist.saveURI(uri, None, None, None, None, target_file) + #cls = components.classes['@mozilla.org/network/io-service;1'] + #io_service = cls.getService(interfaces.nsIIOService) + #uri = io_service.newURI(self._url, None, None) + + #cls = components.classes['@mozilla.org/file/local;1'] + #target_file = cls.createInstance(interfaces.nsILocalFile) + #target_file.initWithPath(temp_file) + + #cls = components.classes[ \ + # '@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] + #persist = cls.createInstance(interfaces.nsIWebBrowserPersist) + #persist.persistFlags = 1 # PERSIST_FLAGS_FROM_CACHE + #listener = xpcom.server.WrapObject(_ImageProgressListener(temp_file), + # interfaces.nsIWebProgressListener) + #persist.progressListener = listener + #persist.saveURI(uri, None, None, None, None, target_file) def __download_activate_cb(self, menu_item): downloadmanager.save_link(self._url, self._title, self._owner_document) -class _ImageProgressListener(object): - #_com_interfaces_ = interfaces.nsIWebProgressListener - - def __init__(self, temp_file): - self._temp_file = temp_file - - def onLocationChange(self, webProgress, request, location): - pass - - def onProgressChange(self, webProgress, request, curSelfProgress, - maxSelfProgress, curTotalProgress, maxTotalProgress): - pass - - def onSecurityChange(self, webProgress, request, state): - pass - - def onStatusChange(self, webProgress, request, status, message): - pass - - def onStateChange(self, webProgress, request, stateFlags, status): - if stateFlags & interfaces.nsIWebProgressListener.STATE_IS_REQUEST and \ - stateFlags & interfaces.nsIWebProgressListener.STATE_STOP: - clipboard = gtk.Clipboard() - clipboard.set_with_data([('text/uri-list', 0, 0)], - _clipboard_get_func_cb, - _clipboard_clear_func_cb, - self._temp_file) - def _clipboard_get_func_cb(clipboard, selection_data, info, temp_file): selection_data.set_uris(['file://' + temp_file]) diff --git a/progresslistener.py b/progresslistener.py deleted file mode 100644 index 80a0df9..0000000 --- a/progresslistener.py +++ /dev/null @@ -1,94 +0,0 @@ -# Copyright (C) 2006, Red Hat, Inc. -# Copyright (C) 2007, One Laptop Per Child -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import gobject - -class ProgressListener(gobject.GObject): - #_com_interfaces_ = interfaces.nsIWebProgressListener - - __gsignals__ = { - 'location-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([object])), - 'loading-start': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([])), - 'loading-stop': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([])), - 'loading-progress': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([float])) - } - - def __init__(self): - gobject.GObject.__init__(self) - - self.total_requests = 0 - self.completed_requests = 0 - - self._wrapped_self = None - #self._wrapped_self = xpcom.server.WrapObject( \ - # self, interfaces.nsIWebProgressListener) - #weak_ref = xpcom.client.WeakReference(self._wrapped_self) - - self._reset_requests_count() - - def setup(self, browser): - mask = 0#interfaces.nsIWebProgress.NOTIFY_STATE_NETWORK | \ - #interfaces.nsIWebProgress.NOTIFY_STATE_REQUEST | \ - #interfaces.nsIWebProgress.NOTIFY_LOCATION - - browser.web_progress.addProgressListener(self._wrapped_self, mask) - - def _reset_requests_count(self): - self.total_requests = 0 - self.completed_requests = 0 - - def onLocationChange(self, webProgress, request, location): - self.emit('location-changed', location) - - def onProgressChange(self, webProgress, request, curSelfProgress, - maxSelfProgress, curTotalProgress, maxTotalProgress): - pass - - def onSecurityChange(self, webProgress, request, state): - pass - - def onStateChange(self, webProgress, request, stateFlags, status): - ''' - if stateFlags & interfaces.nsIWebProgressListener.STATE_IS_REQUEST: - if stateFlags & interfaces.nsIWebProgressListener.STATE_START: - self.total_requests += 1 - elif stateFlags & interfaces.nsIWebProgressListener.STATE_STOP: - self.completed_requests += 1 - - if stateFlags & interfaces.nsIWebProgressListener.STATE_IS_NETWORK: - if stateFlags & interfaces.nsIWebProgressListener.STATE_START: - self.emit('loading-start') - self._reset_requests_count() - elif stateFlags & interfaces.nsIWebProgressListener.STATE_STOP: - self.emit('loading-stop') - - if self.total_requests < self.completed_requests: - self.emit('loading-progress', 1.0) - elif self.total_requests > 0: - self.emit('loading-progress', float(self.completed_requests) / - float(self.total_requests)) - else: - self.emit('loading-progress', 0.0) - ''' - pass - - def onStatusChange(self, webProgress, request, status, message): - pass diff --git a/webactivity.py b/webactivity.py index a07f5e4..971e330 100644 --- a/webactivity.py +++ b/webactivity.py @@ -136,9 +136,7 @@ def _set_accept_languages(): # e.g. es-uy, es pref = lang[0:2] + "-" + lang[3:5].lower() + ", " + lang[0:2] - #cls = components.classes["@mozilla.org/preferences-service;1"] - #prefService = cls.getService(components.interfaces.nsIPrefService) - #branch = prefService.getBranch('') + # I don't see a way to do this in webkit-gtk yet. #branch.setCharPref('intl.accept_languages', pref) logging.debug('LANG **NOT** set') diff --git a/webtoolbar.py b/webtoolbar.py index 72cf8ab..df97bdf 100644 --- a/webtoolbar.py +++ b/webtoolbar.py @@ -260,42 +260,34 @@ class WebToolbar(gtk.Toolbar): self.insert(self._link_add, -1) self._link_add.show() - progress_listener = browser.progress - progress_listener.connect('location-changed', - self._location_changed_cb) - progress_listener.connect('loading-start', self._loading_start_cb) - progress_listener.connect('loading-stop', self._loading_stop_cb) - progress_listener.connect('loading-progress', - self._loading_progress_cb) + browser.connect('load-finished', self._loading_stop_cb) + browser.connect('load-started', self._loading_start_cb) + browser.connect('load-progress-changed', self._loading_progress_cb) - self._browser.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) + self._browser.connect("title-changed", self._title_changed_cb) 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 _location_changed_cb(self, progress_listener, uri): - #cls = components.classes['@mozilla.org/intl/texttosuburi;1'] - #texttosuburi = cls.getService(interfaces.nsITextToSubURI) - ui_uri = ''#texttosuburi.unEscapeURIForUI(uri.originCharset, uri.spec) - - self._set_address(ui_uri) - self._update_navigation_buttons() - filepicker.cleanup_temp_files() - def _loading_start_cb(self, progress_listener): self._set_title(None) self._set_loading(True) self._update_navigation_buttons() - def _loading_stop_cb(self, progress_listener): + def _loading_stop_cb(self, view, frame): self._set_loading(False) + ui_title = frame.get_title() + ui_uri = frame.get_uri() + self._set_address(ui_uri) + self._set_title(ui_title) self._update_navigation_buttons() + filepicker.cleanup_temp_files() - def _loading_progress_cb(self, progress_listener, progress): + def _loading_progress_cb(self, view, progress): self._set_progress(progress) def _set_progress(self, progress): @@ -314,10 +306,10 @@ class WebToolbar(gtk.Toolbar): self._stop_and_reload.set_icon('view-refresh') def _update_navigation_buttons(self): - can_go_back = self._browser.web_navigation.canGoBack + can_go_back = self._browser.can_go_back() self._back.props.sensitive = can_go_back - can_go_forward = self._browser.web_navigation.canGoForward + can_go_forward = self._browser.can_go_forward() self._forward.props.sensitive = can_go_forward def _entry_activate_cb(self, entry): @@ -325,13 +317,13 @@ class WebToolbar(gtk.Toolbar): self._browser.grab_focus() def _go_back_cb(self, button): - self._browser.web_navigation.goBack() + self._browser.go_back() def _go_forward_cb(self, button): - self._browser.web_navigation.goForward() + self._browser.go_forward() - def _title_changed_cb(self, embed, spec): - self._set_title(embed.props.title) + def _title_changed_cb(self, view, new_title): + self._set_title(new_title) def _stop_and_reload_cb(self, button): if self._loading: |