From 20dc11d7e885ce7ff5fc683cfdb8b543ed9aae15 Mon Sep 17 00:00:00 2001 From: Lucian Branescu Mihaila Date: Thu, 01 Jul 2010 20:41:47 +0000 Subject: Revert to older webkitgtk+ API, various fixes. --- 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 -- cgit v0.9.1