diff -r 65ed18753c40 -r 8c3b52d1b4b6 eric7/UI/UserInterface.py --- a/eric7/UI/UserInterface.py Tue Jun 08 19:41:08 2021 +0200 +++ b/eric7/UI/UserInterface.py Wed Jun 09 17:13:01 2021 +0200 @@ -243,31 +243,39 @@ # load the view profiles self.profiles = Preferences.getUI("ViewProfiles") + splash.showMessage(self.tr("Initializing Basic Services...")) + # Generate the conda interface + logging.debug("Creating Conda Interface...") from CondaInterface.Conda import Conda self.condaInterface = Conda(self) ericApp().registerObject("Conda", self.condaInterface) # Generate the pip interface + logging.debug("Creating Pip Interface...") from PipInterface.Pip import Pip self.pipInterface = Pip(self) ericApp().registerObject("Pip", self.pipInterface) # Generate the virtual environment manager + logging.debug("Creating Virtual Environments Manager...") from VirtualEnv.VirtualenvManager import VirtualenvManager self.virtualenvManager = VirtualenvManager(self) # register it early because it is needed very soon ericApp().registerObject("VirtualEnvManager", self.virtualenvManager) # Generate an empty project object and multi project object + logging.debug("Creating Project Manager...") from Project.Project import Project self.project = Project(self) ericApp().registerObject("Project", self.project) from MultiProject.MultiProject import MultiProject + logging.debug("Creating Multi-Project Manager...") self.multiProject = MultiProject(self.project, self) # Generate the debug server object + logging.debug("Creating Debug Server...") from Debugger.DebugServer import DebugServer debugServer = DebugServer(self.__originalPathString, project=self.project, parent=self) @@ -300,9 +308,12 @@ self.__webBrowserClient = None self.__webBrowserSAName = QUuid.createUuid().toString()[1:-1] + logging.debug("Creating Application Objects...") + self.__createObjects(debugServer) + # Create the main window now so that we can connect QActions to it. logging.debug("Creating Layout...") - self.__createLayout(debugServer) + self.__createLayout() self.__currentRightWidget = None self.__currentBottomWidget = None @@ -767,18 +778,164 @@ """ return self.__networkManager - def __createLayout(self, debugServer): - """ - Private method to create the layout of the various windows. + def __createObjects(self, debugServer): + """ + Private method to create the various objects of the application. @param debugServer reference to the debug server object - @exception ValueError raised to indicate an invalid layout type + @type DebugServer """ # Create the view manager depending on the configuration setting logging.debug("Creating Viewmanager...") import ViewManager self.viewmanager = ViewManager.factory( self, self, debugServer, self.pluginManager) + + # Create previewer + logging.debug("Creating Previewer...") + from .Previewer import Previewer + self.__previewer = Previewer(self.viewmanager) + + # Create AST viewer + logging.debug("Creating Python AST Viewer") + from .PythonAstViewer import PythonAstViewer + self.__astViewer = PythonAstViewer(self.viewmanager) + + # Create DIS viewer + logging.debug("Creating Python Disassembly Viewer") + from .PythonDisViewer import PythonDisViewer + self.__disViewer = PythonDisViewer(self.viewmanager) + + # Create the project browser + logging.debug("Creating Project Browser...") + from Project.ProjectBrowser import ProjectBrowser + self.projectBrowser = ProjectBrowser(self.project) + + # Create the multi project browser + logging.debug("Creating Multiproject Browser...") + from MultiProject.MultiProjectBrowser import MultiProjectBrowser + self.multiProjectBrowser = MultiProjectBrowser( + self.multiProject, self.project) + + # 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) + + # Create the log viewer part of the user interface + logging.debug("Creating Log Viewer...") + from .LogView import LogViewer + self.logViewer = LogViewer(self) + + # Create the debug viewer + logging.debug("Creating Debug Viewer...") + from Debugger.DebugViewer import DebugViewer + self.debugViewer = DebugViewer(debugServer) + + # Create the shell + logging.debug("Creating Shell...") + from QScintilla.Shell import ShellAssembly + self.shellAssembly = ShellAssembly( + debugServer, self.viewmanager, self.project, True) + self.shell = self.shellAssembly.shell() + + 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) + else: + logging.debug("Template Viewer disabled") + self.templateViewer = None + + if Preferences.getUI("ShowFileBrowser"): + # Create the file browser + logging.debug("Creating File Browser...") + from .Browser import Browser + self.browser = Browser() + else: + logging.debug("File Browser disabled") + self.browser = None + + if Preferences.getUI("ShowSymbolsViewer"): + # Create the symbols viewer + logging.debug("Creating Symbols Viewer...") + from .SymbolsWidget import SymbolsWidget + self.symbolsViewer = SymbolsWidget() + else: + logging.debug("Symbols Viewer disabled") + self.symbolsViewer = None + + if Preferences.getUI("ShowCodeDocumentationViewer"): + # Create the code documentation viewer + logging.debug("Creating Code Documentation Viewer...") + from .CodeDocumentationViewer import CodeDocumentationViewer + self.codeDocumentationViewer = CodeDocumentationViewer(self) + else: + logging.debug("Code Documentation Viewer disabled") + self.codeDocumentationViewer = None + + if Preferences.getUI("ShowPyPIPackageManager"): + # Create the PyPI package manager + logging.debug("Creating PyPI Package Manager...") + from PipInterface.PipPackagesWidget import PipPackagesWidget + self.pipWidget = PipPackagesWidget(self.pipInterface) + else: + logging.debug("PyPI Package Manager disabled") + self.pipWidget = None + + if Preferences.getUI("ShowCondaPackageManager"): + # Create the conda package manager + logging.debug("Creating Conda Package Manager...") + from CondaInterface.CondaPackagesWidget import CondaPackagesWidget + self.condaWidget = CondaPackagesWidget(self.condaInterface) + else: + logging.debug("Conda Package Manager disabled") + self.condaWidget = None + + if Preferences.getUI("ShowCooperation"): + # Create the chat part of the user interface + logging.debug("Creating Chat Widget...") + from Cooperation.ChatWidget import ChatWidget + self.cooperation = ChatWidget(self) + else: + logging.debug("Chat Widget disabled") + self.cooperation = None + + if Preferences.getUI("ShowIrc"): + # Create the IRC part of the user interface + logging.debug("Creating IRC Widget...") + from Network.IRC.IrcWidget import IrcWidget + self.irc = IrcWidget(self) + else: + logging.debug("IRC Widget disabled") + self.irc = None + + if Preferences.getUI("ShowMicroPython"): + # Create the MicroPython part of the user interface + logging.debug("Creating MicroPython Widget...") + from MicroPython.MicroPythonWidget import MicroPythonWidget + self.microPythonWidget = MicroPythonWidget(self) + else: + logging.debug("MicroPython Widget disabled") + self.microPythonWidget = None + + if Preferences.getUI("ShowNumbersViewer"): + # Create the numbers viewer + logging.debug("Creating Numbers Viewer...") + from .NumbersWidget import NumbersWidget + self.numbersViewer = NumbersWidget() + else: + logging.debug("Numbers Viewer disabled") + self.numbersViewer = None + + def __createLayout(self): + """ + Private method to create the layout of the various windows. + + @exception ValueError raised to indicate an invalid layout type + """ leftWidget = QWidget() layout = QVBoxLayout() layout.setContentsMargins(1, 1, 1, 1) @@ -796,44 +953,31 @@ splitter.addWidget(leftWidget) self.setCentralWidget(splitter) - # Create previewer - logging.debug("Creating Previewer...") - from .Previewer import Previewer - self.__previewer = Previewer(self.viewmanager, splitter) + self.__previewer.setSplitter(splitter) splitter.addWidget(self.__previewer) - # Create AST viewer - logging.debug("Creating Python AST Viewer") - from .PythonAstViewer import PythonAstViewer - self.__astViewer = PythonAstViewer(self.viewmanager, splitter) splitter.addWidget(self.__astViewer) - # Create DIS viewer - logging.debug("Creating Python Disassembly Viewer") - from .PythonDisViewer import PythonDisViewer - self.__disViewer = PythonDisViewer(self.viewmanager, parent=splitter) splitter.addWidget(self.__disViewer) # Create layout with toolbox windows embedded in dock windows if self.__layoutType == "Toolboxes": logging.debug("Creating toolboxes...") - self.__createToolboxesLayout(debugServer) + self.__createToolboxesLayout() # Create layout with sidebar windows embedded in dock windows elif self.__layoutType == "Sidebars": logging.debug("Creating sidebars...") - self.__createSidebarsLayout(debugServer) + self.__createSidebarsLayout() else: raise ValueError("Wrong layout type given ({0})".format( self.__layoutType)) logging.debug("Created Layout") - def __createToolboxesLayout(self, debugServer): + def __createToolboxesLayout(self): """ Private method to create the Toolboxes layout. - - @param debugServer reference to the debug server object """ from EricWidgets.EricToolBox import ( EricVerticalToolBox, EricHorizontalToolBox @@ -869,95 +1013,63 @@ ## Populate the left toolbox #################################################### - # Create the project browser - logging.debug("Creating Project Browser...") - from Project.ProjectBrowser import ProjectBrowser - self.projectBrowser = ProjectBrowser(self.project) self.lToolbox.addItem(self.projectBrowser, UI.PixmapCache.getIcon("projectViewer"), 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) self.lToolbox.addItem(self.multiProjectBrowser, UI.PixmapCache.getIcon("multiProjectViewer"), self.tr("Multiproject-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) + if self.templateViewer: self.lToolbox.addItem(self.templateViewer, UI.PixmapCache.getIcon("templateViewer"), self.tr("Template-Viewer")) + + if self.browser: + self.lToolbox.addItem(self.browser, + UI.PixmapCache.getIcon("browser"), + self.tr("File-Browser")) + + if self.symbolsViewer: + self.lToolbox.addItem(self.symbolsViewer, + UI.PixmapCache.getIcon("symbols"), + self.tr("Symbols")) #################################################### ## Populate the right toolbox #################################################### - if Preferences.getUI("ShowCodeDocumentationViewer"): - # Create the code documentation viewer - logging.debug("Creating Code Documentation Viewer...") - from .CodeDocumentationViewer import CodeDocumentationViewer - self.codeDocumentationViewer = CodeDocumentationViewer(self) + if self.codeDocumentationViewer: self.rToolbox.addItem(self.codeDocumentationViewer, UI.PixmapCache.getIcon("codeDocuViewer"), self.tr("Code Documentation Viewer")) - # Create the debug viewer - logging.debug("Creating Debug Viewer...") - from Debugger.DebugViewer import DebugViewer - self.debugViewer = DebugViewer(debugServer) self.rToolbox.addItem(self.debugViewer, UI.PixmapCache.getIcon("debugViewer"), self.tr("Debug-Viewer")) - if Preferences.getUI("ShowPyPIPackageManager"): - # Create the PyPI package manager - logging.debug("Creating PyPI Package Manager...") - from PipInterface.PipPackagesWidget import PipPackagesWidget - self.pipWidget = PipPackagesWidget(self.pipInterface) + if self.pipWidget: self.rToolbox.addItem(self.pipWidget, UI.PixmapCache.getIcon("pypi"), self.tr("PyPI")) - if Preferences.getUI("ShowCondaPackageManager"): - # Create the conda package manager - logging.debug("Creating Conda Package Manager...") - from CondaInterface.CondaPackagesWidget import CondaPackagesWidget - self.condaWidget = CondaPackagesWidget(self.condaInterface) + if self.condaWidget: self.rToolbox.addItem(self.condaWidget, UI.PixmapCache.getIcon("miniconda"), self.tr("Conda")) - if Preferences.getUI("ShowCooperation"): - # Create the chat part of the user interface - logging.debug("Creating Chat Widget...") - from Cooperation.ChatWidget import ChatWidget - self.cooperation = ChatWidget(self) + if self.cooperation: self.rToolbox.addItem(self.cooperation, UI.PixmapCache.getIcon("cooperation"), self.tr("Cooperation")) - if Preferences.getUI("ShowIrc"): - # Create the IRC part of the user interface - logging.debug("Creating IRC Widget...") - from Network.IRC.IrcWidget import IrcWidget - self.irc = IrcWidget(self) + if self.irc: self.rToolbox.addItem(self.irc, UI.PixmapCache.getIcon("irc"), self.tr("IRC")) - if Preferences.getUI("ShowMicroPython"): - # Create the MicroPython part of the user interface - logging.debug("Creating MicroPython Widget...") - from MicroPython.MicroPythonWidget import MicroPythonWidget - self.microPythonWidget = MicroPythonWidget(self) + if self.microPythonWidget: self.rToolbox.addItem(self.microPythonWidget, UI.PixmapCache.getIcon("micropython"), self.tr("MicroPython")) @@ -966,45 +1078,15 @@ ## Populate the bottom toolbox #################################################### - # 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, UI.PixmapCache.getIcon("task"), 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, UI.PixmapCache.getIcon("logViewer"), self.tr("Log-Viewer")) - - 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"), - 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"), - self.tr("Symbols")) - - if Preferences.getUI("ShowNumbersViewer"): - # Create the numbers viewer - logging.debug("Creating Numbers Viewer...") - from .NumbersWidget import NumbersWidget - self.numbersViewer = NumbersWidget() + + if self.numbersViewer: self.hToolbox.addItem(self.numbersViewer, UI.PixmapCache.getIcon("numbers"), self.tr("Numbers")) @@ -1013,8 +1095,6 @@ ## Populate the configurable widgets #################################################### - # Create the shell - logging.debug("Creating Shell...") self.__shellPosition = Preferences.getUI("ShellPosition") if self.__shellPosition == "left": self.__shellParent = self.lToolboxDock @@ -1022,10 +1102,6 @@ self.__shellParent = self.rToolboxDock else: self.__shellParent = self.hToolboxDock - from QScintilla.Shell import ShellAssembly - self.shellAssembly = ShellAssembly( - debugServer, self.viewmanager, self.project, True) - self.shell = self.shellAssembly.shell() self.__shellParent.widget().insertItem( 0, self.shellAssembly, UI.PixmapCache.getIcon("shell"), self.tr("Shell")) @@ -1038,11 +1114,9 @@ self.rToolbox.setCurrentIndex(0) self.hToolbox.setCurrentIndex(0) - def __createSidebarsLayout(self, debugServer): + def __createSidebarsLayout(self): """ Private method to create the Sidebars layout. - - @param debugServer reference to the debug server object """ from EricWidgets.EricSideBar import EricSideBar, EricSideBarSide @@ -1062,99 +1136,67 @@ ## Populate the left side bar #################################################### - # Create the project browser - logging.debug("Creating Project Browser...") - from Project.ProjectBrowser import ProjectBrowser - self.projectBrowser = ProjectBrowser(self.project) self.leftSidebar.addTab( self.projectBrowser, UI.PixmapCache.getIcon("projectViewer"), 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) self.leftSidebar.addTab( self.multiProjectBrowser, UI.PixmapCache.getIcon("multiProjectViewer"), self.tr("Multiproject-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) + if self.templateViewer: self.leftSidebar.addTab( self.templateViewer, UI.PixmapCache.getIcon("templateViewer"), self.tr("Template-Viewer")) + if self.browser: + self.leftSidebar.addTab(self.browser, + UI.PixmapCache.getIcon("browser"), + self.tr("File-Browser")) + + if self.symbolsViewer: + self.leftSidebar.addTab(self.symbolsViewer, + UI.PixmapCache.getIcon("symbols"), + self.tr("Symbols")) + #################################################### ## Populate the right side bar #################################################### - if Preferences.getUI("ShowCodeDocumentationViewer"): - # Create the code documentation viewer - logging.debug("Creating Code Documentation Viewer...") - from .CodeDocumentationViewer import CodeDocumentationViewer - self.codeDocumentationViewer = CodeDocumentationViewer(self) + if self.codeDocumentationViewer: self.rightSidebar.addTab( self.codeDocumentationViewer, UI.PixmapCache.getIcon("codeDocuViewer"), self.tr("Code Documentation Viewer")) - # Create the debug viewer - logging.debug("Creating Debug Viewer...") - from Debugger.DebugViewer import DebugViewer - self.debugViewer = DebugViewer(debugServer) self.rightSidebar.addTab( self.debugViewer, UI.PixmapCache.getIcon("debugViewer"), self.tr("Debug-Viewer")) - if Preferences.getUI("ShowPyPIPackageManager"): - # Create the PyPI package manager - logging.debug("Creating PyPI Package Manager...") - from PipInterface.PipPackagesWidget import PipPackagesWidget - self.pipWidget = PipPackagesWidget(self.pipInterface) + if self.pipWidget: self.rightSidebar.addTab( self.pipWidget, UI.PixmapCache.getIcon("pypi"), self.tr("PyPI")) - if Preferences.getUI("ShowCondaPackageManager"): - # Create the conda package manager - logging.debug("Creating Conda Package Manager...") - from CondaInterface.CondaPackagesWidget import CondaPackagesWidget - self.condaWidget = CondaPackagesWidget(self.condaInterface) + if self.condaWidget: self.rightSidebar.addTab( self.condaWidget, UI.PixmapCache.getIcon("miniconda"), self.tr("Conda")) - if Preferences.getUI("ShowCooperation"): - # Create the chat part of the user interface - logging.debug("Creating Chat Widget...") - from Cooperation.ChatWidget import ChatWidget - self.cooperation = ChatWidget(self) + if self.cooperation: self.rightSidebar.addTab( self.cooperation, UI.PixmapCache.getIcon("cooperation"), self.tr("Cooperation")) - if Preferences.getUI("ShowIrc"): - # Create the IRC part of the user interface - logging.debug("Creating IRC Widget...") - from Network.IRC.IrcWidget import IrcWidget - self.irc = IrcWidget(self) + if self.irc: self.rightSidebar.addTab( self.irc, UI.PixmapCache.getIcon("irc"), self.tr("IRC")) - if Preferences.getUI("ShowMicroPython"): - # Create the MicroPython part of the user interface - logging.debug("Creating MicroPython Widget...") - from MicroPython.MicroPythonWidget import MicroPythonWidget - self.microPythonWidget = MicroPythonWidget(self) + if self.microPythonWidget: self.rightSidebar.addTab( self.microPythonWidget, UI.PixmapCache.getIcon("micropython"), self.tr("MicroPython")) @@ -1163,45 +1205,15 @@ ## Populate the bottom side bar #################################################### - # 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.bottomSidebar.addTab(self.taskViewer, UI.PixmapCache.getIcon("task"), 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.bottomSidebar.addTab(self.logViewer, UI.PixmapCache.getIcon("logViewer"), self.tr("Log-Viewer")) - - 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"), - 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"), - self.tr("Symbols")) - - if Preferences.getUI("ShowNumbersViewer"): - # Create the numbers viewer - logging.debug("Creating Numbers Viewer...") - from .NumbersWidget import NumbersWidget - self.numbersViewer = NumbersWidget() + + if self.numbersViewer: self.bottomSidebar.addTab(self.numbersViewer, UI.PixmapCache.getIcon("numbers"), self.tr("Numbers")) @@ -1210,8 +1222,6 @@ ## Populate the configurable widgets #################################################### - # Create the shell - logging.debug("Creating Shell...") self.__shellPosition = Preferences.getUI("ShellPosition") if self.__shellPosition == "left": self.__shellParent = self.leftSidebar @@ -1219,10 +1229,6 @@ self.__shellParent = self.rightSidebar else: self.__shellParent = self.bottomSidebar - from QScintilla.Shell import ShellAssembly - self.shellAssembly = ShellAssembly( - debugServer, self.viewmanager, self.project, True) - self.shell = self.shellAssembly.shell() self.__shellParent.insertTab(0, self.shellAssembly, UI.PixmapCache.getIcon("shell"), self.tr("Shell"))