diff -r 210f6ea6b9c3 -r 9d86824898e1 WebBrowser/JavaScript/ExternalJsObject.py --- a/WebBrowser/JavaScript/ExternalJsObject.py Wed Mar 16 19:08:48 2016 +0100 +++ b/WebBrowser/JavaScript/ExternalJsObject.py Wed Mar 16 19:51:00 2016 +0100 @@ -15,10 +15,13 @@ from __future__ import unicode_literals -from PyQt5.QtCore import pyqtSlot, QObject, QUrl, QByteArray +from PyQt5.QtCore import pyqtSlot, pyqtProperty, QObject, QUrl import WebBrowser.WebBrowserWindow +from .StartPageJsObject import StartPageJsObject +from .PasswordManagerJsObject import PasswordManagerJsObject + class ExternalJsObject(QObject): """ @@ -34,6 +37,9 @@ super(ExternalJsObject, self).__init__(page) self.__page = page + + self.__startPage = None + self.__passwordManager = None def page(self): """ @@ -44,7 +50,21 @@ """ return self.__page - @pyqtSlot(result=QObject) + @pyqtProperty(QObject, constant=True) + def passwordManager(self): + """ + Public method to get a reference to the password manager JavaScript + object. + + @return reference to the password manager JavaScript object + @rtype StartPageJsObject + """ + if self.__passwordManager is None: + self.__passwordManager = PasswordManagerJsObject(self) + + return self.__passwordManager + + @pyqtProperty(QObject, constant=True) def speedDial(self): """ Public method returning a reference to a speed dial object. @@ -59,55 +79,15 @@ ## return WebBrowser.WebBrowserWindow.WebBrowserWindow.speedDial() return None - @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)) - - @pyqtSlot(str, str, str, QByteArray) - def formSubmitted(self, urlStr, userName, password, data): - """ - Public slot passing form data to the password manager. - - @param urlStr form submission URL - @type str - @param userName name of the user - @type str - @param password user password - @type str - @param data data to be submitted - @type QByteArray + @pyqtProperty(QObject, constant=True) + def startPage(self): """ - import WebBrowser.WebBrowserWindow - WebBrowser.WebBrowserWindow.WebBrowserWindow.passwordManager()\ - .formSubmitted(urlStr, userName, password, data, - self.page()) - - @pyqtSlot(result=str) - def providerString(self): - """ - Public method to get a string for the search provider. + Public method to get a reference to the start page JavaScript object. - @return string for the search provider (string) + @return reference to the start page JavaScript object + @rtype StartPageJsObject """ - return (self.tr("Search results provided by {0}") - .format(self.__page.view().mainWindow().openSearchManager() - .currentEngineName())) - - @pyqtSlot(str, result=str) - def searchUrl(self, searchStr): - """ - Public method to get the search URL for the given search term. + if self.__startPage is None: + self.__startPage = StartPageJsObject(self) - @param searchStr search term (string) - @return search URL (string) - """ - return bytes( - self.__page.view().mainWindow().openSearchManager().currentEngine() - .searchUrl(searchStr).toEncoded()).decode() + return self.__startPage