--- a/WebBrowser/WebBrowserWindow.py Sat Mar 19 12:13:09 2016 +0100 +++ b/WebBrowser/WebBrowserWindow.py Sat Mar 19 16:05:11 2016 +0100 @@ -86,7 +86,7 @@ _webProfile = None _networkManager = None _cookieJar = None -## _helpEngine = None + _helpEngine = None _bookmarksManager = None _historyManager = None _passwordManager = None @@ -104,7 +104,7 @@ def __init__(self, home, path, parent, name, fromEric=False, initShortcutsOnly=False, searchWord=None, - private=False, settingsDir=""): + private=False, qthelp=False, settingsDir=""): """ Constructor @@ -118,6 +118,7 @@ keyboard shortcuts (boolean) @keyparam searchWord word to search for (string) @keyparam private flag indicating a private browsing window (bool) + @keyparam qthelp flag indicating to enable the QtHelp support (bool) @keyparam settingsDir directory to be used for the settings files (str) """ super(WebBrowserWindow, self).__init__(parent) @@ -146,22 +147,21 @@ "QTWEBENGINE_REMOTE_DEBUGGING", str(Preferences.getWebBrowser("WebInspectorPort"))) + WebBrowserWindow.setUseQtHelp( + self.__fromEric or qthelp or bool(searchWord)) + self.webProfile(private) self.networkManager() from .SearchWidget import SearchWidget - # TODO: QtHelp -## from .HelpTocWidget import HelpTocWidget -## from .HelpIndexWidget import HelpIndexWidget -## from .HelpSearchWidget import HelpSearchWidget + from .QtHelp.HelpTocWidget import HelpTocWidget + from .QtHelp.HelpIndexWidget import HelpIndexWidget + from .QtHelp.HelpSearchWidget import HelpSearchWidget from .WebBrowserView import WebBrowserView from .WebBrowserTabWidget import WebBrowserTabWidget from .AdBlock.AdBlockIcon import AdBlockIcon from .VirusTotal.VirusTotalApi import VirusTotalAPI - # TODO: allow using Qt Help even if not called from eric6 - WebBrowserWindow.setUseQtHelp(self.__fromEric) - if not self.__fromEric: self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet")) @@ -171,16 +171,16 @@ ## from E5Network.E5SslUtilities import initSSL ## initSSL() - # TODO: QtHelp -## if WebBrowserWindow.UseQtHelp: -## self.__helpEngine = \ -## QHelpEngine(os.path.join(Utilities.getConfigDir(), -## "web_browser", "eric6help.qhc"), self) -## self.__removeOldDocumentation() -## self.__helpEngine.warning.connect(self.__warning) -## else: -## self.__helpEngine = None -## self.__helpInstaller = None + if WebBrowserWindow.useQtHelp: + self.__helpEngine = QHelpEngine( + os.path.join(Utilities.getConfigDir(), + "web_browser", "eric6help.qhc"), + self) + self.__removeOldDocumentation() + self.__helpEngine.warning.connect(self.__warning) + else: + self.__helpEngine = None + self.__helpInstaller = None self.__zoomWidget = E5ZoomWidget( UI.PixmapCache.getPixmap("zoomOut.png"), @@ -210,38 +210,38 @@ self.setCentralWidget(centralWidget) self.__searchWidget.hide() - # TODO: QtHelp, do these once Qt 5.6 is available -## if WebBrowserWindow.UseQtHelp: -## # setup the TOC widget -## self.__tocWindow = HelpTocWidget(self.__helpEngine, self) -## self.__tocDock = QDockWidget(self.tr("Contents"), self) -## self.__tocDock.setObjectName("TocWindow") -## self.__tocDock.setWidget(self.__tocWindow) -## self.addDockWidget(Qt.LeftDockWidgetArea, self.__tocDock) -## -## # setup the index widget -## self.__indexWindow = HelpIndexWidget(self.__helpEngine, self) -## self.__indexDock = QDockWidget(self.tr("Index"), self) -## self.__indexDock.setObjectName("IndexWindow") -## self.__indexDock.setWidget(self.__indexWindow) -## self.addDockWidget(Qt.LeftDockWidgetArea, self.__indexDock) -## -## # setup the search widget -## self.__searchWord = searchWord -## self.__indexing = False -## self.__indexingProgress = None -## self.__searchEngine = self.__helpEngine.searchEngine() -## self.__searchEngine.indexingStarted.connect( -## self.__indexingStarted) -## self.__searchEngine.indexingFinished.connect( -## self.__indexingFinished) -## self.__searchWindow = HelpSearchWidget( -## self.__searchEngine, self) -## self.__searchDock = QDockWidget(self.tr("Search"), self) -## self.__searchDock.setObjectName("SearchWindow") -## self.__searchDock.setWidget(self.__searchWindow) -## self.addDockWidget(Qt.LeftDockWidgetArea, self.__searchDock) -## + if WebBrowserWindow.useQtHelp: + # TODO: QtHelp: place the widgets in a tab widget + # setup the TOC widget + self.__tocWindow = HelpTocWidget(self.__helpEngine, self) + self.__tocDock = QDockWidget(self.tr("Contents"), self) + self.__tocDock.setObjectName("TocWindow") + self.__tocDock.setWidget(self.__tocWindow) + self.addDockWidget(Qt.LeftDockWidgetArea, self.__tocDock) + + # setup the index widget + self.__indexWindow = HelpIndexWidget(self.__helpEngine, self) + self.__indexDock = QDockWidget(self.tr("Index"), self) + self.__indexDock.setObjectName("IndexWindow") + self.__indexDock.setWidget(self.__indexWindow) + self.addDockWidget(Qt.LeftDockWidgetArea, self.__indexDock) + + # setup the search widget + self.__searchWord = searchWord + self.__indexing = False + self.__indexingProgress = None + self.__searchEngine = self.__helpEngine.searchEngine() + self.__searchEngine.indexingStarted.connect( + self.__indexingStarted) + self.__searchEngine.indexingFinished.connect( + self.__indexingFinished) + self.__searchWindow = HelpSearchWidget( + self.__searchEngine, self) + self.__searchDock = QDockWidget(self.tr("Search"), self) + self.__searchDock.setObjectName("SearchWindow") + self.__searchDock.setWidget(self.__searchWindow) + self.addDockWidget(Qt.LeftDockWidgetArea, self.__searchDock) + # JavaScript Console window from .WebBrowserJavaScriptConsole import \ WebBrowserJavaScriptConsole @@ -303,29 +303,27 @@ # setup connections self.__activating = False - # TODO: QtHelp, do these once Qt 5.6 is available -## if WebBrowserWindow.UseQtHelp: -## # TOC window -## self.__tocWindow.linkActivated.connect(self.__linkActivated) -## self.__tocWindow.escapePressed.connect( -## self.__activateCurrentBrowser) -## # index window -## self.__indexWindow.linkActivated.connect(self.__linkActivated) -## self.__indexWindow.linksActivated.connect( -## self.__linksActivated) -## self.__indexWindow.escapePressed.connect( -## self.__activateCurrentBrowser) -## # search window -## self.__searchWindow.linkActivated.connect( -## self.__linkActivated) -## self.__searchWindow.escapePressed.connect( -## self.__activateCurrentBrowser) + if WebBrowserWindow.useQtHelp: + # TOC window + self.__tocWindow.linkActivated.connect(self.__linkActivated) + self.__tocWindow.escapePressed.connect( + self.__activateCurrentBrowser) + # index window + self.__indexWindow.linkActivated.connect(self.__linkActivated) + self.__indexWindow.linksActivated.connect( + self.__linksActivated) + self.__indexWindow.escapePressed.connect( + self.__activateCurrentBrowser) + # search window + self.__searchWindow.linkActivated.connect( + self.__linkActivated) + self.__searchWindow.escapePressed.connect( + self.__activateCurrentBrowser) state = Preferences.getWebBrowser("WebBrowserState") self.restoreState(state) - # TODO: QtHelp -## self.__initHelpDb() + self.__initHelpDb() self.__virusTotal = VirusTotalAPI(self) self.__virusTotal.submitUrlError.connect( @@ -339,12 +337,11 @@ self.flashCookieManager() - # TODO: QtHelp, do these once Qt 5.6 is available -## if WebBrowserWindow.UseQtHelp: -## QTimer.singleShot(0, self.__lookForNewDocumentation) -## if self.__searchWord is not None: -## QTimer.singleShot(0, self.__searchForWord) -## + if WebBrowserWindow.useQtHelp: + QTimer.singleShot(0, self.__lookForNewDocumentation) + if self.__searchWord is not None: + QTimer.singleShot(0, self.__searchForWord) + self.__lastActiveWindow = None e5App().focusChanged[QWidget, QWidget].connect( self.__appFocusChanged) @@ -487,6 +484,7 @@ settings.setAttribute( QWebEngineSettings.LocalStorageEnabled, Preferences.getWebBrowser("LocalStorageEnabled")) + # TODO: Local Storage ## localStorageDir = os.path.join( ## Utilities.getConfigDir(), "web_browser", "weblocalstorage") ## if not os.path.exists(localStorageDir): @@ -516,8 +514,6 @@ settings.setAttribute( QWebEngineSettings.XSSAuditingEnabled, Preferences.getWebBrowser("XSSAuditingEnabled")) -## -## QWebSecurityOrigin.addLocalScheme("eric") settings.setAttribute( QWebEngineSettings.ScrollAnimatorEnabled, Preferences.getWebBrowser("ScrollAnimatorEnabled")) @@ -1383,112 +1379,111 @@ self.__showFeaturePermissionDialog) self.__actions.append(self.featurePermissionAct) - # TODO: QtHelp: re-enable once Qt 5.6 is available -## if WebBrowserWindow.UseQtHelp or self.__initShortcutsOnly: -## self.syncTocAct = E5Action( -## self.tr('Sync with Table of Contents'), -## UI.PixmapCache.getIcon("syncToc.png"), -## self.tr('Sync with Table of Contents'), -## 0, 0, self, 'webbrowser_sync_toc') -## self.syncTocAct.setStatusTip(self.tr( -## 'Synchronizes the table of contents with current page')) -## self.syncTocAct.setWhatsThis(self.tr( -## """<b>Sync with Table of Contents</b>""" -## """<p>Synchronizes the table of contents with current""" -## """ page.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.syncTocAct.triggered.connect(self.__syncTOC) -## self.__actions.append(self.syncTocAct) -## -## self.showTocAct = E5Action( -## self.tr('Table of Contents'), -## self.tr('Table of Contents'), -## 0, 0, self, 'webbrowser_show_toc') -## self.showTocAct.setStatusTip(self.tr( -## 'Shows the table of contents window')) -## self.showTocAct.setWhatsThis(self.tr( -## """<b>Table of Contents</b>""" -## """<p>Shows the table of contents window.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.showTocAct.triggered.connect(self.__showTocWindow) -## self.__actions.append(self.showTocAct) -## -## self.showIndexAct = E5Action( -## self.tr('Index'), -## self.tr('Index'), -## 0, 0, self, 'webbrowser_show_index') -## self.showIndexAct.setStatusTip(self.tr( -## 'Shows the index window')) -## self.showIndexAct.setWhatsThis(self.tr( -## """<b>Index</b>""" -## """<p>Shows the index window.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.showIndexAct.triggered.connect(self.__showIndexWindow) -## self.__actions.append(self.showIndexAct) -## -## self.showSearchAct = E5Action( -## self.tr('Search'), -## self.tr('Search'), -## 0, 0, self, 'webbrowser_show_search') -## self.showSearchAct.setStatusTip(self.tr( -## 'Shows the search window')) -## self.showSearchAct.setWhatsThis(self.tr( -## """<b>Search</b>""" -## """<p>Shows the search window.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.showSearchAct.triggered.connect( -## self.__showSearchWindow) -## self.__actions.append(self.showSearchAct) -## -## self.manageQtHelpDocsAct = E5Action( -## self.tr('Manage QtHelp Documents'), -## self.tr('Manage QtHelp &Documents'), -## 0, 0, self, 'webbrowser_qthelp_documents') -## self.manageQtHelpDocsAct.setStatusTip(self.tr( -## 'Shows a dialog to manage the QtHelp documentation set')) -## self.manageQtHelpDocsAct.setWhatsThis(self.tr( -## """<b>Manage QtHelp Documents</b>""" -## """<p>Shows a dialog to manage the QtHelp documentation""" -## """ set.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.manageQtHelpDocsAct.triggered.connect( -## self.__manageQtHelpDocumentation) -## self.__actions.append(self.manageQtHelpDocsAct) -## -## self.manageQtHelpFiltersAct = E5Action( -## self.tr('Manage QtHelp Filters'), -## self.tr('Manage QtHelp &Filters'), -## 0, 0, self, 'webbrowser_qthelp_filters') -## self.manageQtHelpFiltersAct.setStatusTip(self.tr( -## 'Shows a dialog to manage the QtHelp filters')) -## self.manageQtHelpFiltersAct.setWhatsThis(self.tr( -## """<b>Manage QtHelp Filters</b>""" -## """<p>Shows a dialog to manage the QtHelp filters.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.manageQtHelpFiltersAct.triggered.connect( -## self.__manageQtHelpFilters) -## self.__actions.append(self.manageQtHelpFiltersAct) -## -## self.reindexDocumentationAct = E5Action( -## self.tr('Reindex Documentation'), -## self.tr('&Reindex Documentation'), -## 0, 0, self, 'webbrowser_qthelp_reindex') -## self.reindexDocumentationAct.setStatusTip(self.tr( -## 'Reindexes the documentation set')) -## self.reindexDocumentationAct.setWhatsThis(self.tr( -## """<b>Reindex Documentation</b>""" -## """<p>Reindexes the documentation set.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.reindexDocumentationAct.triggered.connect( -## self.__searchEngine.reindexDocumentation) -## self.__actions.append(self.reindexDocumentationAct) + if WebBrowserWindow.useQtHelp or self.__initShortcutsOnly: + self.syncTocAct = E5Action( + self.tr('Sync with Table of Contents'), + UI.PixmapCache.getIcon("syncToc.png"), + self.tr('Sync with Table of Contents'), + 0, 0, self, 'webbrowser_sync_toc') + self.syncTocAct.setStatusTip(self.tr( + 'Synchronizes the table of contents with current page')) + self.syncTocAct.setWhatsThis(self.tr( + """<b>Sync with Table of Contents</b>""" + """<p>Synchronizes the table of contents with current""" + """ page.</p>""" + )) + if not self.__initShortcutsOnly: + self.syncTocAct.triggered.connect(self.__syncTOC) + self.__actions.append(self.syncTocAct) + + self.showTocAct = E5Action( + self.tr('Table of Contents'), + self.tr('Table of Contents'), + 0, 0, self, 'webbrowser_show_toc') + self.showTocAct.setStatusTip(self.tr( + 'Shows the table of contents window')) + self.showTocAct.setWhatsThis(self.tr( + """<b>Table of Contents</b>""" + """<p>Shows the table of contents window.</p>""" + )) + if not self.__initShortcutsOnly: + self.showTocAct.triggered.connect(self.__showTocWindow) + self.__actions.append(self.showTocAct) + + self.showIndexAct = E5Action( + self.tr('Index'), + self.tr('Index'), + 0, 0, self, 'webbrowser_show_index') + self.showIndexAct.setStatusTip(self.tr( + 'Shows the index window')) + self.showIndexAct.setWhatsThis(self.tr( + """<b>Index</b>""" + """<p>Shows the index window.</p>""" + )) + if not self.__initShortcutsOnly: + self.showIndexAct.triggered.connect(self.__showIndexWindow) + self.__actions.append(self.showIndexAct) + + self.showSearchAct = E5Action( + self.tr('Search'), + self.tr('Search'), + 0, 0, self, 'webbrowser_show_search') + self.showSearchAct.setStatusTip(self.tr( + 'Shows the search window')) + self.showSearchAct.setWhatsThis(self.tr( + """<b>Search</b>""" + """<p>Shows the search window.</p>""" + )) + if not self.__initShortcutsOnly: + self.showSearchAct.triggered.connect( + self.__showSearchWindow) + self.__actions.append(self.showSearchAct) + + self.manageQtHelpDocsAct = E5Action( + self.tr('Manage QtHelp Documents'), + self.tr('Manage QtHelp &Documents'), + 0, 0, self, 'webbrowser_qthelp_documents') + self.manageQtHelpDocsAct.setStatusTip(self.tr( + 'Shows a dialog to manage the QtHelp documentation set')) + self.manageQtHelpDocsAct.setWhatsThis(self.tr( + """<b>Manage QtHelp Documents</b>""" + """<p>Shows a dialog to manage the QtHelp documentation""" + """ set.</p>""" + )) + if not self.__initShortcutsOnly: + self.manageQtHelpDocsAct.triggered.connect( + self.__manageQtHelpDocumentation) + self.__actions.append(self.manageQtHelpDocsAct) + + self.manageQtHelpFiltersAct = E5Action( + self.tr('Manage QtHelp Filters'), + self.tr('Manage QtHelp &Filters'), + 0, 0, self, 'webbrowser_qthelp_filters') + self.manageQtHelpFiltersAct.setStatusTip(self.tr( + 'Shows a dialog to manage the QtHelp filters')) + self.manageQtHelpFiltersAct.setWhatsThis(self.tr( + """<b>Manage QtHelp Filters</b>""" + """<p>Shows a dialog to manage the QtHelp filters.</p>""" + )) + if not self.__initShortcutsOnly: + self.manageQtHelpFiltersAct.triggered.connect( + self.__manageQtHelpFilters) + self.__actions.append(self.manageQtHelpFiltersAct) + + self.reindexDocumentationAct = E5Action( + self.tr('Reindex Documentation'), + self.tr('&Reindex Documentation'), + 0, 0, self, 'webbrowser_qthelp_reindex') + self.reindexDocumentationAct.setStatusTip(self.tr( + 'Reindexes the documentation set')) + self.reindexDocumentationAct.setWhatsThis(self.tr( + """<b>Reindex Documentation</b>""" + """<p>Reindexes the documentation set.</p>""" + )) + if not self.__initShortcutsOnly: + self.reindexDocumentationAct.triggered.connect( + self.__searchEngine.reindexDocumentation) + self.__actions.append(self.reindexDocumentationAct) self.clearPrivateDataAct = E5Action( self.tr('Clear private data'), @@ -1861,10 +1856,9 @@ menu.addSeparator() menu.addAction(self.stopAct) menu.addAction(self.reloadAct) - # TODO: QtHelp -## if WebBrowserWindow.UseQtHelp: -## menu.addSeparator() -## menu.addAction(self.syncTocAct) + if WebBrowserWindow.useQtHelp: + menu.addSeparator() + menu.addAction(self.syncTocAct) from .History.HistoryMenu import HistoryMenu self.historyMenu = HistoryMenu(self, self.__tabWidget) @@ -1930,12 +1924,11 @@ ## menu.addAction(self.userAgentManagerAct) ## menu.addSeparator() - # TODO: QtHelp -## if WebBrowserWindow.UseQtHelp: -## menu.addAction(self.manageQtHelpDocsAct) -## menu.addAction(self.manageQtHelpFiltersAct) -## menu.addAction(self.reindexDocumentationAct) -## menu.addSeparator() + if WebBrowserWindow.useQtHelp: + menu.addAction(self.manageQtHelpDocsAct) + menu.addAction(self.manageQtHelpFiltersAct) + menu.addAction(self.reindexDocumentationAct) + menu.addSeparator() menu.addAction(self.clearPrivateDataAct) menu.addAction(self.clearIconsAct) @@ -1953,11 +1946,11 @@ menu.setTearOffEnabled(True) menu.addAction(self.showDownloadManagerAct) menu.addAction(self.showJavaScriptConsoleAct) -## if WebBrowserWindow.UseQtHelp: -## menu.addSeparator() -## menu.addAction(self.showTocAct) -## menu.addAction(self.showIndexAct) -## menu.addAction(self.showSearchAct) + if WebBrowserWindow.useQtHelp: + menu.addSeparator() + menu.addAction(self.showTocAct) + menu.addAction(self.showIndexAct) + menu.addAction(self.showSearchAct) mb.addSeparator() @@ -2027,19 +2020,18 @@ findtb.addAction(self.findNextAct) findtb.addAction(self.findPrevAct) - # TODO: QtHelp -## if WebBrowserWindow.UseQtHelp: -## filtertb = self.addToolBar(self.tr("Filter")) -## filtertb.setObjectName("FilterToolBar") -## self.filterCombo = QComboBox() -## self.filterCombo.setMinimumWidth( -## QFontMetrics(QFont()).width("ComboBoxWithEnoughWidth")) -## filtertb.addWidget(QLabel(self.tr("Filtered by: "))) -## filtertb.addWidget(self.filterCombo) -## self.__helpEngine.setupFinished.connect(self.__setupFilterCombo) -## self.filterCombo.activated[str].connect( -## self.__filterQtHelpDocumentation) -## self.__setupFilterCombo() + if WebBrowserWindow.useQtHelp: + filtertb = self.addToolBar(self.tr("Filter")) + filtertb.setObjectName("FilterToolBar") + self.filterCombo = QComboBox() + self.filterCombo.setMinimumWidth( + QFontMetrics(QFont()).width("ComboBoxWithEnoughWidth")) + filtertb.addWidget(QLabel(self.tr("Filtered by: "))) + filtertb.addWidget(self.filterCombo) + self.__helpEngine.setupFinished.connect(self.__setupFilterCombo) + self.filterCombo.activated[str].connect( + self.__filterQtHelpDocumentation) + self.__setupFilterCombo() settingstb = self.addToolBar(self.tr("Settings")) settingstb.setObjectName("SettingsToolBar") @@ -2571,14 +2563,13 @@ self.searchEdit.openSearchManager().close() - # TODO: QtHelp -## if WebBrowserWindow.UseQtHelp: -## self.__searchEngine.cancelIndexing() -## self.__searchEngine.cancelSearching() -## -## if self.__helpInstaller: -## self.__helpInstaller.stop() -## + if WebBrowserWindow.useQtHelp: + self.__searchEngine.cancelIndexing() + self.__searchEngine.cancelSearching() + + if self.__helpInstaller: + self.__helpInstaller.stop() + self.searchEdit.saveSearches() self.__tabWidget.closeAllBrowsers(shutdown=True) @@ -2906,23 +2897,22 @@ else: cls.useQtHelp = False - # TODO: QtHelp -## @classmethod -## def helpEngine(cls): -## """ -## Class method to get a reference to the help engine. -## -## @return reference to the help engine (QHelpEngine) -## """ -## if cls.useQtHelp: -## if cls._helpEngine is None: -## cls._helpEngine = \ -## QHelpEngine(os.path.join(Utilities.getConfigDir(), -## "web_browser", "eric6help.qhc")) -## return cls._helpEngine -## else: -## return None -## + @classmethod + def helpEngine(cls): + """ + Class method to get a reference to the help engine. + + @return reference to the help engine (QHelpEngine) + """ + if cls.useQtHelp: + if cls._helpEngine is None: + cls._helpEngine = \ + QHelpEngine(os.path.join(Utilities.getConfigDir(), + "web_browser", "eric6help.qhc")) + return cls._helpEngine + else: + return None + @classmethod def networkManager(cls): """ @@ -2932,7 +2922,7 @@ """ if cls._networkManager is None: from .Network.NetworkManager import NetworkManager - cls._networkManager = NetworkManager() + cls._networkManager = NetworkManager(cls.helpEngine()) return cls._networkManager @@ -2973,50 +2963,48 @@ self.currentBrowser().setUrl(url) self.__activating = False - # TODO: QtHelp -## def __linksActivated(self, links, keyword): -## """ -## Private slot to select a topic to be shown. -## -## @param links dictionary with help topic as key (string) and -## URL as value (QUrl) -## @param keyword keyword for the link set (string) -## """ -## if not self.__activating: -## from .HelpTopicDialog import HelpTopicDialog -## self.__activating = True -## dlg = HelpTopicDialog(self, keyword, links) -## if dlg.exec_() == QDialog.Accepted: -## self.currentBrowser().setSource(dlg.link()) -## self.__activating = False -## + def __linksActivated(self, links, keyword): + """ + Private slot to select a topic to be shown. + + @param links dictionary with help topic as key (string) and + URL as value (QUrl) + @param keyword keyword for the link set (string) + """ + if not self.__activating: + from .QtHelp.HelpTopicDialog import HelpTopicDialog + self.__activating = True + dlg = HelpTopicDialog(self, keyword, links) + if dlg.exec_() == QDialog.Accepted: + self.currentBrowser().setSource(dlg.link()) + self.__activating = False + def __activateCurrentBrowser(self): """ Private slot to activate the current browser. """ self.currentBrowser().setFocus() - # TODO: QtHelp -## def __syncTOC(self): -## """ -## Private slot to synchronize the TOC with the currently shown page. -## """ -## if WebBrowserWindow.UseQtHelp: -## QApplication.setOverrideCursor(Qt.WaitCursor) -## url = self.currentBrowser().source() -## self.__showTocWindow() -## if not self.__tocWindow.syncToContent(url): -## self.statusBar().showMessage( -## self.tr("Could not find an associated content."), 5000) -## QApplication.restoreOverrideCursor() -## -## def __showTocWindow(self): -## """ -## Private method to show the table of contents window. -## """ -## if WebBrowserWindow.UseQtHelp: -## self.__activateDock(self.__tocWindow) -## + def __syncTOC(self): + """ + Private slot to synchronize the TOC with the currently shown page. + """ + if WebBrowserWindow.UseQtHelp: + QApplication.setOverrideCursor(Qt.WaitCursor) + url = self.currentBrowser().source() + self.__showTocWindow() + if not self.__tocWindow.syncToContent(url): + self.statusBar().showMessage( + self.tr("Could not find an associated content."), 5000) + QApplication.restoreOverrideCursor() + + def __showTocWindow(self): + """ + Private method to show the table of contents window. + """ + if WebBrowserWindow.useQtHelp: + self.__activateDock(self.__tocWindow) + ## def __hideTocWindow(self): ## """ ## Private method to hide the table of contents window. @@ -3024,13 +3012,13 @@ ## if WebBrowserWindow.UseQtHelp: ## self.__tocDock.hide() ## -## def __showIndexWindow(self): -## """ -## Private method to show the index window. -## """ -## if WebBrowserWindow.UseQtHelp: -## self.__activateDock(self.__indexWindow) -## + def __showIndexWindow(self): + """ + Private method to show the index window. + """ + if WebBrowserWindow.useQtHelp: + self.__activateDock(self.__indexWindow) + ## def __hideIndexWindow(self): ## """ ## Private method to hide the index window. @@ -3038,13 +3026,13 @@ ## if WebBrowserWindow.UseQtHelp: ## self.__indexDock.hide() ## -## def __showSearchWindow(self): -## """ -## Private method to show the search window. -## """ -## if WebBrowserWindow.UseQtHelp: -## self.__activateDock(self.__searchWindow) -## + def __showSearchWindow(self): + """ + Private method to show the search window. + """ + if WebBrowserWindow.useQtHelp: + self.__activateDock(self.__searchWindow) + ## def __hideSearchWindow(self): ## """ ## Private method to hide the search window. @@ -3052,53 +3040,54 @@ ## if WebBrowserWindow.UseQtHelp: ## self.__searchDock.hide() ## -## def __activateDock(self, widget): -## """ -## Private method to activate the dock widget of the given widget. -## -## @param widget reference to the widget to be activated (QWidget) -## """ -## widget.parent().show() -## widget.parent().raise_() -## widget.setFocus() -## -## def __setupFilterCombo(self): -## """ -## Private slot to setup the filter combo box. -## """ -## if WebBrowserWindow.UseQtHelp: -## curFilter = self.filterCombo.currentText() -## if not curFilter: -## curFilter = self.__helpEngine.currentFilter() -## self.filterCombo.clear() -## self.filterCombo.addItems(self.__helpEngine.customFilters()) -## idx = self.filterCombo.findText(curFilter) -## if idx < 0: -## idx = 0 -## self.filterCombo.setCurrentIndex(idx) -## -## def __filterQtHelpDocumentation(self, customFilter): -## """ -## Private slot to filter the QtHelp documentation. -## -## @param customFilter name of filter to be applied (string) -## """ -## if self.__helpEngine: -## self.__helpEngine.setCurrentFilter(customFilter) -## -## def __manageQtHelpDocumentation(self): -## """ -## Private slot to manage the QtHelp documentation database. -## """ -## if WebBrowserWindow.UseQtHelp: -## from .QtHelpDocumentationDialog import QtHelpDocumentationDialog -## dlg = QtHelpDocumentationDialog(self.__helpEngine, self) -## dlg.exec_() -## if dlg.hasChanges(): -## for i in sorted(dlg.getTabsToClose(), reverse=True): -## self.__tabWidget.closeBrowserAt(i) -## self.__helpEngine.setupData() -## + def __activateDock(self, widget): + """ + Private method to activate the dock widget of the given widget. + + @param widget reference to the widget to be activated (QWidget) + """ + widget.parent().show() + widget.parent().raise_() + widget.setFocus() + + def __setupFilterCombo(self): + """ + Private slot to setup the filter combo box. + """ + if WebBrowserWindow.useQtHelp: + curFilter = self.filterCombo.currentText() + if not curFilter: + curFilter = self.__helpEngine.currentFilter() + self.filterCombo.clear() + self.filterCombo.addItems(self.__helpEngine.customFilters()) + idx = self.filterCombo.findText(curFilter) + if idx < 0: + idx = 0 + self.filterCombo.setCurrentIndex(idx) + + def __filterQtHelpDocumentation(self, customFilter): + """ + Private slot to filter the QtHelp documentation. + + @param customFilter name of filter to be applied (string) + """ + if self.__helpEngine: + self.__helpEngine.setCurrentFilter(customFilter) + + def __manageQtHelpDocumentation(self): + """ + Private slot to manage the QtHelp documentation database. + """ + if WebBrowserWindow.useQtHelp: + from .QtHelp.QtHelpDocumentationDialog import \ + QtHelpDocumentationDialog + dlg = QtHelpDocumentationDialog(self.__helpEngine, self) + dlg.exec_() + if dlg.hasChanges(): + for i in sorted(dlg.getTabsToClose(), reverse=True): + self.__tabWidget.closeBrowserAt(i) + self.__helpEngine.setupData() + def getSourceFileList(self): """ Public method to get a list of all opened source files. @@ -3107,157 +3096,156 @@ """ return self.__tabWidget.getSourceFileList() - # TODO: QtHelp -## def __manageQtHelpFilters(self): -## """ -## Private slot to manage the QtHelp filters. -## """ -## if WebBrowserWindow.UseQtHelp: -## from .QtHelpFiltersDialog import QtHelpFiltersDialog -## dlg = QtHelpFiltersDialog(self.__helpEngine, self) -## dlg.exec_() -## -## def __indexingStarted(self): -## """ -## Private slot to handle the start of the indexing process. -## """ -## if WebBrowserWindow.UseQtHelp: -## self.__indexing = True -## if self.__indexingProgress is None: -## self.__indexingProgress = QWidget() -## layout = QHBoxLayout(self.__indexingProgress) -## layout.setContentsMargins(0, 0, 0, 0) -## sizePolicy = QSizePolicy(QSizePolicy.Preferred, -## QSizePolicy.Maximum) -## -## label = QLabel(self.tr("Updating search index")) -## label.setSizePolicy(sizePolicy) -## layout.addWidget(label) -## -## progressBar = QProgressBar() -## progressBar.setRange(0, 0) -## progressBar.setTextVisible(False) -## progressBar.setFixedHeight(16) -## progressBar.setSizePolicy(sizePolicy) -## layout.addWidget(progressBar) -## -## self.statusBar().insertPermanentWidget( -## 0, self.__indexingProgress) -## -## def __indexingFinished(self): -## """ -## Private slot to handle the start of the indexing process. -## """ -## if WebBrowserWindow.UseQtHelp: -## self.statusBar().removeWidget(self.__indexingProgress) -## self.__indexingProgress = None -## self.__indexing = False -## if self.__searchWord is not None: -## self.__searchForWord() -## -## def __searchForWord(self): -## """ -## Private slot to search for a word. -## """ -## if WebBrowserWindow.UseQtHelp and not self.__indexing and \ -## self.__searchWord is not None: -## self.__searchDock.show() -## self.__searchDock.raise_() -## query = QHelpSearchQuery(QHelpSearchQuery.DEFAULT, -## [self.__searchWord]) -## self.__searchEngine.search([query]) -## self.__searchWord = None -## -## def search(self, word): -## """ -## Public method to search for a word. -## -## @param word word to search for (string) -## """ -## if WebBrowserWindow.UseQtHelp: -## self.__searchWord = word -## self.__searchForWord() -## -## def __removeOldDocumentation(self): -## """ -## Private slot to remove non-existing documentation from the help engine. -## """ -## for namespace in self.__helpEngine.registeredDocumentations(): -## docFile = self.__helpEngine.documentationFileName(namespace) -## if not os.path.exists(docFile): -## self.__helpEngine.unregisterDocumentation(namespace) -## -## def __lookForNewDocumentation(self): -## """ -## Private slot to look for new documentation to be loaded into the -## help database. -## """ -## if WebBrowserWindow.UseQtHelp: -## from .HelpDocsInstaller import HelpDocsInstaller -## self.__helpInstaller = HelpDocsInstaller( -## self.__helpEngine.collectionFile()) -## self.__helpInstaller.errorMessage.connect( -## self.__showInstallationError) -## self.__helpInstaller.docsInstalled.connect(self.__docsInstalled) -## -## self.statusBar().showMessage( -## self.tr("Looking for Documentation...")) -## self.__helpInstaller.installDocs() -## -## def __showInstallationError(self, message): -## """ -## Private slot to show installation errors. -## -## @param message message to be shown (string) -## """ -## E5MessageBox.warning( -## self, -## self.tr("eric6 Web Browser"), -## message) -## -## def __docsInstalled(self, installed): -## """ -## Private slot handling the end of documentation installation. -## -## @param installed flag indicating that documents were installed -## (boolean) -## """ -## if WebBrowserWindow.UseQtHelp: -## if installed: -## self.__helpEngine.setupData() -## self.statusBar().clearMessage() -## -## def __initHelpDb(self): -## """ -## Private slot to initialize the documentation database. -## """ -## if WebBrowserWindow.UseQtHelp: -## if not self.__helpEngine.setupData(): -## return -## -## unfiltered = self.tr("Unfiltered") -## if unfiltered not in self.__helpEngine.customFilters(): -## hc = QHelpEngineCore(self.__helpEngine.collectionFile()) -## hc.setupData() -## hc.addCustomFilter(unfiltered, []) -## hc = None -## del hc -## -## self.__helpEngine.blockSignals(True) -## self.__helpEngine.setCurrentFilter(unfiltered) -## self.__helpEngine.blockSignals(False) -## self.__helpEngine.setupData() -## -## def __warning(self, msg): -## """ -## Private slot handling warnings from the help engine. -## -## @param msg message sent by the help engine (string) -## """ -## E5MessageBox.warning( -## self, -## self.tr("Help Engine"), msg) -## + def __manageQtHelpFilters(self): + """ + Private slot to manage the QtHelp filters. + """ + if WebBrowserWindow.useQtHelp: + from .QtHelp.QtHelpFiltersDialog import QtHelpFiltersDialog + dlg = QtHelpFiltersDialog(self.__helpEngine, self) + dlg.exec_() + + def __indexingStarted(self): + """ + Private slot to handle the start of the indexing process. + """ + if WebBrowserWindow.useQtHelp: + self.__indexing = True + if self.__indexingProgress is None: + self.__indexingProgress = QWidget() + layout = QHBoxLayout(self.__indexingProgress) + layout.setContentsMargins(0, 0, 0, 0) + sizePolicy = QSizePolicy(QSizePolicy.Preferred, + QSizePolicy.Maximum) + + label = QLabel(self.tr("Updating search index")) + label.setSizePolicy(sizePolicy) + layout.addWidget(label) + + progressBar = QProgressBar() + progressBar.setRange(0, 0) + progressBar.setTextVisible(False) + progressBar.setFixedHeight(16) + progressBar.setSizePolicy(sizePolicy) + layout.addWidget(progressBar) + + self.statusBar().insertPermanentWidget( + 0, self.__indexingProgress) + + def __indexingFinished(self): + """ + Private slot to handle the start of the indexing process. + """ + if WebBrowserWindow.useQtHelp: + self.statusBar().removeWidget(self.__indexingProgress) + self.__indexingProgress = None + self.__indexing = False + if self.__searchWord is not None: + self.__searchForWord() + + def __searchForWord(self): + """ + Private slot to search for a word. + """ + if WebBrowserWindow.useQtHelp and not self.__indexing and \ + self.__searchWord is not None: + self.__searchDock.show() + self.__searchDock.raise_() + query = QHelpSearchQuery(QHelpSearchQuery.DEFAULT, + [self.__searchWord]) + self.__searchEngine.search([query]) + self.__searchWord = None + + def search(self, word): + """ + Public method to search for a word. + + @param word word to search for (string) + """ + if WebBrowserWindow.useQtHelp: + self.__searchWord = word + self.__searchForWord() + + def __removeOldDocumentation(self): + """ + Private slot to remove non-existing documentation from the help engine. + """ + for namespace in self.__helpEngine.registeredDocumentations(): + docFile = self.__helpEngine.documentationFileName(namespace) + if not os.path.exists(docFile): + self.__helpEngine.unregisterDocumentation(namespace) + + def __lookForNewDocumentation(self): + """ + Private slot to look for new documentation to be loaded into the + help database. + """ + if WebBrowserWindow.useQtHelp: + from .QtHelp.HelpDocsInstaller import HelpDocsInstaller + self.__helpInstaller = HelpDocsInstaller( + self.__helpEngine.collectionFile()) + self.__helpInstaller.errorMessage.connect( + self.__showInstallationError) + self.__helpInstaller.docsInstalled.connect(self.__docsInstalled) + + self.statusBar().showMessage( + self.tr("Looking for Documentation...")) + self.__helpInstaller.installDocs() + + def __showInstallationError(self, message): + """ + Private slot to show installation errors. + + @param message message to be shown (string) + """ + E5MessageBox.warning( + self, + self.tr("eric6 Web Browser"), + message) + + def __docsInstalled(self, installed): + """ + Private slot handling the end of documentation installation. + + @param installed flag indicating that documents were installed + (boolean) + """ + if WebBrowserWindow.useQtHelp: + if installed: + self.__helpEngine.setupData() + self.statusBar().clearMessage() + + def __initHelpDb(self): + """ + Private slot to initialize the documentation database. + """ + if WebBrowserWindow.useQtHelp: + if not self.__helpEngine.setupData(): + return + + unfiltered = self.tr("Unfiltered") + if unfiltered not in self.__helpEngine.customFilters(): + hc = QHelpEngineCore(self.__helpEngine.collectionFile()) + hc.setupData() + hc.addCustomFilter(unfiltered, []) + hc = None + del hc + + self.__helpEngine.blockSignals(True) + self.__helpEngine.setCurrentFilter(unfiltered) + self.__helpEngine.blockSignals(False) + self.__helpEngine.setupData() + + def __warning(self, msg): + """ + Private slot handling warnings from the help engine. + + @param msg message sent by the help engine (string) + """ + E5MessageBox.warning( + self, + self.tr("Help Engine"), msg) + def __aboutToShowSettingsMenu(self): """ Private slot to show the Settings menu.