WebBrowser/WebBrowserWindow.py

branch
QtWebEngine
changeset 4875
4ee26909ac0d
parent 4868
985d275502c8
child 4880
561f2bd9cfb9
diff -r 72901685681d -r 4ee26909ac0d WebBrowser/WebBrowserWindow.py
--- 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.

eric ide

mercurial