UI/UserInterface.py

branch
maintenance
changeset 5948
6f958d5765f4
parent 5863
0752bdd8db77
child 5949
22657f04f332
--- a/UI/UserInterface.py	Wed Nov 01 19:22:02 2017 +0100
+++ b/UI/UserInterface.py	Fri Nov 03 12:10:16 2017 +0100
@@ -455,6 +455,8 @@
         self.preferencesChanged.connect(self.cooperation.preferencesChanged)
         self.preferencesChanged.connect(
             self.backgroundService.preferencesOrProjectChanged)
+        self.preferencesChanged.connect(
+            self.codeDocumentationViewer.preferencesChanged)
         
         self.viewmanager.editorSaved.connect(self.project.repopulateItem)
         self.viewmanager.lastEditorClosed.connect(self.__lastEditorClosed)
@@ -531,6 +533,7 @@
         e5App().registerObject("IRC", self.irc)
         e5App().registerObject("Symbols", self.symbolsViewer)
         e5App().registerObject("Numbers", self.numbersViewer)
+        e5App().registerObject("DocuViewer", self.codeDocumentationViewer)
         
         # list of web addresses serving the versions file
         self.__httpAlternatives = Preferences.getUI("VersionsUrls6")
@@ -642,6 +645,9 @@
         if interval > 0:
             QApplication.setKeyboardInputInterval(interval)
         
+        # finalize the initialization of the code documentation viewer
+        self.codeDocumentationViewer.finalizeSetup()
+        
     def __createLayout(self, debugServer):
         """
         Private method to create the layout of the various windows.
@@ -700,6 +706,8 @@
         """
         from E5Gui.E5ToolBox import E5VerticalToolBox, E5HorizontalToolBox
         
+        logging.debug("Creating Toolboxes Layout...")
+        
         # Create the left toolbox
         self.lToolboxDock = self.__createDockWindow("lToolboxDock")
         self.lToolbox = E5VerticalToolBox(self.lToolboxDock)
@@ -720,6 +728,7 @@
                                self.rToolbox, self.tr("Right Toolbox"))
         
         # Create the project browser
+        logging.debug("Creating Project Browser...")
         from Project.ProjectBrowser import ProjectBrowser
         self.projectBrowser = ProjectBrowser(
             self.project, None,
@@ -729,6 +738,7 @@
                               self.tr("Project-Viewer"))
 
         # Create the multi project browser
+        logging.debug("Creating Multiproject Browser...")
         from MultiProject.MultiProjectBrowser import MultiProjectBrowser
         self.multiProjectBrowser = MultiProjectBrowser(self.multiProject,
                                                        self.project)
@@ -737,6 +747,7 @@
                               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)
@@ -744,7 +755,16 @@
                               UI.PixmapCache.getIcon("templateViewer.png"),
                               self.tr("Template-Viewer"))
 
+        # Create the code documentation viewer
+        logging.debug("Creating Code Documentation Viewer...")
+        from .CodeDocumentationViewer import CodeDocumentationViewer
+        self.codeDocumentationViewer = CodeDocumentationViewer(self)
+        self.rToolbox.addItem(self.codeDocumentationViewer,
+                              UI.PixmapCache.getIcon("codeDocuViewer.png"),
+                              self.tr("Code Documentation Viewer"))
+        
         # Create the debug viewer maybe without the embedded shell
+        logging.debug("Creating Debug Viewer...")
         from Debugger.DebugViewer import DebugViewer
         self.debugViewer = DebugViewer(
             debugServer, True, self.viewmanager, None,
@@ -755,6 +775,7 @@
                               self.tr("Debug-Viewer"))
 
         # Create the chat part of the user interface
+        logging.debug("Creating Chat Widget...")
         from Cooperation.ChatWidget import ChatWidget
         self.cooperation = ChatWidget(self)
         self.rToolbox.addItem(self.cooperation,
@@ -762,6 +783,7 @@
                               self.tr("Cooperation"))
         
         # Create the IRC part of the user interface
+        logging.debug("Creating IRC Widget...")
         from Network.IRC.IrcWidget import IrcWidget
         self.irc = IrcWidget(self)
         self.rToolbox.addItem(self.irc,
@@ -769,6 +791,7 @@
                               self.tr("IRC"))
         
         # Create the task viewer part of the user interface
+        logging.debug("Creating Task Viewer...")
         from Tasks.TaskViewer import TaskViewer
         self.taskViewer = TaskViewer(None, self.project)
         self.hToolbox.addItem(self.taskViewer,
@@ -776,6 +799,7 @@
                               self.tr("Task-Viewer"))
 
         # Create the log viewer part of the user interface
+        logging.debug("Creating Log Viewer...")
         from .LogView import LogViewer
         self.logViewer = LogViewer(self)
         self.hToolbox.addItem(self.logViewer,
@@ -786,6 +810,7 @@
             self.shell = self.debugViewer.shell
         else:
             # Create the shell
+            logging.debug("Creating Shell...")
             from QScintilla.Shell import ShellAssembly
             self.shellAssembly = \
                 ShellAssembly(debugServer, self.viewmanager, True)
@@ -796,6 +821,7 @@
 
         if self.embeddedFileBrowser == 0:   # separate window
             # Create the file browser
+            logging.debug("Creating File Browser...")
             from .Browser import Browser
             self.browser = Browser()
             self.lToolbox.addItem(self.browser,
@@ -807,6 +833,7 @@
             self.browser = self.projectBrowser.fileBrowser
         
         # Create the symbols viewer
+        logging.debug("Creating Symbols Viewer...")
         from .SymbolsWidget import SymbolsWidget
         self.symbolsViewer = SymbolsWidget()
         self.lToolbox.addItem(self.symbolsViewer,
@@ -814,6 +841,7 @@
                               self.tr("Symbols"))
         
         # Create the numbers viewer
+        logging.debug("Creating Numbers Viewer...")
         from .NumbersWidget import NumbersWidget
         self.numbersViewer = NumbersWidget()
         self.hToolbox.addItem(self.numbersViewer,
@@ -830,6 +858,8 @@
         """
         from E5Gui.E5SideBar import E5SideBar
         
+        logging.debug("Creating Sidebars Layout...")
+        
         delay = Preferences.getUI("SidebarDelay")
         # Create the left sidebar
         self.leftSidebar = E5SideBar(E5SideBar.West, delay)
@@ -871,6 +901,15 @@
             UI.PixmapCache.getIcon("templateViewer.png"),
             self.tr("Template-Viewer"))
 
+        # Create the code documentation viewer
+        logging.debug("Creating Code Documentation Viewer...")
+        from .CodeDocumentationViewer import CodeDocumentationViewer
+        self.codeDocumentationViewer = CodeDocumentationViewer(self)
+        self.rightSidebar.addTab(
+            self.codeDocumentationViewer,
+            UI.PixmapCache.getIcon("codeDocuViewer.png"),
+            self.tr("Code Documentation Viewer"))
+        
         # Create the debug viewer maybe without the embedded shell
         logging.debug("Creating Debug Viewer...")
         from Debugger.DebugViewer import DebugViewer
@@ -1424,7 +1463,7 @@
             self.tr('&Shell'),
             QKeySequence(self.tr("Alt+Shift+S")),
             0, self,
-            'interprter_shell_activate')
+            'interpreter_shell_activate')
         self.shellActivateAct.setStatusTip(self.tr(
             "Switch the input focus to the Shell window."))
         self.shellActivateAct.setWhatsThis(self.tr(
@@ -4164,6 +4203,24 @@
         if aw is not None:
             aw.setFocus(Qt.ActiveWindowFocusReason)
     
+    def activateCodeDocumentationViewer(self, switchFocus=True):
+        """
+        Public slot to handle the activation of the Code Documentation Viewer.
+        
+        @param switchFocus flag indicating to transfer the input focus
+        @type bool
+        """
+        if self.layoutType == "Toolboxes":
+            self.rToolboxDock.show()
+            self.rToolbox.setCurrentWidget(self.codeDocumentationViewer)
+        elif self.layoutType == "Sidebars":
+            self.rightSidebar.show()
+            self.rightSidebar.setCurrentWidget(self.codeDocumentationViewer)
+        else:
+            self.codeDocumentationViewer.show()
+        if switchFocus:
+            self.codeDocumentationViewer.setFocus(Qt.ActiveWindowFocusReason)
+    
     def __toggleWindow(self, w):
         """
         Private method to toggle a workspace editor window.
@@ -6266,6 +6323,8 @@
         if sessionCreated and not self.__disableCrashSession:
             self.__deleteCrashSession()
         
+        self.codeDocumentationViewer.shutdown()
+        
         self.__previewer.shutdown()
         
         self.shell.closeShell()
@@ -6797,3 +6856,16 @@
         Private slot handling the automatic connection of the IRC client.
         """
         self.__activateIRC()
+    
+    ###############################################
+    ## Support for Code Documentation Viewer  below
+    ###############################################
+    
+    def documentationViewer(self):
+        """
+        Public method to provide a reference to the code documentation viewer.
+        
+        @return reference to the code documentation viewer
+        @rtype CodeDocumentationViewer
+        """
+        return self.codeDocumentationViewer

eric ide

mercurial