Fri, 25 Dec 2015 14:03:57 +0100
Prepared the code for missing QtWebKit (starting from Qt 5.6).
--- a/E5XML/ShortcutsWriter.py Wed Dec 23 19:08:09 2015 +0100 +++ b/E5XML/ShortcutsWriter.py Fri Dec 25 14:03:57 2015 +0100 @@ -93,9 +93,13 @@ if hasattr(ref, "getActions"): self.__writeActions(category, ref.getActions()) - self.__writeActions( - "HelpViewer", - e5App().getObject("DummyHelpViewer").getActions()) + try: + self.__writeActions( + "HelpViewer", + e5App().getObject("DummyHelpViewer").getActions()) + except KeyError: + # no QtWebKit available + pass # add the main end tag self.writeEndElement()
--- a/Preferences/ConfigurationDialog.py Wed Dec 23 19:08:09 2015 +0100 +++ b/Preferences/ConfigurationDialog.py Fri Dec 25 14:03:57 2015 +0100 @@ -277,27 +277,14 @@ "0helpPage": [self.tr("Help"), "preferences-help.png", None, None, None], - "helpAppearancePage": - [self.tr("Appearance"), "preferences-styles.png", - "HelpAppearancePage", "0helpPage", None], "helpDocumentationPage": [self.tr("Help Documentation"), "preferences-helpdocumentation.png", "HelpDocumentationPage", "0helpPage", None], - "helpFlashCookieManagerPage": - [self.tr("Flash Cookie Manager"), - "flashCookie16.png", - "HelpFlashCookieManagerPage", "0helpPage", None], "helpViewersPage": [self.tr("Help Viewers"), "preferences-helpviewers.png", "HelpViewersPage", "0helpPage", None], - "helpVirusTotalPage": - [self.tr("VirusTotal Interface"), "virustotal.png", - "HelpVirusTotalPage", "0helpPage", None], - "helpWebBrowserPage": - [self.tr("eric6 Web Browser"), "ericWeb.png", - "HelpWebBrowserPage", "0helpPage", None], "0projectPage": [self.tr("Project"), "preferences-project.png", @@ -323,6 +310,25 @@ [self.tr("Viewmanager"), "preferences-viewmanager.png", "ViewmanagerPage", "0interfacePage", None], } + try: + from PyQt5 import QtWebKit # __IGNORE_WARNING__ + self.configItems.update({ + "helpAppearancePage": + [self.tr("Appearance"), "preferences-styles.png", + "HelpAppearancePage", "0helpPage", None], + "helpFlashCookieManagerPage": + [self.tr("Flash Cookie Manager"), + "flashCookie16.png", + "HelpFlashCookieManagerPage", "0helpPage", None], + "helpVirusTotalPage": + [self.tr("VirusTotal Interface"), "virustotal.png", + "HelpVirusTotalPage", "0helpPage", None], + "helpWebBrowserPage": + [self.tr("eric6 Web Browser"), "ericWeb.png", + "HelpWebBrowserPage", "0helpPage", None], + }) + except ImportError: + pass self.configItems.update( e5App().getObject("PluginManager").getPluginConfigData()) @@ -351,24 +357,30 @@ "0helpPage": [self.tr("Help"), "preferences-help.png", None, None, None], - "helpAppearancePage": - [self.tr("Appearance"), "preferences-styles.png", - "HelpAppearancePage", "0helpPage", None], "helpDocumentationPage": [self.tr("Help Documentation"), "preferences-helpdocumentation.png", "HelpDocumentationPage", "0helpPage", None], - "helpFlashCookieManagerPage": - [self.tr("Flash Cookie Manager"), - "flashCookie16.png", - "HelpFlashCookieManagerPage", "0helpPage", None], - "helpVirusTotalPage": - [self.tr("VirusTotal Interface"), "virustotal.png", - "HelpVirusTotalPage", "0helpPage", None], - "helpWebBrowserPage": - [self.tr("eric6 Web Browser"), "ericWeb.png", - "HelpWebBrowserPage", "0helpPage", None], } + try: + from PyQt5 import QtWebKit # __IGNORE_WARNING__ + self.configItems.update({ + "helpAppearancePage": + [self.tr("Appearance"), "preferences-styles.png", + "HelpAppearancePage", "0helpPage", None], + "helpFlashCookieManagerPage": + [self.tr("Flash Cookie Manager"), + "flashCookie16.png", + "HelpFlashCookieManagerPage", "0helpPage", None], + "helpVirusTotalPage": + [self.tr("VirusTotal Interface"), "virustotal.png", + "HelpVirusTotalPage", "0helpPage", None], + "helpWebBrowserPage": + [self.tr("eric6 Web Browser"), "ericWeb.png", + "HelpWebBrowserPage", "0helpPage", None], + }) + except ImportError: + pass elif displayMode == ConfigurationWidget.TrayStarterMode: self.configItems = {
--- a/Preferences/ConfigurationPages/HelpViewersPage.py Wed Dec 23 19:08:09 2015 +0100 +++ b/Preferences/ConfigurationPages/HelpViewersPage.py Fri Dec 25 14:03:57 2015 +0100 @@ -41,6 +41,15 @@ # set initial values hvId = Preferences.getHelp("HelpViewerType") + # check availability of QtWebKit + try: + from PyQt5 import QtWebKit # __IGNORE_WARNING__ + except ImportError: + # not available, reset help viewer to default + if hvId == 1: + hvId = Preferences.Prefs.helpDefaults["HelpViewerType"] + self.helpBrowserButton.setEnabled(False) + if hvId == 1: self.helpBrowserButton.setChecked(True) elif hvId == 2:
--- a/Preferences/ConfigurationPages/SecurityPage.py Wed Dec 23 19:08:09 2015 +0100 +++ b/Preferences/ConfigurationPages/SecurityPage.py Fri Dec 25 14:03:57 2015 +0100 @@ -11,7 +11,10 @@ from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QDialog -from PyQt5.QtWebKit import QWebSettings +try: + from PyQt5.QtWebKit import QWebSettings +except ImportError: + QWebSettings = None from .ConfigurationPageBase import ConfigurationPageBase from .Ui_SecurityPage import Ui_SecurityPage @@ -43,7 +46,7 @@ Preferences.getUser("UseMasterPassword")) self.masterPasswordButton.setEnabled( Preferences.getUser("UseMasterPassword")) - if hasattr(QWebSettings, "DnsPrefetchEnabled"): + if QWebSettings and hasattr(QWebSettings, "DnsPrefetchEnabled"): self.dnsPrefetchCheckBox.setChecked( Preferences.getHelp("DnsPrefetchEnabled")) else:
--- a/Preferences/Shortcuts.py Wed Dec 23 19:08:09 2015 +0100 +++ b/Preferences/Shortcuts.py Fri Dec 25 14:03:57 2015 +0100 @@ -180,8 +180,12 @@ for act in actions: __saveShortcut(act, category, prefClass) - for act in e5App().getObject("DummyHelpViewer").getActions(): - __saveShortcut(act, "HelpViewer", prefClass) + try: + for act in e5App().getObject("DummyHelpViewer").getActions(): + __saveShortcut(act, "HelpViewer", prefClass) + except KeyError: + # no QtWebKit available + pass def exportShortcuts(fn): @@ -324,6 +328,10 @@ actions = ref.getActions() __setAction(actions, shortcuts[category]) - if "HelpViewer" in shortcuts: - __setAction(e5App().getObject("DummyHelpViewer").getActions(), - shortcuts["HelpViewer"]) + try: + if "HelpViewer" in shortcuts: + __setAction(e5App().getObject("DummyHelpViewer").getActions(), + shortcuts["HelpViewer"]) + except KeyError: + # no QtWebKit available + pass
--- a/Preferences/ShortcutsDialog.py Wed Dec 23 19:08:09 2015 +0100 +++ b/Preferences/ShortcutsDialog.py Fri Dec 25 14:03:57 2015 +0100 @@ -188,10 +188,15 @@ objectType=objectType) self.pluginCategoryItems.append(categoryItem) - self.helpViewerItem = self.__generateCategoryItem( - self.tr("eric6 Web Browser")) - for act in e5App().getObject("DummyHelpViewer").getActions(): - self.__generateShortcutItem(self.helpViewerItem, act, True) + try: + dummyHelpViewer = e5App().getObject("DummyHelpViewer") + self.helpViewerItem = self.__generateCategoryItem( + self.tr("eric6 Web Browser")) + for act in dummyHelpViewer.getActions(): + self.__generateShortcutItem(self.helpViewerItem, act, True) + except KeyError: + # no QtWebKit available + pass self.__resort() self.__resizeColumns() @@ -431,9 +436,13 @@ if ref is not None and hasattr(ref, "getActions"): self.__saveCategoryActions(categoryItem, ref.getActions()) - self.__saveCategoryActions( - self.helpViewerItem, - e5App().getObject("DummyHelpViewer").getActions()) + try: + dummyHelpViewer = e5App().getObject("DummyHelpViewer") + self.__saveCategoryActions( + self.helpViewerItem, dummyHelpViewer.getActions()) + except KeyError: + # no QtWebKit available + pass Shortcuts.saveShortcuts() Preferences.syncPreferences()
--- a/Preferences/__init__.py Wed Dec 23 19:08:09 2015 +0100 +++ b/Preferences/__init__.py Fri Dec 25 14:03:57 2015 +0100 @@ -33,7 +33,10 @@ from PyQt5.QtGui import QColor, QFont, QPalette from PyQt5.QtWidgets import QInputDialog, QApplication from PyQt5.QtNetwork import QNetworkRequest -from PyQt5.QtWebKit import QWebSettings +try: + from PyQt5.QtWebKit import QWebSettings +except ImportError: + QWebSettings = None from PyQt5.Qsci import QsciScintilla, QsciLexerPython from E5Gui import E5FileDialog @@ -805,7 +808,6 @@ # defaults for the help settings helpDefaults = { - "HelpViewerType": 1, # this corresponds with the radio button id "CustomViewer": "", "PythonDocDir": "", "Python2DocDir": "", @@ -907,12 +909,19 @@ "FlashCookiesBlacklist": [], "FlashCookiesDataPath": flashDataPathForOS(), } + if QWebSettings: + helpDefaults["HelpViewerType"] = 1, # eric browser + else: + helpDefaults["HelpViewerType"] = 2, # Qt Assistant @classmethod def initWebSettingsDefaults(cls): """ Class method to initialize the web settings related defaults. """ + if QWebSettings is None: + return + websettings = QWebSettings.globalSettings() fontFamily = websettings.fontFamily(QWebSettings.StandardFont) fontSize = websettings.fontSize(QWebSettings.DefaultFontSize) @@ -2402,7 +2411,14 @@ from Utilities.crypto import pwConvert return pwConvert(prefClass.settings.value( "Help/" + key, prefClass.helpDefaults[key]), encode=False) - elif key in ["HelpViewerType", "DiskCacheSize", "AcceptCookies", + elif key == "HelpViewerType": + # special treatment to adjust for missing QtWebKit + value = int(prefClass.settings.value( + "Help/" + key, prefClass.helpDefaults[key])) + if QWebSettings is None: + value = prefClass.helpDefaults[key] + return value + elif key in ["DiskCacheSize", "AcceptCookies", "KeepCookiesUntil", "StartupBehavior", "HistoryLimit", "OfflineStorageDatabaseQuota", "OfflineWebApplicationCacheQuota", "CachePolicy", @@ -3096,3 +3112,6 @@ initPreferences() initRecentSettings() + +# +# eflag: noqa = M613
--- a/UI/UserInterface.py Wed Dec 23 19:08:09 2015 +0100 +++ b/UI/UserInterface.py Fri Dec 25 14:03:57 2015 +0100 @@ -27,6 +27,11 @@ from PyQt5.Qsci import QSCINTILLA_VERSION_STR from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkAccessManager, \ QNetworkRequest, QNetworkReply +try: + from PyQt5 import QtWebKit # __IGNORE_WARNING__ + WEBKIT_AVAILABLE = True +except ImportError: + WEBKIT_AVAILABLE = False from .Info import Version, BugAddress, Program, FeatureAddress from . import Config @@ -457,9 +462,10 @@ self.__initExternalToolsActions() # create a dummy help window for shortcuts handling - from Helpviewer.HelpWindow import HelpWindow - self.dummyHelpViewer = \ - HelpWindow(None, '.', None, 'help viewer', True, True) + if WEBKIT_AVAILABLE: + from Helpviewer.HelpWindow import HelpWindow + self.dummyHelpViewer = \ + HelpWindow(None, '.', None, 'help viewer', True, True) # register all relevant objects splash.showMessage(self.tr("Registering Objects...")) @@ -474,7 +480,8 @@ e5App().registerObject("TaskViewer", self.taskViewer) e5App().registerObject("TemplateViewer", self.templateViewer) e5App().registerObject("Shell", self.shell) - e5App().registerObject("DummyHelpViewer", self.dummyHelpViewer) + if WEBKIT_AVAILABLE: + e5App().registerObject("DummyHelpViewer", self.dummyHelpViewer) e5App().registerObject("PluginManager", self.pluginManager) e5App().registerObject("ToolbarManager", self.toolbarManager) e5App().registerObject("Cooperation", self.cooperation) @@ -1583,25 +1590,29 @@ self.whatsThisAct.triggered.connect(self.__whatsThis) self.actions.append(self.whatsThisAct) - self.helpviewerAct = E5Action( - self.tr('Helpviewer'), - UI.PixmapCache.getIcon("help.png"), - self.tr('&Helpviewer...'), - QKeySequence(self.tr("F1")), - 0, self, 'helpviewer') - self.helpviewerAct.setStatusTip(self.tr( - 'Open the helpviewer window')) - self.helpviewerAct.setWhatsThis(self.tr( - """<b>Helpviewer</b>""" - """<p>Display the eric6 web browser. This window will show""" - """ HTML help files and help from Qt help collections. It has""" - """ the capability to navigate to links, set bookmarks, print""" - """ the displayed help and some more features. You may use it to""" - """ browse the internet as well</p><p>If called with a word""" - """ selected, this word is search in the Qt help collection.</p>""" - )) - self.helpviewerAct.triggered.connect(self.__helpViewer) - self.actions.append(self.helpviewerAct) + if WEBKIT_AVAILABLE: + self.helpviewerAct = E5Action( + self.tr('Helpviewer'), + UI.PixmapCache.getIcon("help.png"), + self.tr('&Helpviewer...'), + QKeySequence(self.tr("F1")), + 0, self, 'helpviewer') + self.helpviewerAct.setStatusTip(self.tr( + 'Open the helpviewer window')) + self.helpviewerAct.setWhatsThis(self.tr( + """<b>Helpviewer</b>""" + """<p>Display the eric6 web browser. This window will show""" + """ HTML help files and help from Qt help collections. It""" + """ has the capability to navigate to links, set bookmarks,""" + """ print the displayed help and some more features. You may""" + """ use it to browse the internet as well</p><p>If called""" + """ with a word selected, this word is search in the Qt help""" + """ collection.</p>""" + )) + self.helpviewerAct.triggered.connect(self.__helpViewer) + self.actions.append(self.helpviewerAct) + else: + self.helpviewerAct = None self.__initQtDocActions() self.__initPythonDocActions() @@ -1893,19 +1904,22 @@ self.miniEditorAct.triggered.connect(self.__openMiniEditor) self.actions.append(self.miniEditorAct) - self.webBrowserAct = E5Action( - self.tr('eric6 Web Browser'), - UI.PixmapCache.getIcon("ericWeb.png"), - self.tr('eric6 &Web Browser...'), - 0, 0, self, 'web_browser') - self.webBrowserAct.setStatusTip(self.tr( - 'Start the eric6 Web Browser')) - self.webBrowserAct.setWhatsThis(self.tr( - """<b>eric6 Web Browser</b>""" - """<p>Browse the Internet with the eric6 Web Browser.</p>""" - )) - self.webBrowserAct.triggered.connect(self.__startWebBrowser) - self.actions.append(self.webBrowserAct) + if WEBKIT_AVAILABLE: + self.webBrowserAct = E5Action( + self.tr('eric6 Web Browser'), + UI.PixmapCache.getIcon("ericWeb.png"), + self.tr('eric6 &Web Browser...'), + 0, 0, self, 'web_browser') + self.webBrowserAct.setStatusTip(self.tr( + 'Start the eric6 Web Browser')) + self.webBrowserAct.setWhatsThis(self.tr( + """<b>eric6 Web Browser</b>""" + """<p>Browse the Internet with the eric6 Web Browser.</p>""" + )) + self.webBrowserAct.triggered.connect(self.__startWebBrowser) + self.actions.append(self.webBrowserAct) + else: + self.webBrowserAct = None self.iconEditorAct = E5Action( self.tr('Icon Editor'), @@ -2519,8 +2533,9 @@ self.__menus["help"] = QMenu(self.tr('&Help'), self) mb.addMenu(self.__menus["help"]) self.__menus["help"].setTearOffEnabled(True) - self.__menus["help"].addAction(self.helpviewerAct) - self.__menus["help"].addSeparator() + if self.helpviewerAct: + self.__menus["help"].addAction(self.helpviewerAct) + self.__menus["help"].addSeparator() self.__menus["help"].addAction(self.ericDocAct) self.__menus["help"].addAction(self.pythonDocAct) self.__menus["help"].addAction(self.python2DocAct) @@ -2628,8 +2643,9 @@ toolstb.addAction(self.miniEditorAct) toolstb.addAction(self.iconEditorAct) toolstb.addAction(self.snapshotAct) - toolstb.addSeparator() - toolstb.addAction(self.webBrowserAct) + if self.webBrowserAct: + toolstb.addSeparator() + toolstb.addAction(self.webBrowserAct) self.toolbarManager.addToolBar(toolstb, toolstb.windowTitle()) # setup the settings toolbar @@ -2647,7 +2663,9 @@ # setup the help toolbar helptb.addAction(self.whatsThisAct) self.toolbarManager.addToolBar(helptb, helptb.windowTitle()) - self.toolbarManager.addAction(self.helpviewerAct, helptb.windowTitle()) + if self.helpviewerAct: + self.toolbarManager.addAction(self.helpviewerAct, + helptb.windowTitle()) # setup the view profiles toolbar profilestb.addActions(self.viewProfileActGrp.actions()) @@ -3322,7 +3340,8 @@ btMenu.addAction(self.miniEditorAct) btMenu.addAction(self.iconEditorAct) btMenu.addAction(self.snapshotAct) - btMenu.addAction(self.webBrowserAct) + if self.webBrowserAct: + btMenu.addAction(self.webBrowserAct) ptMenu = QMenu(self.tr("&Plugin Tools"), self) ptMenu.aboutToShow.connect(self.__showPluginToolsMenu) @@ -4792,8 +4811,11 @@ if hvType == 1: self.launchHelpViewer(home) elif hvType == 2: - self.__assistant(home, version=4) - elif hvType == 3: + if home.startswith("qthelp://"): + self.__assistant(home, version=4) + else: + self.__webBrowser(home) + elif hvType in 3: self.__webBrowser(home) else: self.__customViewer(home) @@ -4849,7 +4871,10 @@ if hvType == 1: self.launchHelpViewer(home) elif hvType == 2: - self.__assistant(home, version=4) + if home.startswith("qthelp://"): + self.__assistant(home, version=4) + else: + self.__webBrowser(home) elif hvType == 3: self.__webBrowser(home) else: @@ -4912,7 +4937,10 @@ if hvType == 1: self.launchHelpViewer(home) elif hvType == 2: - self.__assistant(home, version=4) + if home.startswith("qthelp://"): + self.__assistant(home, version=4) + else: + self.__webBrowser(home) elif hvType == 3: self.__webBrowser(home) else: @@ -4972,7 +5000,10 @@ if hvType == 1: self.launchHelpViewer(home) elif hvType == 2: - self.__assistant(home, version=4) + if home.startswith("qthelp://"): + self.__assistant(home, version=4) + else: + self.__webBrowser(home) elif hvType == 3: self.__webBrowser(home) else: @@ -5034,7 +5065,10 @@ if hvType == 1: self.launchHelpViewer(home) elif hvType == 2: - self.__assistant(home, version=4) + if home.startswith("qthelp://"): + self.__assistant(home, version=4) + else: + self.__webBrowser(home) elif hvType == 3: self.__webBrowser(home) else: @@ -5068,7 +5102,10 @@ if hvType == 1: self.launchHelpViewer(home) elif hvType == 2: - self.__assistant(home, version=4) + if home.startswith("qthelp://"): + self.__assistant(home, version=4) + else: + self.__webBrowser(home) elif hvType == 3: self.__webBrowser(home) else: @@ -5118,7 +5155,10 @@ if hvType == 1: self.launchHelpViewer(home) elif hvType == 2: - self.__assistant(home, version=4) + if home.startswith("qthelp://"): + self.__assistant(home, version=4) + else: + self.__webBrowser(home) elif hvType == 3: self.__webBrowser(home) else: @@ -5137,31 +5177,35 @@ homeUrl = QUrl(home) if not homeUrl.scheme(): home = QUrl.fromLocalFile(home).toString() - if not (useSingle or Preferences.getHelp("SingleHelpWindow")) or \ - self.helpWindow is None: - from Helpviewer.HelpWindow import HelpWindow - help = HelpWindow(home, '.', None, 'help viewer', True, - searchWord=searchWord) + + if WEBKIT_AVAILABLE: + if not (useSingle or Preferences.getHelp("SingleHelpWindow")) or \ + self.helpWindow is None: + from Helpviewer.HelpWindow import HelpWindow + help = HelpWindow(home, '.', None, 'help viewer', True, + searchWord=searchWord) - if QApplication.desktop().width() > 400 and \ - QApplication.desktop().height() > 500: - help.show() + if QApplication.desktop().width() > 400 and \ + QApplication.desktop().height() > 500: + help.show() + else: + help.showMaximized() + + if useSingle or Preferences.getHelp("SingleHelpWindow"): + self.helpWindow = help + self.helpWindow.helpClosed.connect(self.__helpClosed) + self.preferencesChanged.connect( + self.helpWindow.preferencesChanged) + self.masterPasswordChanged.connect( + self.helpWindow.masterPasswordChanged) + elif searchWord is not None: + self.helpWindow.search(searchWord) + self.helpWindow.raise_() else: - help.showMaximized() - - if useSingle or Preferences.getHelp("SingleHelpWindow"): - self.helpWindow = help - self.helpWindow.helpClosed.connect(self.__helpClosed) - self.preferencesChanged.connect( - self.helpWindow.preferencesChanged) - self.masterPasswordChanged.connect( - self.helpWindow.masterPasswordChanged) - elif searchWord is not None: - self.helpWindow.search(searchWord) - self.helpWindow.raise_() + self.helpWindow.newTab(home) + self.helpWindow.raise_() else: - self.helpWindow.newTab(home) - self.helpWindow.raise_() + self.__webBrowser(home) def __helpClosed(self): """ @@ -5205,10 +5249,13 @@ (boolean) @return reference to the help window instance (HelpWindow) """ - if self.helpWindow is None: - self.launchHelpViewer("", useSingle=True) - self.helpWindow.raise_() - return self.helpWindow + if WEBKIT_AVAILABLE: + if self.helpWindow is None: + self.launchHelpViewer("", useSingle=True) + self.helpWindow.raise_() + return self.helpWindow + else: + return None @pyqtSlot() @pyqtSlot(str)
--- a/install.py Wed Dec 23 19:08:09 2015 +0100 +++ b/install.py Fri Dec 25 14:03:57 2015 +0100 @@ -1109,13 +1109,12 @@ if pyqtVariant == "PyQt4": impModulesList = [ "PyQt4.QtGui", "PyQt4.QtNetwork", "PyQt4.QtSql", - "PyQt4.QtSvg", "PyQt4.QtWebKit", + "PyQt4.QtSvg", ] else: impModulesList = [ "PyQt5.QtGui", "PyQt5.QtNetwork", "PyQt5.QtPrintSupport", - "PyQt5.QtSql", "PyQt5.QtSvg", "PyQt5.QtWebKit", - "PyQt5.QtWebKitWidgets", "PyQt5.QtWidgets", + "PyQt5.QtSql", "PyQt5.QtSvg", "PyQt5.QtWidgets", ] modulesOK = True for impModule in impModulesList: