src/eric7/VirtualEnv/VirtualenvAddEditDialog.py

Wed, 14 May 2025 18:18:06 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 14 May 2025 18:18:06 +0200
branch
eric7
changeset 11286
f0a76bd2a9d3
parent 11230
8a15b05eeee3
permissions
-rw-r--r--

Virtual Environments
- Added the capability to set an environment to unavailable.

6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10949
diff changeset
3 # Copyright (c) 2018 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a dialog to enter the data of a virtual environment.
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9434
diff changeset
12 from PyQt6.QtCore import Qt, pyqtSlot
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
13 from PyQt6.QtWidgets import QDialog, QDialogButtonBox
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
15 from eric7.EricWidgets.EricApplication import ericApp
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
16 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
17 from eric7.SystemUtilities import FileSystemUtilities, OSUtilities, PythonUtilities
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19 from .Ui_VirtualenvAddEditDialog import Ui_VirtualenvAddEditDialog
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
20 from .VirtualenvMeta import VirtualenvMetaData
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 class VirtualenvAddEditDialog(QDialog, Ui_VirtualenvAddEditDialog):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing a dialog to enter the data of a virtual environment.
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
28 def __init__(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
29 self,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30 manager,
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
31 metadata=None,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
32 baseDir="",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
33 parent=None,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34 ):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
37
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @param manager reference to the virtual environment manager
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 @type VirtualenvManager
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
40 @param metadata object containing the metadata of the virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
41 (defaults to None)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
42 @type VirtualenvMetaData (optional)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
43 @param baseDir base directory for the virtual environments (defaults to "")
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
44 @type str (optional)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
45 @param parent reference to the parent widget (defaults to None)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
46 @type QWidget (optional)
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
48 super().__init__(parent)
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.setupUi(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
51 self.__venvName = "" if metadata is None else metadata.name
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__manager = manager
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
53 self.__editMode = bool(self.__venvName)
10931
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
54 try:
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
55 self.__serverInterface = ericApp().getObject("EricServer")
10933
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10931
diff changeset
56 self.__fsInterface = self.__serverInterface.getServiceInterface(
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10931
diff changeset
57 "FileSystem"
95a15b70f7bb Refactored some packages, modules and code to allow extracting the 'EricXxx' packages into a library project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10931
diff changeset
58 )
10931
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
59 except KeyError:
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
60 self.__serverInterface = None
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
61 self.__fsInterface = None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
62
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
63 if self.__editMode:
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
64 self.setWindowTitle(self.tr("Edit Virtual Environment"))
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
65 else:
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
66 self.setWindowTitle(self.tr("Add Virtual Environment"))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
67
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
68 for name, visualName in self.__manager.getEnvironmentTypeNames():
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
69 self.environmentTypeComboBox.addItem(visualName, name)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
70
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
71 self.__envBaseDir = baseDir
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
72 if not self.__envBaseDir:
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
73 self.__envBaseDir = OSUtilities.getHomeDir()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
74
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8327
diff changeset
75 self.targetDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.targetDirectoryPicker.setWindowTitle(
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
77 self.tr("Virtualenv Target Directory")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
78 )
10931
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
79 if (
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
80 self.__serverInterface is not None
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
81 and self.__serverInterface.isServerConnected()
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
82 ):
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
83 self.targetDirectoryPicker.setRemote(
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
84 metadata.environment_type == "eric_server" if metadata else False
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
85 )
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
86 if metadata is None or metadata.environment_type not in (
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
87 "eric_server",
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
88 "remote",
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
89 ):
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
90 self.targetDirectoryPicker.setDefaultDirectory(self.__envBaseDir)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8327
diff changeset
92 self.pythonExecPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93 self.pythonExecPicker.setWindowTitle(self.tr("Python Interpreter"))
10931
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
94 if (
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
95 self.__serverInterface is not None
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
96 and self.__serverInterface.isServerConnected()
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
97 ):
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
98 self.pythonExecPicker.setRemote(
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
99 metadata.environment_type == "eric_server" if metadata else False
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
100 )
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
101 if metadata is None or metadata.environment_type not in (
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
102 "eric_server",
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
103 "remote",
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
104 ):
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
105 self.pythonExecPicker.setDefaultDirectory(
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
106 PythonUtilities.getPythonExecutable()
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
107 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
108
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
109 self.execPathEdit.setToolTip(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
111 "Enter the executable search path to be prepended to the PATH"
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
112 " environment variable. Use '{0}' as the separator."
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
113 ).format(os.pathsep)
6576
ea60ea85067a VitualEnv Manager:
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6362
diff changeset
114 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
115
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
116 self.nameEdit.setText(self.__venvName)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
117 if metadata:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
118 if metadata.path:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
119 self.targetDirectoryPicker.setText(
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
120 metadata.path,
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
121 toNative=metadata.environment_type not in ("eric_server", "remote"),
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
122 )
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
123 else:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
124 self.targetDirectoryPicker.setText(
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
125 self.__envBaseDir,
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
126 toNative=metadata.environment_type not in ("eric_server", "remote"),
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
127 )
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
128 if (
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
129 not metadata.interpreter
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
130 and metadata.path
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
131 and metadata.environment_type not in ("eric_server", "remote")
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
132 ):
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
133 py = self.__detectPythonInterpreter(metadata.path)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
134 self.pythonExecPicker.setText(py)
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
135 else:
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
136 self.pythonExecPicker.setText(
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
137 metadata.interpreter,
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
138 toNative=metadata.environment_type not in ("eric_server", "remote"),
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
139 )
7910
2eeec6bc49e6 VirtualEnv Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7781
diff changeset
140 else:
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
141 self.targetDirectoryPicker.setText(self.__envBaseDir, toNative=True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
142
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
143 self.globalCheckBox.setChecked(metadata.is_global if metadata else False)
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
144 self.availableCheckBox.setChecked(metadata.available if metadata else True)
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
145 itemIndex = self.environmentTypeComboBox.findData(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
146 metadata.environment_type if metadata else "standard"
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
147 )
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
148 self.environmentTypeComboBox.setCurrentIndex(itemIndex)
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
149 self.execPathEdit.setText(metadata.exec_path if metadata else "")
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
150 self.descriptionEdit.setPlainText(metadata.description if metadata else "")
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
151 self.serverLineEdit.setText(metadata.eric_server if metadata else "")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
152
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
154
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
155 self.nameEdit.setFocus(Qt.FocusReason.OtherFocusReason)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
156
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 def __updateOk(self):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 Private slot to update the state of the OK button.
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 """
8260
2161475d9639 Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
161 enable = (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
162 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163 bool(self.nameEdit.text())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164 and (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
165 self.nameEdit.text() == self.__venvName
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
166 or self.__manager.isUnique(self.nameEdit.text())
6716
1c9d3b369ea8 VirtualEnv Manager: extended the environment definition by a flag indicating a remotely accessed environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
167 )
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
168 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 if self.__editMode
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170 else (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171 bool(self.nameEdit.text())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
172 and self.__manager.isUnique(self.nameEdit.text())
6716
1c9d3b369ea8 VirtualEnv Manager: extended the environment definition by a flag indicating a remotely accessed environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
173 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
175
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
176 selectedVenvType = self.environmentTypeComboBox.currentData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177 if not self.globalCheckBox.isChecked():
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
178 enable &= selectedVenvType == "remote" or (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179 bool(self.targetDirectoryPicker.text())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
180 and self.targetDirectoryPicker.text() != self.__envBaseDir
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
181 and (
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
182 (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
183 selectedVenvType == "eric_server"
10931
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
184 and self.__fsInterface is not None
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
185 and self.__fsInterface.exists(self.targetDirectoryPicker.text())
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
186 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
187 or (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
188 selectedVenvType != "eric_server"
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
189 and os.path.exists(self.targetDirectoryPicker.text())
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
190 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
191 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
193
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
194 enable &= selectedVenvType == "remote" or (
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
195 bool(self.pythonExecPicker.text())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
196 and (
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
197 (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
198 selectedVenvType == "eric_server"
10931
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
199 and self.__fsInterface is not None
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
200 and self.__fsInterface.access(
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
201 self.pythonExecPicker.text(), "execute"
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
202 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
203 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
204 or (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
205 selectedVenvType != "eric_server"
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
206 and os.access(self.pythonExecPicker.text(), os.X_OK)
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
207 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
208 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
210
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
211 self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled(enable)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
212
8986
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
213 def __detectPythonInterpreter(self, venvDirectory):
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
214 """
9001
a00cd6b55728 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8987
diff changeset
215 Private method to search for a suitable Python interpreter inside an
a00cd6b55728 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8987
diff changeset
216 environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217
8986
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
218 @param venvDirectory directory for the virtual environment
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
219 @type str
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
220 @return detected Python interpreter or empty string
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
221 @rtype str
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
222 """
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
223 if venvDirectory:
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
224 # try to determine a Python interpreter name
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
225 if OSUtilities.isWindowsPlatform():
8986
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
226 candidates = (
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
227 os.path.join(venvDirectory, "Scripts", "python.exe"),
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
228 os.path.join(venvDirectory, "python.exe"),
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
229 )
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
230 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
231 candidates = (os.path.join(venvDirectory, "bin", "python3"),)
8986
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
232 for py in candidates:
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
233 if os.path.exists(py):
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
234 return py
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
235
8986
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
236 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 @pyqtSlot(str)
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 def on_nameEdit_textChanged(self, txt):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 Private slot to handle changes of the logical name.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
242
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 @param txt current logical name
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
247
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 @pyqtSlot(str)
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 def on_targetDirectoryPicker_textChanged(self, txt):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 Private slot to handle changes of the virtual environment directory.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
252
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 @param txt virtual environment directory
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
257
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 if txt:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 self.pythonExecPicker.setDefaultDirectory(txt)
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 else:
9624
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
261 self.pythonExecPicker.setDefaultDirectory(
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
262 PythonUtilities.getPythonExecutable()
b47dfa7a137d Refactored the Utilities and Globals modules in order to enhance the maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
263 )
8986
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
264 py = self.__detectPythonInterpreter(txt)
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
265 if py:
665d14b3c01a Virtual Environment Management: added code to autodetect the Python interpreter at several places.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8980
diff changeset
266 self.pythonExecPicker.setText(py)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
267
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 @pyqtSlot(str)
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 def on_pythonExecPicker_textChanged(self, txt):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 Private slot to handle changes of the virtual environment interpreter.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
272
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 @param txt virtual environment interpreter
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
277
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
278 @pyqtSlot(bool)
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
279 def on_globalCheckBox_toggled(self, checked):
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
280 """
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
281 Private slot handling a change of the global check box state.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
282
6341
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
283 @param checked state of the check box
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
284 @type bool
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
285 """
a00e63f6d766 VirtualenvManager: changed code to allow environments without environment directory denoting a global environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6338
diff changeset
286 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
287
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
288 @pyqtSlot(int)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
289 def on_environmentTypeComboBox_currentIndexChanged(self, index):
6716
1c9d3b369ea8 VirtualEnv Manager: extended the environment definition by a flag indicating a remotely accessed environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
290 """
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
291 Private slot handling the selection of a virtual environment type.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
292
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
293 @param index index of the selected virtual environment type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
294 @type int
6716
1c9d3b369ea8 VirtualEnv Manager: extended the environment definition by a flag indicating a remotely accessed environment.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
295 """
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
296 # step 1: reset some configurations
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
297 self.pythonExecPicker.setRemote(False)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
298 self.targetDirectoryPicker.setRemote(False)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
299 self.serverLineEdit.clear()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
300 self.ericServerInfoLabel.clear()
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
301
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
302 # step 2: configure and set value iaw. selected environment type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
303 selectedVenvType = self.environmentTypeComboBox.itemData(index)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
304 if selectedVenvType == "eric_server":
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
305 serverAvailable = (
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
306 self.__serverInterface is not None
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
307 and self.__serverInterface.isServerConnected()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
308 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
309 self.ericServerInfoLabel.setText(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
310 "" if serverAvailable else self.tr("eric-ide Server is not available")
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
311 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
312 self.pythonExecPicker.setRemote(serverAvailable)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
313 self.targetDirectoryPicker.setRemote(serverAvailable)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
314 if serverAvailable:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
315 self.targetDirectoryPicker.setText(self.__fsInterface.getcwd())
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
316 self.serverLineEdit.setText(self.__serverInterface.getHost())
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
317
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
318 venvTypeData = self.__manager.getEnvironmentTypesRegistry().getEnvironmentType(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
319 selectedVenvType
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
320 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
321 if venvTypeData.defaultExecPathFunc is not None and not bool(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
322 self.execPathEdit.text()
10931
56f41b1e163a Fixed an issue in the virtual env manager package when used in the standalone application.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10765
diff changeset
323 ):
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
324 self.execPathEdit.setText(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
325 venvTypeData.defaultExecPathFunc(self.targetDirectoryPicker.text())
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
326 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
327
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
328 self.__updateOk()
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
329
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
330 def getMetaData(self):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
332 Public method to retrieve the entered metadata.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
333
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
334 @return metadata for the virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
335 @rtype VirtualenvMetaData
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
336 """
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
337 selectedEnvironmentType = self.environmentTypeComboBox.currentData()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
338 nativePaths = selectedEnvironmentType not in ("remote", "eric_server")
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
339 isEricServer = selectedEnvironmentType == "eric_server"
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
340 envPath = (
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
341 FileSystemUtilities.remoteFileName(self.targetDirectoryPicker.text())
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
342 if isEricServer
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
343 else FileSystemUtilities.plainFileName(
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
344 self.targetDirectoryPicker.text(toNative=nativePaths)
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
345 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
346 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
347 interpreter = (
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
348 FileSystemUtilities.remoteFileName(self.pythonExecPicker.text())
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
349 if isEricServer
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
350 else FileSystemUtilities.plainFileName(
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
351 self.pythonExecPicker.text(toNative=nativePaths)
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
352 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
353 )
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
354
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
355 return VirtualenvMetaData(
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
356 name=self.nameEdit.text(),
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
357 path=envPath,
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
358 interpreter=interpreter,
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
359 is_global=self.globalCheckBox.isChecked(),
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
360 environment_type=selectedEnvironmentType,
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
361 exec_path=self.execPathEdit.text(),
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
362 description=self.descriptionEdit.toPlainText(),
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
363 eric_server=self.serverLineEdit.text(),
11286
f0a76bd2a9d3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11230
diff changeset
364 available=self.availableCheckBox.isChecked(),
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
365 )

eric ide

mercurial