From 0a3d8753901589b3d1f90910f121ca7694d70320 Mon Sep 17 00:00:00 2001 From: Lucian Branescu Mihaila Date: Sat, 19 Jun 2010 14:55:07 +0000 Subject: Add some stubs, cleanup some hulahop vestiges, implement Browser.get_source and some EditToolbar buttons. --- diff --git a/browser.py b/browser.py index 8a14831..814bc0f 100644 --- a/browser.py +++ b/browser.py @@ -177,6 +177,8 @@ class Browser(webkit.WebView): def __init__(self): webkit.WebView.__init__(self) + + self.connect('download-requested', __download_requested_cb) def load_uri(self, uri): r = urlparse.urlparse(uri) @@ -191,28 +193,28 @@ class Browser(webkit.WebView): def set_session(self, data): return sessionstore.set_session(self, data) - def get_source(self, async_cb, async_err_cb): - #cls = components.classes[ \ - # '@mozilla.org/embedding/browser/nsWebBrowserPersist;1'] - #persist = cls.createInstance(interfaces.nsIWebBrowserPersist) - ## get the source from the cache - #persist.persistFlags = \ - # interfaces.nsIWebBrowserPersist.PERSIST_FLAGS_FROM_CACHE - # - #temp_path = os.path.join(activity.get_activity_root(), 'instance') - #file_path = os.path.join(temp_path, '%i' % time.time()) - #cls = components.classes["@mozilla.org/file/local;1"] - #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) + def __download_requested_cb(): + #TODO download ui + #TODO start download pass + def get_source(self, async_cb, async_err_cb): + if self.props.progress == 0: + async_err_cb() + + else: + # construct temporary file path + temp_path = os.path.join(activity.get_activity_root(), 'instance') + file_path = os.path.join(temp_path, '%i' % time.time()) + + # get source and wite it to file + source = self.get_main_frame().get_data_source().get_data() + f = open(file_path, 'w') + f.write(source) + f.close() + + async_cb(file_path) + class PopupDialog(gtk.Window): def __init__(self): diff --git a/downloadmanager.py b/downloadmanager.py index 8905cf5..8cb3d74 100644 --- a/downloadmanager.py +++ b/downloadmanager.py @@ -104,13 +104,6 @@ class HelperAppLauncherDialog: launcher.saveToDisk(None, False) return NS_OK - -#components.registrar.registerFactory('{64355793-988d-40a5-ba8e-fcde78cac631}', -# 'Sugar Download Manager', -# '@mozilla.org/helperapplauncherdialog;1', -# Factory(HelperAppLauncherDialog)) - - class Download: #_com_interfaces_ = interfaces.nsITransfer diff --git a/edittoolbar.py b/edittoolbar.py index 8c2ac3d..58cd761 100644 --- a/edittoolbar.py +++ b/edittoolbar.py @@ -1,5 +1,5 @@ # Copyright (C) 2008, One Laptop Per Child -# Copyright (C) 2009 Simon Schampijer +# Copyright (C) 2009 Simon Schampijer, Bobby Powers # # 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 @@ -26,8 +26,6 @@ from sugar.graphics import style class EditToolbar(activity.EditToolbar): - #_com_interfaces_ = interfaces.nsIObserver - def __init__(self, act): activity.EditToolbar.__init__(self) @@ -38,30 +36,6 @@ class EditToolbar(activity.EditToolbar): self.copy.connect('clicked', self.__copy_cb) self.paste.connect('clicked', self.__paste_cb) - """ - Notifications are not working right now: - https://bugzilla.mozilla.org/show_bug.cgi?id=207339 - - command_manager = self._get_command_manager() - self.undo.set_sensitive( - command_manager.isCommandEnabled('cmd_undo', None)) - self.redo.set_sensitive( - command_manager.isCommandEnabled('cmd_redo', None)) - self.copy.set_sensitive( - command_manager.isCommandEnabled('cmd_copy', None)) - self.paste.set_sensitive( - command_manager.isCommandEnabled('cmd_paste', None)) - - self._observer = xpcom.server.WrapObject(self, interfaces.nsIObserver) - command_manager.addCommandObserver(self._observer, 'cmd_undo') - command_manager.addCommandObserver(self._observer, 'cmd_redo') - command_manager.addCommandObserver(self._observer, 'cmd_copy') - command_manager.addCommandObserver(self._observer, 'cmd_paste') - - def observe(self, subject, topic, data): - logging.debug('observe: %r %r %r' % (subject, topic, data)) - """ - separator = gtk.SeparatorToolItem() separator.set_draw(False) separator.set_expand(True) @@ -100,36 +74,27 @@ class EditToolbar(activity.EditToolbar): self._next.show() def __undo_cb(self, button): - command_manager = self._get_command_manager() - command_manager.doCommand('cmd_undo', None, None) + logging.error('Undo not implemented.') def __redo_cb(self, button): - command_manager = self._get_command_manager() - command_manager.doCommand('cmd_redo', None, None) + logging.error('Redo not implemented.') def __copy_cb(self, button): - command_manager = self._get_command_manager() - command_manager.doCommand('cmd_copy', None, None) + logging.error('Copy not implemented.') def __paste_cb(self, button): - command_manager = self._get_command_manager() - command_manager.doCommand('cmd_paste', None, None) - - def _get_command_manager(self): - tabbed_view = self._activity.get_canvas() - web_browser = tabbed_view.props.current_browser.browser - requestor = web_browser.queryInterface(interfaces.nsIInterfaceRequestor) - return requestor.getInterface(interfaces.nsICommandManager) + logging.error('Paste not implemented.') def __search_entry_activate_cb(self, entry): - tabbed_view = self._activity.get_canvas() - tabbed_view.props.current_browser.typeahead.findAgain(False, False) + browser = self._activity.get_canvas().props.current_browser + browser.search_text(entry.props.text, False, True, True) def __search_entry_changed_cb(self, entry): tabbed_view = self._activity.get_canvas() - found = tabbed_view.props.current_browser.typeahead.find( \ - entry.props.text, False) - if found == interfaces.nsITypeAheadFind.FIND_NOTFOUND: + found = tabbed_view.props.current_browser.search_text( + entry.props.text, False, True, True) + + if not found: self._prev.props.sensitive = False self._next.props.sensitive = False entry.modify_text(gtk.STATE_NORMAL, @@ -142,8 +107,10 @@ class EditToolbar(activity.EditToolbar): def __find_previous_cb(self, button): tabbed_view = self._activity.get_canvas() - tabbed_view.props.current_browser.typeahead.findAgain(True, False) + tabbed_view.props.current_browser.search_text( + self.search_entry.props.text, False, False, True) def __find_next_cb(self, button): tabbed_view = self._activity.get_canvas() - tabbed_view.props.current_browser.typeahead.findAgain(False, False) + tabbed_view.props.current_browser.search_text( + self.search_entry.props.text, False, True, True) diff --git a/palettes.py b/palettes.py index 200277a..47009f9 100644 --- a/palettes.py +++ b/palettes.py @@ -147,6 +147,7 @@ class LinkPalette(Palette): def __download_activate_cb(self, menu_item): downloadmanager.save_link(self._url, self._title, self._owner_document) + class ImagePalette(Palette): diff --git a/sessionstore.py b/sessionstore.py index ae97cd2..11fe135 100644 --- a/sessionstore.py +++ b/sessionstore.py @@ -40,7 +40,6 @@ def set_session(browser, data): def _get_history(history): - logging.debug('%r' % len(history)) entries_dest = [] for i in range(0, len(history)): entry_orig = history.get_nth_item(i) diff --git a/webtoolbar.py b/webtoolbar.py index 86fab60..361b016 100644 --- a/webtoolbar.py +++ b/webtoolbar.py @@ -355,13 +355,7 @@ class PrimaryToolbar(ToolbarBox): self.entry.props.progress = progress def _set_address(self, uri): - if uri is not None: - cls = components.classes['@mozilla.org/intl/texttosuburi;1'] - texttosuburi = cls.getService(interfaces.nsITextToSubURI) - ui_uri = texttosuburi.unEscapeURIForUI(uri.originCharset, uri.spec) - else: - ui_uri = None - self.entry.props.address = ui_uri + self.entry.props.address = uri def _set_title(self, title): self.entry.props.title = title @@ -400,10 +394,9 @@ class PrimaryToolbar(ToolbarBox): def _stop_and_reload_cb(self, button): browser = self._tabbed_view.props.current_browser if self._loading: - browser.web_navigation.stop(interfaces.nsIWebNavigation.STOP_ALL) + browser.stop() else: - flags = interfaces.nsIWebNavigation.LOAD_FLAGS_NONE - browser.web_navigation.reload(flags) + browser.reload() def _set_loading(self, loading): self._loading = loading @@ -417,7 +410,8 @@ class PrimaryToolbar(ToolbarBox): def _reload_session_history(self, current_page_index=None): browser = self._tabbed_view.props.current_browser - session_history = browser.web_navigation.sessionHistory + history = browser.get_back_forward_list() + if current_page_index is None: current_page_index = session_history.index @@ -454,7 +448,9 @@ class PrimaryToolbar(ToolbarBox): def _history_item_activated_cb(self, menu_item, index): browser = self._tabbed_view.props.current_browser - browser.web_navigation.gotoIndex(index) + history = browser.get_back_forward_list() + + history.go_to_item(history.get_nth_item(index)) def _link_add_clicked_cb(self, button): self.emit('add-link') -- cgit v0.9.1