UserInterface, Editor: made the activation of the symbols viewer, file browser, template viewer and numbers viewer optional.

Wed, 11 Jul 2018 19:08:59 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 11 Jul 2018 19:08:59 +0200
changeset 6426
f072dd2edb0f
parent 6425
2f37e52a6c70
child 6427
5524d1dd9271

UserInterface, Editor: made the activation of the symbols viewer, file browser, template viewer and numbers viewer optional.

QScintilla/Editor.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
--- a/QScintilla/Editor.py	Wed Jul 11 19:06:33 2018 +0200
+++ b/QScintilla/Editor.py	Wed Jul 11 19:08:59 2018 +0200
@@ -7191,27 +7191,33 @@
         @param cmd the scintilla command to be performed
         """
         if cmd == QsciScintilla.SCI_TAB:
-            line, index = self.getCursorPosition()
-            tmplName = self.getWordLeft(line, index)
-            if tmplName:
-                if e5App().getObject("TemplateViewer").hasTemplate(
-                        tmplName, self.getLanguage()):
-                    self.__applyTemplate(tmplName, self.getLanguage())
-                    return
-                else:
-                    templateNames = \
-                        e5App().getObject("TemplateViewer").getTemplateNames(
+            try:
+                templateViewer = e5App().getObject("TemplateViewer")
+            except KeyError:
+                # template viewer is not active
+                templateViewer = None
+            
+            if templateViewer is not None:
+                line, index = self.getCursorPosition()
+                tmplName = self.getWordLeft(line, index)
+                if tmplName:
+                    if templateViewer.hasTemplate(tmplName,
+                                                  self.getLanguage()):
+                        self.__applyTemplate(tmplName, self.getLanguage())
+                        return
+                    else:
+                        templateNames = templateViewer.getTemplateNames(
                             tmplName, self.getLanguage())
-                    if len(templateNames) == 1:
-                        self.__applyTemplate(templateNames[0],
-                                             self.getLanguage())
-                        return
-                    elif len(templateNames) > 1:
-                        self.showUserList(
-                            TemplateCompletionListID,
-                            ["{0}?{1:d}".format(t, self.TemplateImageID)
-                             for t in templateNames])
-                        return
+                        if len(templateNames) == 1:
+                            self.__applyTemplate(templateNames[0],
+                                                 self.getLanguage())
+                            return
+                        elif len(templateNames) > 1:
+                            self.showUserList(
+                                TemplateCompletionListID,
+                                ["{0}?{1:d}".format(t, self.TemplateImageID)
+                                 for t in templateNames])
+                            return
         
         super(Editor, self).editorCommand(cmd)
     
@@ -7223,11 +7229,16 @@
         @param language name of the language (group) to get the template
             from (string)
         """
-        if e5App().getObject("TemplateViewer").hasTemplate(
-                templateName, self.getLanguage()):
+        try:
+            templateViewer = e5App().getObject("TemplateViewer")
+        except KeyError:
+            # template viewer is not active
+            return
+        
+        if templateViewer.hasTemplate(templateName, self.getLanguage()):
             self.extendSelectionWordLeft()
-            e5App().getObject("TemplateViewer").applyNamedTemplate(
-                templateName, self.getLanguage())
+            templateViewer.applyNamedTemplate(templateName,
+                                              self.getLanguage())
     
     #######################################################################
     ## Project related methods
--- a/UI/UserInterface.py	Wed Jul 11 19:06:33 2018 +0200
+++ b/UI/UserInterface.py	Wed Jul 11 19:08:59 2018 +0200
@@ -132,7 +132,6 @@
         self.__nWrite(self.__bufferedWrite())
 
 
-# TODO: make "Template-Viewer", "File-Browser", "Symbols" and "Numbers" configurable
 class UserInterface(E5MainWindow):
     """
     Class implementing the main user interface.
@@ -271,6 +270,10 @@
         self.codeDocumentationViewer = None
         self.cooperation = None
         self.irc = None
+        self.symbolsViewer = None
+        self.browser = None
+        self.templateViewer = None
+        self.numbersViewer = None
         
         # Create the main window now so that we can connect QActions to it.
         logging.debug("Creating Layout...")
@@ -305,25 +308,6 @@
         
         # now setup the connections
         splash.showMessage(self.tr("Setting up connections..."))
-        self.browser.sourceFile[str].connect(
-            self.viewmanager.openSourceFile)
-        self.browser.sourceFile[str, int].connect(
-            self.viewmanager.openSourceFile)
-        self.browser.sourceFile[str, list].connect(
-            self.viewmanager.openSourceFile)
-        self.browser.sourceFile[str, int, str].connect(
-            self.viewmanager.openSourceFile)
-        self.browser.designerFile.connect(self.__designer)
-        self.browser.linguistFile.connect(self.__linguist4)
-        self.browser.projectFile.connect(self.project.openProject)
-        self.browser.multiProjectFile.connect(
-            self.multiProject.openMultiProject)
-        self.browser.pixmapEditFile.connect(self.__editPixmap)
-        self.browser.pixmapFile.connect(self.__showPixmap)
-        self.browser.svgFile.connect(self.__showSvg)
-        self.browser.binaryFile.connect(self.__openHexEditor)
-        self.browser.unittestOpen.connect(self.__unittestScript)
-        self.browser.trpreview.connect(self.__TRPreviewer)
         
         self.debugViewer.exceptionLogger.sourceFile.connect(
             self.viewmanager.openSourceFile)
@@ -430,8 +414,6 @@
         self.debuggerUI.resetUI.connect(self.debugViewer.handleResetUI)
         self.debuggerUI.resetUI.connect(self.__debuggingDone)
         self.debuggerUI.debuggingStarted.connect(
-            self.browser.handleProgramChange)
-        self.debuggerUI.debuggingStarted.connect(
             self.debugViewer.exceptionLogger.debuggingStarted)
         self.debuggerUI.debuggingStarted.connect(
             self.debugViewer.handleDebuggingStarted)
@@ -454,8 +436,6 @@
             self.debugViewer.breakpointViewer.highlightBreakpoint)
         debugServer.clientProcessStdout.connect(self.appendToStdout)
         debugServer.clientProcessStderr.connect(self.appendToStderr)
-        debugServer.clientInterpreterChanged.connect(
-            self.browser.handleInterpreterChanged)
         debugServer.appendStdout.connect(self.appendToStdout)
         
         self.stdout.appendStdout.connect(self.appendToStdout)
@@ -484,7 +464,6 @@
             self.projectBrowser.ppBrowser.handlePreferencesChanged)
         self.preferencesChanged.connect(
             self.projectBrowser.poBrowser.handlePreferencesChanged)
-        self.preferencesChanged.connect(self.browser.handlePreferencesChanged)
         self.preferencesChanged.connect(
             self.taskViewer.handlePreferencesChanged)
         self.preferencesChanged.connect(self.pluginManager.preferencesChanged)
@@ -493,6 +472,36 @@
         self.preferencesChanged.connect(
             self.backgroundService.preferencesOrProjectChanged)
         
+        if self.browser is not None:
+            self.browser.sourceFile[str].connect(
+                self.viewmanager.openSourceFile)
+            self.browser.sourceFile[str, int].connect(
+                self.viewmanager.openSourceFile)
+            self.browser.sourceFile[str, list].connect(
+                self.viewmanager.openSourceFile)
+            self.browser.sourceFile[str, int, str].connect(
+                self.viewmanager.openSourceFile)
+            self.browser.designerFile.connect(self.__designer)
+            self.browser.linguistFile.connect(self.__linguist4)
+            self.browser.projectFile.connect(self.project.openProject)
+            self.browser.multiProjectFile.connect(
+                self.multiProject.openMultiProject)
+            self.browser.pixmapEditFile.connect(self.__editPixmap)
+            self.browser.pixmapFile.connect(self.__showPixmap)
+            self.browser.svgFile.connect(self.__showSvg)
+            self.browser.binaryFile.connect(self.__openHexEditor)
+            self.browser.unittestOpen.connect(self.__unittestScript)
+            self.browser.trpreview.connect(self.__TRPreviewer)
+            
+            self.debuggerUI.debuggingStarted.connect(
+                self.browser.handleProgramChange)
+            
+            debugServer.clientInterpreterChanged.connect(
+                self.browser.handleInterpreterChanged)
+            
+            self.preferencesChanged.connect(
+                self.browser.handlePreferencesChanged)
+        
         if self.codeDocumentationViewer is not None:
             self.preferencesChanged.connect(
                 self.codeDocumentationViewer.preferencesChanged)
@@ -534,9 +543,13 @@
             self.viewmanager.setCooperationClient(
                 self.cooperation.getClient())
         
-        self.symbolsViewer.insertSymbol.connect(self.viewmanager.insertSymbol)
-        
-        self.numbersViewer.insertNumber.connect(self.viewmanager.insertNumber)
+        if self.symbolsViewer is not None:
+            self.symbolsViewer.insertSymbol.connect(
+                self.viewmanager.insertSymbol)
+        
+        if self.numbersViewer is not None:
+            self.numbersViewer.insertNumber.connect(
+                self.viewmanager.insertNumber)
         
         if self.irc is not None:
             self.irc.autoConnected.connect(self.__ircAutoConnected)
@@ -579,7 +592,8 @@
         e5App().registerObject("ProjectBrowser", self.projectBrowser)
         e5App().registerObject("MultiProject", self.multiProject)
         e5App().registerObject("TaskViewer", self.taskViewer)
-        e5App().registerObject("TemplateViewer", self.templateViewer)
+        if self.templateViewer is not None:
+            e5App().registerObject("TemplateViewer", self.templateViewer)
         e5App().registerObject("Shell", self.shell)
         if self.dummyHelpViewer is not None:
             e5App().registerObject("DummyHelpViewer", self.dummyHelpViewer)
@@ -589,8 +603,10 @@
             e5App().registerObject("Cooperation", self.cooperation)
         if self.irc is not None:
             e5App().registerObject("IRC", self.irc)
-        e5App().registerObject("Symbols", self.symbolsViewer)
-        e5App().registerObject("Numbers", self.numbersViewer)
+        if self.symbolsViewer is not None:
+            e5App().registerObject("Symbols", self.symbolsViewer)
+        if self.numbersViewer is not None:
+            e5App().registerObject("Numbers", self.numbersViewer)
         if self.codeDocumentationViewer is not None:
             e5App().registerObject("DocuViewer", self.codeDocumentationViewer)
         
@@ -674,9 +690,10 @@
         splash.showMessage(self.tr("Reading Tasks..."))
         self.__readTasks()
         
-        # now read the saved templates
-        splash.showMessage(self.tr("Reading Templates..."))
-        self.templateViewer.readTemplates()
+        if self.templateViewer is not None:
+            # now read the saved templates
+            splash.showMessage(self.tr("Reading Templates..."))
+            self.templateViewer.readTemplates()
         
         # now start the debug client
         splash.showMessage(self.tr("Starting Debugger..."))
@@ -804,15 +821,16 @@
         self.lToolbox.addItem(self.multiProjectBrowser,
                               UI.PixmapCache.getIcon("multiProjectViewer.png"),
                               self.tr("Multiproject-Viewer"))
-
-        # Create the template viewer part of the user interface
-        logging.debug("Creating Template Viewer...")
-        from Templates.TemplateViewer import TemplateViewer
-        self.templateViewer = TemplateViewer(None,
-                                             self.viewmanager)
-        self.lToolbox.addItem(self.templateViewer,
-                              UI.PixmapCache.getIcon("templateViewer.png"),
-                              self.tr("Template-Viewer"))
+        
+        if Preferences.getUI("ShowTemplateViewer"):
+            # Create the template viewer part of the user interface
+            logging.debug("Creating Template Viewer...")
+            from Templates.TemplateViewer import TemplateViewer
+            self.templateViewer = TemplateViewer(None,
+                                                 self.viewmanager)
+            self.lToolbox.addItem(self.templateViewer,
+                                  UI.PixmapCache.getIcon("templateViewer.png"),
+                                  self.tr("Template-Viewer"))
         
         if Preferences.getUI("ShowCodeDocumentationViewer"):
             # Create the code documentation viewer
@@ -874,30 +892,33 @@
         self.hToolbox.insertItem(0, self.shellAssembly,
                                  UI.PixmapCache.getIcon("shell.png"),
                                  self.tr("Shell"))
-
-        # Create the file browser
-        logging.debug("Creating File Browser...")
-        from .Browser import Browser
-        self.browser = Browser()
-        self.lToolbox.addItem(self.browser,
-                              UI.PixmapCache.getIcon("browser.png"),
-                              self.tr("File-Browser"))
-        
-        # Create the symbols viewer
-        logging.debug("Creating Symbols Viewer...")
-        from .SymbolsWidget import SymbolsWidget
-        self.symbolsViewer = SymbolsWidget()
-        self.lToolbox.addItem(self.symbolsViewer,
-                              UI.PixmapCache.getIcon("symbols.png"),
-                              self.tr("Symbols"))
-        
-        # Create the numbers viewer
-        logging.debug("Creating Numbers Viewer...")
-        from .NumbersWidget import NumbersWidget
-        self.numbersViewer = NumbersWidget()
-        self.hToolbox.addItem(self.numbersViewer,
-                              UI.PixmapCache.getIcon("numbers.png"),
-                              self.tr("Numbers"))
+        
+        if Preferences.getUI("ShowFileBrowser"):
+            # Create the file browser
+            logging.debug("Creating File Browser...")
+            from .Browser import Browser
+            self.browser = Browser()
+            self.lToolbox.addItem(self.browser,
+                                  UI.PixmapCache.getIcon("browser.png"),
+                                  self.tr("File-Browser"))
+        
+        if Preferences.getUI("ShowSymbolsViewer"):
+            # Create the symbols viewer
+            logging.debug("Creating Symbols Viewer...")
+            from .SymbolsWidget import SymbolsWidget
+            self.symbolsViewer = SymbolsWidget()
+            self.lToolbox.addItem(self.symbolsViewer,
+                                  UI.PixmapCache.getIcon("symbols.png"),
+                                  self.tr("Symbols"))
+        
+        if Preferences.getUI("ShowNumbersViewer"):
+            # Create the numbers viewer
+            logging.debug("Creating Numbers Viewer...")
+            from .NumbersWidget import NumbersWidget
+            self.numbersViewer = NumbersWidget()
+            self.hToolbox.addItem(self.numbersViewer,
+                                  UI.PixmapCache.getIcon("numbers.png"),
+                                  self.tr("Numbers"))
         
         self.hToolbox.setCurrentIndex(0)
         
@@ -940,15 +961,16 @@
             UI.PixmapCache.getIcon("multiProjectViewer.png"),
             self.tr("Multiproject-Viewer"))
 
-        # Create the template viewer part of the user interface
-        logging.debug("Creating Template Viewer...")
-        from Templates.TemplateViewer import TemplateViewer
-        self.templateViewer = TemplateViewer(None,
-                                             self.viewmanager)
-        self.leftSidebar.addTab(
-            self.templateViewer,
-            UI.PixmapCache.getIcon("templateViewer.png"),
-            self.tr("Template-Viewer"))
+        if Preferences.getUI("ShowTemplateViewer"):
+            # Create the template viewer part of the user interface
+            logging.debug("Creating Template Viewer...")
+            from Templates.TemplateViewer import TemplateViewer
+            self.templateViewer = TemplateViewer(None,
+                                                 self.viewmanager)
+            self.leftSidebar.addTab(
+                self.templateViewer,
+                UI.PixmapCache.getIcon("templateViewer.png"),
+                self.tr("Template-Viewer"))
 
         if Preferences.getUI("ShowCodeDocumentationViewer"):
             # Create the code documentation viewer
@@ -1012,29 +1034,32 @@
                                      UI.PixmapCache.getIcon("shell.png"),
                                      self.tr("Shell"))
 
-        # Create the file browser
-        logging.debug("Creating File Browser...")
-        from .Browser import Browser
-        self.browser = Browser()
-        self.leftSidebar.addTab(self.browser,
-                                UI.PixmapCache.getIcon("browser.png"),
-                                self.tr("File-Browser"))
-        
-        # Create the symbols viewer
-        logging.debug("Creating Symbols Viewer...")
-        from .SymbolsWidget import SymbolsWidget
-        self.symbolsViewer = SymbolsWidget()
-        self.leftSidebar.addTab(self.symbolsViewer,
-                                UI.PixmapCache.getIcon("symbols.png"),
-                                self.tr("Symbols"))
-        
-        # Create the numbers viewer
-        logging.debug("Creating Numbers Viewer...")
-        from .NumbersWidget import NumbersWidget
-        self.numbersViewer = NumbersWidget()
-        self.bottomSidebar.addTab(self.numbersViewer,
-                                  UI.PixmapCache.getIcon("numbers.png"),
-                                  self.tr("Numbers"))
+        if Preferences.getUI("ShowFileBrowser"):
+            # Create the file browser
+            logging.debug("Creating File Browser...")
+            from .Browser import Browser
+            self.browser = Browser()
+            self.leftSidebar.addTab(self.browser,
+                                    UI.PixmapCache.getIcon("browser.png"),
+                                    self.tr("File-Browser"))
+        
+        if Preferences.getUI("ShowSymbolsViewer"):
+            # Create the symbols viewer
+            logging.debug("Creating Symbols Viewer...")
+            from .SymbolsWidget import SymbolsWidget
+            self.symbolsViewer = SymbolsWidget()
+            self.leftSidebar.addTab(self.symbolsViewer,
+                                    UI.PixmapCache.getIcon("symbols.png"),
+                                    self.tr("Symbols"))
+        
+        if Preferences.getUI("ShowNumbersViewer"):
+            # Create the numbers viewer
+            logging.debug("Creating Numbers Viewer...")
+            from .NumbersWidget import NumbersWidget
+            self.numbersViewer = NumbersWidget()
+            self.bottomSidebar.addTab(self.numbersViewer,
+                                      UI.PixmapCache.getIcon("numbers.png"),
+                                      self.tr("Numbers"))
         
         self.bottomSidebar.setCurrentIndex(0)
         
@@ -1531,23 +1556,24 @@
         self.shellActivateAct.triggered.connect(self.__activateShell)
         self.actions.append(self.shellActivateAct)
         self.addAction(self.shellActivateAct)
-
-        self.browserActivateAct = E5Action(
-            self.tr('File-Browser'),
-            self.tr('&File-Browser'),
-            QKeySequence(self.tr("Alt+Shift+F")),
-            0, self,
-            'file_browser_activate')
-        self.browserActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the File-Browser window."))
-        self.browserActivateAct.setWhatsThis(self.tr(
-            """<b>Activate File-Browser</b>"""
-            """<p>This switches the input focus to the File-Browser"""
-            """ window.</p>"""
-        ))
-        self.browserActivateAct.triggered.connect(self.__activateBrowser)
-        self.actions.append(self.browserActivateAct)
-        self.addAction(self.browserActivateAct)
+        
+        if self.browser is not None:
+            self.browserActivateAct = E5Action(
+                self.tr('File-Browser'),
+                self.tr('&File-Browser'),
+                QKeySequence(self.tr("Alt+Shift+F")),
+                0, self,
+                'file_browser_activate')
+            self.browserActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the File-Browser window."))
+            self.browserActivateAct.setWhatsThis(self.tr(
+                """<b>Activate File-Browser</b>"""
+                """<p>This switches the input focus to the File-Browser"""
+                """ window.</p>"""
+            ))
+            self.browserActivateAct.triggered.connect(self.__activateBrowser)
+            self.actions.append(self.browserActivateAct)
+            self.addAction(self.browserActivateAct)
 
         self.logViewerActivateAct = E5Action(
             self.tr('Log-Viewer'),
@@ -1584,24 +1610,25 @@
             self.__activateTaskViewer)
         self.actions.append(self.taskViewerActivateAct)
         self.addAction(self.taskViewerActivateAct)
-
-        self.templateViewerActivateAct = E5Action(
-            self.tr('Template-Viewer'),
-            self.tr('Templ&ate-Viewer'),
-            QKeySequence(self.tr("Alt+Shift+A")),
-            0, self,
-            'template_viewer_activate')
-        self.templateViewerActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the Template-Viewer window."))
-        self.templateViewerActivateAct.setWhatsThis(self.tr(
-            """<b>Activate Template-Viewer</b>"""
-            """<p>This switches the input focus to the Template-Viewer"""
-            """ window.</p>"""
-        ))
-        self.templateViewerActivateAct.triggered.connect(
-            self.__activateTemplateViewer)
-        self.actions.append(self.templateViewerActivateAct)
-        self.addAction(self.templateViewerActivateAct)
+        
+        if self.templateViewer is not None:
+            self.templateViewerActivateAct = E5Action(
+                self.tr('Template-Viewer'),
+                self.tr('Templ&ate-Viewer'),
+                QKeySequence(self.tr("Alt+Shift+A")),
+                0, self,
+                'template_viewer_activate')
+            self.templateViewerActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the Template-Viewer window."))
+            self.templateViewerActivateAct.setWhatsThis(self.tr(
+                """<b>Activate Template-Viewer</b>"""
+                """<p>This switches the input focus to the Template-Viewer"""
+                """ window.</p>"""
+            ))
+            self.templateViewerActivateAct.triggered.connect(
+                self.__activateTemplateViewer)
+            self.actions.append(self.templateViewerActivateAct)
+            self.addAction(self.templateViewerActivateAct)
 
         self.ltAct = E5Action(
             self.tr('Left Toolbox'),
@@ -1719,42 +1746,44 @@
                 self.__activateIRC)
             self.actions.append(self.ircActivateAct)
             self.addAction(self.ircActivateAct)
-
-        self.symbolsViewerActivateAct = E5Action(
-            self.tr('Symbols-Viewer'),
-            self.tr('S&ymbols-Viewer'),
-            QKeySequence(self.tr("Alt+Shift+Y")),
-            0, self,
-            'symbols_viewer_activate')
-        self.symbolsViewerActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the Symbols-Viewer window."))
-        self.symbolsViewerActivateAct.setWhatsThis(self.tr(
-            """<b>Activate Symbols-Viewer</b>"""
-            """<p>This switches the input focus to the Symbols-Viewer"""
-            """ window.</p>"""
-        ))
-        self.symbolsViewerActivateAct.triggered.connect(
-            self.__activateSymbolsViewer)
-        self.actions.append(self.symbolsViewerActivateAct)
-        self.addAction(self.symbolsViewerActivateAct)
-
-        self.numbersViewerActivateAct = E5Action(
-            self.tr('Numbers-Viewer'),
-            self.tr('Num&bers-Viewer'),
-            QKeySequence(self.tr("Alt+Shift+B")),
-            0, self,
-            'numbers_viewer_activate')
-        self.numbersViewerActivateAct.setStatusTip(self.tr(
-            "Switch the input focus to the Numbers-Viewer window."))
-        self.numbersViewerActivateAct.setWhatsThis(self.tr(
-            """<b>Activate Numbers-Viewer</b>"""
-            """<p>This switches the input focus to the Numbers-Viewer"""
-            """ window.</p>"""
-        ))
-        self.numbersViewerActivateAct.triggered.connect(
-            self.__activateNumbersViewer)
-        self.actions.append(self.numbersViewerActivateAct)
-        self.addAction(self.numbersViewerActivateAct)
+        
+        if self.symbolsViewer is not None:
+            self.symbolsViewerActivateAct = E5Action(
+                self.tr('Symbols-Viewer'),
+                self.tr('S&ymbols-Viewer'),
+                QKeySequence(self.tr("Alt+Shift+Y")),
+                0, self,
+                'symbols_viewer_activate')
+            self.symbolsViewerActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the Symbols-Viewer window."))
+            self.symbolsViewerActivateAct.setWhatsThis(self.tr(
+                """<b>Activate Symbols-Viewer</b>"""
+                """<p>This switches the input focus to the Symbols-Viewer"""
+                """ window.</p>"""
+            ))
+            self.symbolsViewerActivateAct.triggered.connect(
+                self.__activateSymbolsViewer)
+            self.actions.append(self.symbolsViewerActivateAct)
+            self.addAction(self.symbolsViewerActivateAct)
+        
+        if self.numbersViewer is not None:
+            self.numbersViewerActivateAct = E5Action(
+                self.tr('Numbers-Viewer'),
+                self.tr('Num&bers-Viewer'),
+                QKeySequence(self.tr("Alt+Shift+B")),
+                0, self,
+                'numbers_viewer_activate')
+            self.numbersViewerActivateAct.setStatusTip(self.tr(
+                "Switch the input focus to the Numbers-Viewer window."))
+            self.numbersViewerActivateAct.setWhatsThis(self.tr(
+                """<b>Activate Numbers-Viewer</b>"""
+                """<p>This switches the input focus to the Numbers-Viewer"""
+                """ window.</p>"""
+            ))
+            self.numbersViewerActivateAct.triggered.connect(
+                self.__activateNumbersViewer)
+            self.actions.append(self.numbersViewerActivateAct)
+            self.addAction(self.numbersViewerActivateAct)
 
         self.whatsThisAct = E5Action(
             self.tr('What\'s This?'),
@@ -2784,9 +2813,12 @@
             pass
         self.__menus["subwindow"].addAction(self.pbActivateAct)
         self.__menus["subwindow"].addAction(self.mpbActivateAct)
-        self.__menus["subwindow"].addAction(self.templateViewerActivateAct)
-        self.__menus["subwindow"].addAction(self.browserActivateAct)
-        self.__menus["subwindow"].addAction(self.symbolsViewerActivateAct)
+        if self.templateViewer is not None:
+            self.__menus["subwindow"].addAction(self.templateViewerActivateAct)
+        if self.browser is not None:
+            self.__menus["subwindow"].addAction(self.browserActivateAct)
+        if self.symbolsViewer is not None:
+            self.__menus["subwindow"].addAction(self.symbolsViewerActivateAct)
         # bottom side
         try:
             self.__menus["subwindow"].addSection(self.tr("Bottom Side"))
@@ -2796,7 +2828,8 @@
         self.__menus["subwindow"].addAction(self.shellActivateAct)
         self.__menus["subwindow"].addAction(self.taskViewerActivateAct)
         self.__menus["subwindow"].addAction(self.logViewerActivateAct)
-        self.__menus["subwindow"].addAction(self.numbersViewerActivateAct)
+        if self.numbersViewer is not None:
+            self.__menus["subwindow"].addAction(self.numbersViewerActivateAct)
         try:
             self.__menus["subwindow"].addSection(self.tr("Right Side"))
         except AttributeError:
@@ -4175,29 +4208,31 @@
         """
         Private slot to handle the activation of the Template Viewer.
         """
-        if self.layoutType == "Toolboxes":
-            self.lToolboxDock.show()
-            self.lToolbox.setCurrentWidget(self.templateViewer)
-        elif self.layoutType == "Sidebars":
-            self.leftSidebar.show()
-            self.leftSidebar.setCurrentWidget(self.templateViewer)
-        else:
-            self.templateViewer.show()
-        self.templateViewer.setFocus(Qt.ActiveWindowFocusReason)
+        if self.templateViewer is not None:
+            if self.layoutType == "Toolboxes":
+                self.lToolboxDock.show()
+                self.lToolbox.setCurrentWidget(self.templateViewer)
+            elif self.layoutType == "Sidebars":
+                self.leftSidebar.show()
+                self.leftSidebar.setCurrentWidget(self.templateViewer)
+            else:
+                self.templateViewer.show()
+            self.templateViewer.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateBrowser(self):
         """
         Private slot to handle the activation of the file browser.
         """
-        if self.layoutType == "Toolboxes":
-            self.lToolboxDock.show()
-            self.lToolbox.setCurrentWidget(self.browser)
-        elif self.layoutType == "Sidebars":
-            self.leftSidebar.show()
-            self.leftSidebar.setCurrentWidget(self.browser)
-        else:
-            self.browser.show()
-        self.browser.setFocus(Qt.ActiveWindowFocusReason)
+        if self.browser is not None:
+            if self.layoutType == "Toolboxes":
+                self.lToolboxDock.show()
+                self.lToolbox.setCurrentWidget(self.browser)
+            elif self.layoutType == "Sidebars":
+                self.leftSidebar.show()
+                self.leftSidebar.setCurrentWidget(self.browser)
+            else:
+                self.browser.show()
+            self.browser.setFocus(Qt.ActiveWindowFocusReason)
         
     def __toggleLeftToolbox(self):
         """
@@ -4308,29 +4343,31 @@
         """
         Private slot to handle the activation of the Symbols Viewer.
         """
-        if self.layoutType == "Toolboxes":
-            self.lToolboxDock.show()
-            self.lToolbox.setCurrentWidget(self.symbolsViewer)
-        elif self.layoutType == "Sidebars":
-            self.leftSidebar.show()
-            self.leftSidebar.setCurrentWidget(self.symbolsViewer)
-        else:
-            self.symbolsViewer.show()
-        self.symbolsViewer.setFocus(Qt.ActiveWindowFocusReason)
+        if self.symbolsViewer is not None:
+            if self.layoutType == "Toolboxes":
+                self.lToolboxDock.show()
+                self.lToolbox.setCurrentWidget(self.symbolsViewer)
+            elif self.layoutType == "Sidebars":
+                self.leftSidebar.show()
+                self.leftSidebar.setCurrentWidget(self.symbolsViewer)
+            else:
+                self.symbolsViewer.show()
+            self.symbolsViewer.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateNumbersViewer(self):
         """
         Private slot to handle the activation of the Numbers Viewer.
         """
-        if self.layoutType == "Toolboxes":
-            self.hToolboxDock.show()
-            self.hToolboxDock.setCurrentWidget(self.numbersViewer)
-        elif self.layoutType == "Sidebars":
-            self.bottomSidebar.show()
-            self.bottomSidebar.setCurrentWidget(self.numbersViewer)
-        else:
-            self.numbersViewer.show()
-        self.numbersViewer.setFocus(Qt.ActiveWindowFocusReason)
+        if self.numbersViewer is not None:
+            if self.layoutType == "Toolboxes":
+                self.hToolboxDock.show()
+                self.hToolboxDock.setCurrentWidget(self.numbersViewer)
+            elif self.layoutType == "Sidebars":
+                self.bottomSidebar.show()
+                self.bottomSidebar.setCurrentWidget(self.numbersViewer)
+            else:
+                self.numbersViewer.show()
+            self.numbersViewer.setFocus(Qt.ActiveWindowFocusReason)
         
     def __activateViewmanager(self):
         """
@@ -6511,7 +6548,9 @@
         self.shell.closeShell()
         
         self.__writeTasks()
-        self.templateViewer.save()
+        
+        if self.templateViewer is not None:
+            self.templateViewer.save()
         
         if not self.debuggerUI.shutdownServer():
             return False
@@ -6538,7 +6577,9 @@
         Preferences.setGeometry("MainMaximized", self.isMaximized())
         if not self.isMaximized():
             Preferences.setGeometry("MainGeometry", self.saveGeometry())
-        self.browser.saveToplevelDirs()
+        
+        if self.browser is not None:
+            self.browser.saveToplevelDirs()
         
         Preferences.setUI(
             "ToolbarManagerState", self.toolbarManager.saveState())
--- a/changelog	Wed Jul 11 19:06:33 2018 +0200
+++ b/changelog	Wed Jul 11 19:08:59 2018 +0200
@@ -2,6 +2,15 @@
 ----------
 Version 18.08:
 - bug fixes
+- General
+  -- made the activation of these internal tools configurable
+     * Template-Viewer
+     * File-Browser
+     * Symbols
+     * Code Documentation Viewer
+     * Cooperation
+     * IRC
+     * Numbers
 - File-Browser
   -- changed code so file-browser is always a standalone window
 - Shell

eric ide

mercurial