src/eric7/VirtualEnv/VirtualenvAddEditDialog.py

Sat, 26 Apr 2025 12:34:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Apr 2025 12:34:32 +0200
branch
eric7
changeset 11240
c48c615c04a3
parent 11230
8a15b05eeee3
permissions
-rw-r--r--

MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.

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)
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
144 itemIndex = self.environmentTypeComboBox.findData(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
145 metadata.environment_type if metadata else "standard"
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
146 )
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
147 self.environmentTypeComboBox.setCurrentIndex(itemIndex)
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
148 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
149 self.descriptionEdit.setPlainText(metadata.description if metadata else "")
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
150 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
151
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
153
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
154 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
155
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 def __updateOk(self):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 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
159 """
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
160 enable = (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
161 (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
162 bool(self.nameEdit.text())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
163 and (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
164 self.nameEdit.text() == self.__venvName
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
165 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
166 )
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
167 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168 if self.__editMode
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
169 else (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
170 bool(self.nameEdit.text())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
171 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
172 )
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
175 selectedVenvType = self.environmentTypeComboBox.currentData()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
176 if not self.globalCheckBox.isChecked():
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
177 enable &= selectedVenvType == "remote" or (
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178 bool(self.targetDirectoryPicker.text())
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
179 and self.targetDirectoryPicker.text() != self.__envBaseDir
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
180 and (
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
181 (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
182 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
183 and self.__fsInterface is not None
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
184 and self.__fsInterface.exists(self.targetDirectoryPicker.text())
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
185 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
186 or (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
187 selectedVenvType != "eric_server"
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
188 and os.path.exists(self.targetDirectoryPicker.text())
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
189 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
190 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
192
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
193 enable &= selectedVenvType == "remote" or (
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
194 bool(self.pythonExecPicker.text())
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
195 and (
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
196 (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
197 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
198 and self.__fsInterface is not None
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
199 and self.__fsInterface.access(
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
200 self.pythonExecPicker.text(), "execute"
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
201 )
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 or (
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
204 selectedVenvType != "eric_server"
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
205 and os.access(self.pythonExecPicker.text(), os.X_OK)
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
206 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
207 )
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 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
211
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
212 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
213 """
9001
a00cd6b55728 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8987
diff changeset
214 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
215 environment.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
216
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
217 @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
218 @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
219 @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
220 @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
221 """
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 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
223 # 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
224 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
225 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
226 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
227 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
228 )
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 else:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
230 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
231 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
232 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
233 return py
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
234
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
235 return ""
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 @pyqtSlot(str)
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 def on_nameEdit_textChanged(self, txt):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 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
241
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 @param txt current logical name
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
246
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 @pyqtSlot(str)
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 def on_targetDirectoryPicker_textChanged(self, txt):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 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
251
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 @param txt virtual environment directory
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
256
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 if txt:
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 self.pythonExecPicker.setDefaultDirectory(txt)
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 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
260 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
261 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
262 )
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
263 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
264 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
265 self.pythonExecPicker.setText(py)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
266
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 @pyqtSlot(str)
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 def on_pythonExecPicker_textChanged(self, txt):
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 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
271
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 @param txt virtual environment interpreter
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 @type str
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 """
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
276
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
277 @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
278 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
279 """
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 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
281
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
282 @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
283 @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
284 """
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 self.__updateOk()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
286
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
287 @pyqtSlot(int)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
288 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
289 """
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
290 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
291
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
292 @param index index of the selected virtual environment type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
293 @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
294 """
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
295 # step 1: reset some configurations
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
296 self.pythonExecPicker.setRemote(False)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
297 self.targetDirectoryPicker.setRemote(False)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
298 self.serverLineEdit.clear()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
299 self.ericServerInfoLabel.clear()
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
300
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
301 # step 2: configure and set value iaw. selected environment type
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
302 selectedVenvType = self.environmentTypeComboBox.itemData(index)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
303 if selectedVenvType == "eric_server":
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
304 serverAvailable = (
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
305 self.__serverInterface is not None
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
306 and self.__serverInterface.isServerConnected()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
307 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
308 self.ericServerInfoLabel.setText(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
309 "" if serverAvailable else self.tr("eric-ide Server is not available")
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
310 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
311 self.pythonExecPicker.setRemote(serverAvailable)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
312 self.targetDirectoryPicker.setRemote(serverAvailable)
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
313 if serverAvailable:
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
314 self.targetDirectoryPicker.setText(self.__fsInterface.getcwd())
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
315 self.serverLineEdit.setText(self.__serverInterface.getHost())
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
316
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
317 venvTypeData = self.__manager.getEnvironmentTypesRegistry().getEnvironmentType(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
318 selectedVenvType
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
319 )
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
320 if venvTypeData.defaultExecPathFunc is not None and not bool(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
321 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
322 ):
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
323 self.execPathEdit.setText(
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
324 venvTypeData.defaultExecPathFunc(self.targetDirectoryPicker.text())
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
325 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
327 self.__updateOk()
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
328
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
329 def getMetaData(self):
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 """
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
331 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
332
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
333 @return metadata for the virtual environment
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
334 @rtype VirtualenvMetaData
6338
104ee21d765d VirtualEnv: finished implementing a virtualenv manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
335 """
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
336 selectedEnvironmentType = self.environmentTypeComboBox.currentData()
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
337 nativePaths = selectedEnvironmentType not in ("remote", "eric_server")
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
338 isEricServer = selectedEnvironmentType == "eric_server"
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
339 envPath = (
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
340 FileSystemUtilities.remoteFileName(self.targetDirectoryPicker.text())
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
341 if isEricServer
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
342 else FileSystemUtilities.plainFileName(
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
343 self.targetDirectoryPicker.text(toNative=nativePaths)
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
344 )
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 interpreter = (
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
347 FileSystemUtilities.remoteFileName(self.pythonExecPicker.text())
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
348 if isEricServer
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
349 else FileSystemUtilities.plainFileName(
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
350 self.pythonExecPicker.text(toNative=nativePaths)
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
351 )
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
352 )
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
353
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
354 return VirtualenvMetaData(
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
355 name=self.nameEdit.text(),
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
356 path=envPath,
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
357 interpreter=interpreter,
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
358 is_global=self.globalCheckBox.isChecked(),
11230
8a15b05eeee3 Virtual Environments
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
359 environment_type=selectedEnvironmentType,
10194
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
360 exec_path=self.execPathEdit.text(),
2c26b4fe25db Refactored the 'VirtualEnv' code for better maintainability.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
361 description=self.descriptionEdit.toPlainText(),
10725
51fe971610d3 Virtual Environment Manager
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
362 eric_server=self.serverLineEdit.text(),
6362
ec32d1d7f525 Virtual Environments: improved the virtual environment handling
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6349
diff changeset
363 )

eric ide

mercurial