UI/UserInterface.py

changeset 4619
aa2319888257
parent 4414
5caf22e10678
child 4621
b46304716d28
equal deleted inserted replaced
4618:c730a41bbb9e 4619:aa2319888257
25 QDialog, QSplitter, QApplication, QMenu, QVBoxLayout, QDockWidget, \ 25 QDialog, QSplitter, QApplication, QMenu, QVBoxLayout, QDockWidget, \
26 QAction, QLabel 26 QAction, QLabel
27 from PyQt5.Qsci import QSCINTILLA_VERSION_STR 27 from PyQt5.Qsci import QSCINTILLA_VERSION_STR
28 from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkAccessManager, \ 28 from PyQt5.QtNetwork import QNetworkProxyFactory, QNetworkAccessManager, \
29 QNetworkRequest, QNetworkReply 29 QNetworkRequest, QNetworkReply
30 try:
31 from PyQt5 import QtWebKit # __IGNORE_WARNING__
32 WEBKIT_AVAILABLE = True
33 except ImportError:
34 WEBKIT_AVAILABLE = False
30 35
31 from .Info import Version, BugAddress, Program, FeatureAddress 36 from .Info import Version, BugAddress, Program, FeatureAddress
32 from . import Config 37 from . import Config
33 38
34 from E5Gui.E5SingleApplication import E5SingleApplicationServer 39 from E5Gui.E5SingleApplication import E5SingleApplicationServer
455 self.toolGroups, self.currentToolGroup = Preferences.readToolGroups() 460 self.toolGroups, self.currentToolGroup = Preferences.readToolGroups()
456 self.toolProcs = [] 461 self.toolProcs = []
457 self.__initExternalToolsActions() 462 self.__initExternalToolsActions()
458 463
459 # create a dummy help window for shortcuts handling 464 # create a dummy help window for shortcuts handling
460 from Helpviewer.HelpWindow import HelpWindow 465 if WEBKIT_AVAILABLE:
461 self.dummyHelpViewer = \ 466 from Helpviewer.HelpWindow import HelpWindow
462 HelpWindow(None, '.', None, 'help viewer', True, True) 467 self.dummyHelpViewer = \
468 HelpWindow(None, '.', None, 'help viewer', True, True)
463 469
464 # register all relevant objects 470 # register all relevant objects
465 splash.showMessage(self.tr("Registering Objects...")) 471 splash.showMessage(self.tr("Registering Objects..."))
466 e5App().registerObject("UserInterface", self) 472 e5App().registerObject("UserInterface", self)
467 e5App().registerObject("DebugUI", self.debuggerUI) 473 e5App().registerObject("DebugUI", self.debuggerUI)
472 e5App().registerObject("ProjectBrowser", self.projectBrowser) 478 e5App().registerObject("ProjectBrowser", self.projectBrowser)
473 e5App().registerObject("MultiProject", self.multiProject) 479 e5App().registerObject("MultiProject", self.multiProject)
474 e5App().registerObject("TaskViewer", self.taskViewer) 480 e5App().registerObject("TaskViewer", self.taskViewer)
475 e5App().registerObject("TemplateViewer", self.templateViewer) 481 e5App().registerObject("TemplateViewer", self.templateViewer)
476 e5App().registerObject("Shell", self.shell) 482 e5App().registerObject("Shell", self.shell)
477 e5App().registerObject("DummyHelpViewer", self.dummyHelpViewer) 483 if WEBKIT_AVAILABLE:
484 e5App().registerObject("DummyHelpViewer", self.dummyHelpViewer)
478 e5App().registerObject("PluginManager", self.pluginManager) 485 e5App().registerObject("PluginManager", self.pluginManager)
479 e5App().registerObject("ToolbarManager", self.toolbarManager) 486 e5App().registerObject("ToolbarManager", self.toolbarManager)
480 e5App().registerObject("Cooperation", self.cooperation) 487 e5App().registerObject("Cooperation", self.cooperation)
481 e5App().registerObject("IRC", self.irc) 488 e5App().registerObject("IRC", self.irc)
482 e5App().registerObject("Symbols", self.symbolsViewer) 489 e5App().registerObject("Symbols", self.symbolsViewer)
1581 """ context help button in the titlebar.</p>""" 1588 """ context help button in the titlebar.</p>"""
1582 )) 1589 ))
1583 self.whatsThisAct.triggered.connect(self.__whatsThis) 1590 self.whatsThisAct.triggered.connect(self.__whatsThis)
1584 self.actions.append(self.whatsThisAct) 1591 self.actions.append(self.whatsThisAct)
1585 1592
1586 self.helpviewerAct = E5Action( 1593 if WEBKIT_AVAILABLE:
1587 self.tr('Helpviewer'), 1594 self.helpviewerAct = E5Action(
1588 UI.PixmapCache.getIcon("help.png"), 1595 self.tr('Helpviewer'),
1589 self.tr('&Helpviewer...'), 1596 UI.PixmapCache.getIcon("help.png"),
1590 QKeySequence(self.tr("F1")), 1597 self.tr('&Helpviewer...'),
1591 0, self, 'helpviewer') 1598 QKeySequence(self.tr("F1")),
1592 self.helpviewerAct.setStatusTip(self.tr( 1599 0, self, 'helpviewer')
1593 'Open the helpviewer window')) 1600 self.helpviewerAct.setStatusTip(self.tr(
1594 self.helpviewerAct.setWhatsThis(self.tr( 1601 'Open the helpviewer window'))
1595 """<b>Helpviewer</b>""" 1602 self.helpviewerAct.setWhatsThis(self.tr(
1596 """<p>Display the eric6 web browser. This window will show""" 1603 """<b>Helpviewer</b>"""
1597 """ HTML help files and help from Qt help collections. It has""" 1604 """<p>Display the eric6 web browser. This window will show"""
1598 """ the capability to navigate to links, set bookmarks, print""" 1605 """ HTML help files and help from Qt help collections. It"""
1599 """ the displayed help and some more features. You may use it to""" 1606 """ has the capability to navigate to links, set bookmarks,"""
1600 """ browse the internet as well</p><p>If called with a word""" 1607 """ print the displayed help and some more features. You may"""
1601 """ selected, this word is search in the Qt help collection.</p>""" 1608 """ use it to browse the internet as well</p><p>If called"""
1602 )) 1609 """ with a word selected, this word is search in the Qt help"""
1603 self.helpviewerAct.triggered.connect(self.__helpViewer) 1610 """ collection.</p>"""
1604 self.actions.append(self.helpviewerAct) 1611 ))
1612 self.helpviewerAct.triggered.connect(self.__helpViewer)
1613 self.actions.append(self.helpviewerAct)
1614 else:
1615 self.helpviewerAct = None
1605 1616
1606 self.__initQtDocActions() 1617 self.__initQtDocActions()
1607 self.__initPythonDocActions() 1618 self.__initPythonDocActions()
1608 self.__initEricDocAction() 1619 self.__initEricDocAction()
1609 self.__initPySideDocAction() 1620 self.__initPySideDocAction()
1891 """<p>Open a dialog with a simplified editor.</p>""" 1902 """<p>Open a dialog with a simplified editor.</p>"""
1892 )) 1903 ))
1893 self.miniEditorAct.triggered.connect(self.__openMiniEditor) 1904 self.miniEditorAct.triggered.connect(self.__openMiniEditor)
1894 self.actions.append(self.miniEditorAct) 1905 self.actions.append(self.miniEditorAct)
1895 1906
1896 self.webBrowserAct = E5Action( 1907 if WEBKIT_AVAILABLE:
1897 self.tr('eric6 Web Browser'), 1908 self.webBrowserAct = E5Action(
1898 UI.PixmapCache.getIcon("ericWeb.png"), 1909 self.tr('eric6 Web Browser'),
1899 self.tr('eric6 &Web Browser...'), 1910 UI.PixmapCache.getIcon("ericWeb.png"),
1900 0, 0, self, 'web_browser') 1911 self.tr('eric6 &Web Browser...'),
1901 self.webBrowserAct.setStatusTip(self.tr( 1912 0, 0, self, 'web_browser')
1902 'Start the eric6 Web Browser')) 1913 self.webBrowserAct.setStatusTip(self.tr(
1903 self.webBrowserAct.setWhatsThis(self.tr( 1914 'Start the eric6 Web Browser'))
1904 """<b>eric6 Web Browser</b>""" 1915 self.webBrowserAct.setWhatsThis(self.tr(
1905 """<p>Browse the Internet with the eric6 Web Browser.</p>""" 1916 """<b>eric6 Web Browser</b>"""
1906 )) 1917 """<p>Browse the Internet with the eric6 Web Browser.</p>"""
1907 self.webBrowserAct.triggered.connect(self.__startWebBrowser) 1918 ))
1908 self.actions.append(self.webBrowserAct) 1919 self.webBrowserAct.triggered.connect(self.__startWebBrowser)
1920 self.actions.append(self.webBrowserAct)
1921 else:
1922 self.webBrowserAct = None
1909 1923
1910 self.iconEditorAct = E5Action( 1924 self.iconEditorAct = E5Action(
1911 self.tr('Icon Editor'), 1925 self.tr('Icon Editor'),
1912 UI.PixmapCache.getIcon("iconEditor.png"), 1926 UI.PixmapCache.getIcon("iconEditor.png"),
1913 self.tr('&Icon Editor...'), 1927 self.tr('&Icon Editor...'),
2517 mb.addSeparator() 2531 mb.addSeparator()
2518 2532
2519 self.__menus["help"] = QMenu(self.tr('&Help'), self) 2533 self.__menus["help"] = QMenu(self.tr('&Help'), self)
2520 mb.addMenu(self.__menus["help"]) 2534 mb.addMenu(self.__menus["help"])
2521 self.__menus["help"].setTearOffEnabled(True) 2535 self.__menus["help"].setTearOffEnabled(True)
2522 self.__menus["help"].addAction(self.helpviewerAct) 2536 if self.helpviewerAct:
2523 self.__menus["help"].addSeparator() 2537 self.__menus["help"].addAction(self.helpviewerAct)
2538 self.__menus["help"].addSeparator()
2524 self.__menus["help"].addAction(self.ericDocAct) 2539 self.__menus["help"].addAction(self.ericDocAct)
2525 self.__menus["help"].addAction(self.pythonDocAct) 2540 self.__menus["help"].addAction(self.pythonDocAct)
2526 self.__menus["help"].addAction(self.python2DocAct) 2541 self.__menus["help"].addAction(self.python2DocAct)
2527 self.__menus["help"].addAction(self.qt4DocAct) 2542 self.__menus["help"].addAction(self.qt4DocAct)
2528 self.__menus["help"].addAction(self.qt5DocAct) 2543 self.__menus["help"].addAction(self.qt5DocAct)
2626 toolstb.addAction(self.sqlBrowserAct) 2641 toolstb.addAction(self.sqlBrowserAct)
2627 toolstb.addSeparator() 2642 toolstb.addSeparator()
2628 toolstb.addAction(self.miniEditorAct) 2643 toolstb.addAction(self.miniEditorAct)
2629 toolstb.addAction(self.iconEditorAct) 2644 toolstb.addAction(self.iconEditorAct)
2630 toolstb.addAction(self.snapshotAct) 2645 toolstb.addAction(self.snapshotAct)
2631 toolstb.addSeparator() 2646 if self.webBrowserAct:
2632 toolstb.addAction(self.webBrowserAct) 2647 toolstb.addSeparator()
2648 toolstb.addAction(self.webBrowserAct)
2633 self.toolbarManager.addToolBar(toolstb, toolstb.windowTitle()) 2649 self.toolbarManager.addToolBar(toolstb, toolstb.windowTitle())
2634 2650
2635 # setup the settings toolbar 2651 # setup the settings toolbar
2636 settingstb.addAction(self.prefAct) 2652 settingstb.addAction(self.prefAct)
2637 settingstb.addAction(self.configViewProfilesAct) 2653 settingstb.addAction(self.configViewProfilesAct)
2645 self.importShortcutsAct, settingstb.windowTitle()) 2661 self.importShortcutsAct, settingstb.windowTitle())
2646 2662
2647 # setup the help toolbar 2663 # setup the help toolbar
2648 helptb.addAction(self.whatsThisAct) 2664 helptb.addAction(self.whatsThisAct)
2649 self.toolbarManager.addToolBar(helptb, helptb.windowTitle()) 2665 self.toolbarManager.addToolBar(helptb, helptb.windowTitle())
2650 self.toolbarManager.addAction(self.helpviewerAct, helptb.windowTitle()) 2666 if self.helpviewerAct:
2667 self.toolbarManager.addAction(self.helpviewerAct,
2668 helptb.windowTitle())
2651 2669
2652 # setup the view profiles toolbar 2670 # setup the view profiles toolbar
2653 profilestb.addActions(self.viewProfileActGrp.actions()) 2671 profilestb.addActions(self.viewProfileActGrp.actions())
2654 self.toolbarManager.addToolBar(profilestb, profilestb.windowTitle()) 2672 self.toolbarManager.addToolBar(profilestb, profilestb.windowTitle())
2655 2673
3320 btMenu.addAction(self.compareAct) 3338 btMenu.addAction(self.compareAct)
3321 btMenu.addAction(self.sqlBrowserAct) 3339 btMenu.addAction(self.sqlBrowserAct)
3322 btMenu.addAction(self.miniEditorAct) 3340 btMenu.addAction(self.miniEditorAct)
3323 btMenu.addAction(self.iconEditorAct) 3341 btMenu.addAction(self.iconEditorAct)
3324 btMenu.addAction(self.snapshotAct) 3342 btMenu.addAction(self.snapshotAct)
3325 btMenu.addAction(self.webBrowserAct) 3343 if self.webBrowserAct:
3344 btMenu.addAction(self.webBrowserAct)
3326 3345
3327 ptMenu = QMenu(self.tr("&Plugin Tools"), self) 3346 ptMenu = QMenu(self.tr("&Plugin Tools"), self)
3328 ptMenu.aboutToShow.connect(self.__showPluginToolsMenu) 3347 ptMenu.aboutToShow.connect(self.__showPluginToolsMenu)
3329 3348
3330 utMenu = QMenu(self.tr("&User Tools"), self) 3349 utMenu = QMenu(self.tr("&User Tools"), self)
4790 else: 4809 else:
4791 hvType = Preferences.getHelp("HelpViewerType") 4810 hvType = Preferences.getHelp("HelpViewerType")
4792 if hvType == 1: 4811 if hvType == 1:
4793 self.launchHelpViewer(home) 4812 self.launchHelpViewer(home)
4794 elif hvType == 2: 4813 elif hvType == 2:
4795 self.__assistant(home, version=4) 4814 if home.startswith("qthelp://"):
4796 elif hvType == 3: 4815 self.__assistant(home, version=4)
4816 else:
4817 self.__webBrowser(home)
4818 elif hvType in 3:
4797 self.__webBrowser(home) 4819 self.__webBrowser(home)
4798 else: 4820 else:
4799 self.__customViewer(home) 4821 self.__customViewer(home)
4800 4822
4801 def __showPython2Doc(self): 4823 def __showPython2Doc(self):
4847 else: 4869 else:
4848 hvType = Preferences.getHelp("HelpViewerType") 4870 hvType = Preferences.getHelp("HelpViewerType")
4849 if hvType == 1: 4871 if hvType == 1:
4850 self.launchHelpViewer(home) 4872 self.launchHelpViewer(home)
4851 elif hvType == 2: 4873 elif hvType == 2:
4852 self.__assistant(home, version=4) 4874 if home.startswith("qthelp://"):
4875 self.__assistant(home, version=4)
4876 else:
4877 self.__webBrowser(home)
4853 elif hvType == 3: 4878 elif hvType == 3:
4854 self.__webBrowser(home) 4879 self.__webBrowser(home)
4855 else: 4880 else:
4856 self.__customViewer(home) 4881 self.__customViewer(home)
4857 4882
4910 4935
4911 hvType = Preferences.getHelp("HelpViewerType") 4936 hvType = Preferences.getHelp("HelpViewerType")
4912 if hvType == 1: 4937 if hvType == 1:
4913 self.launchHelpViewer(home) 4938 self.launchHelpViewer(home)
4914 elif hvType == 2: 4939 elif hvType == 2:
4915 self.__assistant(home, version=4) 4940 if home.startswith("qthelp://"):
4941 self.__assistant(home, version=4)
4942 else:
4943 self.__webBrowser(home)
4916 elif hvType == 3: 4944 elif hvType == 3:
4917 self.__webBrowser(home) 4945 self.__webBrowser(home)
4918 else: 4946 else:
4919 self.__customViewer(home) 4947 self.__customViewer(home)
4920 4948
4970 4998
4971 hvType = Preferences.getHelp("HelpViewerType") 4999 hvType = Preferences.getHelp("HelpViewerType")
4972 if hvType == 1: 5000 if hvType == 1:
4973 self.launchHelpViewer(home) 5001 self.launchHelpViewer(home)
4974 elif hvType == 2: 5002 elif hvType == 2:
4975 self.__assistant(home, version=4) 5003 if home.startswith("qthelp://"):
5004 self.__assistant(home, version=4)
5005 else:
5006 self.__webBrowser(home)
4976 elif hvType == 3: 5007 elif hvType == 3:
4977 self.__webBrowser(home) 5008 self.__webBrowser(home)
4978 else: 5009 else:
4979 self.__customViewer(home) 5010 self.__customViewer(home)
4980 5011
5032 5063
5033 hvType = Preferences.getHelp("HelpViewerType") 5064 hvType = Preferences.getHelp("HelpViewerType")
5034 if hvType == 1: 5065 if hvType == 1:
5035 self.launchHelpViewer(home) 5066 self.launchHelpViewer(home)
5036 elif hvType == 2: 5067 elif hvType == 2:
5037 self.__assistant(home, version=4) 5068 if home.startswith("qthelp://"):
5069 self.__assistant(home, version=4)
5070 else:
5071 self.__webBrowser(home)
5038 elif hvType == 3: 5072 elif hvType == 3:
5039 self.__webBrowser(home) 5073 self.__webBrowser(home)
5040 else: 5074 else:
5041 self.__customViewer(home) 5075 self.__customViewer(home)
5042 5076
5066 5100
5067 hvType = Preferences.getHelp("HelpViewerType") 5101 hvType = Preferences.getHelp("HelpViewerType")
5068 if hvType == 1: 5102 if hvType == 1:
5069 self.launchHelpViewer(home) 5103 self.launchHelpViewer(home)
5070 elif hvType == 2: 5104 elif hvType == 2:
5071 self.__assistant(home, version=4) 5105 if home.startswith("qthelp://"):
5106 self.__assistant(home, version=4)
5107 else:
5108 self.__webBrowser(home)
5072 elif hvType == 3: 5109 elif hvType == 3:
5073 self.__webBrowser(home) 5110 self.__webBrowser(home)
5074 else: 5111 else:
5075 self.__customViewer(home) 5112 self.__customViewer(home)
5076 5113
5116 5153
5117 hvType = Preferences.getHelp("HelpViewerType") 5154 hvType = Preferences.getHelp("HelpViewerType")
5118 if hvType == 1: 5155 if hvType == 1:
5119 self.launchHelpViewer(home) 5156 self.launchHelpViewer(home)
5120 elif hvType == 2: 5157 elif hvType == 2:
5121 self.__assistant(home, version=4) 5158 if home.startswith("qthelp://"):
5159 self.__assistant(home, version=4)
5160 else:
5161 self.__webBrowser(home)
5122 elif hvType == 3: 5162 elif hvType == 3:
5123 self.__webBrowser(home) 5163 self.__webBrowser(home)
5124 else: 5164 else:
5125 self.__customViewer(home) 5165 self.__customViewer(home)
5126 5166
5135 """ 5175 """
5136 if len(home) > 0: 5176 if len(home) > 0:
5137 homeUrl = QUrl(home) 5177 homeUrl = QUrl(home)
5138 if not homeUrl.scheme(): 5178 if not homeUrl.scheme():
5139 home = QUrl.fromLocalFile(home).toString() 5179 home = QUrl.fromLocalFile(home).toString()
5140 if not (useSingle or Preferences.getHelp("SingleHelpWindow")) or \ 5180
5141 self.helpWindow is None: 5181 if WEBKIT_AVAILABLE:
5142 from Helpviewer.HelpWindow import HelpWindow 5182 if not (useSingle or Preferences.getHelp("SingleHelpWindow")) or \
5143 help = HelpWindow(home, '.', None, 'help viewer', True, 5183 self.helpWindow is None:
5144 searchWord=searchWord) 5184 from Helpviewer.HelpWindow import HelpWindow
5145 5185 help = HelpWindow(home, '.', None, 'help viewer', True,
5146 if QApplication.desktop().width() > 400 and \ 5186 searchWord=searchWord)
5147 QApplication.desktop().height() > 500: 5187
5148 help.show() 5188 if QApplication.desktop().width() > 400 and \
5189 QApplication.desktop().height() > 500:
5190 help.show()
5191 else:
5192 help.showMaximized()
5193
5194 if useSingle or Preferences.getHelp("SingleHelpWindow"):
5195 self.helpWindow = help
5196 self.helpWindow.helpClosed.connect(self.__helpClosed)
5197 self.preferencesChanged.connect(
5198 self.helpWindow.preferencesChanged)
5199 self.masterPasswordChanged.connect(
5200 self.helpWindow.masterPasswordChanged)
5201 elif searchWord is not None:
5202 self.helpWindow.search(searchWord)
5203 self.helpWindow.raise_()
5149 else: 5204 else:
5150 help.showMaximized() 5205 self.helpWindow.newTab(home)
5151 5206 self.helpWindow.raise_()
5152 if useSingle or Preferences.getHelp("SingleHelpWindow"): 5207 else:
5153 self.helpWindow = help 5208 self.__webBrowser(home)
5154 self.helpWindow.helpClosed.connect(self.__helpClosed)
5155 self.preferencesChanged.connect(
5156 self.helpWindow.preferencesChanged)
5157 self.masterPasswordChanged.connect(
5158 self.helpWindow.masterPasswordChanged)
5159 elif searchWord is not None:
5160 self.helpWindow.search(searchWord)
5161 self.helpWindow.raise_()
5162 else:
5163 self.helpWindow.newTab(home)
5164 self.helpWindow.raise_()
5165 5209
5166 def __helpClosed(self): 5210 def __helpClosed(self):
5167 """ 5211 """
5168 Private slot to handle the helpClosed signal of the help window. 5212 Private slot to handle the helpClosed signal of the help window.
5169 """ 5213 """
5203 5247
5204 @keyparam preview flag indicating to get a help window for preview 5248 @keyparam preview flag indicating to get a help window for preview
5205 (boolean) 5249 (boolean)
5206 @return reference to the help window instance (HelpWindow) 5250 @return reference to the help window instance (HelpWindow)
5207 """ 5251 """
5208 if self.helpWindow is None: 5252 if WEBKIT_AVAILABLE:
5209 self.launchHelpViewer("", useSingle=True) 5253 if self.helpWindow is None:
5210 self.helpWindow.raise_() 5254 self.launchHelpViewer("", useSingle=True)
5211 return self.helpWindow 5255 self.helpWindow.raise_()
5256 return self.helpWindow
5257 else:
5258 return None
5212 5259
5213 @pyqtSlot() 5260 @pyqtSlot()
5214 @pyqtSlot(str) 5261 @pyqtSlot(str)
5215 def showPreferences(self, pageName=None): 5262 def showPreferences(self, pageName=None):
5216 """ 5263 """

eric ide

mercurial