Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBobby Powers <bobby@laptop.org>2009-03-04 06:43:58 (GMT)
committer Bobby Powers <bobby@laptop.org>2009-03-04 06:44:30 (GMT)
commit5c616c522bb63160ec619c521bc596ac22525fc5 (patch)
treead5e02e1407983a837cf347655c42666e1871aa1
parenta5b8f80e0a2e8fb1bfe73b6cf70f2913a9df8707 (diff)
(re)working back and forward buttons & title/uri updating
-rw-r--r--browser.py36
-rw-r--r--palettes.py60
-rw-r--r--progresslistener.py94
-rw-r--r--webactivity.py4
-rw-r--r--webtoolbar.py46
5 files changed, 36 insertions, 204 deletions
diff --git a/browser.py b/browser.py
index 8ac4624..c4fd4d7 100644
--- a/browser.py
+++ b/browser.py
@@ -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: