src/eric7/UI/UserInterface.py

branch
eric7-maintenance
changeset 10814
ba20efe10336
parent 10733
d96c69a235fc
parent 10813
77d4d1878228
child 10815
b8631a4fb2f0
equal deleted inserted replaced
10734:2b015db9761a 10814:ba20efe10336
57 QVBoxLayout, 57 QVBoxLayout,
58 QWhatsThis, 58 QWhatsThis,
59 QWidget, 59 QWidget,
60 ) 60 )
61 61
62 from eric7 import Globals, Preferences, Testing, Utilities 62 from eric7 import EricUtilities, Globals, Preferences, Testing, Utilities
63 from eric7.__version__ import Version, VersionOnly 63 from eric7.__version__ import Version, VersionOnly
64 from eric7.CondaInterface.Conda import Conda 64 from eric7.CondaInterface.Conda import Conda
65 from eric7.Debugger.DebugServer import DebugServer 65 from eric7.Debugger.DebugServer import DebugServer
66 from eric7.Debugger.DebugUI import DebugUI 66 from eric7.Debugger.DebugUI import DebugUI
67 from eric7.EricCore import EricFileSystemWatcher 67 from eric7.EricCore import EricFileSystemWatcher
85 from eric7.PluginManager.PluginManager import PluginManager 85 from eric7.PluginManager.PluginManager import PluginManager
86 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryDownloadCleanup 86 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryDownloadCleanup
87 from eric7.Preferences import Shortcuts 87 from eric7.Preferences import Shortcuts
88 from eric7.Project.Project import Project 88 from eric7.Project.Project import Project
89 from eric7.QScintilla.SpellChecker import SpellChecker 89 from eric7.QScintilla.SpellChecker import SpellChecker
90 from eric7.RemoteServerInterface.EricServerInterface import EricServerInterface
90 from eric7.Sessions.SessionFile import SessionFile 91 from eric7.Sessions.SessionFile import SessionFile
91 from eric7.SystemUtilities import ( 92 from eric7.SystemUtilities import (
92 DesktopUtilities, 93 DesktopUtilities,
93 FileSystemUtilities, 94 FileSystemUtilities,
94 OSUtilities, 95 OSUtilities,
176 @type Any 177 @type Any
177 """ 178 """
178 self.buffer += str(s) 179 self.buffer += str(s)
179 self.__nWrite(self.__bufferedWrite()) 180 self.__nWrite(self.__bufferedWrite())
180 181
182 def isatty(self):
183 """
184 Public method to indicate a tty.
185
186 Note: This always reports 'False'.
187
188 @return flag indicating a tty
189 @rtype bool
190 """
191 return False
192
193 @property
194 def encoding(self):
195 """
196 Public method to report the used encoding.
197
198 @return used encoding
199 @rtype str
200 """
201 return Preferences.getSystem("IOEncoding")
202
181 203
182 class UserInterfaceSide(enum.Enum): 204 class UserInterfaceSide(enum.Enum):
183 """ 205 """
184 Class defining the supported sides of the user interface. 206 Class defining the supported sides of the user interface.
185 """ 207 """
213 mainPasswordChanged = pyqtSignal(str, str) 235 mainPasswordChanged = pyqtSignal(str, str)
214 onlineStateChanged = pyqtSignal(bool) 236 onlineStateChanged = pyqtSignal(bool)
215 237
216 maxFilePathLen = 100 238 maxFilePathLen = 100
217 maxMenuFilePathLen = 75 239 maxMenuFilePathLen = 75
240
241 # TODO: change this to 'True' for official releases
242 ReleaseMode = False
218 243
219 ErrorLogFileName = "eric7_error.log" 244 ErrorLogFileName = "eric7_error.log"
220 245
221 def __init__( 246 def __init__(
222 self, 247 self,
311 336
312 # load the view profiles 337 # load the view profiles
313 self.profiles = Preferences.getUI("ViewProfiles") 338 self.profiles = Preferences.getUI("ViewProfiles")
314 339
315 splash.showMessage(self.tr("Initializing Basic Services...")) 340 splash.showMessage(self.tr("Initializing Basic Services..."))
341 logging.getLogger(__name__).debug("Initializing Basic Services...")
342
343 # Generate the redirection helpers
344 self.stdout = Redirector(False, self)
345 self.stdout.appendStdout.connect(self.appendToStdout)
346 self.stderr = Redirector(True, self)
347 self.stderr.appendStderr.connect(self.appendToStderr)
348 # Redirect sys.stdout and/or sys.stderr if those are None
349 if sys.stdout is None or UserInterface.ReleaseMode:
350 sys.stdout = self.stdout
351 if sys.stderr is None or UserInterface.ReleaseMode:
352 sys.stderr = self.stderr
353
354 # create the remote server interface
355 logging.getLogger(__name__).debug("Creating 'eric-ide' Server Interface...")
356 self.__ericServerInterface = EricServerInterface(self)
357 # register it early because it is needed very soon
358 ericApp().registerObject("EricServer", self.__ericServerInterface)
316 359
317 # Generate the conda interface 360 # Generate the conda interface
318 logging.debug("Creating Conda Interface...") 361 logging.getLogger(__name__).debug("Creating Conda Interface...")
319 self.condaInterface = Conda(self) 362 self.condaInterface = Conda(self)
363 # register it early because it is needed very soon
320 ericApp().registerObject("Conda", self.condaInterface) 364 ericApp().registerObject("Conda", self.condaInterface)
321 365
322 # Generate the pip interface 366 # Generate the pip interface
323 logging.debug("Creating Pip Interface...") 367 logging.getLogger(__name__).debug("Creating Pip Interface...")
324 self.pipInterface = Pip(self) 368 self.pipInterface = Pip(self)
369 # register it early because it is needed very soon
325 ericApp().registerObject("Pip", self.pipInterface) 370 ericApp().registerObject("Pip", self.pipInterface)
326 371
327 # Generate the virtual environment manager 372 # Generate the virtual environment manager
328 logging.debug("Creating Virtual Environments Manager...") 373 logging.getLogger(__name__).debug("Creating Virtual Environments Manager...")
329 self.virtualenvManager = VirtualenvManager(self) 374 self.virtualenvManager = VirtualenvManager(self)
330 # register it early because it is needed very soon 375 # register it early because it is needed very soon
331 ericApp().registerObject("VirtualEnvManager", self.virtualenvManager) 376 ericApp().registerObject("VirtualEnvManager", self.virtualenvManager)
332 377
333 # Generate an empty project object and multi project object 378 # Generate an empty project object
334 logging.debug("Creating Project Manager...") 379 logging.getLogger(__name__).debug("Creating Project Manager...")
335 self.project = Project(self) 380 self.project = Project(self, remoteServer=self.__ericServerInterface)
336 ericApp().registerObject("Project", self.project) 381 ericApp().registerObject("Project", self.project)
337 382
338 logging.debug("Creating Multi-Project Manager...") 383 # Generate the multi project object
384 logging.getLogger(__name__).debug("Creating Multi-Project Manager...")
339 self.multiProject = MultiProject(self.project, self) 385 self.multiProject = MultiProject(self.project, self)
340 386
341 # Generate the debug server object 387 # Generate the debug server object
342 logging.debug("Creating Debug Server...") 388 logging.getLogger(__name__).debug("Creating Debug Server...")
343 self.__debugServer = DebugServer( 389 self.__debugServer = DebugServer(
344 self.__originalPathString, project=self.project, parent=self 390 self.__originalPathString, project=self.project, parent=self
345 ) 391 )
346 392
347 # Create the background service object 393 # Create the background service object
394 logging.getLogger(__name__).debug("Creating Background Service...")
348 self.backgroundService = BackgroundService(self) 395 self.backgroundService = BackgroundService(self)
349 396
350 splash.showMessage(self.tr("Initializing Plugin Manager...")) 397 splash.showMessage(self.tr("Initializing Plugin Manager..."))
351 398 logging.getLogger(__name__).debug("Initializing Plugin Manager...")
352 # Initialize the Plugin Manager (Plugins are initialized later 399
400 # Initialize the Plugin Manager (Plugins are initialized later)
353 self.pluginManager = PluginManager( 401 self.pluginManager = PluginManager(
354 self, self.__disabledPlugins, develPlugin=plugin 402 self, self.__disabledPlugins, develPlugin=plugin
355 ) 403 )
356 404
357 splash.showMessage(self.tr("Generating Main User Interface...")) 405 splash.showMessage(self.tr("Generating Main User Interface..."))
406 logging.getLogger(__name__).debug("Generating Main User Interface...")
358 407
359 self.__webBrowserProcess = None 408 self.__webBrowserProcess = None
360 self.__webBrowserClient = None 409 self.__webBrowserClient = None
361 self.__webBrowserSAName = QUuid.createUuid().toString()[1:-1] 410 self.__webBrowserSAName = QUuid.createUuid().toString()[1:-1]
362 411
374 pel = SpellChecker.getUserDictionaryPath(isException=True) 423 pel = SpellChecker.getUserDictionaryPath(isException=True)
375 SpellCheckMixin.setDefaultLanguage( 424 SpellCheckMixin.setDefaultLanguage(
376 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel 425 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel
377 ) 426 )
378 427
379 logging.debug("Creating Application Objects...") 428 logging.getLogger(__name__).debug("Creating Application Objects...")
380 self.__createObjects() 429 self.__createObjects()
381 430
382 # Create the main window now so that we can connect QActions to it. 431 # Create the main window now so that we can connect QActions to it.
383 logging.debug("Creating Layout...") 432 logging.getLogger(__name__).debug("Creating Layout...")
384 self.__createLayout() 433 self.__createLayout()
385 self.__currentRightWidget = None 434 self.__currentRightWidget = None
386 self.__currentBottomWidget = None 435 self.__currentBottomWidget = None
387 436
388 # Generate the debugger part of the ui 437 # Generate the debugger part of the ui
389 logging.debug("Creating Debugger UI...") 438 logging.getLogger(__name__).debug("Creating Debugger UI...")
390 self.debuggerUI = DebugUI( 439 self.debuggerUI = DebugUI(
391 self, self.viewmanager, self.__debugServer, self.debugViewer, self.project 440 self, self.viewmanager, self.__debugServer, self.debugViewer, self.project
392 ) 441 )
393 self.debugViewer.setDebugger(self.debuggerUI) 442 self.debugViewer.setDebugger(self.debuggerUI)
394 self.shell.setDebuggerUI(self.debuggerUI) 443 self.shell.setDebuggerUI(self.debuggerUI)
395
396 # Generate the redirection helpers
397 self.stdout = Redirector(False, self)
398 self.stderr = Redirector(True, self)
399 444
400 # set a few dialog members for non-modal dialogs created on demand 445 # set a few dialog members for non-modal dialogs created on demand
401 self.programsDialog = None 446 self.programsDialog = None
402 self.shortcutsDialog = None 447 self.shortcutsDialog = None
403 self.__testingWidget = None 448 self.__testingWidget = None
411 self.__versionsDialog = None 456 self.__versionsDialog = None
412 self.__configurationDialog = None 457 self.__configurationDialog = None
413 458
414 # now setup the connections 459 # now setup the connections
415 splash.showMessage(self.tr("Setting up signal/slot-connections...")) 460 splash.showMessage(self.tr("Setting up signal/slot-connections..."))
461 logging.getLogger(__name__).debug(
462 self.tr("Setting up signal/slot-connections...")
463 )
416 464
417 self.debugViewer.exceptionLogger.sourceFile.connect( 465 self.debugViewer.exceptionLogger.sourceFile.connect(
418 self.viewmanager.openSourceFile 466 self.viewmanager.openSourceFile
419 ) 467 )
420 468
492 self.debugViewer.disassemblyViewer.showDisassembly 540 self.debugViewer.disassemblyViewer.showDisassembly
493 ) 541 )
494 self.__debugServer.clientProcessStdout.connect(self.appendToStdout) 542 self.__debugServer.clientProcessStdout.connect(self.appendToStdout)
495 self.__debugServer.clientProcessStderr.connect(self.appendToStderr) 543 self.__debugServer.clientProcessStderr.connect(self.appendToStderr)
496 self.__debugServer.appendStdout.connect(self.appendToStdout) 544 self.__debugServer.appendStdout.connect(self.appendToStdout)
497
498 self.stdout.appendStdout.connect(self.appendToStdout)
499 self.stderr.appendStderr.connect(self.appendToStderr)
500 545
501 self.preferencesChanged.connect(self.viewmanager.preferencesChanged) 546 self.preferencesChanged.connect(self.viewmanager.preferencesChanged)
502 self.reloadAPIs.connect(self.viewmanager.getAPIsManager().reloadAPIs) 547 self.reloadAPIs.connect(self.viewmanager.getAPIsManager().reloadAPIs)
503 self.preferencesChanged.connect(self.logViewer.preferencesChanged) 548 self.preferencesChanged.connect(self.logViewer.preferencesChanged)
504 self.appendStdout.connect(self.logViewer.appendToStdout) 549 self.appendStdout.connect(self.logViewer.appendToStdout)
597 if self.microPythonWidget is not None: 642 if self.microPythonWidget is not None:
598 self.microPythonWidget.aboutToDisconnect.connect( 643 self.microPythonWidget.aboutToDisconnect.connect(
599 self.viewmanager.closeDeviceEditors 644 self.viewmanager.closeDeviceEditors
600 ) 645 )
601 646
647 self.__ericServerInterface.connectionStateChanged.connect(
648 self.project.remoteConnectionChanged
649 )
650 self.__ericServerInterface.connectionStateChanged.connect(
651 self.viewmanager.remoteConnectionChanged
652 )
653 self.__ericServerInterface.connectionStateChanged.connect(
654 self.shell.remoteConnectionChanged
655 )
656
657 self.__ericServerInterface.aboutToDisconnect.connect(self.project.closeProject)
658 self.__ericServerInterface.aboutToDisconnect.connect(
659 self.viewmanager.closeRemoteEditors
660 )
661
602 # create the toolbar manager object 662 # create the toolbar manager object
603 self.toolbarManager = EricToolBarManager(self, self) 663 self.toolbarManager = EricToolBarManager(self, self)
604 self.toolbarManager.setMainWindow(self) 664 self.toolbarManager.setMainWindow(self)
605 self.preferencesChanged.connect(self.toolbarManager.preferencesChanged) 665 self.preferencesChanged.connect(self.toolbarManager.preferencesChanged)
606 666
607 # Initialize the tool groups and list of started tools 667 # Initialize the tool groups and list of started tools
608 splash.showMessage(self.tr("Initializing Tools...")) 668 splash.showMessage(self.tr("Initializing Tools..."))
669 logging.getLogger(__name__).debug("Initializing Tools...")
609 self.toolGroups, self.currentToolGroup = Preferences.readToolGroups() 670 self.toolGroups, self.currentToolGroup = Preferences.readToolGroups()
610 self.toolProcs = [] 671 self.toolProcs = []
611 self.__initExternalToolsActions() 672 self.__initExternalToolsActions()
612 673
613 # redirect handling of http, https and file URLs to ourselves 674 # redirect handling of http, https and file URLs to ourselves
615 QDesktopServices.setUrlHandler("http", self.handleUrl) 676 QDesktopServices.setUrlHandler("http", self.handleUrl)
616 QDesktopServices.setUrlHandler("https", self.handleUrl) 677 QDesktopServices.setUrlHandler("https", self.handleUrl)
617 678
618 # register all relevant objects 679 # register all relevant objects
619 splash.showMessage(self.tr("Registering Objects...")) 680 splash.showMessage(self.tr("Registering Objects..."))
681 logging.getLogger(__name__).debug("Registering Objects...")
620 ericApp().registerObject("UserInterface", self) 682 ericApp().registerObject("UserInterface", self)
621 ericApp().registerObject("DebugUI", self.debuggerUI) 683 ericApp().registerObject("DebugUI", self.debuggerUI)
622 ericApp().registerObject("DebugServer", self.__debugServer) 684 ericApp().registerObject("DebugServer", self.__debugServer)
623 ericApp().registerObject("BackgroundService", self.backgroundService) 685 ericApp().registerObject("BackgroundService", self.backgroundService)
624 ericApp().registerObject("ViewManager", self.viewmanager) 686 ericApp().registerObject("ViewManager", self.viewmanager)
649 self.__sessionFile = SessionFile(True) 711 self.__sessionFile = SessionFile(True)
650 self.__tasksFile = TasksFile(True) 712 self.__tasksFile = TasksFile(True)
651 713
652 # Initialize the actions, menus, toolbars and statusbar 714 # Initialize the actions, menus, toolbars and statusbar
653 splash.showMessage(self.tr("Initializing Actions...")) 715 splash.showMessage(self.tr("Initializing Actions..."))
716 logging.getLogger(__name__).debug("Initializing Actions...")
654 self.__initActions() 717 self.__initActions()
655 splash.showMessage(self.tr("Initializing Menus...")) 718 splash.showMessage(self.tr("Initializing Menus..."))
719 logging.getLogger(__name__).debug("Initializing Menus...")
656 self.__initMenus() 720 self.__initMenus()
657 splash.showMessage(self.tr("Initializing Toolbars...")) 721 splash.showMessage(self.tr("Initializing Toolbars..."))
722 logging.getLogger(__name__).debug("Initializing Toolbars...")
658 self.__initToolbars() 723 self.__initToolbars()
659 splash.showMessage(self.tr("Initializing Statusbar...")) 724 splash.showMessage(self.tr("Initializing Statusbar..."))
725 logging.getLogger(__name__).debug("Initializing Statusbar...")
660 self.__initStatusbar() 726 self.__initStatusbar()
661 727
662 # connect the appFocusChanged signal after all actions are ready 728 # connect the appFocusChanged signal after all actions are ready
663 app.focusChanged.connect(self.viewmanager.appFocusChanged) 729 app.focusChanged.connect(self.viewmanager.appFocusChanged)
664 730
674 self.currentProfile = None 740 self.currentProfile = None
675 741
676 self.shutdownCalled = False 742 self.shutdownCalled = False
677 self.inCloseEvent = False 743 self.inCloseEvent = False
678 744
679 # now redirect stdout and stderr
680 # TODO: release - reenable redirection
681 ##sys.stdout = self.stdout # __IGNORE_WARNING_M891__
682 ##sys.stderr = self.stderr # __IGNORE_WARNING_M891__
683
684 # now fire up the single application server 745 # now fire up the single application server
685 if Preferences.getUI("SingleApplicationMode"): 746 if Preferences.getUI("SingleApplicationMode"):
686 splash.showMessage(self.tr("Initializing Single Application Server...")) 747 splash.showMessage(self.tr("Initializing Single Application Server..."))
748 logging.getLogger(__name__).debug(
749 self.tr("Initializing Single Application Server...")
750 )
687 self.SAServer = EricSingleApplicationServer() 751 self.SAServer = EricSingleApplicationServer()
688 else: 752 else:
689 self.SAServer = None 753 self.SAServer = None
690 754
691 # now finalize the plugin manager setup 755 # now finalize the plugin manager setup
692 splash.showMessage(self.tr("Initializing Plugins...")) 756 splash.showMessage(self.tr("Initializing Plugins..."))
757 logging.getLogger(__name__).debug("Initializing Plugins...")
693 self.pluginManager.finalizeSetup() 758 self.pluginManager.finalizeSetup()
694 # now activate plugins having autoload set to True 759 # now activate plugins having autoload set to True
695 splash.showMessage(self.tr("Activating Plugins...")) 760 splash.showMessage(self.tr("Activating Plugins..."))
761 logging.getLogger(__name__).debug("Activating Plugins...")
696 self.pluginManager.activatePlugins() 762 self.pluginManager.activatePlugins()
697 splash.showMessage(self.tr("Generating Plugins Toolbars...")) 763 splash.showMessage(self.tr("Generating Plugins Toolbars..."))
764 logging.getLogger(__name__).debug("Generating Plugins Toolbars...")
698 self.pluginManager.initPluginToolbars(self.toolbarManager) 765 self.pluginManager.initPluginToolbars(self.toolbarManager)
699 if Preferences.getPluginManager("StartupCleanup"): 766 if Preferences.getPluginManager("StartupCleanup"):
700 splash.showMessage(self.tr("Cleaning Plugins Download Area...")) 767 splash.showMessage(self.tr("Cleaning Plugins Download Area..."))
768 logging.getLogger(__name__).debug("Cleaning Plugins Download Area...")
701 PluginRepositoryDownloadCleanup(quiet=True) 769 PluginRepositoryDownloadCleanup(quiet=True)
702 770
703 if self.__findFileWidget: 771 if self.__findFileWidget:
704 self.__findFileWidget.populateFileCategories() 772 self.__findFileWidget.populateFileCategories()
705 773
706 # now read the keyboard shortcuts for all the actions 774 # now read the keyboard shortcuts for all the actions
707 Shortcuts.readShortcuts() 775 Shortcuts.readShortcuts()
708 776
709 # restore toolbar manager state 777 # restore toolbar manager state
710 splash.showMessage(self.tr("Restoring Toolbarmanager...")) 778 splash.showMessage(self.tr("Restoring Toolbarmanager..."))
779 logging.getLogger(__name__).debug("Restoring Toolbarmanager...")
711 self.toolbarManager.restoreState(Preferences.getUI("ToolbarManagerState")) 780 self.toolbarManager.restoreState(Preferences.getUI("ToolbarManagerState"))
712 781
713 if self.codeDocumentationViewer is not None: 782 if self.codeDocumentationViewer is not None:
714 # finalize the initialization of the code documentation viewer 783 # finalize the initialization of the code documentation viewer
715 self.codeDocumentationViewer.finalizeSetup() 784 self.codeDocumentationViewer.finalizeSetup()
716 785
717 # now activate the initial view profile 786 # now activate the initial view profile
718 splash.showMessage(self.tr("Setting View Profile...")) 787 splash.showMessage(self.tr("Setting View Profile..."))
788 logging.getLogger(__name__).debug("Setting View Profile...")
719 self.__setEditProfile() 789 self.__setEditProfile()
720 790
721 # special treatment for the VCS toolbars 791 # special treatment for the VCS toolbars
722 for tb in self.getToolbarsByCategory("vcs"): 792 for tb in self.getToolbarsByCategory("vcs"):
723 tb.setVisible(False) 793 tb.setVisible(False)
727 if Preferences.getVCS("ShowVcsToolbar"): 797 if Preferences.getVCS("ShowVcsToolbar"):
728 tb.setVisible(True) 798 tb.setVisible(True)
729 799
730 # now read the saved tasks 800 # now read the saved tasks
731 splash.showMessage(self.tr("Reading Tasks...")) 801 splash.showMessage(self.tr("Reading Tasks..."))
802 logging.getLogger(__name__).debug("Reading Tasks...")
732 self.__readTasks() 803 self.__readTasks()
733 804
734 if self.templateViewer is not None: 805 if self.templateViewer is not None:
735 # now read the saved templates 806 # now read the saved templates
736 splash.showMessage(self.tr("Reading Templates...")) 807 splash.showMessage(self.tr("Reading Templates..."))
808 logging.getLogger(__name__).debug("Reading Templates...")
737 self.templateViewer.readTemplates() 809 self.templateViewer.readTemplates()
738 810
739 # now start the debug client with the most recently used virtual 811 # now start the debug client with the most recently used virtual
740 # environment 812 # environment
741 splash.showMessage(self.tr("Starting Debugger...")) 813 splash.showMessage(self.tr("Starting Debugger..."))
814 logging.getLogger(__name__).debug("Starting Debugger...")
742 if Preferences.getShell("StartWithMostRecentlyUsedEnvironment"): 815 if Preferences.getShell("StartWithMostRecentlyUsedEnvironment"):
743 venvName = Preferences.getShell("LastVirtualEnvironment") 816 venvName = Preferences.getShell("LastVirtualEnvironment")
744 if venvName == "embedded environment": 817 if venvName == "embedded environment":
745 venvName = "" 818 venvName = ""
746 self.__debugServer.startClient(False, venvName=venvName) 819 self.__debugServer.startClient(False, venvName=venvName)
800 from .Previewer import Previewer 873 from .Previewer import Previewer
801 from .PythonAstViewer import PythonAstViewer 874 from .PythonAstViewer import PythonAstViewer
802 from .PythonDisViewer import PythonDisViewer 875 from .PythonDisViewer import PythonDisViewer
803 876
804 # Create the view manager depending on the configuration setting 877 # Create the view manager depending on the configuration setting
805 logging.debug("Creating Viewmanager...") 878 logging.getLogger(__name__).debug("Creating Viewmanager...")
806 self.viewmanager = ViewManager.factory( 879 self.viewmanager = ViewManager.factory(
807 self, self.__debugServer, self.pluginManager 880 self, self.__debugServer, self.__ericServerInterface, self.pluginManager
808 ) 881 )
809 882
810 # Create previewer 883 # Create previewer
811 logging.debug("Creating Previewer...") 884 logging.getLogger(__name__).debug("Creating Previewer...")
812 self.__previewer = Previewer(self.viewmanager) 885 self.__previewer = Previewer(self.viewmanager)
813 886
814 # Create AST viewer 887 # Create AST viewer
815 logging.debug("Creating Python AST Viewer") 888 logging.getLogger(__name__).debug("Creating Python AST Viewer")
816 self.__astViewer = PythonAstViewer(self.viewmanager) 889 self.__astViewer = PythonAstViewer(self.viewmanager)
817 890
818 # Create DIS viewer 891 # Create DIS viewer
819 logging.debug("Creating Python Disassembly Viewer") 892 logging.getLogger(__name__).debug("Creating Python Disassembly Viewer")
820 self.__disViewer = PythonDisViewer(self.viewmanager) 893 self.__disViewer = PythonDisViewer(self.viewmanager)
821 894
822 # Create the project browser 895 # Create the project browser
823 logging.debug("Creating Project Browser...") 896 logging.getLogger(__name__).debug("Creating Project Browser...")
824 self.projectBrowser = ProjectBrowser(self.project) 897 self.projectBrowser = ProjectBrowser(self.project)
825 898
826 # Create the multi project browser 899 # Create the multi project browser
827 logging.debug("Creating Multiproject Browser...") 900 logging.getLogger(__name__).debug("Creating Multi Project Browser...")
828 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject, self.project) 901 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject, self.project)
829 902
830 # Create the task viewer part of the user interface 903 # Create the task viewer part of the user interface
831 logging.debug("Creating Task Viewer...") 904 logging.getLogger(__name__).debug("Creating Task Viewer...")
832 self.taskViewer = TaskViewer(None, self.project) 905 self.taskViewer = TaskViewer(None, self.project)
833 906
834 # Create the log viewer part of the user interface 907 # Create the log viewer part of the user interface
835 logging.debug("Creating Log Viewer...") 908 logging.getLogger(__name__).debug("Creating Log Viewer...")
836 self.logViewer = LogViewer(self) 909 self.logViewer = LogViewer(self)
837 910
838 # Create the debug viewer 911 # Create the debug viewer
839 logging.debug("Creating Debug Viewer...") 912 logging.getLogger(__name__).debug("Creating Debug Viewer...")
840 self.debugViewer = DebugViewer(self.__debugServer) 913 self.debugViewer = DebugViewer(self.__debugServer)
841 914
842 # Create the shell 915 # Create the shell
843 logging.debug("Creating Shell...") 916 logging.getLogger(__name__).debug("Creating Shell...")
844 self.shellAssembly = ShellAssembly( 917 self.shellAssembly = ShellAssembly(
845 self.__debugServer, self.viewmanager, self.project, True 918 self.__debugServer, self.viewmanager, self.project, True
846 ) 919 )
847 self.shell = self.shellAssembly.shell() 920 self.shell = self.shellAssembly.shell()
848 921
849 if Preferences.getUI("ShowTemplateViewer"): 922 if Preferences.getUI("ShowTemplateViewer"):
850 # Create the template viewer part of the user interface 923 # Create the template viewer part of the user interface
851 logging.debug("Creating Template Viewer...") 924 logging.getLogger(__name__).debug("Creating Template Viewer...")
852 from eric7.Templates.TemplateViewer import TemplateViewer # noqa: I101 925 from eric7.Templates.TemplateViewer import TemplateViewer # noqa: I101
853 926
854 self.templateViewer = TemplateViewer(None, self.viewmanager) 927 self.templateViewer = TemplateViewer(None, self.viewmanager)
855 else: 928 else:
856 logging.debug("Template Viewer disabled") 929 logging.getLogger(__name__).debug("Template Viewer disabled")
857 self.templateViewer = None 930 self.templateViewer = None
858 931
859 if Preferences.getUI("ShowFileBrowser"): 932 if Preferences.getUI("ShowFileBrowser"):
860 # Create the file browser 933 # Create the file browser
861 logging.debug("Creating File Browser...") 934 logging.getLogger(__name__).debug("Creating File Browser...")
862 from .Browser import Browser # noqa: I101 935 from .Browser import Browser # noqa: I101
863 936
864 self.browser = Browser() 937 self.browser = Browser(self.__ericServerInterface)
865 else: 938 else:
866 logging.debug("File Browser disabled") 939 logging.getLogger(__name__).debug("File Browser disabled")
867 self.browser = None 940 self.browser = None
868 941
869 if Preferences.getUI("ShowSymbolsViewer"): 942 if Preferences.getUI("ShowSymbolsViewer"):
870 # Create the symbols viewer 943 # Create the symbols viewer
871 logging.debug("Creating Symbols Viewer...") 944 logging.getLogger(__name__).debug("Creating Symbols Viewer...")
872 from .SymbolsWidget import SymbolsWidget # noqa: I101 945 from .SymbolsWidget import SymbolsWidget # noqa: I101
873 946
874 self.symbolsViewer = SymbolsWidget() 947 self.symbolsViewer = SymbolsWidget()
875 else: 948 else:
876 logging.debug("Symbols Viewer disabled") 949 logging.getLogger(__name__).debug("Symbols Viewer disabled")
877 self.symbolsViewer = None 950 self.symbolsViewer = None
878 951
879 if Preferences.getUI("ShowCodeDocumentationViewer"): 952 if Preferences.getUI("ShowCodeDocumentationViewer"):
880 # Create the code documentation viewer 953 # Create the code documentation viewer
881 logging.debug("Creating Code Documentation Viewer...") 954 logging.getLogger(__name__).debug("Creating Code Documentation Viewer...")
882 from .CodeDocumentationViewer import CodeDocumentationViewer # noqa: I101 955 from .CodeDocumentationViewer import CodeDocumentationViewer # noqa: I101
883 956
884 self.codeDocumentationViewer = CodeDocumentationViewer(self) 957 self.codeDocumentationViewer = CodeDocumentationViewer(self)
885 else: 958 else:
886 logging.debug("Code Documentation Viewer disabled") 959 logging.getLogger(__name__).debug("Code Documentation Viewer disabled")
887 self.codeDocumentationViewer = None 960 self.codeDocumentationViewer = None
888 961
889 if Preferences.getUI("ShowPyPIPackageManager"): 962 if Preferences.getUI("ShowPyPIPackageManager"):
890 # Create the PyPI package manager 963 # Create the PyPI package manager
891 logging.debug("Creating PyPI Package Manager...") 964 logging.getLogger(__name__).debug("Creating PyPI Package Manager...")
892 from eric7.PipInterface.PipPackagesWidget import ( # noqa: I101 965 from eric7.PipInterface.PipPackagesWidget import ( # noqa: I101
893 PipPackagesWidget, 966 PipPackagesWidget,
894 ) 967 )
895 968
896 self.pipWidget = PipPackagesWidget(self.pipInterface) 969 self.pipWidget = PipPackagesWidget(self.pipInterface)
897 else: 970 else:
898 logging.debug("PyPI Package Manager disabled") 971 logging.getLogger(__name__).debug("PyPI Package Manager disabled")
899 self.pipWidget = None 972 self.pipWidget = None
900 973
901 if Preferences.getUI("ShowCondaPackageManager"): 974 if Preferences.getUI("ShowCondaPackageManager"):
902 # Create the conda package manager 975 # Create the conda package manager
903 logging.debug("Creating Conda Package Manager...") 976 logging.getLogger(__name__).debug("Creating Conda Package Manager...")
904 from eric7.CondaInterface.CondaPackagesWidget import ( # noqa: I101 977 from eric7.CondaInterface.CondaPackagesWidget import ( # noqa: I101
905 CondaPackagesWidget, 978 CondaPackagesWidget,
906 ) 979 )
907 980
908 self.condaWidget = CondaPackagesWidget(self.condaInterface) 981 self.condaWidget = CondaPackagesWidget(self.condaInterface)
909 else: 982 else:
910 logging.debug("Conda Package Manager disabled") 983 logging.getLogger(__name__).debug("Conda Package Manager disabled")
911 self.condaWidget = None 984 self.condaWidget = None
912 985
913 if Preferences.getUI("ShowCooperation"): 986 if Preferences.getUI("ShowCooperation"):
914 # Create the chat part of the user interface 987 # Create the chat part of the user interface
915 logging.debug("Creating Chat Widget...") 988 logging.getLogger(__name__).debug("Creating Chat Widget...")
916 from eric7.Cooperation.ChatWidget import ChatWidget # noqa: I101 989 from eric7.Cooperation.ChatWidget import ChatWidget # noqa: I101
917 990
918 self.cooperation = ChatWidget(self) 991 self.cooperation = ChatWidget(self)
919 else: 992 else:
920 logging.debug("Chat Widget disabled") 993 logging.getLogger(__name__).debug("Chat Widget disabled")
921 self.cooperation = None 994 self.cooperation = None
922 995
923 if Preferences.getUI("ShowIrc"): 996 if Preferences.getUI("ShowIrc"):
924 # Create the IRC part of the user interface 997 # Create the IRC part of the user interface
925 logging.debug("Creating IRC Widget...") 998 logging.getLogger(__name__).debug("Creating IRC Widget...")
926 from eric7.Network.IRC.IrcWidget import IrcWidget # noqa: I101 999 from eric7.Network.IRC.IrcWidget import IrcWidget # noqa: I101
927 1000
928 self.irc = IrcWidget(self) 1001 self.irc = IrcWidget(self)
929 else: 1002 else:
930 logging.debug("IRC Widget disabled") 1003 logging.getLogger(__name__).debug("IRC Widget disabled")
931 self.irc = None 1004 self.irc = None
932 1005
933 if Preferences.getUI("ShowMicroPython"): 1006 if Preferences.getUI("ShowMicroPython"):
934 # Create the MicroPython part of the user interface 1007 # Create the MicroPython part of the user interface
935 logging.debug("Creating MicroPython Widget...") 1008 logging.getLogger(__name__).debug("Creating MicroPython Widget...")
936 from eric7.MicroPython.MicroPythonWidget import ( # noqa: I101 1009 from eric7.MicroPython.MicroPythonWidget import ( # noqa: I101
937 MicroPythonWidget, 1010 MicroPythonWidget,
938 ) 1011 )
939 1012
940 self.microPythonWidget = MicroPythonWidget(self) 1013 self.microPythonWidget = MicroPythonWidget(self)
941 else: 1014 else:
942 logging.debug("MicroPython Widget disabled") 1015 logging.getLogger(__name__).debug("MicroPython Widget disabled")
943 self.microPythonWidget = None 1016 self.microPythonWidget = None
944 1017
945 if Preferences.getUI("ShowNumbersViewer"): 1018 if Preferences.getUI("ShowNumbersViewer"):
946 # Create the numbers viewer 1019 # Create the numbers viewer
947 logging.debug("Creating Numbers Viewer...") 1020 logging.getLogger(__name__).debug("Creating Numbers Viewer...")
948 from .NumbersWidget import NumbersWidget # noqa: I101 1021 from .NumbersWidget import NumbersWidget # noqa: I101
949 1022
950 self.numbersViewer = NumbersWidget() 1023 self.numbersViewer = NumbersWidget()
951 else: 1024 else:
952 logging.debug("Numbers Viewer disabled") 1025 logging.getLogger(__name__).debug("Numbers Viewer disabled")
953 self.numbersViewer = None 1026 self.numbersViewer = None
954 1027
955 # Create the Jedi Assistant 1028 # Create the Jedi Assistant
956 logging.debug("Creating Jedi Assistant...") 1029 logging.getLogger(__name__).debug("Creating Jedi Assistant...")
957 self.jediAssistant = AssistantJedi(self, self.viewmanager, self.project) 1030 self.jediAssistant = AssistantJedi(self, self.viewmanager, self.project)
958 1031
959 # Create the plug-ins repository viewer 1032 # Create the plug-ins repository viewer
1033 logging.getLogger(__name__).debug("Creating Plugin Repository Viewer...")
960 self.pluginRepositoryViewer = PluginRepositoryWidget( 1034 self.pluginRepositoryViewer = PluginRepositoryWidget(
961 self.pluginManager, integrated=True, parent=self 1035 self.pluginManager, integrated=True, parent=self
962 ) 1036 )
963 self.pluginRepositoryViewer.closeAndInstall.connect( 1037 self.pluginRepositoryViewer.closeAndInstall.connect(
964 self.__installDownloadedPlugins 1038 self.__installDownloadedPlugins
965 ) 1039 )
966 1040
967 # Create the virtual environments management widget 1041 # Create the virtual environments management widget
1042 logging.getLogger(__name__).debug("Creating Virtual Environments Viewer...")
968 self.__virtualenvManagerWidget = VirtualenvManagerWidget( 1043 self.__virtualenvManagerWidget = VirtualenvManagerWidget(
969 self.virtualenvManager, self 1044 self.virtualenvManager, self
970 ) 1045 )
971 1046
972 self.__findFileDialog = None 1047 self.__findFileDialog = None
973 self.__replaceFileDialog = None 1048 self.__replaceFileDialog = None
974 if Preferences.getUI("ShowFindFileWidget"): 1049 if Preferences.getUI("ShowFindFileWidget"):
975 # Create the find in files widget 1050 # Create the find in files widget
976 from .FindFileWidget import FindFileWidget # noqa: I101 1051 from .FindFileWidget import FindFileWidget # noqa: I101
977 1052
1053 logging.getLogger(__name__).debug("Creating Find/Replace Pane...")
978 self.__findFileWidget = FindFileWidget(self.project, self) 1054 self.__findFileWidget = FindFileWidget(self.project, self)
979 self.__findFileWidget.sourceFile.connect(self.viewmanager.openSourceFile) 1055 self.__findFileWidget.sourceFile.connect(self.viewmanager.openSourceFile)
980 self.__findFileWidget.designerFile.connect(self.__designer) 1056 self.__findFileWidget.designerFile.connect(self.__designer)
981 self.__findFileWidget.linguistFile.connect(self.__linguist) 1057 self.__findFileWidget.linguistFile.connect(self.__linguist)
982 self.__findFileWidget.trpreview.connect(self.__TRPreviewer) 1058 self.__findFileWidget.trpreview.connect(self.__TRPreviewer)
983 self.__findFileWidget.pixmapFile.connect(self.__showPixmap) 1059 self.__findFileWidget.pixmapFile.connect(self.__showPixmap)
984 self.__findFileWidget.svgFile.connect(self.__showSvg) 1060 self.__findFileWidget.svgFile.connect(self.__showSvg)
985 self.__findFileWidget.umlFile.connect(self.__showUml) 1061 self.__findFileWidget.umlFile.connect(self.__showUml)
986 else: 1062 else:
1063 logging.getLogger(__name__).debug("Find/Replace Pane disabled...")
987 self.__findFileWidget = None 1064 self.__findFileWidget = None
988 1065
989 self.__findLocationDialog = None 1066 self.__findLocationDialog = None
990 if Preferences.getUI("ShowFindLocationWidget"): 1067 if Preferences.getUI("ShowFindLocationWidget"):
991 # Create the find location (file) widget 1068 # Create the find location (file) widget
992 from .FindLocationWidget import FindLocationWidget # noqa: I101 1069 from .FindLocationWidget import FindLocationWidget # noqa: I101
993 1070
1071 logging.getLogger(__name__).debug("Creating Find File Pane...")
994 self.__findLocationWidget = FindLocationWidget(self.project, self) 1072 self.__findLocationWidget = FindLocationWidget(self.project, self)
995 self.__findLocationWidget.sourceFile.connect( 1073 self.__findLocationWidget.sourceFile.connect(
996 self.viewmanager.openSourceFile 1074 self.viewmanager.openSourceFile
997 ) 1075 )
998 self.__findLocationWidget.designerFile.connect(self.__designer) 1076 self.__findLocationWidget.designerFile.connect(self.__designer)
1000 self.__findLocationWidget.trpreview.connect(self.__TRPreviewer) 1078 self.__findLocationWidget.trpreview.connect(self.__TRPreviewer)
1001 self.__findLocationWidget.pixmapFile.connect(self.__showPixmap) 1079 self.__findLocationWidget.pixmapFile.connect(self.__showPixmap)
1002 self.__findLocationWidget.svgFile.connect(self.__showSvg) 1080 self.__findLocationWidget.svgFile.connect(self.__showSvg)
1003 self.__findLocationWidget.umlFile.connect(self.__showUml) 1081 self.__findLocationWidget.umlFile.connect(self.__showUml)
1004 else: 1082 else:
1083 logging.getLogger(__name__).debug("Find File Pane disabled...")
1005 self.__findLocationWidget = None 1084 self.__findLocationWidget = None
1006 1085
1007 # Create the VCS Status widget 1086 # Create the VCS Status widget
1087 logging.getLogger(__name__).debug("Creating VCS Status Viewer...")
1008 self.__vcsStatusWidget = StatusWidget(self.project, self.viewmanager, self) 1088 self.__vcsStatusWidget = StatusWidget(self.project, self.viewmanager, self)
1009 1089
1010 if ( 1090 if (
1011 Preferences.getUI("ShowInternalHelpViewer") 1091 Preferences.getUI("ShowInternalHelpViewer")
1012 or Preferences.getHelp("HelpViewerType") == 0 1092 or Preferences.getHelp("HelpViewerType") == 0
1013 ): 1093 ):
1014 # Create the embedded help viewer 1094 # Create the embedded help viewer
1015 logging.debug("Creating Internal Help Viewer...") 1095 logging.getLogger(__name__).debug("Creating Internal Help Viewer...")
1016 from eric7.HelpViewer.HelpViewerWidget import HelpViewerWidget # noqa: I101 1096 from eric7.HelpViewer.HelpViewerWidget import HelpViewerWidget # noqa: I101
1017 1097
1018 self.__helpViewerWidget = HelpViewerWidget(self) 1098 self.__helpViewerWidget = HelpViewerWidget(self)
1019 else: 1099 else:
1020 logging.debug("Internal Help Viewer disabled...") 1100 logging.getLogger(__name__).debug("Internal Help Viewer disabled...")
1021 self.__helpViewerWidget = None 1101 self.__helpViewerWidget = None
1022 1102
1023 def __createLayout(self): 1103 def __createLayout(self):
1024 """ 1104 """
1025 Private method to create the layout of the various windows. 1105 Private method to create the layout of the various windows.
1057 self.rightSidebar = None 1137 self.rightSidebar = None
1058 self.bottomSidebar = None 1138 self.bottomSidebar = None
1059 1139
1060 # Create layout with toolbox windows embedded in dock windows 1140 # Create layout with toolbox windows embedded in dock windows
1061 if self.__layoutType == "Toolboxes": 1141 if self.__layoutType == "Toolboxes":
1062 logging.debug("Creating toolboxes...") 1142 logging.getLogger(__name__).debug("Creating toolboxes...")
1063 self.__createToolboxesLayout() 1143 self.__createToolboxesLayout()
1064 1144
1065 # Create layout with sidebar windows embedded in dock windows 1145 # Create layout with sidebar windows embedded in dock windows
1066 elif self.__layoutType == "Sidebars": 1146 elif self.__layoutType == "Sidebars":
1067 logging.debug("Creating sidebars...") 1147 logging.getLogger(__name__).debug("Creating sidebars...")
1068 self.__createSidebarsLayout() 1148 self.__createSidebarsLayout()
1069 1149
1070 else: 1150 else:
1071 raise ValueError("Wrong layout type given ({0})".format(self.__layoutType)) 1151 raise ValueError("Wrong layout type given ({0})".format(self.__layoutType))
1072 logging.debug("Created Layout") 1152 logging.getLogger(__name__).debug("Created Layout")
1073 1153
1074 def __createToolboxesLayout(self): 1154 def __createToolboxesLayout(self):
1075 """ 1155 """
1076 Private method to create the Toolboxes layout. 1156 Private method to create the Toolboxes layout.
1077 """ 1157 """
1078 from eric7.EricWidgets.EricToolBox import ( 1158 from eric7.EricWidgets.EricToolBox import (
1079 EricHorizontalToolBox, 1159 EricHorizontalToolBox,
1080 EricVerticalToolBox, 1160 EricVerticalToolBox,
1081 ) 1161 )
1082 1162
1083 logging.debug("Creating Toolboxes Layout...") 1163 logging.getLogger(__name__).debug("Creating Toolboxes Layout...")
1084 1164
1085 # Create the left toolbox 1165 # Create the left toolbox
1086 self.lToolboxDock = self.__createDockWindow("lToolboxDock") 1166 self.lToolboxDock = self.__createDockWindow("lToolboxDock")
1087 self.lToolbox = EricVerticalToolBox(self.lToolboxDock) 1167 self.lToolbox = EricVerticalToolBox(self.lToolboxDock)
1088 self.__setupDockWindow( 1168 self.__setupDockWindow(
1206 self.tr("Virtual Environments"), 1286 self.tr("Virtual Environments"),
1207 ) 1287 )
1208 1288
1209 if self.pipWidget: 1289 if self.pipWidget:
1210 self.rToolbox.addItem( 1290 self.rToolbox.addItem(
1211 self.pipWidget, EricPixmapCache.getIcon("pypi"), self.tr("PyPI") 1291 self.pipWidget,
1292 EricPixmapCache.getIcon("pypi"),
1293 self.tr("PyPI Package Management"),
1212 ) 1294 )
1213 1295
1214 if self.condaWidget: 1296 if self.condaWidget:
1215 self.rToolbox.addItem( 1297 self.rToolbox.addItem(
1216 self.condaWidget, EricPixmapCache.getIcon("miniconda"), self.tr("Conda") 1298 self.condaWidget, EricPixmapCache.getIcon("miniconda"), self.tr("Conda")
1270 """ 1352 """
1271 Private method to create the Sidebars layout. 1353 Private method to create the Sidebars layout.
1272 """ 1354 """
1273 from eric7.EricWidgets.EricSideBar import EricSideBar, EricSideBarSide 1355 from eric7.EricWidgets.EricSideBar import EricSideBar, EricSideBarSide
1274 1356
1275 logging.debug("Creating Sidebars Layout...") 1357 logging.getLogger(__name__).debug("Creating Sidebars Layout...")
1276 1358
1277 # Create the left sidebar 1359 # Create the left sidebar
1278 self.leftSidebar = EricSideBar( 1360 self.leftSidebar = EricSideBar(
1279 EricSideBarSide.WEST, Preferences.getUI("IconBarSize") 1361 EricSideBarSide.WEST, Preferences.getUI("IconBarSize")
1280 ) 1362 )
1402 self.tr("Virtual Environments"), 1484 self.tr("Virtual Environments"),
1403 ) 1485 )
1404 1486
1405 if self.pipWidget: 1487 if self.pipWidget:
1406 sidebar.addTab( 1488 sidebar.addTab(
1407 self.pipWidget, EricPixmapCache.getIcon("sbPyPI96"), self.tr("PyPI") 1489 self.pipWidget,
1490 EricPixmapCache.getIcon("sbPyPI96"),
1491 self.tr("PyPI Package Management"),
1408 ) 1492 )
1409 1493
1410 if self.condaWidget: 1494 if self.condaWidget:
1411 sidebar.addTab( 1495 sidebar.addTab(
1412 self.condaWidget, 1496 self.condaWidget,
1469 else: 1553 else:
1470 self.rightSidebar.setCurrentIndex(0) 1554 self.rightSidebar.setCurrentIndex(0)
1471 self.bottomSidebar.setCurrentIndex(0) 1555 self.bottomSidebar.setCurrentIndex(0)
1472 1556
1473 # create the central widget 1557 # create the central widget
1474 logging.debug("Creating central widget...") 1558 logging.getLogger(__name__).debug("Creating central widget...")
1475 cw = self.centralWidget() # save the current central widget 1559 cw = self.centralWidget() # save the current central widget
1476 self.horizontalSplitter = QSplitter(Qt.Orientation.Horizontal) 1560 self.horizontalSplitter = QSplitter(Qt.Orientation.Horizontal)
1477 self.horizontalSplitter.setChildrenCollapsible(False) 1561 self.horizontalSplitter.setChildrenCollapsible(False)
1478 self.verticalSplitter = QSplitter(Qt.Orientation.Vertical) 1562 self.verticalSplitter = QSplitter(Qt.Orientation.Vertical)
1479 self.verticalSplitter.setChildrenCollapsible(False) 1563 self.verticalSplitter.setChildrenCollapsible(False)
2458 self.actions.append(self.codeDocumentationViewerActivateAct) 2542 self.actions.append(self.codeDocumentationViewerActivateAct)
2459 self.addAction(self.codeDocumentationViewerActivateAct) 2543 self.addAction(self.codeDocumentationViewerActivateAct)
2460 2544
2461 if self.pipWidget is not None: 2545 if self.pipWidget is not None:
2462 self.pipWidgetActivateAct = EricAction( 2546 self.pipWidgetActivateAct = EricAction(
2463 self.tr("PyPI"), 2547 self.tr("PyPI Package Management"),
2464 self.tr("PyPI"), 2548 self.tr("PyPI Package Management"),
2465 QKeySequence(self.tr("Ctrl+Alt+Shift+P")), 2549 QKeySequence(self.tr("Ctrl+Alt+Shift+P")),
2466 0, 2550 0,
2467 self, 2551 self,
2468 "pip_widget_activate", 2552 "pip_widget_activate",
2469 ) 2553 )
2470 self.pipWidgetActivateAct.setStatusTip( 2554 self.pipWidgetActivateAct.setStatusTip(
2471 self.tr("Switch the input focus to the PyPI window.") 2555 self.tr("Switch the input focus to the PyPI Package Management window.")
2472 ) 2556 )
2473 self.pipWidgetActivateAct.setWhatsThis( 2557 self.pipWidgetActivateAct.setWhatsThis(
2474 self.tr( 2558 self.tr(
2475 """<b>PyPI</b>""" 2559 """<b>PyPI</b>"""
2476 """<p>This switches the input focus to the PyPI window.</p>""" 2560 """<p>This switches the input focus to the PyPI window.</p>"""
3602 self.project.initActions() 3686 self.project.initActions()
3603 3687
3604 # initialize multi project actions 3688 # initialize multi project actions
3605 self.multiProject.initActions() 3689 self.multiProject.initActions()
3606 3690
3691 # initialize eric-ide server actions
3692 self.__ericServerInterface.initActions()
3693
3607 def __initQtDocActions(self): 3694 def __initQtDocActions(self):
3608 """ 3695 """
3609 Private slot to initialize the action to show the Qt documentation. 3696 Private slot to initialize the action to show the Qt documentation.
3610 """ 3697 """
3611 self.qt5DocAct = EricAction( 3698 self.qt5DocAct = EricAction(
3809 mb = self.menuBar() 3896 mb = self.menuBar()
3810 if ( 3897 if (
3811 OSUtilities.isLinuxPlatform() or OSUtilities.isFreeBsdPlatform() 3898 OSUtilities.isLinuxPlatform() or OSUtilities.isFreeBsdPlatform()
3812 ) and not Preferences.getUI("UseNativeMenuBar"): 3899 ) and not Preferences.getUI("UseNativeMenuBar"):
3813 mb.setNativeMenuBar(False) 3900 mb.setNativeMenuBar(False)
3901
3902 ##############################################################
3903 ## Remote Server menu
3904 ##############################################################
3905
3906 self.__menus["server"] = self.__ericServerInterface.initMenu()
3814 3907
3815 ############################################################## 3908 ##############################################################
3816 ## File menu 3909 ## File menu
3817 ############################################################## 3910 ##############################################################
3818 3911
3825 self.__menus["file"].addAction(self.restartAct) 3918 self.__menus["file"].addAction(self.restartAct)
3826 self.__menus["file"].addAction(self.exitAct) 3919 self.__menus["file"].addAction(self.exitAct)
3827 act = self.__menus["file"].actions()[0] 3920 act = self.__menus["file"].actions()[0]
3828 sep = self.__menus["file"].insertSeparator(act) 3921 sep = self.__menus["file"].insertSeparator(act)
3829 self.__menus["file"].insertAction(sep, self.newWindowAct) 3922 self.__menus["file"].insertAction(sep, self.newWindowAct)
3923 self.__menus["file"].insertSeparator(sep)
3924 self.__menus["file"].insertMenu(sep, self.__menus["server"])
3925 self.__menus["file"].insertSeparator(sep)
3830 self.__menus["file"].aboutToShow.connect(self.__showFileMenu) 3926 self.__menus["file"].aboutToShow.connect(self.__showFileMenu)
3831 3927
3832 ############################################################## 3928 ##############################################################
3833 ## Edit menu 3929 ## Edit menu
3834 ############################################################## 3930 ##############################################################
4123 spellingtb = self.viewmanager.initSpellingToolbar(self.toolbarManager) 4219 spellingtb = self.viewmanager.initSpellingToolbar(self.toolbarManager)
4124 settingstb = QToolBar(self.tr("Settings"), self) 4220 settingstb = QToolBar(self.tr("Settings"), self)
4125 helptb = QToolBar(self.tr("Help"), self) 4221 helptb = QToolBar(self.tr("Help"), self)
4126 profilestb = QToolBar(self.tr("Profiles"), self) 4222 profilestb = QToolBar(self.tr("Profiles"), self)
4127 pluginstb = QToolBar(self.tr("Plugins"), self) 4223 pluginstb = QToolBar(self.tr("Plugins"), self)
4224 servertb = self.__ericServerInterface.initToolbar(self.toolbarManager)
4128 4225
4129 toolstb.setObjectName("ToolsToolbar") 4226 toolstb.setObjectName("ToolsToolbar")
4130 testingtb.setObjectName("UnittestToolbar") 4227 testingtb.setObjectName("UnittestToolbar")
4131 settingstb.setObjectName("SettingsToolbar") 4228 settingstb.setObjectName("SettingsToolbar")
4132 helptb.setObjectName("HelpToolbar") 4229 helptb.setObjectName("HelpToolbar")
4226 pluginstb.addAction(self.pluginRepoAct) 4323 pluginstb.addAction(self.pluginRepoAct)
4227 self.toolbarManager.addToolBar(pluginstb, pluginstb.windowTitle()) 4324 self.toolbarManager.addToolBar(pluginstb, pluginstb.windowTitle())
4228 4325
4229 # add the various toolbars 4326 # add the various toolbars
4230 self.addToolBar(filetb) 4327 self.addToolBar(filetb)
4328 self.addToolBar(servertb)
4231 self.addToolBar(edittb) 4329 self.addToolBar(edittb)
4232 self.addToolBar(searchtb) 4330 self.addToolBar(searchtb)
4233 self.addToolBar(viewtb) 4331 self.addToolBar(viewtb)
4234 self.addToolBar(starttb) 4332 self.addToolBar(starttb)
4235 self.addToolBar(debugtb) 4333 self.addToolBar(debugtb)
4276 multiprojecttb, 4374 multiprojecttb,
4277 "", 4375 "",
4278 ] 4376 ]
4279 self.__toolbars["spelling"] = [spellingtb.windowTitle(), spellingtb, ""] 4377 self.__toolbars["spelling"] = [spellingtb.windowTitle(), spellingtb, ""]
4280 self.__toolbars["vcs"] = [vcstb.windowTitle(), vcstb, "vcs"] 4378 self.__toolbars["vcs"] = [vcstb.windowTitle(), vcstb, "vcs"]
4379 self.__toolbars["server"] = [servertb.windowTitle(), servertb, ""]
4281 4380
4282 def __initDebugToolbarsLayout(self): 4381 def __initDebugToolbarsLayout(self):
4283 """ 4382 """
4284 Private slot to initialize the toolbars layout for the debug profile. 4383 Private slot to initialize the toolbars layout for the debug profile.
4285 """ 4384 """
8364 ) 8463 )
8365 ): 8464 ):
8366 # daily, weekly, monthly 8465 # daily, weekly, monthly
8367 return 8466 return
8368 8467
8369 versionTuple = Globals.versionToTuple(VersionOnly) 8468 versionTuple = EricUtilities.versionToTuple(VersionOnly)
8370 availableVersions = self.pipInterface.getPackageVersions("eric-ide") 8469 availableVersions = self.pipInterface.getPackageVersions("eric-ide")
8371 newerVersionsTuple = [ 8470 newerVersionsTuple = [
8372 Globals.versionToTuple(v) 8471 EricUtilities.versionToTuple(v)
8373 for v in availableVersions 8472 for v in availableVersions
8374 if Globals.versionToTuple(v) > versionTuple 8473 if EricUtilities.versionToTuple(v) > versionTuple
8375 ] 8474 ]
8376 updateAvailable = bool(newerVersionsTuple) 8475 updateAvailable = bool(newerVersionsTuple)
8377 if updateAvailable: 8476 if updateAvailable:
8378 yes = EricMessageBox.yesNo( 8477 yes = EricMessageBox.yesNo(
8379 self, 8478 self,
8478 return True 8577 return True
8479 else: 8578 else:
8480 vers = VersionOnly.split("snapshot-")[1] 8579 vers = VersionOnly.split("snapshot-")[1]
8481 return vers > snapshot 8580 return vers > snapshot
8482 8581
8483 versionTuple = Globals.versionToTuple(VersionOnly) 8582 versionTuple = EricUtilities.versionToTuple(VersionOnly)
8484 if isinstance(required, str): 8583 if isinstance(required, str):
8485 required = Globals.versionToTuple(required) 8584 required = EricUtilities.versionToTuple(required)
8486 try: 8585 try:
8487 res = versionTuple > required 8586 res = versionTuple > required
8488 except TypeError: 8587 except TypeError:
8489 # some mismatching types, assume newer 8588 # some mismatching types, assume newer
8490 res = True 8589 res = True
8654 self.rToolboxDock.show() 8753 self.rToolboxDock.show()
8655 self.rToolbox.setCurrentWidget(self.__virtualenvManagerWidget) 8754 self.rToolbox.setCurrentWidget(self.__virtualenvManagerWidget)
8656 elif self.__layoutType == "Sidebars": 8755 elif self.__layoutType == "Sidebars":
8657 self.__activateLeftRightSidebarWidget(self.__virtualenvManagerWidget) 8756 self.__activateLeftRightSidebarWidget(self.__virtualenvManagerWidget)
8658 self.__virtualenvManagerWidget.setFocus(Qt.FocusReason.ActiveWindowFocusReason) 8757 self.__virtualenvManagerWidget.setFocus(Qt.FocusReason.ActiveWindowFocusReason)
8758
8759 ############################################################
8760 ## Interface to the eric-ide server interface
8761 ############################################################
8762
8763 def isEricServerConnected(self):
8764 """
8765 Public method to check, if a connection to an eric-ide server has been
8766 established.
8767
8768 @return flag indicating the interface connection state
8769 @rtype bool
8770 """
8771 # simply delegated to the eric-ide server interface object
8772 return self.__ericServerInterface.isServerConnected()

eric ide

mercurial