Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--browser.py16
-rw-r--r--filepicker.py78
-rw-r--r--webtoolbar.py131
3 files changed, 82 insertions, 143 deletions
diff --git a/browser.py b/browser.py
index 09fe883..6f09aa7 100644
--- a/browser.py
+++ b/browser.py
@@ -136,7 +136,8 @@ class TabLabel(gtk.HBox):
gobject.GObject.__init__(self)
self._browser = browser
- self._browser.connect('notify::load-status', self.__browser_loaded_cb)
+ # load-finished is deprecated, use notify::load-status in the future
+ self._browser.connect('load-finished', self.__browser_loaded_cb)
self._label = gtk.Label('')
self.pack_start(self._label)
@@ -159,9 +160,8 @@ class TabLabel(gtk.HBox):
self.emit('tab-close', self._browser)
def __browser_loaded_cb(self, browser, load_status):
- if load_status == webkit.LOAD_FINISHED:
- browser.connect('notify::uri', self.__location_changed_cb)
- browser.connect('notify::title', self.__title_changed_cb)
+ browser.connect('notify::uri', self.__location_changed_cb)
+ browser.connect('notify::title', self.__title_changed_cb)
def __location_changed_cb(self, browser, uri):
sefl._label.set_text(uri)
@@ -176,6 +176,9 @@ class Browser(webkit.WebView):
def __init__(self):
webkit.WebView.__init__(self)
+ self._loaded = False # needed until webkitgtk 1.1.7+
+
+ self.connect('load-finished', self.__loading_finished_cb)
self.connect('download-requested', self.__download_requested_cb)
def load_uri(self, uri):
@@ -194,9 +197,12 @@ class Browser(webkit.WebView):
user_download = downloadmanager.UserDownload(download)
return True
+
+ def __loading_finished_cb(self, frame, user_data):
+ self._loaded = True
def get_source(self, async_cb, async_err_cb):
- if self.props.load_status != webkit.LOAD_FINISHED:
+ if self._loaded:
async_err_cb()
else:
diff --git a/filepicker.py b/filepicker.py
index 2d82270..a8c7e7b 100644
--- a/filepicker.py
+++ b/filepicker.py
@@ -21,7 +21,7 @@ import shutil
import re
import gtk
-import hulahop
+import webkit
from sugar.graphics.objectchooser import ObjectChooser
from sugar.activity.activity import get_activity_root
@@ -30,7 +30,6 @@ from sugar.activity.activity import get_activity_root
_temp_dirs_to_clean = []
-#TODO port to webkit
def cleanup_temp_files():
while _temp_dirs_to_clean:
temp_dir = _temp_dirs_to_clean.pop()
@@ -42,30 +41,11 @@ def cleanup_temp_files():
class FilePicker:
- #_com_interfaces_ = interfaces.nsIFilePicker
-
- cid = '{57901c41-06cb-4b9e-8258-37323327b583}'
- description = 'Sugar File Picker'
-
def __init__(self):
self._title = None
self._parent = None
self._file = None
- def appendFilter(self, title, filter):
- logging.warning('FilePicker.appendFilter: UNIMPLEMENTED')
-
- def appendFilters(self, filterMask):
- logging.warning('FilePicker.appendFilters: UNIMPLEMENTED')
-
- def init(self, parent, title, mode):
- self._title = title
- self._file = None
- self._parent = hulahop.get_view_for_window(parent).get_toplevel()
-
- if mode != interfaces.nsIFilePicker.modeOpen:
- raise xpcom.COMException(NS_ERROR_NOT_IMPLEMENTED)
-
def show(self):
chooser = ObjectChooser(parent=self._parent)
jobject = None
@@ -94,61 +74,9 @@ class FilePicker:
del chooser
if self._file:
- return interfaces.nsIFilePicker.returnOK
- else:
- return interfaces.nsIFilePicker.returnCancel
-
- def set_defaultExtension(self, default_extension):
- logging.warning('FilePicker.set_defaultExtension: UNIMPLEMENTED')
-
- def get_defaultExtension(self):
- logging.warning('FilePicker.get_defaultExtension: UNIMPLEMENTED')
- return None
-
- def set_defaultString(self, default_string):
- logging.warning('FilePicker.set_defaultString: UNIMPLEMENTED')
-
- def get_defaultString(self):
- logging.warning('FilePicker.get_defaultString: UNIMPLEMENTED')
- return None
-
- def set_displayDirectory(self, display_directory):
- logging.warning('FilePicker.set_displayDirectory: UNIMPLEMENTED')
-
- def get_displayDirectory(self):
- logging.warning('FilePicker.get_displayDirectory: UNIMPLEMENTED')
- return None
-
- def set_filterIndex(self, filter_index):
- logging.warning('FilePicker.set_filterIndex: UNIMPLEMENTED')
-
- def get_filterIndex(self):
- logging.warning('FilePicker.get_filterIndex: UNIMPLEMENTED')
- return None
-
- def get_file(self):
- logging.debug('FilePicker.get_file: %r' % self._file)
- if self._file:
- cls = components.classes["@mozilla.org/file/local;1"]
- local_file = cls.createInstance(interfaces.nsILocalFile)
- local_file.initWithPath(self._file)
- return local_file
+ return True
else:
- return None
-
- def get_Files(self):
- logging.warning('FilePicker.get_Files: UNIMPLEMENTED')
- return None
-
- def get_FileURL(self):
- logging.warning('FilePicker.get_FileURL: UNIMPLEMENTED')
- return None
-
-#components.registrar.registerFactory(FilePicker.cid,
-# FilePicker.description,
-# '@mozilla.org/filepicker;1',
-# Factory(FilePicker))
-
+ return False
def _basename_strip(jobject):
name = jobject.metadata.get('title', 'untitled')
diff --git a/webtoolbar.py b/webtoolbar.py
index fa27a63..1503cb6 100644
--- a/webtoolbar.py
+++ b/webtoolbar.py
@@ -296,25 +296,28 @@ class PrimaryToolbar(ToolbarBox):
self._connect_to_browser(tabbed_view.props.current_browser)
def _connect_to_browser(self, browser):
- if self._browser:
- self._browser.disconnect(self._location_changed_hid)
- self._browser.disconnect(self._loading_changed_hid)
- self._browser.disconnect(self._progress_changed_hid)
-
- self._set_progress(self._browser.props.progress)
- if self._browser.props.uri:
- self._set_address(self._browser.props.uri)
- else:
- self._set_address(None)
- self._set_loading(self._browser.props.load_status)
+ if self._browser is None:
+ return
+
+ self._browser.disconnect(self._location_changed_hid)
+ self._browser.disconnect(self._loading_changed_hid)
+ self._browser.disconnect(self._loading_finished_hid)
+ self._browser.disconnect(self._progress_changed_hid)
+
+ self._set_progress(0) # self._browser.props.progress in wkgtk 1.1.7+
+ self._set_address(self._browser.props.uri)
+ self._set_loading(False)
self._update_navigation_buttons()
self._location_changed_hid = self._browser.connect(
- 'notify::location', self.__location_changed_cb)
+ 'notify::uri', self.__location_changed_cb)
self._loading_changed_hid = self._browser.connect(
- 'notify::load-status', self.__loading_changed_cb)
+ 'load-finished', self.__loading_finished_cb)
+ # cannot use notify::load-status until PyGI+webkitgtk
+ self._loading_started_hid = self._browser.connect(
+ 'load-started', self.__loading_started_cb)
self._progress_changed_hid = self._browser.connect(
- 'notify::progress', self.__progress_changed_cb)
+ 'load-progress-changed', self.__progress_changed_cb)
if self._history is not None:
self._history.disconnect(self._session_history_changed_hid)
@@ -330,25 +333,26 @@ class PrimaryToolbar(ToolbarBox):
self._set_title(self._browser.props.title)
self._title_changed_hid = self._browser.connect(
- 'notify::title', self._title_changed_cb)
+ '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, browser, uri):
- self._set_address(uri)
+ def __location_changed_cb(self, frame):
+ self._set_address(frame.props.uri)
self._update_navigation_buttons()
filepicker.cleanup_temp_files()
- def __loading_changed_cb(self, browser, uri):
- if browser.props.load_status != webkit.LOAD_FINISHED:
- self._set_title(None)
- self._set_loading()
+ def __loading_started_cb(self, frame, user_data):
+ self._set_loading(True)
+
+ def __loading_finished_cb(self, frame, user_data):
+ self._set_loading(False)
self._update_navigation_buttons()
- def __progress_changed_cb(self, progress_listener, pspec):
- self._set_progress(progress_listener.progress)
+ def __progress_changed_cb(self, progress, user_data):
+ self._set_progress(progress)
def _set_progress(self, progress):
self.entry.props.progress = progress
@@ -385,12 +389,12 @@ class PrimaryToolbar(ToolbarBox):
browser = self._tabbed_view.props.current_browser
browser.get_back_forward_list().go_forward()
- def _title_changed_cb(self, embed, spec):
- self._set_title(embed.props.title)
+ def _title_changed_cb(self, frame, title, user_data):
+ self._set_title(title)
def _stop_and_reload_cb(self, button):
browser = self._tabbed_view.props.current_browser
- if browser.props.load_status != webkit.LOAD_FINISHED:
+ if self._loading:
browser.stop()
else:
browser.reload()
@@ -406,43 +410,44 @@ class PrimaryToolbar(ToolbarBox):
self._stop_and_reload.set_tooltip(_('Reload'))
def _reload_session_history(self, current_page_index=None):
- #TODO rewrite
- browser = self._tabbed_view.props.current_browser
- history = browser.get_back_forward_list()
-
- if current_page_index is None:
- current_page_index = session_history.index
-
- for palette in (self._back.get_palette(), self._forward.get_palette()):
- for menu_item in palette.menu.get_children():
- palette.menu.remove(menu_item)
-
- if current_page_index > _MAX_HISTORY_ENTRIES:
- bottom = current_page_index - _MAX_HISTORY_ENTRIES
- else:
- bottom = 0
- if (session_history.count - current_page_index) > \
- _MAX_HISTORY_ENTRIES:
- top = current_page_index + _MAX_HISTORY_ENTRIES + 1
- else:
- top = session_history.count
-
- for i in range(bottom, top):
- if i == current_page_index:
- continue
-
- entry = session_history.getEntryAtIndex(i, False)
- menu_item = MenuItem(entry.title, text_maxlen=60)
- menu_item.connect('activate', self._history_item_activated_cb, i)
-
- if i < current_page_index:
- palette = self._back.get_palette()
- palette.menu.prepend(menu_item)
- elif i > current_page_index:
- palette = self._forward.get_palette()
- palette.menu.append(menu_item)
-
- menu_item.show()
+ #TODO port to webkit. not sure if it's even needed
+ #browser = self._tabbed_view.props.current_browser
+ #history = browser.get_back_forward_list()
+ #
+ #if current_page_index is None:
+ # current_page_index = session_history.index
+ #
+ #for palette in (self._back.get_palette(), self._forward.get_palette()):
+ # for menu_item in palette.menu.get_children():
+ # palette.menu.remove(menu_item)
+ #
+ #if current_page_index > _MAX_HISTORY_ENTRIES:
+ # bottom = current_page_index - _MAX_HISTORY_ENTRIES
+ #else:
+ # bottom = 0
+ #if (session_history.count - current_page_index) > \
+ # _MAX_HISTORY_ENTRIES:
+ # top = current_page_index + _MAX_HISTORY_ENTRIES + 1
+ #else:
+ # top = session_history.count
+ #
+ #for i in range(bottom, top):
+ # if i == current_page_index:
+ # continue
+ #
+ # entry = session_history.getEntryAtIndex(i, False)
+ # menu_item = MenuItem(entry.title, text_maxlen=60)
+ # menu_item.connect('activate', self._history_item_activated_cb, i)
+ #
+ # if i < current_page_index:
+ # palette = self._back.get_palette()
+ # palette.menu.prepend(menu_item)
+ # elif i > current_page_index:
+ # palette = self._forward.get_palette()
+ # palette.menu.append(menu_item)
+ #
+ # menu_item.show()
+ pass
def _history_item_activated_cb(self, menu_item, index):
browser = self._tabbed_view.props.current_browser