Removed the QtHelp dependancy; support is only available, if the QtHelp module could be imported.

Wed, 13 Feb 2013 19:25:21 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 13 Feb 2013 19:25:21 +0100
changeset 2411
aec0a8a6e548
parent 2410
dfd7d0718210
child 2412
0545dddf3d51

Removed the QtHelp dependancy; support is only available, if the QtHelp module could be imported.

APIs/Python3/eric5.api file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric5.Helpviewer.HelpWindow.html file | annotate | diff | comparison | revisions
Helpviewer/HelpWindow.py file | annotate | diff | comparison | revisions
Helpviewer/Network/NetworkAccessManager.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/HelpWebBrowserPage.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
eric5.e4p file | annotate | diff | comparison | revisions
install.py file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric5.api	Mon Feb 11 18:15:06 2013 +0100
+++ b/APIs/Python3/eric5.api	Wed Feb 13 19:25:21 2013 +0100
@@ -2636,10 +2636,12 @@
 eric5.Helpviewer.HelpWindow.HelpWindow.setForwardAvailable?4(b)
 eric5.Helpviewer.HelpWindow.HelpWindow.setLoadingActions?4(b)
 eric5.Helpviewer.HelpWindow.HelpWindow.setPrivateMode?4(on)
+eric5.Helpviewer.HelpWindow.HelpWindow.setUseQtHelp?4(use)
 eric5.Helpviewer.HelpWindow.HelpWindow.showNotification?4(icon, heading, text)
 eric5.Helpviewer.HelpWindow.HelpWindow.shutdown?4()
 eric5.Helpviewer.HelpWindow.HelpWindow.speedDial?4()
 eric5.Helpviewer.HelpWindow.HelpWindow.syncManager?4()
+eric5.Helpviewer.HelpWindow.HelpWindow.useQtHelp?7
 eric5.Helpviewer.HelpWindow.HelpWindow.userAgentsManager?4()
 eric5.Helpviewer.HelpWindow.HelpWindow.zoomTextOnlyChanged?7
 eric5.Helpviewer.HelpWindow.HelpWindow?1(home, path, parent, name, fromEric=False, initShortcutsOnly=False, searchWord=None)
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Mon Feb 11 18:15:06 2013 +0100
+++ b/Documentation/Help/source.qhp	Wed Feb 13 19:25:21 2013 +0100
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <QtHelpProject version="1.0">
-  <namespace>org.eric5.ide.53</namespace>
+  <namespace>org.eric5.ide.54</namespace>
   <virtualFolder>eric5</virtualFolder>
   <customFilter name="eric5">
-    <filterAttribute>5.3</filterAttribute>
+    <filterAttribute>5.4</filterAttribute>
     <filterAttribute>eric5</filterAttribute>
     <filterAttribute>ide</filterAttribute>
   </customFilter>
   <filterSection>
-    <filterAttribute>5.3</filterAttribute>
+    <filterAttribute>5.4</filterAttribute>
     <filterAttribute>eric5</filterAttribute>
     <filterAttribute>ide</filterAttribute>
     <toc>
@@ -5317,6 +5317,7 @@
       <keyword name="HelpWindow.setForwardAvailable" id="HelpWindow.setForwardAvailable" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.setForwardAvailable" />
       <keyword name="HelpWindow.setLoadingActions" id="HelpWindow.setLoadingActions" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.setLoadingActions" />
       <keyword name="HelpWindow.setPrivateMode" id="HelpWindow.setPrivateMode" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.setPrivateMode" />
+      <keyword name="HelpWindow.setUseQtHelp" id="HelpWindow.setUseQtHelp" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.setUseQtHelp" />
       <keyword name="HelpWindow.showNotification" id="HelpWindow.showNotification" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.showNotification" />
       <keyword name="HelpWindow.shutdown" id="HelpWindow.shutdown" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.shutdown" />
       <keyword name="HelpWindow.speedDial" id="HelpWindow.speedDial" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.speedDial" />
--- a/Documentation/Source/eric5.Helpviewer.HelpWindow.html	Mon Feb 11 18:15:06 2013 +0100
+++ b/Documentation/Source/eric5.Helpviewer.HelpWindow.html	Wed Feb 13 19:25:21 2013 +0100
@@ -58,7 +58,7 @@
 E5MainWindow
 <h3>Class Attributes</h3>
 <table>
-<tr><td>_adblockManager</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_fromEric</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_networkAccessManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>helpwindows</td></tr><tr><td>maxMenuFilePathLen</td></tr>
+<tr><td>_adblockManager</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_fromEric</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_networkAccessManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>helpwindows</td></tr><tr><td>maxMenuFilePathLen</td></tr><tr><td>useQtHelp</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
@@ -108,6 +108,9 @@
 <td><a href="#HelpWindow.personalInformationManager">personalInformationManager</a></td>
 <td>Class method to get a reference to the personal information manager.</td>
 </tr><tr>
+<td><a href="#HelpWindow.setUseQtHelp">setUseQtHelp</a></td>
+<td>Class method to set the QtHelp usage.</td>
+</tr><tr>
 <td><a href="#HelpWindow.showNotification">showNotification</a></td>
 <td>Clsss method to show a desktop notification.</td>
 </tr><tr>
@@ -665,6 +668,16 @@
 <dd>
 reference to the personal information manager (PersonalInformationManager)
 </dd>
+</dl><a NAME="HelpWindow.setUseQtHelp" ID="HelpWindow.setUseQtHelp"></a>
+<h4>HelpWindow.setUseQtHelp (class method)</h4>
+<b>setUseQtHelp</b>(<i>use</i>)
+<p>
+        Class method to set the QtHelp usage.
+</p><dl>
+<dt><i>use</i></dt>
+<dd>
+flag indicating usage (boolean)
+</dd>
 </dl><a NAME="HelpWindow.showNotification" ID="HelpWindow.showNotification"></a>
 <h4>HelpWindow.showNotification (class method)</h4>
 <b>showNotification</b>(<i>icon, heading, text</i>)
--- a/Helpviewer/HelpWindow.py	Mon Feb 11 18:15:06 2013 +0100
+++ b/Helpviewer/HelpWindow.py	Wed Feb 13 19:25:21 2013 +0100
@@ -17,7 +17,11 @@
     QHBoxLayout, QProgressBar, QAction, QIcon
 from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest
 from PyQt4.QtWebKit import QWebSettings, QWebDatabase, QWebSecurityOrigin, QWebPage
-from PyQt4.QtHelp import QHelpEngine, QHelpEngineCore, QHelpSearchQuery
+try:
+    from PyQt4.QtHelp import QHelpEngine, QHelpEngineCore, QHelpSearchQuery
+    QTHELP_AVAILABLE = True
+except ImportError:
+    QTHELP_AVAILABLE = False
 
 from .Network.NetworkAccessManager import SSL_AVAILABLE
 
@@ -58,6 +62,7 @@
     maxMenuFilePathLen = 75
     
     _fromEric = False
+    useQtHelp = QTHELP_AVAILABLE
     
     _networkAccessManager = None
     _cookieJar = None
@@ -116,13 +121,18 @@
             from .AdBlock.AdBlockIcon import AdBlockIcon
             from .VirusTotalApi import VirusTotalAPI
             
+            HelpWindow.setUseQtHelp(self.fromEric)
+            
             if not self.fromEric:
                 self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet"))
             
-            self.__helpEngine = \
-                QHelpEngine(os.path.join(Utilities.getConfigDir(),
-                                         "browser", "eric5help.qhc"), self)
-            self.__helpEngine.warning.connect(self.__warning)
+            if self.useQtHelp:
+                self.__helpEngine = \
+                    QHelpEngine(os.path.join(Utilities.getConfigDir(),
+                                             "browser", "eric5help.qhc"), self)
+                self.__helpEngine.warning.connect(self.__warning)
+            else:
+                self.__helpEngine = None
             self.__helpInstaller = None
             
             self.__zoomWidget = E5ZoomWidget(UI.PixmapCache.getPixmap("zoomOut.png"),
@@ -152,32 +162,33 @@
             self.setCentralWidget(centralWidget)
             self.findDlg.hide()
             
-            # setup the TOC widget
-            self.__tocWindow = HelpTocWidget(self.__helpEngine, self)
-            self.__tocDock = QDockWidget(self.trUtf8("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.trUtf8("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.trUtf8("Search"), self)
-            self.__searchDock.setObjectName("SearchWindow")
-            self.__searchDock.setWidget(self.__searchWindow)
-            self.addDockWidget(Qt.LeftDockWidgetArea, self.__searchDock)
+            if self.useQtHelp:
+                # setup the TOC widget
+                self.__tocWindow = HelpTocWidget(self.__helpEngine, self)
+                self.__tocDock = QDockWidget(self.trUtf8("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.trUtf8("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.trUtf8("Search"), self)
+                self.__searchDock.setObjectName("SearchWindow")
+                self.__searchDock.setWidget(self.__searchWindow)
+                self.addDockWidget(Qt.LeftDockWidgetArea, self.__searchDock)
             
             if Preferences.getHelp("SaveGeometry"):
                 g = Preferences.getGeometry("HelpViewerGeometry")
@@ -218,16 +229,17 @@
             
             # setup connections
             self.__activating = False
-            # 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 self.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.getHelp("HelpViewerState")
             self.restoreState(state)
@@ -242,9 +254,10 @@
             self.__previewer = None
             self.__shutdownCalled = False
             
-            QTimer.singleShot(0, self.__lookForNewDocumentation)
-            if self.__searchWord is not None:
-                QTimer.singleShot(0, self.__searchForWord)
+            if self.useQtHelp:
+                QTimer.singleShot(0, self.__lookForNewDocumentation)
+                if self.__searchWord is not None:
+                    QTimer.singleShot(0, self.__searchForWord)
             
             QTimer.singleShot(0, syncMgr.loadSettings)
 
@@ -1012,99 +1025,101 @@
                 self.__showGreaseMonkeyConfigDialog)
         self.__actions.append(self.greaseMonkeyAct)
         
-        self.syncTocAct = E5Action(self.trUtf8('Sync with Table of Contents'),
-            UI.PixmapCache.getIcon("syncToc.png"),
-            self.trUtf8('Sync with Table of Contents'),
-            0, 0, self, 'help_sync_toc')
-        self.syncTocAct.setStatusTip(self.trUtf8(
-                'Synchronizes the table of contents with current page'))
-        self.syncTocAct.setWhatsThis(self.trUtf8(
-                """<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.trUtf8('Table of Contents'),
-            self.trUtf8('Table of Contents'),
-            0, 0, self, 'help_show_toc')
-        self.showTocAct.setStatusTip(self.trUtf8(
-                'Shows the table of contents window'))
-        self.showTocAct.setWhatsThis(self.trUtf8(
-                """<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.trUtf8('Index'),
-            self.trUtf8('Index'),
-            0, 0, self, 'help_show_index')
-        self.showIndexAct.setStatusTip(self.trUtf8(
-                'Shows the index window'))
-        self.showIndexAct.setWhatsThis(self.trUtf8(
-                """<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.trUtf8('Search'),
-            self.trUtf8('Search'),
-            0, 0, self, 'help_show_search')
-        self.showSearchAct.setStatusTip(self.trUtf8(
-                'Shows the search window'))
-        self.showSearchAct.setWhatsThis(self.trUtf8(
-                """<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.trUtf8('Manage QtHelp Documents'),
-            self.trUtf8('Manage QtHelp &Documents'),
-            0, 0, self, 'help_qthelp_documents')
-        self.manageQtHelpDocsAct.setStatusTip(self.trUtf8(
-                'Shows a dialog to manage the QtHelp documentation set'))
-        self.manageQtHelpDocsAct.setWhatsThis(self.trUtf8(
-                """<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.trUtf8('Manage QtHelp Filters'),
-            self.trUtf8('Manage QtHelp &Filters'),
-            0, 0, self, 'help_qthelp_filters')
-        self.manageQtHelpFiltersAct.setStatusTip(self.trUtf8(
-                'Shows a dialog to manage the QtHelp filters'))
-        self.manageQtHelpFiltersAct.setWhatsThis(self.trUtf8(
-                """<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.trUtf8('Reindex Documentation'),
-            self.trUtf8('&Reindex Documentation'),
-            0, 0, self, 'help_qthelp_reindex')
-        self.reindexDocumentationAct.setStatusTip(self.trUtf8(
-                'Reindexes the documentation set'))
-        self.reindexDocumentationAct.setWhatsThis(self.trUtf8(
-                """<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 self.useQtHelp or self.initShortcutsOnly:
+            self.syncTocAct = E5Action(self.trUtf8('Sync with Table of Contents'),
+                UI.PixmapCache.getIcon("syncToc.png"),
+                self.trUtf8('Sync with Table of Contents'),
+                0, 0, self, 'help_sync_toc')
+            self.syncTocAct.setStatusTip(self.trUtf8(
+                    'Synchronizes the table of contents with current page'))
+            self.syncTocAct.setWhatsThis(self.trUtf8(
+                    """<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.trUtf8('Table of Contents'),
+                self.trUtf8('Table of Contents'),
+                0, 0, self, 'help_show_toc')
+            self.showTocAct.setStatusTip(self.trUtf8(
+                    'Shows the table of contents window'))
+            self.showTocAct.setWhatsThis(self.trUtf8(
+                    """<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.trUtf8('Index'),
+                self.trUtf8('Index'),
+                0, 0, self, 'help_show_index')
+            self.showIndexAct.setStatusTip(self.trUtf8(
+                    'Shows the index window'))
+            self.showIndexAct.setWhatsThis(self.trUtf8(
+                    """<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.trUtf8('Search'),
+                self.trUtf8('Search'),
+                0, 0, self, 'help_show_search')
+            self.showSearchAct.setStatusTip(self.trUtf8(
+                    'Shows the search window'))
+            self.showSearchAct.setWhatsThis(self.trUtf8(
+                    """<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.trUtf8('Manage QtHelp Documents'),
+                self.trUtf8('Manage QtHelp &Documents'),
+                0, 0, self, 'help_qthelp_documents')
+            self.manageQtHelpDocsAct.setStatusTip(self.trUtf8(
+                    'Shows a dialog to manage the QtHelp documentation set'))
+            self.manageQtHelpDocsAct.setWhatsThis(self.trUtf8(
+                    """<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.trUtf8('Manage QtHelp Filters'),
+                self.trUtf8('Manage QtHelp &Filters'),
+                0, 0, self, 'help_qthelp_filters')
+            self.manageQtHelpFiltersAct.setStatusTip(self.trUtf8(
+                    'Shows a dialog to manage the QtHelp filters'))
+            self.manageQtHelpFiltersAct.setWhatsThis(self.trUtf8(
+                    """<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.trUtf8('Reindex Documentation'),
+                self.trUtf8('&Reindex Documentation'),
+                0, 0, self, 'help_qthelp_reindex')
+            self.reindexDocumentationAct.setStatusTip(self.trUtf8(
+                    'Reindexes the documentation set'))
+            self.reindexDocumentationAct.setWhatsThis(self.trUtf8(
+                    """<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.trUtf8('Clear private data'),
                       self.trUtf8('&Clear private data'),
@@ -1369,8 +1384,9 @@
         menu.addSeparator()
         menu.addAction(self.stopAct)
         menu.addAction(self.reloadAct)
-        menu.addSeparator()
-        menu.addAction(self.syncTocAct)
+        if self.useQtHelp:
+            menu.addSeparator()
+            menu.addAction(self.syncTocAct)
         
         from .History.HistoryMenu import HistoryMenu
         self.historyMenu = HistoryMenu(self, self.tabWidget)
@@ -1423,10 +1439,11 @@
         menu.addAction(self.userAgentManagerAct)
         menu.addSeparator()
         
-        menu.addAction(self.manageQtHelpDocsAct)
-        menu.addAction(self.manageQtHelpFiltersAct)
-        menu.addAction(self.reindexDocumentationAct)
-        menu.addSeparator()
+        if self.useQtHelp:
+            menu.addAction(self.manageQtHelpDocsAct)
+            menu.addAction(self.manageQtHelpFiltersAct)
+            menu.addAction(self.reindexDocumentationAct)
+            menu.addSeparator()
         menu.addAction(self.clearPrivateDataAct)
         menu.addAction(self.clearIconsAct)
         
@@ -1442,10 +1459,11 @@
         menu = mb.addMenu(self.trUtf8("&Window"))
         menu.setTearOffEnabled(True)
         menu.addAction(self.showDownloadManagerAct)
-        menu.addSeparator()
-        menu.addAction(self.showTocAct)
-        menu.addAction(self.showIndexAct)
-        menu.addAction(self.showSearchAct)
+        if self.useQtHelp:
+            menu.addSeparator()
+            menu.addAction(self.showTocAct)
+            menu.addAction(self.showIndexAct)
+            menu.addAction(self.showSearchAct)
         
         mb.addSeparator()
         
@@ -1499,16 +1517,17 @@
         findtb.addAction(self.findNextAct)
         findtb.addAction(self.findPrevAct)
         
-        filtertb = self.addToolBar(self.trUtf8("Filter"))
-        filtertb.setObjectName("FilterToolBar")
-        self.filterCombo = QComboBox()
-        self.filterCombo.setMinimumWidth(
-            QFontMetrics(QFont()).width("ComboBoxWithEnoughWidth"))
-        filtertb.addWidget(QLabel(self.trUtf8("Filtered by: ")))
-        filtertb.addWidget(self.filterCombo)
-        self.__helpEngine.setupFinished.connect(self.__setupFilterCombo)
-        self.filterCombo.activated[str].connect(self.__filterQtHelpDocumentation)
-        self.__setupFilterCombo()
+        if self.useQtHelp:
+            filtertb = self.addToolBar(self.trUtf8("Filter"))
+            filtertb.setObjectName("FilterToolBar")
+            self.filterCombo = QComboBox()
+            self.filterCombo.setMinimumWidth(
+                QFontMetrics(QFont()).width("ComboBoxWithEnoughWidth"))
+            filtertb.addWidget(QLabel(self.trUtf8("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.trUtf8("Settings"))
         settingstb.setObjectName("SettingsToolBar")
@@ -1986,11 +2005,12 @@
         
         self.searchEdit.openSearchManager().close()
         
-        self.__searchEngine.cancelIndexing()
-        self.__searchEngine.cancelSearching()
-        
-        if self.__helpInstaller:
-            self.__helpInstaller.stop()
+        if self.useQtHelp:
+            self.__searchEngine.cancelIndexing()
+            self.__searchEngine.cancelSearching()
+            
+            if self.__helpInstaller:
+                self.__helpInstaller.stop()
         
         self.searchEdit.saveSearches()
         
@@ -2283,17 +2303,32 @@
             self.__initWebSettings()
     
     @classmethod
+    def setUseQtHelp(cls, use):
+        """
+        Class method to set the QtHelp usage.
+        
+        @param use flag indicating usage (boolean)
+        """
+        if use:
+            cls.useQtHelp = use and QTHELP_AVAILABLE
+        else:
+            cls.useQtHelp = False
+    
+    @classmethod
     def helpEngine(cls):
         """
         Class method to get a reference to the help engine.
         
         @return reference to the help engine (QHelpEngine)
         """
-        if cls._helpEngine is None:
-            cls._helpEngine = \
-                QHelpEngine(os.path.join(Utilities.getConfigDir(),
-                                         "browser", "eric5help.qhc"))
-        return cls._helpEngine
+        if cls.useQtHelp:
+            if cls._helpEngine is None:
+                cls._helpEngine = \
+                    QHelpEngine(os.path.join(Utilities.getConfigDir(),
+                                             "browser", "eric5help.qhc"))
+            return cls._helpEngine
+        else:
+            return None
         
     @classmethod
     def networkAccessManager(cls):
@@ -2368,49 +2403,56 @@
         """
         Private slot to synchronize the TOC with the currently shown page.
         """
-        QApplication.setOverrideCursor(Qt.WaitCursor)
-        url = self.currentBrowser().source()
-        self.__showTocWindow()
-        if not self.__tocWindow.syncToContent(url):
-            self.statusBar().showMessage(
-                self.trUtf8("Could not find an associated content."), 5000)
-        QApplication.restoreOverrideCursor()
+        if self.useQtHelp:
+            QApplication.setOverrideCursor(Qt.WaitCursor)
+            url = self.currentBrowser().source()
+            self.__showTocWindow()
+            if not self.__tocWindow.syncToContent(url):
+                self.statusBar().showMessage(
+                    self.trUtf8("Could not find an associated content."), 5000)
+            QApplication.restoreOverrideCursor()
         
     def __showTocWindow(self):
         """
         Private method to show the table of contents window.
         """
-        self.__activateDock(self.__tocWindow)
+        if self.useQtHelp:
+            self.__activateDock(self.__tocWindow)
         
     def __hideTocWindow(self):
         """
         Private method to hide the table of contents window.
         """
-        self.__tocDock.hide()
+        if self.useQtHelp:
+            self.__tocDock.hide()
         
     def __showIndexWindow(self):
         """
         Private method to show the index window.
         """
-        self.__activateDock(self.__indexWindow)
+        if self.useQtHelp:
+            self.__activateDock(self.__indexWindow)
         
     def __hideIndexWindow(self):
         """
         Private method to hide the index window.
         """
-        self.__indexDock.hide()
+        if self.useQtHelp:
+            self.__indexDock.hide()
         
     def __showSearchWindow(self):
         """
         Private method to show the search window.
         """
-        self.__activateDock(self.__searchWindow)
+        if self.useQtHelp:
+            self.__activateDock(self.__searchWindow)
         
     def __hideSearchWindow(self):
         """
         Private method to hide the search window.
         """
-        self.__searchDock.hide()
+        if self.useQtHelp:
+            self.__searchDock.hide()
         
     def __activateDock(self, widget):
         """
@@ -2426,15 +2468,16 @@
         """
         Private slot to setup the filter combo box.
         """
-        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)
+        if self.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):
         """
@@ -2442,19 +2485,21 @@
         
         @param customFilter name of filter to be applied (string)
         """
-        self.__helpEngine.setCurrentFilter(customFilter)
+        if self.__helpEngine:
+            self.__helpEngine.setCurrentFilter(customFilter)
         
     def __manageQtHelpDocumentation(self):
         """
         Private slot to manage the QtHelp documentation database.
         """
-        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()
+        if self.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 getSourceFileList(self):
         """
@@ -2468,49 +2513,52 @@
         """
         Private slot to manage the QtHelp filters.
         """
-        from .QtHelpFiltersDialog import QtHelpFiltersDialog
-        dlg = QtHelpFiltersDialog(self.__helpEngine, self)
-        dlg.exec_()
+        if self.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.
         """
-        self.__indexing = True
-        if self.__indexingProgress is None:
-            self.__indexingProgress = QWidget()
-            layout = QHBoxLayout(self.__indexingProgress)
-            layout.setMargin(0)
-            sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
-            
-            label = QLabel(self.trUtf8("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)
+        if self.useQtHelp:
+            self.__indexing = True
+            if self.__indexingProgress is None:
+                self.__indexingProgress = QWidget()
+                layout = QHBoxLayout(self.__indexingProgress)
+                layout.setMargin(0)
+                sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum)
+                
+                label = QLabel(self.trUtf8("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.
         """
-        self.statusBar().removeWidget(self.__indexingProgress)
-        self.__indexingProgress = None
-        self.__indexing = False
-        if self.__searchWord is not None:
-            self.__searchForWord()
+        if self.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 not self.__indexing and self.__searchWord is not None:
+        if self.useQtHelp and not self.__indexing and self.__searchWord is not None:
             self.__searchDock.show()
             self.__searchDock.raise_()
             query = QHelpSearchQuery(QHelpSearchQuery.DEFAULT, [self.__searchWord])
@@ -2523,21 +2571,23 @@
         
         @param word word to search for (string)
         """
-        self.__searchWord = word
-        self.__searchForWord()
+        if self.useQtHelp:
+                self.__searchWord = word
+                self.__searchForWord()
         
     def __lookForNewDocumentation(self):
         """
         Private slot to look for new documentation to be loaded into the
         help database.
         """
-        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.trUtf8("Looking for Documentation..."))
-        self.__helpInstaller.installDocs()
+        if self.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.trUtf8("Looking for Documentation..."))
+            self.__helpInstaller.installDocs()
         
     def __showInstallationError(self, message):
         """
@@ -2555,29 +2605,31 @@
         
         @param installed flag indicating that documents were installed (boolean)
         """
-        if installed:
-            self.__helpEngine.setupData()
-        self.statusBar().clearMessage()
+        if self.useQtHelp:
+            if installed:
+                self.__helpEngine.setupData()
+            self.statusBar().clearMessage()
         
     def __initHelpDb(self):
         """
         Private slot to initialize the documentation database.
         """
-        if not self.__helpEngine.setupData():
-            return
-        
-        unfiltered = self.trUtf8("Unfiltered")
-        if unfiltered not in self.__helpEngine.customFilters():
-            hc = QHelpEngineCore(self.__helpEngine.collectionFile())
-            hc.setupData()
-            hc.addCustomFilter(unfiltered, [])
-            hc = None
-            del hc
+        if self.useQtHelp:
+            if not self.__helpEngine.setupData():
+                return
             
-            self.__helpEngine.blockSignals(True)
-            self.__helpEngine.setCurrentFilter(unfiltered)
-            self.__helpEngine.blockSignals(False)
-            self.__helpEngine.setupData()
+            unfiltered = self.trUtf8("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):
         """
@@ -2814,7 +2866,7 @@
         scheme = url.scheme()
         if scheme in ["eric", "about"]:
             return UI.PixmapCache.getIcon("ericWeb.png")
-        elif scheme == "qthelp":
+        elif scheme == "qthelp" and QTHELP_AVAILABLE:
             return UI.PixmapCache.getIcon("qthelp.png")
         elif scheme == "file":
             return UI.PixmapCache.getIcon("fileMisc.png")
--- a/Helpviewer/Network/NetworkAccessManager.py	Mon Feb 11 18:15:06 2013 +0100
+++ b/Helpviewer/Network/NetworkAccessManager.py	Wed Feb 13 19:25:21 2013 +0100
@@ -66,8 +66,9 @@
         self.__sendReferer = Preferences.getHelp("SendReferer")
         
         # register scheme handlers
-        from .QtHelpAccessHandler import QtHelpAccessHandler
-        self.setSchemeHandler("qthelp", QtHelpAccessHandler(engine, self))
+        if engine:
+            from .QtHelpAccessHandler import QtHelpAccessHandler
+            self.setSchemeHandler("qthelp", QtHelpAccessHandler(engine, self))
         
         from .EricAccessHandler import EricAccessHandler
         self.setSchemeHandler("eric", EricAccessHandler(self))
--- a/Preferences/ConfigurationPages/HelpWebBrowserPage.py	Mon Feb 11 18:15:06 2013 +0100
+++ b/Preferences/ConfigurationPages/HelpWebBrowserPage.py	Wed Feb 13 19:25:21 2013 +0100
@@ -42,7 +42,7 @@
             self.__helpWindow = None
         self.setCurrentPageButton.setEnabled(self.__helpWindow is not None)
         
-        defaultSchemes = ["file://", "http://", "https://", "qthelp://"]
+        defaultSchemes = ["file://", "http://", "https://"]
         self.defaultSchemeCombo.addItems(defaultSchemes)
         
         self.clickToFlashCheckBox.setIcon(UI.PixmapCache.getIcon("flashBlock.png"))
--- a/UI/UserInterface.py	Mon Feb 11 18:15:06 2013 +0100
+++ b/UI/UserInterface.py	Wed Feb 13 19:25:21 2013 +0100
@@ -4501,9 +4501,9 @@
         """
         Private slot to show the Eric documentation.
         """
-##        home = Utilities.normjoinpath(getConfig('ericDocDir'),
-##            "Source", "index.html")
-        home = "qthelp://org.eric5.ide/eric5/index.html"
+        home = Utilities.normjoinpath(getConfig('ericDocDir'),
+            "Source", "index.html")
+##        home = "qthelp://org.eric5.ide/eric5/index.html"
         
         if not home.startswith("http://") and \
            not home.startswith("https://") and \
--- a/changelog	Mon Feb 11 18:15:06 2013 +0100
+++ b/changelog	Wed Feb 13 19:25:21 2013 +0100
@@ -7,6 +7,8 @@
   -- centralized the SSL error handling in E5SslErrorHandler
   -- moved the SSL widgets to the E5Network package
   -- changed the 'import' statements to improve startup behavior
+  -- removed the QtHelp dependancy; support is only available,
+     if the QtHelp module could be imported
 - Multi Project
   -- extended the context menus of the multi project browser to be able
      to add projects this way
--- a/eric5.e4p	Mon Feb 11 18:15:06 2013 +0100
+++ b/eric5.e4p	Wed Feb 13 19:25:21 2013 +0100
@@ -1777,7 +1777,7 @@
               <string>qtHelpFilterAttributes</string>
             </key>
             <value>
-              <string>eric5:ide:5.3</string>
+              <string>eric5:ide:5.4</string>
             </value>
             <key>
               <string>qtHelpFilterName</string>
@@ -1789,7 +1789,7 @@
               <string>qtHelpNamespace</string>
             </key>
             <value>
-              <string>org.eric5.ide.53</string>
+              <string>org.eric5.ide.54</string>
             </value>
             <key>
               <string>qtHelpOutputDirectory</string>
--- a/install.py	Mon Feb 11 18:15:06 2013 +0100
+++ b/install.py	Wed Feb 13 19:25:21 2013 +0100
@@ -807,14 +807,6 @@
     print("Found PyQt4")
     
     try:
-        import PyQt4.QtHelp         # __IGNORE_WARNING__
-    except ImportError as msg:
-        print('Sorry, please install QtHelp.')
-        print('Error: {0}'.format(msg))
-        exit(1)
-    print("Found QtHelp")
-    
-    try:
         from PyQt4 import Qsci      # __IGNORE_WARNING__
     except ImportError as msg:
         print("Sorry, please install QScintilla2 and")

eric ide

mercurial