Thu, 18 Feb 2016 20:19:33 +0100
Continued porting the web browser.
- continued the passwords stuff
--- a/WebBrowser/Bookmarks/BookmarksManager.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/Bookmarks/BookmarksManager.py Thu Feb 18 20:19:33 2016 +0100 @@ -186,8 +186,6 @@ for node in others: self.__menu.add(node) - - self.__convertFromOldBookmarks() def save(self): """ @@ -396,32 +394,6 @@ self.tr("""Error exporting bookmarks to <b>{0}</b>.""") .format(fileName)) - # TODO: Bookmarks: remove this obsolete method - def __convertFromOldBookmarks(self): - """ - Private method to convert the old bookmarks into the new ones. - """ - bmNames = Preferences.Prefs.settings.value('Bookmarks/Names') - bmFiles = Preferences.Prefs.settings.value('Bookmarks/Files') - - if bmNames is not None and bmFiles is not None: - if len(bmNames) == len(bmFiles): - convertedRootNode = BookmarkNode(BookmarkNode.Folder) - convertedRootNode.title = self.tr("Converted {0}")\ - .format(QDate.currentDate().toString( - Qt.SystemLocaleShortDate)) - for i in range(len(bmNames)): - node = BookmarkNode(BookmarkNode.Bookmark, - convertedRootNode) - node.title = bmNames[i] - url = QUrl(bmFiles[i]) - if not url.scheme(): - url.setScheme("file") - node.url = url.toString() - self.addBookmark(self.menu(), convertedRootNode) - - Preferences.Prefs.settings.remove('Bookmarks') - def iconChanged(self, url): """ Public slot to update the icon image for an URL.
--- a/WebBrowser/JavaScript/ExternalJsObject.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/JavaScript/ExternalJsObject.py Thu Feb 18 20:19:33 2016 +0100 @@ -15,10 +15,12 @@ from __future__ import unicode_literals -from PyQt5.QtCore import QObject +from PyQt5.QtCore import pyqtSlot, QObject, QUrl from .AutoFillJsObject import AutoFillJsObject +import WebBrowser.WebBrowserWindow + class ExternalJsObject(QObject): """ @@ -45,6 +47,7 @@ """ return self.__page + @pyqtSlot(result=QObject) def speedDial(self): """ Public method returning a reference to a speed dial object. @@ -59,6 +62,7 @@ ## return WebBrowser.WebBrowserWindow.WebBrowserWindow.speedDial() return None + @pyqtSlot(result=QObject) def autoFill(self): """ Public method returning a reference to the auto fill object. @@ -68,11 +72,16 @@ """ return self.__autoFill - # TODO: OpenSearch -##void ExternalJsObject::AddSearchProvider(const QString &engineUrl) -##{ Slot -## mApp->searchEnginesManager()->addEngine(QUrl(engineUrl)); -##} + @pyqtSlot(str) + def AddSearchProvider(self, engineUrl): + """ + Public slot to add a search provider. + + @param engineUrl engineUrl of the XML file defining the search provider + @type str + """ + WebBrowser.WebBrowserWindow.WebBrowserWindow.openSearchManager()\ + .addEngine(QUrl(engineUrl)) ## ##int ExternalJsObject::IsSearchProviderInstalled(const QString &engineURL) ##{ Slot
--- a/WebBrowser/Network/NetworkManager.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/Network/NetworkManager.py Thu Feb 18 20:19:33 2016 +0100 @@ -95,27 +95,24 @@ .format(urlRoot) from UI.AuthenticationDialog import AuthenticationDialog - # TODO: Password Manager -## import WebBrowser.WebBrowserWindow + import WebBrowser.WebBrowserWindow dlg = AuthenticationDialog(info, auth.user(), Preferences.getUser("SavePasswords"), Preferences.getUser("SavePasswords")) - # TODO: Password Manager -## if Preferences.getUser("SavePasswords"): -## username, password = \ -## WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager()\ -## .getLogin(url, realm) -## if username: -## dlg.setData(username, password) + if Preferences.getUser("SavePasswords"): + username, password = \ + WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager()\ + .getLogin(url, realm) + if username: + dlg.setData(username, password) if dlg.exec_() == QDialog.Accepted: username, password = dlg.getData() auth.setUser(username) auth.setPassword(password) - # TODO: Password Manager -## if Preferences.getUser("SavePasswords"): -## WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager()\ -## .setLogin(url, realm, username, password) + if Preferences.getUser("SavePasswords"): + WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager()\ + .setLogin(url, realm, username, password) def proxyAuthentication(self, hostname, auth): """
--- a/WebBrowser/OpenSearch/OpenSearchManager.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/OpenSearch/OpenSearchManager.py Thu Feb 18 20:19:33 2016 +0100 @@ -226,7 +226,6 @@ return True - # TODO: Open Search: implement this right def addEngineFromForm(self, res, view): """ Private method to add a new search engine from a form.
--- a/WebBrowser/Passwords/PasswordReader.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/Passwords/PasswordReader.py Thu Feb 18 20:19:33 2016 +0100 @@ -112,7 +112,6 @@ if not self.isStartElement() and self.name() != "Forms": return - # TODO: Passwords: adjust reader to new login form while not self.atEnd(): self.readNext() if self.isStartElement():
--- a/WebBrowser/WebBrowserPage.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/WebBrowserPage.py Thu Feb 18 20:19:33 2016 +0100 @@ -50,47 +50,6 @@ ############################################################################### ## ## -##class JavaScriptExternalObject(QObject): -## """ -## Class implementing an external javascript object to add search providers. -## """ -## def __init__(self, mw, parent=None): -## """ -## Constructor -## -## @param mw reference to the main window 8HelpWindow) -## @param parent reference to the parent object (QObject) -## """ -## super(JavaScriptExternalObject, self).__init__(parent) -## -## self.__mw = mw -## -## @pyqtSlot(str) -## def AddSearchProvider(self, url): -## """ -## Public slot to add a search provider. -## -## @param url url of the XML file defining the search provider (string) -## """ -## self.__mw.openSearchManager().addEngine(QUrl(url)) -## -## -##class LinkedResource(object): -## """ -## Class defining a data structure for linked resources. -## """ -## def __init__(self): -## """ -## Constructor -## """ -## self.rel = "" -## self.type_ = "" -## self.href = "" -## self.title = "" -## -############################################################################### -## -## ##class JavaScriptEricObject(QObject): ## """ ## Class implementing an external javascript object to search via the @@ -173,7 +132,7 @@ """ super(WebBrowserPage, self).__init__(parent) - self.setupWebChannel() + self.__setupWebChannel() ## self.setPluginFactory(self.webPluginFactory()) ## @@ -764,13 +723,14 @@ """ return WebHitTestResult(self, pos) - def setupWebChannel(self): + def __setupWebChannel(self): """ - Public method to setup a web channel to our external object. + Private method to setup a web channel to our external object. """ + self.__externalJsObject = ExternalJsObject(self) oldChannel = self.webChannel() newChannel = QWebChannel(self) - newChannel.registerObject("eric_object", ExternalJsObject(self)) + newChannel.registerObject("eric_object", self.__externalJsObject) self.setWebChannel(newChannel) if oldChannel: @@ -788,3 +748,10 @@ """ return WebBrowser.WebBrowserWindow.WebBrowserWindow.networkManager()\ .certificateError(error, self.view()) + + ############################################## + ## Methods below deal with JavaScript messages + ############################################## + + def javaScriptConsoleMessage(self, level, message, lineNumber, sourceId): + print("JS-console:", message, lineNumber, sourceId)
--- a/WebBrowser/WebBrowserTabWidget.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/WebBrowserTabWidget.py Thu Feb 18 20:19:33 2016 +0100 @@ -445,18 +445,24 @@ """ self.closeBrowserAt(self.currentIndex()) - def closeAllBrowsers(self): + def closeAllBrowsers(self, shutdown=False): """ Public slot called to handle the close all action. + + @param shutdown flag indicating a shutdown action + @type bool """ for index in range(self.count() - 1, -1, -1): - self.closeBrowserAt(index) + self.closeBrowserAt(index, shutdown=shutdown) - def closeBrowserAt(self, index): + def closeBrowserAt(self, index, shutdown=False): """ Public slot to close a browser based on its index. - @param index index of browser to close (integer) + @param index index of browser to close + @type int + @param shutdown flag indicating a shutdown action + @type bool """ browser = self.widget(index) if browser is None: @@ -487,7 +493,7 @@ browser.deleteLater() del browser - if self.count() == 0: + if self.count() == 0 and not shutdown: self.newBrowser() else: self.currentChanged[int].emit(self.currentIndex())
--- a/WebBrowser/WebBrowserView.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/WebBrowserView.py Thu Feb 18 20:19:33 2016 +0100 @@ -1045,7 +1045,6 @@ ## url = act.data() ## self.__mw.downloadManager().download(url, True, mainWindow=self.__mw) - # TODO: this needs to be changed def __pauseMedia(self): """ Private slot to pause or play the selected media. @@ -1071,22 +1070,21 @@ ## url = act.data() ## self.__mw.requestVirusTotalScan(url) - # TODO OpenSearch -## def __searchRequested(self, act): -## """ -## Private slot to search for some text with a selected search engine. -## -## @param act reference to the action that triggered this slot (QAction) -## """ -## searchText = self.selectedText() -## -## if not searchText: -## return -## -## engineName = act.data() -## if engineName: -## engine = self.__mw.openSearchManager().engine(engineName) -## self.search.emit(engine.searchUrl(searchText)) + def __searchRequested(self, act): + """ + Private slot to search for some text with a selected search engine. + + @param act reference to the action that triggered this slot (QAction) + """ + searchText = self.selectedText() + + if not searchText: + return + + engineName = act.data() + if engineName: + engine = self.__mw.openSearchManager().engine(engineName) + self.search.emit(engine.searchUrl(searchText)) def __addSearchEngine(self): """
--- a/WebBrowser/WebBrowserWindow.py Wed Feb 17 19:49:51 2016 +0100 +++ b/WebBrowser/WebBrowserWindow.py Thu Feb 18 20:19:33 2016 +0100 @@ -53,8 +53,8 @@ ## ##from .data import icons_rc # __IGNORE_WARNING__ ##from .data import html_rc # __IGNORE_WARNING__ -##from .data import javascript_rc # __IGNORE_WARNING__ -## +from .data import javascript_rc # __IGNORE_WARNING__ + from .Tools import Scripts, WebBrowserTools, WebIconProvider @@ -2513,7 +2513,7 @@ ## self.searchEdit.saveSearches() - self.__tabWidget.closeAllBrowsers() + self.__tabWidget.closeAllBrowsers(shutdown=True) state = self.saveState() Preferences.setWebBrowser("WebBrowserState", state)