--- 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