src/eric7/UI/UserInterface.py

branch
eric7
changeset 9482
a2bc06a54d9d
parent 9473
3f23dbf37dbe
child 9488
44d723e53988
equal deleted inserted replaced
9481:0b936ff1bbb9 9482:a2bc06a54d9d
16 import os 16 import os
17 import pathlib 17 import pathlib
18 import shutil 18 import shutil
19 import sys 19 import sys
20 20
21 from PyQt6 import sip
21 from PyQt6.Qsci import QSCINTILLA_VERSION_STR 22 from PyQt6.Qsci import QSCINTILLA_VERSION_STR
22 from PyQt6.QtCore import ( 23 from PyQt6.QtCore import (
23 PYQT_VERSION_STR, 24 PYQT_VERSION_STR,
24 QDate, 25 QDate,
25 QFile, 26 QFile,
51 QVBoxLayout, 52 QVBoxLayout,
52 QWhatsThis, 53 QWhatsThis,
53 QWidget, 54 QWidget,
54 ) 55 )
55 56
56 from eric7 import Globals, Preferences, Utilities 57 from eric7 import Globals, Preferences, Testing, Utilities
58 from eric7.CondaInterface.Conda import Conda
59 from eric7.Debugger.DebugServer import DebugServer
60 from eric7.Debugger.DebugUI import DebugUI
57 from eric7.EricGui import EricPixmapCache 61 from eric7.EricGui import EricPixmapCache
58 from eric7.EricGui.EricAction import EricAction, createActionGroup 62 from eric7.EricGui.EricAction import EricAction, createActionGroup
59 from eric7.EricNetwork.EricNetworkIcon import EricNetworkIcon 63 from eric7.EricNetwork.EricNetworkIcon import EricNetworkIcon
60 from eric7.EricNetwork.EricNetworkProxyFactory import ( 64 from eric7.EricNetwork.EricNetworkProxyFactory import (
61 EricNetworkProxyFactory, 65 EricNetworkProxyFactory,
66 from eric7.EricWidgets.EricClickableLabel import EricClickableLabel 70 from eric7.EricWidgets.EricClickableLabel import EricClickableLabel
67 from eric7.EricWidgets.EricMainWindow import EricMainWindow 71 from eric7.EricWidgets.EricMainWindow import EricMainWindow
68 from eric7.EricWidgets.EricSingleApplication import EricSingleApplicationServer 72 from eric7.EricWidgets.EricSingleApplication import EricSingleApplicationServer
69 from eric7.EricWidgets.EricToolBarManager import EricToolBarManager 73 from eric7.EricWidgets.EricToolBarManager import EricToolBarManager
70 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget 74 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget
75 from eric7.EricXML.SessionReader import SessionReader
76 from eric7.EricXML.TasksReader import TasksReader
71 from eric7.Globals import getConfig 77 from eric7.Globals import getConfig
78 from eric7.MultiProject.MultiProject import MultiProject
79 from eric7.PipInterface.Pip import Pip
80 from eric7.PluginManager.PluginManager import PluginManager
81 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryDownloadCleanup
82 from eric7.Preferences import Shortcuts
83 from eric7.Project.Project import Project
84 from eric7.QScintilla.SpellChecker import SpellChecker
72 from eric7.Sessions.SessionFile import SessionFile 85 from eric7.Sessions.SessionFile import SessionFile
73 from eric7.Tasks.TasksFile import TasksFile 86 from eric7.Tasks.TasksFile import TasksFile
87 from eric7.Testing.TestingWidget import clearSavedHistories
88 from eric7.Utilities.BackgroundService import BackgroundService
89 from eric7.VirtualEnv.VirtualenvManager import VirtualenvManager
74 90
75 from . import Config 91 from . import Config
76 from .Info import BugAddress, FeatureAddress, Program, Version, VersionOnly 92 from .Info import BugAddress, FeatureAddress, Program, Version, VersionOnly
77 from .NotificationWidget import NotificationTypes 93 from .NotificationWidget import NotificationTypes
78 94
279 295
280 splash.showMessage(self.tr("Initializing Basic Services...")) 296 splash.showMessage(self.tr("Initializing Basic Services..."))
281 297
282 # Generate the conda interface 298 # Generate the conda interface
283 logging.debug("Creating Conda Interface...") 299 logging.debug("Creating Conda Interface...")
284 from eric7.CondaInterface.Conda import Conda
285
286 self.condaInterface = Conda(self) 300 self.condaInterface = Conda(self)
287 ericApp().registerObject("Conda", self.condaInterface) 301 ericApp().registerObject("Conda", self.condaInterface)
288 302
289 # Generate the pip interface 303 # Generate the pip interface
290 logging.debug("Creating Pip Interface...") 304 logging.debug("Creating Pip Interface...")
291 from eric7.PipInterface.Pip import Pip
292
293 self.pipInterface = Pip(self) 305 self.pipInterface = Pip(self)
294 ericApp().registerObject("Pip", self.pipInterface) 306 ericApp().registerObject("Pip", self.pipInterface)
295 307
296 # Generate the virtual environment manager 308 # Generate the virtual environment manager
297 logging.debug("Creating Virtual Environments Manager...") 309 logging.debug("Creating Virtual Environments Manager...")
298 from eric7.VirtualEnv.VirtualenvManager import VirtualenvManager
299
300 self.virtualenvManager = VirtualenvManager(self) 310 self.virtualenvManager = VirtualenvManager(self)
301 # register it early because it is needed very soon 311 # register it early because it is needed very soon
302 ericApp().registerObject("VirtualEnvManager", self.virtualenvManager) 312 ericApp().registerObject("VirtualEnvManager", self.virtualenvManager)
303 313
304 # Generate an empty project object and multi project object 314 # Generate an empty project object and multi project object
305 logging.debug("Creating Project Manager...") 315 logging.debug("Creating Project Manager...")
306 from eric7.Project.Project import Project
307
308 self.project = Project(self) 316 self.project = Project(self)
309 ericApp().registerObject("Project", self.project) 317 ericApp().registerObject("Project", self.project)
310 318
311 from eric7.MultiProject.MultiProject import MultiProject
312
313 logging.debug("Creating Multi-Project Manager...") 319 logging.debug("Creating Multi-Project Manager...")
314 self.multiProject = MultiProject(self.project, self) 320 self.multiProject = MultiProject(self.project, self)
315 321
316 # Generate the debug server object 322 # Generate the debug server object
317 logging.debug("Creating Debug Server...") 323 logging.debug("Creating Debug Server...")
318 from eric7.Debugger.DebugServer import DebugServer
319
320 self.__debugServer = DebugServer( 324 self.__debugServer = DebugServer(
321 self.__originalPathString, project=self.project, parent=self 325 self.__originalPathString, project=self.project, parent=self
322 ) 326 )
323 327
324 # Create the background service object 328 # Create the background service object
325 from eric7.Utilities.BackgroundService import BackgroundService
326
327 self.backgroundService = BackgroundService(self) 329 self.backgroundService = BackgroundService(self)
328 330
329 splash.showMessage(self.tr("Initializing Plugin Manager...")) 331 splash.showMessage(self.tr("Initializing Plugin Manager..."))
330 332
331 # Initialize the Plugin Manager (Plugins are initialized later 333 # Initialize the Plugin Manager (Plugins are initialized later
332 from eric7.PluginManager.PluginManager import PluginManager
333
334 self.pluginManager = PluginManager( 334 self.pluginManager = PluginManager(
335 self, self.__disabledPlugins, develPlugin=plugin 335 self, self.__disabledPlugins, develPlugin=plugin
336 ) 336 )
337 337
338 splash.showMessage(self.tr("Generating Main User Interface...")) 338 splash.showMessage(self.tr("Generating Main User Interface..."))
340 self.__webBrowserProcess = None 340 self.__webBrowserProcess = None
341 self.__webBrowserClient = None 341 self.__webBrowserClient = None
342 self.__webBrowserSAName = QUuid.createUuid().toString()[1:-1] 342 self.__webBrowserSAName = QUuid.createUuid().toString()[1:-1]
343 343
344 # set spellchecker defaults 344 # set spellchecker defaults
345 from eric7.QScintilla.SpellChecker import SpellChecker
346
347 SpellChecker.setDefaultLanguage( 345 SpellChecker.setDefaultLanguage(
348 Preferences.getEditor("SpellCheckingDefaultLanguage") 346 Preferences.getEditor("SpellCheckingDefaultLanguage")
349 ) 347 )
350 348
351 with contextlib.suppress(ImportError, AttributeError): 349 with contextlib.suppress(ImportError, AttributeError):
352 from eric7.EricWidgets.EricSpellCheckedTextEdit import SpellCheckMixin 350 from eric7.EricWidgets.EricSpellCheckedTextEdit import ( # __IGNORE_WARNING__
351 SpellCheckMixin,
352 )
353 353
354 pwl = SpellChecker.getUserDictionaryPath(isException=False) 354 pwl = SpellChecker.getUserDictionaryPath(isException=False)
355 pel = SpellChecker.getUserDictionaryPath(isException=True) 355 pel = SpellChecker.getUserDictionaryPath(isException=True)
356 SpellCheckMixin.setDefaultLanguage( 356 SpellCheckMixin.setDefaultLanguage(
357 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel 357 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel
366 self.__currentRightWidget = None 366 self.__currentRightWidget = None
367 self.__currentBottomWidget = None 367 self.__currentBottomWidget = None
368 368
369 # Generate the debugger part of the ui 369 # Generate the debugger part of the ui
370 logging.debug("Creating Debugger UI...") 370 logging.debug("Creating Debugger UI...")
371 from eric7.Debugger.DebugUI import DebugUI
372
373 self.debuggerUI = DebugUI( 371 self.debuggerUI = DebugUI(
374 self, self.viewmanager, self.__debugServer, self.debugViewer, self.project 372 self, self.viewmanager, self.__debugServer, self.debugViewer, self.project
375 ) 373 )
376 self.debugViewer.setDebugger(self.debuggerUI) 374 self.debugViewer.setDebugger(self.debuggerUI)
377 self.shell.setDebuggerUI(self.debuggerUI) 375 self.shell.setDebuggerUI(self.debuggerUI)
744 self.pluginManager.activatePlugins() 742 self.pluginManager.activatePlugins()
745 splash.showMessage(self.tr("Generating Plugins Toolbars...")) 743 splash.showMessage(self.tr("Generating Plugins Toolbars..."))
746 self.pluginManager.initPluginToolbars(self.toolbarManager) 744 self.pluginManager.initPluginToolbars(self.toolbarManager)
747 if Preferences.getPluginManager("StartupCleanup"): 745 if Preferences.getPluginManager("StartupCleanup"):
748 splash.showMessage(self.tr("Cleaning Plugins Download Area...")) 746 splash.showMessage(self.tr("Cleaning Plugins Download Area..."))
749 from eric7.PluginManager.PluginRepositoryDialog import (
750 PluginRepositoryDownloadCleanup,
751 )
752
753 PluginRepositoryDownloadCleanup(quiet=True) 747 PluginRepositoryDownloadCleanup(quiet=True)
754 748
755 # now read the keyboard shortcuts for all the actions 749 # now read the keyboard shortcuts for all the actions
756 from eric7.Preferences import Shortcuts
757
758 Shortcuts.readShortcuts() 750 Shortcuts.readShortcuts()
759 751
760 # restore toolbar manager state 752 # restore toolbar manager state
761 splash.showMessage(self.tr("Restoring Toolbarmanager...")) 753 splash.showMessage(self.tr("Restoring Toolbarmanager..."))
762 self.toolbarManager.restoreState(Preferences.getUI("ToolbarManagerState")) 754 self.toolbarManager.restoreState(Preferences.getUI("ToolbarManagerState"))
833 825
834 def __createObjects(self): 826 def __createObjects(self):
835 """ 827 """
836 Private method to create the various application objects. 828 Private method to create the various application objects.
837 """ 829 """
830 from eric7 import ViewManager
831 from eric7.Debugger.DebugViewer import DebugViewer
832 from eric7.JediInterface.AssistantJedi import AssistantJedi
833 from eric7.MultiProject.MultiProjectBrowser import MultiProjectBrowser
834 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryWidget
835 from eric7.Project.ProjectBrowser import ProjectBrowser
836 from eric7.QScintilla.Shell import ShellAssembly
837 from eric7.Tasks.TaskViewer import TaskViewer
838 from eric7.VCS.StatusWidget import StatusWidget
839 from eric7.VirtualEnv.VirtualenvManagerWidgets import VirtualenvManagerWidget
840
841 from .LogView import LogViewer
842 from .Previewer import Previewer
843 from .PythonAstViewer import PythonAstViewer
844 from .PythonDisViewer import PythonDisViewer
845
838 # Create the view manager depending on the configuration setting 846 # Create the view manager depending on the configuration setting
839 logging.debug("Creating Viewmanager...") 847 logging.debug("Creating Viewmanager...")
840 from eric7 import ViewManager
841
842 self.viewmanager = ViewManager.factory( 848 self.viewmanager = ViewManager.factory(
843 self, self, self.__debugServer, self.pluginManager 849 self, self, self.__debugServer, self.pluginManager
844 ) 850 )
845 851
846 # Create previewer 852 # Create previewer
847 logging.debug("Creating Previewer...") 853 logging.debug("Creating Previewer...")
848 from .Previewer import Previewer
849
850 self.__previewer = Previewer(self.viewmanager) 854 self.__previewer = Previewer(self.viewmanager)
851 855
852 # Create AST viewer 856 # Create AST viewer
853 logging.debug("Creating Python AST Viewer") 857 logging.debug("Creating Python AST Viewer")
854 from .PythonAstViewer import PythonAstViewer
855
856 self.__astViewer = PythonAstViewer(self.viewmanager) 858 self.__astViewer = PythonAstViewer(self.viewmanager)
857 859
858 # Create DIS viewer 860 # Create DIS viewer
859 logging.debug("Creating Python Disassembly Viewer") 861 logging.debug("Creating Python Disassembly Viewer")
860 from .PythonDisViewer import PythonDisViewer
861
862 self.__disViewer = PythonDisViewer(self.viewmanager) 862 self.__disViewer = PythonDisViewer(self.viewmanager)
863 863
864 # Create the project browser 864 # Create the project browser
865 logging.debug("Creating Project Browser...") 865 logging.debug("Creating Project Browser...")
866 from eric7.Project.ProjectBrowser import ProjectBrowser
867
868 self.projectBrowser = ProjectBrowser(self.project) 866 self.projectBrowser = ProjectBrowser(self.project)
869 867
870 # Create the multi project browser 868 # Create the multi project browser
871 logging.debug("Creating Multiproject Browser...") 869 logging.debug("Creating Multiproject Browser...")
872 from eric7.MultiProject.MultiProjectBrowser import MultiProjectBrowser
873
874 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject, self.project) 870 self.multiProjectBrowser = MultiProjectBrowser(self.multiProject, self.project)
875 871
876 # Create the task viewer part of the user interface 872 # Create the task viewer part of the user interface
877 logging.debug("Creating Task Viewer...") 873 logging.debug("Creating Task Viewer...")
878 from eric7.Tasks.TaskViewer import TaskViewer
879
880 self.taskViewer = TaskViewer(None, self.project) 874 self.taskViewer = TaskViewer(None, self.project)
881 875
882 # Create the log viewer part of the user interface 876 # Create the log viewer part of the user interface
883 logging.debug("Creating Log Viewer...") 877 logging.debug("Creating Log Viewer...")
884 from .LogView import LogViewer
885
886 self.logViewer = LogViewer(self) 878 self.logViewer = LogViewer(self)
887 879
888 # Create the debug viewer 880 # Create the debug viewer
889 logging.debug("Creating Debug Viewer...") 881 logging.debug("Creating Debug Viewer...")
890 from eric7.Debugger.DebugViewer import DebugViewer
891
892 self.debugViewer = DebugViewer(self.__debugServer) 882 self.debugViewer = DebugViewer(self.__debugServer)
893 883
894 # Create the shell 884 # Create the shell
895 logging.debug("Creating Shell...") 885 logging.debug("Creating Shell...")
896 from eric7.QScintilla.Shell import ShellAssembly
897
898 self.shellAssembly = ShellAssembly( 886 self.shellAssembly = ShellAssembly(
899 self.__debugServer, self.viewmanager, self.project, True 887 self.__debugServer, self.viewmanager, self.project, True
900 ) 888 )
901 self.shell = self.shellAssembly.shell() 889 self.shell = self.shellAssembly.shell()
902 890
903 if Preferences.getUI("ShowTemplateViewer"): 891 if Preferences.getUI("ShowTemplateViewer"):
904 # Create the template viewer part of the user interface 892 # Create the template viewer part of the user interface
905 logging.debug("Creating Template Viewer...") 893 logging.debug("Creating Template Viewer...")
906 from eric7.Templates.TemplateViewer import TemplateViewer 894 from eric7.Templates.TemplateViewer import ( # __IGNORE_WARNING_I101__
895 TemplateViewer,
896 )
907 897
908 self.templateViewer = TemplateViewer(None, self.viewmanager) 898 self.templateViewer = TemplateViewer(None, self.viewmanager)
909 else: 899 else:
910 logging.debug("Template Viewer disabled") 900 logging.debug("Template Viewer disabled")
911 self.templateViewer = None 901 self.templateViewer = None
912 902
913 if Preferences.getUI("ShowFileBrowser"): 903 if Preferences.getUI("ShowFileBrowser"):
914 # Create the file browser 904 # Create the file browser
915 logging.debug("Creating File Browser...") 905 logging.debug("Creating File Browser...")
916 from .Browser import Browser 906 from .Browser import Browser # __IGNORE_WARNING_I101__
917 907
918 self.browser = Browser() 908 self.browser = Browser()
919 else: 909 else:
920 logging.debug("File Browser disabled") 910 logging.debug("File Browser disabled")
921 self.browser = None 911 self.browser = None
922 912
923 if Preferences.getUI("ShowSymbolsViewer"): 913 if Preferences.getUI("ShowSymbolsViewer"):
924 # Create the symbols viewer 914 # Create the symbols viewer
925 logging.debug("Creating Symbols Viewer...") 915 logging.debug("Creating Symbols Viewer...")
926 from .SymbolsWidget import SymbolsWidget 916 from .SymbolsWidget import SymbolsWidget # __IGNORE_WARNING_I101__
927 917
928 self.symbolsViewer = SymbolsWidget() 918 self.symbolsViewer = SymbolsWidget()
929 else: 919 else:
930 logging.debug("Symbols Viewer disabled") 920 logging.debug("Symbols Viewer disabled")
931 self.symbolsViewer = None 921 self.symbolsViewer = None
932 922
933 if Preferences.getUI("ShowCodeDocumentationViewer"): 923 if Preferences.getUI("ShowCodeDocumentationViewer"):
934 # Create the code documentation viewer 924 # Create the code documentation viewer
935 logging.debug("Creating Code Documentation Viewer...") 925 logging.debug("Creating Code Documentation Viewer...")
936 from .CodeDocumentationViewer import CodeDocumentationViewer 926 from .CodeDocumentationViewer import ( # __IGNORE_WARNING_I101__
927 CodeDocumentationViewer,
928 )
937 929
938 self.codeDocumentationViewer = CodeDocumentationViewer(self) 930 self.codeDocumentationViewer = CodeDocumentationViewer(self)
939 else: 931 else:
940 logging.debug("Code Documentation Viewer disabled") 932 logging.debug("Code Documentation Viewer disabled")
941 self.codeDocumentationViewer = None 933 self.codeDocumentationViewer = None
942 934
943 if Preferences.getUI("ShowPyPIPackageManager"): 935 if Preferences.getUI("ShowPyPIPackageManager"):
944 # Create the PyPI package manager 936 # Create the PyPI package manager
945 logging.debug("Creating PyPI Package Manager...") 937 logging.debug("Creating PyPI Package Manager...")
946 from eric7.PipInterface.PipPackagesWidget import PipPackagesWidget 938 from eric7.PipInterface.PipPackagesWidget import ( # __IGNORE_WARNING__
939 PipPackagesWidget,
940 )
947 941
948 self.pipWidget = PipPackagesWidget(self.pipInterface) 942 self.pipWidget = PipPackagesWidget(self.pipInterface)
949 else: 943 else:
950 logging.debug("PyPI Package Manager disabled") 944 logging.debug("PyPI Package Manager disabled")
951 self.pipWidget = None 945 self.pipWidget = None
952 946
953 if Preferences.getUI("ShowCondaPackageManager"): 947 if Preferences.getUI("ShowCondaPackageManager"):
954 # Create the conda package manager 948 # Create the conda package manager
955 logging.debug("Creating Conda Package Manager...") 949 logging.debug("Creating Conda Package Manager...")
956 from eric7.CondaInterface.CondaPackagesWidget import CondaPackagesWidget 950 from eric7.CondaInterface.CondaPackagesWidget import ( # __IGNORE_WARNING__
951 CondaPackagesWidget,
952 )
957 953
958 self.condaWidget = CondaPackagesWidget(self.condaInterface) 954 self.condaWidget = CondaPackagesWidget(self.condaInterface)
959 else: 955 else:
960 logging.debug("Conda Package Manager disabled") 956 logging.debug("Conda Package Manager disabled")
961 self.condaWidget = None 957 self.condaWidget = None
962 958
963 if Preferences.getUI("ShowCooperation"): 959 if Preferences.getUI("ShowCooperation"):
964 # Create the chat part of the user interface 960 # Create the chat part of the user interface
965 logging.debug("Creating Chat Widget...") 961 logging.debug("Creating Chat Widget...")
966 from eric7.Cooperation.ChatWidget import ChatWidget 962 from eric7.Cooperation.ChatWidget import ( # __IGNORE_WARNING_I101__
963 ChatWidget,
964 )
967 965
968 self.cooperation = ChatWidget(self) 966 self.cooperation = ChatWidget(self)
969 else: 967 else:
970 logging.debug("Chat Widget disabled") 968 logging.debug("Chat Widget disabled")
971 self.cooperation = None 969 self.cooperation = None
972 970
973 if Preferences.getUI("ShowIrc"): 971 if Preferences.getUI("ShowIrc"):
974 # Create the IRC part of the user interface 972 # Create the IRC part of the user interface
975 logging.debug("Creating IRC Widget...") 973 logging.debug("Creating IRC Widget...")
976 from eric7.Network.IRC.IrcWidget import IrcWidget 974 from eric7.Network.IRC.IrcWidget import IrcWidget # __IGNORE_WARNING_I101__
977 975
978 self.irc = IrcWidget(self) 976 self.irc = IrcWidget(self)
979 else: 977 else:
980 logging.debug("IRC Widget disabled") 978 logging.debug("IRC Widget disabled")
981 self.irc = None 979 self.irc = None
982 980
983 if Preferences.getUI("ShowMicroPython"): 981 if Preferences.getUI("ShowMicroPython"):
984 # Create the MicroPython part of the user interface 982 # Create the MicroPython part of the user interface
985 logging.debug("Creating MicroPython Widget...") 983 logging.debug("Creating MicroPython Widget...")
986 from eric7.MicroPython.MicroPythonWidget import MicroPythonWidget 984 from eric7.MicroPython.MicroPythonWidget import ( # __IGNORE_WARNING_I101__
985 MicroPythonWidget,
986 )
987 987
988 self.microPythonWidget = MicroPythonWidget(self) 988 self.microPythonWidget = MicroPythonWidget(self)
989 else: 989 else:
990 logging.debug("MicroPython Widget disabled") 990 logging.debug("MicroPython Widget disabled")
991 self.microPythonWidget = None 991 self.microPythonWidget = None
992 992
993 if Preferences.getUI("ShowNumbersViewer"): 993 if Preferences.getUI("ShowNumbersViewer"):
994 # Create the numbers viewer 994 # Create the numbers viewer
995 logging.debug("Creating Numbers Viewer...") 995 logging.debug("Creating Numbers Viewer...")
996 from .NumbersWidget import NumbersWidget 996 from .NumbersWidget import NumbersWidget # __IGNORE_WARNING_I101__
997 997
998 self.numbersViewer = NumbersWidget() 998 self.numbersViewer = NumbersWidget()
999 else: 999 else:
1000 logging.debug("Numbers Viewer disabled") 1000 logging.debug("Numbers Viewer disabled")
1001 self.numbersViewer = None 1001 self.numbersViewer = None
1002 1002
1003 # Create the Jedi Assistant 1003 # Create the Jedi Assistant
1004 logging.debug("Creating Jedi Assistant...") 1004 logging.debug("Creating Jedi Assistant...")
1005 from eric7.JediInterface.AssistantJedi import AssistantJedi
1006
1007 self.jediAssistant = AssistantJedi(self, self.viewmanager, self.project) 1005 self.jediAssistant = AssistantJedi(self, self.viewmanager, self.project)
1008 1006
1009 # Create the plug-ins repository viewer 1007 # Create the plug-ins repository viewer
1010 from eric7.PluginManager.PluginRepositoryDialog import PluginRepositoryWidget
1011
1012 self.pluginRepositoryViewer = PluginRepositoryWidget( 1008 self.pluginRepositoryViewer = PluginRepositoryWidget(
1013 self.pluginManager, integrated=True, parent=self 1009 self.pluginManager, integrated=True, parent=self
1014 ) 1010 )
1015 self.pluginRepositoryViewer.closeAndInstall.connect( 1011 self.pluginRepositoryViewer.closeAndInstall.connect(
1016 self.__installDownloadedPlugins 1012 self.__installDownloadedPlugins
1017 ) 1013 )
1018 1014
1019 # Create the virtual environments management widget 1015 # Create the virtual environments management widget
1020 from eric7.VirtualEnv.VirtualenvManagerWidgets import VirtualenvManagerWidget
1021
1022 self.__virtualenvManagerWidget = VirtualenvManagerWidget( 1016 self.__virtualenvManagerWidget = VirtualenvManagerWidget(
1023 self.virtualenvManager, self 1017 self.virtualenvManager, self
1024 ) 1018 )
1025 1019
1026 self.__findFileDialog = None 1020 self.__findFileDialog = None
1027 self.__replaceFileDialog = None 1021 self.__replaceFileDialog = None
1028 if Preferences.getUI("ShowFindFileWidget"): 1022 if Preferences.getUI("ShowFindFileWidget"):
1029 # Create the find in files widget 1023 # Create the find in files widget
1030 from .FindFileWidget import FindFileWidget 1024 from .FindFileWidget import FindFileWidget # __IGNORE_WARNING_I101__
1031 1025
1032 self.__findFileWidget = FindFileWidget(self.project, self) 1026 self.__findFileWidget = FindFileWidget(self.project, self)
1033 self.__findFileWidget.sourceFile.connect(self.viewmanager.openSourceFile) 1027 self.__findFileWidget.sourceFile.connect(self.viewmanager.openSourceFile)
1034 self.__findFileWidget.designerFile.connect(self.__designer) 1028 self.__findFileWidget.designerFile.connect(self.__designer)
1035 self.__findFileWidget.linguistFile.connect(self.__linguist) 1029 self.__findFileWidget.linguistFile.connect(self.__linguist)
1041 self.__findFileWidget = None 1035 self.__findFileWidget = None
1042 1036
1043 self.__findLocationDialog = None 1037 self.__findLocationDialog = None
1044 if Preferences.getUI("ShowFindLocationWidget"): 1038 if Preferences.getUI("ShowFindLocationWidget"):
1045 # Create the find location (file) widget 1039 # Create the find location (file) widget
1046 from .FindLocationWidget import FindLocationWidget 1040 from .FindLocationWidget import ( # __IGNORE_WARNING_I101__
1041 FindLocationWidget,
1042 )
1047 1043
1048 self.__findLocationWidget = FindLocationWidget(self.project, self) 1044 self.__findLocationWidget = FindLocationWidget(self.project, self)
1049 self.__findLocationWidget.sourceFile.connect( 1045 self.__findLocationWidget.sourceFile.connect(
1050 self.viewmanager.openSourceFile 1046 self.viewmanager.openSourceFile
1051 ) 1047 )
1057 self.__findLocationWidget.umlFile.connect(self.__showUml) 1053 self.__findLocationWidget.umlFile.connect(self.__showUml)
1058 else: 1054 else:
1059 self.__findLocationWidget = None 1055 self.__findLocationWidget = None
1060 1056
1061 # Create the VCS Status widget 1057 # Create the VCS Status widget
1062 from eric7.VCS.StatusWidget import StatusWidget
1063
1064 self.__vcsStatusWidget = StatusWidget(self.project, self.viewmanager, self) 1058 self.__vcsStatusWidget = StatusWidget(self.project, self.viewmanager, self)
1065 1059
1066 if ( 1060 if (
1067 Preferences.getUI("ShowInternalHelpViewer") 1061 Preferences.getUI("ShowInternalHelpViewer")
1068 or Preferences.getHelp("HelpViewerType") == 0 1062 or Preferences.getHelp("HelpViewerType") == 0
1069 ): 1063 ):
1070 # Create the embedded help viewer 1064 # Create the embedded help viewer
1071 logging.debug("Creating Internal Help Viewer...") 1065 logging.debug("Creating Internal Help Viewer...")
1072 from eric7.HelpViewer.HelpViewerWidget import HelpViewerWidget 1066 from eric7.HelpViewer.HelpViewerWidget import ( # __IGNORE_WARNING_I101__
1067 HelpViewerWidget,
1068 )
1073 1069
1074 self.__helpViewerWidget = HelpViewerWidget(self) 1070 self.__helpViewerWidget = HelpViewerWidget(self)
1075 else: 1071 else:
1076 logging.debug("Internal Help Viewer disabled...") 1072 logging.debug("Internal Help Viewer disabled...")
1077 self.__helpViewerWidget = None 1073 self.__helpViewerWidget = None
4357 4353
4358 def __initStatusbar(self): 4354 def __initStatusbar(self):
4359 """ 4355 """
4360 Private slot to set up the status bar. 4356 Private slot to set up the status bar.
4361 """ 4357 """
4358 from eric7.VCS.StatusMonitorLed import StatusMonitorLedWidget
4359
4362 self.__statusBar = self.statusBar() 4360 self.__statusBar = self.statusBar()
4363 self.__statusBar.setSizeGripEnabled(True) 4361 self.__statusBar.setSizeGripEnabled(True)
4364 4362
4365 self.sbLanguage = EricClickableLabel(self.__statusBar) 4363 self.sbLanguage = EricClickableLabel(self.__statusBar)
4366 self.__statusBar.addPermanentWidget(self.sbLanguage) 4364 self.__statusBar.addPermanentWidget(self.sbLanguage)
4437 self.sbEncoding, 4435 self.sbEncoding,
4438 self.sbLanguage, 4436 self.sbLanguage,
4439 self.sbEol, 4437 self.sbEol,
4440 self.sbZoom, 4438 self.sbZoom,
4441 ) 4439 )
4442
4443 from eric7.VCS.StatusMonitorLed import StatusMonitorLedWidget
4444 4440
4445 self.sbVcsMonitorLed = StatusMonitorLedWidget(self.project, self.__statusBar) 4441 self.sbVcsMonitorLed = StatusMonitorLedWidget(self.project, self.__statusBar)
4446 self.__statusBar.addPermanentWidget(self.sbVcsMonitorLed) 4442 self.__statusBar.addPermanentWidget(self.sbVcsMonitorLed)
4447 4443
4448 self.networkIcon = EricNetworkIcon(self.__statusBar) 4444 self.networkIcon = EricNetworkIcon(self.__statusBar)
4597 Private slot to handle the Versions dialog. 4593 Private slot to handle the Versions dialog.
4598 """ 4594 """
4599 from .VersionsDialog import VersionsDialog 4595 from .VersionsDialog import VersionsDialog
4600 4596
4601 try: 4597 try:
4602 try:
4603 from PyQt6 import sip
4604 except ImportError:
4605 import sip
4606 sip_version_str = sip.SIP_VERSION_STR 4598 sip_version_str = sip.SIP_VERSION_STR
4607 except (ImportError, AttributeError): 4599 except AttributeError:
4608 sip_version_str = "sip version not available" 4600 sip_version_str = "sip version not available"
4609 4601
4610 sizeStr = "64-Bit" if sys.maxsize > 2**32 else "32-Bit" 4602 sizeStr = "64-Bit" if sys.maxsize > 2**32 else "32-Bit"
4611 4603
4612 versionText = self.tr("""<h2>Version Numbers</h2>""" """<table>""") 4604 versionText = self.tr("""<h2>Version Numbers</h2>""" """<table>""")
4624 # PyQt versions 4616 # PyQt versions
4625 versionText += ("""<tr><td><b>PyQt6</b></td><td>{0}</td></tr>""").format( 4617 versionText += ("""<tr><td><b>PyQt6</b></td><td>{0}</td></tr>""").format(
4626 PYQT_VERSION_STR 4618 PYQT_VERSION_STR
4627 ) 4619 )
4628 with contextlib.suppress(ImportError, AttributeError): 4620 with contextlib.suppress(ImportError, AttributeError):
4629 from PyQt6 import QtCharts 4621 from PyQt6 import QtCharts # __IGNORE_WARNING_I10__
4630 4622
4631 versionText += ( 4623 versionText += (
4632 """<tr><td><b>PyQt6-Charts</b></td><td>{0}</td></tr>""" 4624 """<tr><td><b>PyQt6-Charts</b></td><td>{0}</td></tr>"""
4633 ).format(QtCharts.PYQT_CHART_VERSION_STR) 4625 ).format(QtCharts.PYQT_CHART_VERSION_STR)
4634 with contextlib.suppress(ImportError, AttributeError): 4626 with contextlib.suppress(ImportError, AttributeError):
4635 from PyQt6 import QtWebEngineCore 4627 from PyQt6 import QtWebEngineCore # __IGNORE_WARNING_I10__
4636 4628
4637 versionText += ( 4629 versionText += (
4638 """<tr><td><b>PyQt6-WebEngine</b></td><td>{0}</td></tr>""" 4630 """<tr><td><b>PyQt6-WebEngine</b></td><td>{0}</td></tr>"""
4639 ).format(QtWebEngineCore.PYQT_WEBENGINE_VERSION_STR) 4631 ).format(QtWebEngineCore.PYQT_WEBENGINE_VERSION_STR)
4640 versionText += ( 4632 versionText += (
4644 sip_version_str 4636 sip_version_str
4645 ) 4637 )
4646 4638
4647 # webengine (chromium) version 4639 # webengine (chromium) version
4648 with contextlib.suppress(ImportError): 4640 with contextlib.suppress(ImportError):
4649 from eric7.WebBrowser.Tools import WebBrowserTools 4641 from eric7.WebBrowser.Tools import ( # __IGNORE_WARNING_I101__
4642 WebBrowserTools,
4643 )
4650 4644
4651 ( 4645 (
4652 chromiumVersion, 4646 chromiumVersion,
4653 chromiumSecurityVersion, 4647 chromiumSecurityVersion,
4654 ) = WebBrowserTools.getWebEngineVersions()[0:2] 4648 ) = WebBrowserTools.getWebEngineVersions()[0:2]
4722 ), 4716 ),
4723 ) 4717 )
4724 self.showPreferences("emailPage") 4718 self.showPreferences("emailPage")
4725 return 4719 return
4726 4720
4727 from .EmailDialog import EmailDialog 4721 from .EmailDialog import EmailDialog # __IGNORE_WARNING_I101__
4728 4722
4729 self.dlg = EmailDialog(mode=mode) 4723 self.dlg = EmailDialog(mode=mode)
4730 if attachFile is not None: 4724 if attachFile is not None:
4731 self.dlg.attachFile(attachFile, deleteAttachFile) 4725 self.dlg.attachFile(attachFile, deleteAttachFile)
4732 self.dlg.show() 4726 self.dlg.show()
4765 def checkForErrorLog(self): 4759 def checkForErrorLog(self):
4766 """ 4760 """
4767 Public method to check for the presence of an error log and ask the 4761 Public method to check for the presence of an error log and ask the
4768 user, what to do with it. 4762 user, what to do with it.
4769 """ 4763 """
4764 from .ErrorLogDialog import ErrorLogDialog
4765
4770 if Preferences.getUI("CheckErrorLog"): 4766 if Preferences.getUI("CheckErrorLog"):
4771 logFile = os.path.join(Utilities.getConfigDir(), self.ErrorLogFileName) 4767 logFile = os.path.join(Utilities.getConfigDir(), self.ErrorLogFileName)
4772 if os.path.exists(logFile): 4768 if os.path.exists(logFile):
4773 from .ErrorLogDialog import ErrorLogDialog
4774
4775 dlg = ErrorLogDialog(logFile, False, self) 4769 dlg = ErrorLogDialog(logFile, False, self)
4776 dlg.exec() 4770 dlg.exec()
4777 4771
4778 def __hasErrorLog(self): 4772 def __hasErrorLog(self):
4779 """ 4773 """
4786 4780
4787 def __showErrorLog(self): 4781 def __showErrorLog(self):
4788 """ 4782 """
4789 Private slot to show the most recent error log message. 4783 Private slot to show the most recent error log message.
4790 """ 4784 """
4785 from .ErrorLogDialog import ErrorLogDialog
4786
4791 logFile = os.path.join(Utilities.getConfigDir(), self.ErrorLogFileName) 4787 logFile = os.path.join(Utilities.getConfigDir(), self.ErrorLogFileName)
4792 if os.path.exists(logFile): 4788 if os.path.exists(logFile):
4793 from .ErrorLogDialog import ErrorLogDialog
4794
4795 dlg = ErrorLogDialog(logFile, True, self) 4789 dlg = ErrorLogDialog(logFile, True, self)
4796 dlg.show() 4790 dlg.show()
4797 4791
4798 def __showInstallInfo(self): 4792 def __showInstallInfo(self):
4799 """ 4793 """
4808 4802
4809 def __compareFiles(self): 4803 def __compareFiles(self):
4810 """ 4804 """
4811 Private slot to handle the Compare Files dialog. 4805 Private slot to handle the Compare Files dialog.
4812 """ 4806 """
4807 from .DiffDialog import DiffDialog
4808
4813 aw = self.viewmanager.activeWindow() 4809 aw = self.viewmanager.activeWindow()
4814 fn = aw and aw.getFileName() or None 4810 fn = aw and aw.getFileName() or None
4815 if self.diffDlg is None: 4811 if self.diffDlg is None:
4816 from .DiffDialog import DiffDialog
4817
4818 self.diffDlg = DiffDialog() 4812 self.diffDlg = DiffDialog()
4819 self.diffDlg.show(fn) 4813 self.diffDlg.show(fn)
4820 4814
4821 def __compareFilesSbs(self): 4815 def __compareFilesSbs(self):
4822 """ 4816 """
4823 Private slot to handle the Compare Files dialog. 4817 Private slot to handle the Compare Files dialog.
4824 """ 4818 """
4819 from .CompareDialog import CompareDialog
4820
4825 aw = self.viewmanager.activeWindow() 4821 aw = self.viewmanager.activeWindow()
4826 fn = aw and aw.getFileName() or None 4822 fn = aw and aw.getFileName() or None
4827 if self.compareDlg is None: 4823 if self.compareDlg is None:
4828 from .CompareDialog import CompareDialog
4829
4830 self.compareDlg = CompareDialog() 4824 self.compareDlg = CompareDialog()
4831 self.compareDlg.show(fn) 4825 self.compareDlg.show(fn)
4832 4826
4833 def __openMiniEditor(self): 4827 def __openMiniEditor(self):
4834 """ 4828 """
5959 5953
5960 def __createTestingDialog(self): 5954 def __createTestingDialog(self):
5961 """ 5955 """
5962 Private slot to generate the testing dialog on demand. 5956 Private slot to generate the testing dialog on demand.
5963 """ 5957 """
5958 from eric7.Testing.TestingWidget import TestingWidget
5959
5964 if self.__testingWidget is None: 5960 if self.__testingWidget is None:
5965 from eric7.Testing.TestingWidget import TestingWidget
5966
5967 self.__testingWidget = TestingWidget() 5961 self.__testingWidget = TestingWidget()
5968 self.__testingWidget.testFile.connect(self.viewmanager.setFileLine) 5962 self.__testingWidget.testFile.connect(self.viewmanager.setFileLine)
5969 self.__testingWidget.testRunStopped.connect(self.__testingStopped) 5963 self.__testingWidget.testRunStopped.connect(self.__testingStopped)
5970 5964
5971 def __testingStopped(self): 5965 def __testingStopped(self):
7156 """ 7150 """
7157 Public slot to set the preferences. 7151 Public slot to set the preferences.
7158 7152
7159 @param pageName name of the configuration page to show (string) 7153 @param pageName name of the configuration page to show (string)
7160 """ 7154 """
7155 from eric7.Preferences.ConfigurationDialog import ConfigurationDialog
7156
7161 if self.__configurationDialog is None: 7157 if self.__configurationDialog is None:
7162 # only one invocation at a time is allowed 7158 # only one invocation at a time is allowed
7163 from eric7.Preferences.ConfigurationDialog import ConfigurationDialog
7164
7165 self.__configurationDialog = ConfigurationDialog( 7159 self.__configurationDialog = ConfigurationDialog(
7166 self, 7160 self,
7167 "Configuration", 7161 "Configuration",
7168 expandedEntries=self.__expandedConfigurationEntries, 7162 expandedEntries=self.__expandedConfigurationEntries,
7169 ) 7163 )
7235 @pyqtSlot() 7229 @pyqtSlot()
7236 def __preferencesChanged(self): 7230 def __preferencesChanged(self):
7237 """ 7231 """
7238 Private slot to handle a change of the preferences. 7232 Private slot to handle a change of the preferences.
7239 """ 7233 """
7234 from eric7.HexEdit.HexEditMainWindow import HexEditMainWindow
7235
7240 self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet")) 7236 self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet"))
7241 7237
7242 if Preferences.getUI("SingleApplicationMode"): 7238 if Preferences.getUI("SingleApplicationMode"):
7243 if self.SAServer is None: 7239 if self.SAServer is None:
7244 self.SAServer = EricSingleApplicationServer() 7240 self.SAServer = EricSingleApplicationServer()
7271 else: 7267 else:
7272 self.__setWindowCaption(editor="") 7268 self.__setWindowCaption(editor="")
7273 7269
7274 self.performVersionCheck() 7270 self.performVersionCheck()
7275 7271
7276 from eric7.QScintilla.SpellChecker import SpellChecker
7277
7278 SpellChecker.setDefaultLanguage( 7272 SpellChecker.setDefaultLanguage(
7279 Preferences.getEditor("SpellCheckingDefaultLanguage") 7273 Preferences.getEditor("SpellCheckingDefaultLanguage")
7280 ) 7274 )
7281 7275
7282 with contextlib.suppress(ImportError, AttributeError): 7276 with contextlib.suppress(ImportError, AttributeError):
7283 from eric7.EricWidgets.EricSpellCheckedTextEdit import SpellCheckMixin 7277 from eric7.EricWidgets.EricSpellCheckedTextEdit import ( # __IGNORE_WARNING__
7278 SpellCheckMixin,
7279 )
7284 7280
7285 pwl = SpellChecker.getUserDictionaryPath(isException=False) 7281 pwl = SpellChecker.getUserDictionaryPath(isException=False)
7286 pel = SpellChecker.getUserDictionaryPath(isException=True) 7282 pel = SpellChecker.getUserDictionaryPath(isException=True)
7287 SpellCheckMixin.setDefaultLanguage( 7283 SpellCheckMixin.setDefaultLanguage(
7288 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel 7284 Preferences.getEditor("SpellCheckingDefaultLanguage"), pwl, pel
7293 else: 7289 else:
7294 self.__proxyFactory = EricNetworkProxyFactory() 7290 self.__proxyFactory = EricNetworkProxyFactory()
7295 QNetworkProxyFactory.setApplicationProxyFactory(self.__proxyFactory) 7291 QNetworkProxyFactory.setApplicationProxyFactory(self.__proxyFactory)
7296 QNetworkProxyFactory.setUseSystemConfiguration(False) 7292 QNetworkProxyFactory.setUseSystemConfiguration(False)
7297 7293
7298 from eric7.HexEdit.HexEditMainWindow import HexEditMainWindow
7299
7300 for hexEditor in HexEditMainWindow.windows: 7294 for hexEditor in HexEditMainWindow.windows:
7301 hexEditor.preferencesChanged() 7295 hexEditor.preferencesChanged()
7302 7296
7303 # set the keyboard input interval 7297 # set the keyboard input interval
7304 interval = Preferences.getUI("KeyboardInputInterval") 7298 interval = Preferences.getUI("KeyboardInputInterval")
7326 7320
7327 self.masterPasswordChanged.emit(oldPassword, newPassword) 7321 self.masterPasswordChanged.emit(oldPassword, newPassword)
7328 Preferences.convertPasswords(oldPassword, newPassword) 7322 Preferences.convertPasswords(oldPassword, newPassword)
7329 variant = Globals.getWebBrowserSupport() 7323 variant = Globals.getWebBrowserSupport()
7330 if variant == "QtWebEngine": 7324 if variant == "QtWebEngine":
7331 from eric7.WebBrowser.Passwords.PasswordManager import PasswordManager 7325 from eric7.WebBrowser.Passwords.PasswordManager import ( # __IGNORE_WARNING__
7326 PasswordManager,
7327 )
7332 7328
7333 pwManager = PasswordManager() 7329 pwManager = PasswordManager()
7334 pwManager.masterPasswordChanged(oldPassword, newPassword) 7330 pwManager.masterPasswordChanged(oldPassword, newPassword)
7335 Utilities.crypto.changeRememberedMaster(newPassword) 7331 Utilities.crypto.changeRememberedMaster(newPassword)
7336 7332
7343 def __showExternalTools(self): 7339 def __showExternalTools(self):
7344 """ 7340 """
7345 Private slot to display a dialog show a list of external tools used 7341 Private slot to display a dialog show a list of external tools used
7346 by eric. 7342 by eric.
7347 """ 7343 """
7344 from eric7.Preferences.ProgramsDialog import ProgramsDialog
7345
7348 if self.programsDialog is None: 7346 if self.programsDialog is None:
7349 from eric7.Preferences.ProgramsDialog import ProgramsDialog
7350
7351 self.programsDialog = ProgramsDialog(self) 7347 self.programsDialog = ProgramsDialog(self)
7352 self.programsDialog.show() 7348 self.programsDialog.show()
7353 7349
7354 def __configViewProfiles(self): 7350 def __configViewProfiles(self):
7355 """ 7351 """
7382 7378
7383 def __configShortcuts(self): 7379 def __configShortcuts(self):
7384 """ 7380 """
7385 Private slot to configure the keyboard shortcuts. 7381 Private slot to configure the keyboard shortcuts.
7386 """ 7382 """
7383 from eric7.Preferences.ShortcutsDialog import ShortcutsDialog
7384
7387 if self.shortcutsDialog is None: 7385 if self.shortcutsDialog is None:
7388 from eric7.Preferences.ShortcutsDialog import ShortcutsDialog
7389
7390 self.shortcutsDialog = ShortcutsDialog(self) 7386 self.shortcutsDialog = ShortcutsDialog(self)
7391 self.shortcutsDialog.populate() 7387 self.shortcutsDialog.populate()
7392 self.shortcutsDialog.show() 7388 self.shortcutsDialog.show()
7393 7389
7394 def __exportShortcuts(self): 7390 def __exportShortcuts(self):
7425 if fpath.exists() 7421 if fpath.exists()
7426 else True 7422 else True
7427 ) 7423 )
7428 7424
7429 if ok: 7425 if ok:
7430 from eric7.Preferences import Shortcuts
7431
7432 Shortcuts.exportShortcuts(str(fpath)) 7426 Shortcuts.exportShortcuts(str(fpath))
7433 7427
7434 def __importShortcuts(self): 7428 def __importShortcuts(self):
7435 """ 7429 """
7436 Private slot to import the keyboard shortcuts. 7430 Private slot to import the keyboard shortcuts.
7443 "Keyboard Shortcuts File (*.ekj);;" "XML Keyboard shortcut file (*.e4k)" 7437 "Keyboard Shortcuts File (*.ekj);;" "XML Keyboard shortcut file (*.e4k)"
7444 ), 7438 ),
7445 ) 7439 )
7446 7440
7447 if fn: 7441 if fn:
7448 from eric7.Preferences import Shortcuts
7449
7450 Shortcuts.importShortcuts(fn) 7442 Shortcuts.importShortcuts(fn)
7451 7443
7452 def __showCertificatesDialog(self): 7444 def __showCertificatesDialog(self):
7453 """ 7445 """
7454 Private slot to show the certificates management dialog. 7446 Private slot to show the certificates management dialog.
7496 # clear the shell histories 7488 # clear the shell histories
7497 self.shell.clearAllHistories() 7489 self.shell.clearAllHistories()
7498 if testing: 7490 if testing:
7499 # clear the unit test histories 7491 # clear the unit test histories
7500 if self.__testingWidget is None: 7492 if self.__testingWidget is None:
7501 from eric7.Testing.TestingWidget import clearSavedHistories
7502
7503 clearSavedHistories() 7493 clearSavedHistories()
7504 else: 7494 else:
7505 self.__testingWidget.clearRecent() 7495 self.__testingWidget.clearRecent()
7506 if vcs: 7496 if vcs:
7507 # clear the VCS related histories 7497 # clear the VCS related histories
7572 7562
7573 @param fn filename of the opened editor (string) 7563 @param fn filename of the opened editor (string)
7574 """ 7564 """
7575 self.wizardsMenuAct.setEnabled(len(self.__menus["wizards"].actions()) > 0) 7565 self.wizardsMenuAct.setEnabled(len(self.__menus["wizards"].actions()) > 0)
7576 7566
7577 if fn and str(fn) != "None": 7567 if (
7578 from eric7 import Testing 7568 fn
7579 7569 and str(fn) != "None"
7580 if Testing.isLanguageSupported( 7570 and Testing.isLanguageSupported(
7581 self.viewmanager.getOpenEditor(fn).getFileType() 7571 self.viewmanager.getOpenEditor(fn).getFileType()
7582 ): 7572 )
7583 self.testScriptAct.setEnabled(True) 7573 ):
7584 self.__testingEditorOpen = True 7574 self.testScriptAct.setEnabled(True)
7575 self.__testingEditorOpen = True
7585 7576
7586 def __checkActions(self, editor): 7577 def __checkActions(self, editor):
7587 """ 7578 """
7588 Private slot to check some actions for their enable/disable status. 7579 Private slot to check some actions for their enable/disable status.
7589 7580
7590 @param editor editor window 7581 @param editor editor window
7591 """ 7582 """
7592 fn = editor.getFileName() if editor else None 7583 fn = editor.getFileName() if editor else None
7593 7584
7594 if fn: 7585 if fn and Testing.isLanguageSupported(editor.getFileType()):
7595 from eric7 import Testing 7586 self.testScriptAct.setEnabled(True)
7596 7587 self.__testingEditorOpen = True
7597 if Testing.isLanguageSupported(editor.getFileType()): 7588 return
7598 self.testScriptAct.setEnabled(True)
7599 self.__testingEditorOpen = True
7600 return
7601 7589
7602 self.testScriptAct.setEnabled(False) 7590 self.testScriptAct.setEnabled(False)
7603 7591
7604 def __writeTasks(self): 7592 def __writeTasks(self):
7605 """ 7593 """
7620 # try old style XML file second 7608 # try old style XML file second
7621 fn = os.path.join(Utilities.getConfigDir(), "eric7tasks.e6t") 7609 fn = os.path.join(Utilities.getConfigDir(), "eric7tasks.e6t")
7622 if os.path.exists(fn): 7610 if os.path.exists(fn):
7623 f = QFile(fn) 7611 f = QFile(fn)
7624 if f.open(QIODevice.OpenModeFlag.ReadOnly): 7612 if f.open(QIODevice.OpenModeFlag.ReadOnly):
7625 from eric7.EricXML.TasksReader import TasksReader
7626
7627 reader = TasksReader(f, viewer=self.taskViewer) 7613 reader = TasksReader(f, viewer=self.taskViewer)
7628 reader.readXML() 7614 reader.readXML()
7629 f.close() 7615 f.close()
7630 else: 7616 else:
7631 EricMessageBox.critical( 7617 EricMessageBox.critical(
7690 self.__readingSession = False 7676 self.__readingSession = False
7691 else: 7677 else:
7692 # old XML based format 7678 # old XML based format
7693 f = QFile(fn) 7679 f = QFile(fn)
7694 if f.open(QIODevice.OpenModeFlag.ReadOnly): 7680 if f.open(QIODevice.OpenModeFlag.ReadOnly):
7695 from eric7.EricXML.SessionReader import SessionReader
7696
7697 self.__readingSession = True 7681 self.__readingSession = True
7698 reader = SessionReader(f, True) 7682 reader = SessionReader(f, True)
7699 reader.readXML() 7683 reader.readXML()
7700 self.__readingSession = False 7684 self.__readingSession = False
7701 f.close() 7685 f.close()
7804 7788
7805 def showFindFileByNameDialog(self): 7789 def showFindFileByNameDialog(self):
7806 """ 7790 """
7807 Public slot to show the Find File by Name dialog. 7791 Public slot to show the Find File by Name dialog.
7808 """ 7792 """
7793 from .FindFileNameDialog import FindFileNameDialog
7794
7809 if self.findFileNameDialog is None: 7795 if self.findFileNameDialog is None:
7810 from .FindFileNameDialog import FindFileNameDialog
7811
7812 self.findFileNameDialog = FindFileNameDialog(self.project) 7796 self.findFileNameDialog = FindFileNameDialog(self.project)
7813 self.findFileNameDialog.sourceFile.connect(self.viewmanager.openSourceFile) 7797 self.findFileNameDialog.sourceFile.connect(self.viewmanager.openSourceFile)
7814 self.findFileNameDialog.designerFile.connect(self.__designer) 7798 self.findFileNameDialog.designerFile.connect(self.__designer)
7815 self.findFileNameDialog.show() 7799 self.findFileNameDialog.show()
7816 self.findFileNameDialog.raise_() 7800 self.findFileNameDialog.raise_()
7826 @type str (optional) 7810 @type str (optional)
7827 @param openFiles flag indicating to operate on open files only 7811 @param openFiles flag indicating to operate on open files only
7828 (defaults to False) 7812 (defaults to False)
7829 @type bool (optional) 7813 @type bool (optional)
7830 """ 7814 """
7815 from .FindFileWidget import FindFileDialog
7816
7831 if Preferences.getUI("ShowFindFileWidget"): 7817 if Preferences.getUI("ShowFindFileWidget"):
7832 # embedded tool 7818 # embedded tool
7833 self.__activateFindFileWidget() 7819 self.__activateFindFileWidget()
7834 self.__findFileWidget.activate( 7820 self.__findFileWidget.activate(
7835 replaceMode=False, txt=txt, searchDir=searchDir, openFiles=openFiles 7821 replaceMode=False, txt=txt, searchDir=searchDir, openFiles=openFiles
7836 ) 7822 )
7837 else: 7823 else:
7838 # external dialog 7824 # external dialog
7839 if self.__findFileDialog is None: 7825 if self.__findFileDialog is None:
7840 from .FindFileWidget import FindFileDialog
7841
7842 self.__findFileDialog = FindFileDialog(self.project, self) 7826 self.__findFileDialog = FindFileDialog(self.project, self)
7843 self.__findFileDialog.sourceFile.connect( 7827 self.__findFileDialog.sourceFile.connect(
7844 self.viewmanager.openSourceFile 7828 self.viewmanager.openSourceFile
7845 ) 7829 )
7846 self.__findFileDialog.designerFile.connect(self.__designer) 7830 self.__findFileDialog.designerFile.connect(self.__designer)
7863 @type str (optional) 7847 @type str (optional)
7864 @param openFiles flag indicating to operate on open files only 7848 @param openFiles flag indicating to operate on open files only
7865 (defaults to False) 7849 (defaults to False)
7866 @type bool (optional) 7850 @type bool (optional)
7867 """ 7851 """
7852 from .FindFileWidget import FindFileDialog
7853
7868 if Preferences.getUI("ShowFindFileWidget"): 7854 if Preferences.getUI("ShowFindFileWidget"):
7869 # embedded tool 7855 # embedded tool
7870 self.__activateFindFileWidget() 7856 self.__activateFindFileWidget()
7871 self.__findFileWidget.activate( 7857 self.__findFileWidget.activate(
7872 replaceMode=True, txt=txt, searchDir=searchDir, openFiles=openFiles 7858 replaceMode=True, txt=txt, searchDir=searchDir, openFiles=openFiles
7873 ) 7859 )
7874 else: 7860 else:
7875 # external dialog 7861 # external dialog
7876 if self.__replaceFileDialog is None: 7862 if self.__replaceFileDialog is None:
7877 from .FindFileWidget import FindFileDialog
7878
7879 self.__replaceFileDialog = FindFileDialog(self.project, self) 7863 self.__replaceFileDialog = FindFileDialog(self.project, self)
7880 self.__replaceFileDialog.sourceFile.connect( 7864 self.__replaceFileDialog.sourceFile.connect(
7881 self.viewmanager.openSourceFile 7865 self.viewmanager.openSourceFile
7882 ) 7866 )
7883 self.__replaceFileDialog.designerFile.connect(self.__designer) 7867 self.__replaceFileDialog.designerFile.connect(self.__designer)
7906 7890
7907 def showFindLocationWidget(self): 7891 def showFindLocationWidget(self):
7908 """ 7892 """
7909 Public method to show the Find File widget. 7893 Public method to show the Find File widget.
7910 """ 7894 """
7895 from .FindLocationWidget import FindLocationDialog
7896
7911 if Preferences.getUI("ShowFindLocationWidget"): 7897 if Preferences.getUI("ShowFindLocationWidget"):
7912 # embedded tool 7898 # embedded tool
7913 self.__activateFindLocationWidget() 7899 self.__activateFindLocationWidget()
7914 else: 7900 else:
7915 # external dialog 7901 # external dialog
7916 if self.__findLocationDialog is None: 7902 if self.__findLocationDialog is None:
7917 from .FindLocationWidget import FindLocationDialog
7918
7919 self.__findLocationDialog = FindLocationDialog(self.project, self) 7903 self.__findLocationDialog = FindLocationDialog(self.project, self)
7920 self.__findLocationDialog.sourceFile.connect( 7904 self.__findLocationDialog.sourceFile.connect(
7921 self.viewmanager.openSourceFile 7905 self.viewmanager.openSourceFile
7922 ) 7906 )
7923 self.__findLocationDialog.designerFile.connect(self.__designer) 7907 self.__findLocationDialog.designerFile.connect(self.__designer)
8526 @type NotificationTypes 8510 @type NotificationTypes
8527 @param timeout time in seconds the notification should be shown 8511 @param timeout time in seconds the notification should be shown
8528 (None = use configured timeout, 0 = indefinitely) 8512 (None = use configured timeout, 0 = indefinitely)
8529 @type int 8513 @type int
8530 """ 8514 """
8515 from .NotificationWidget import NotificationWidget
8516
8531 if self.__notification is None: 8517 if self.__notification is None:
8532 from .NotificationWidget import NotificationWidget
8533
8534 self.__notification = NotificationWidget(parent=self) 8518 self.__notification = NotificationWidget(parent=self)
8535 if timeout is None: 8519 if timeout is None:
8536 timeout = Preferences.getUI("NotificationTimeout") 8520 timeout = Preferences.getUI("NotificationTimeout")
8537 self.__notification.showNotification( 8521 self.__notification.showNotification(
8538 icon, heading, text, kind=kind, timeout=timeout 8522 icon, heading, text, kind=kind, timeout=timeout

eric ide

mercurial