12 import re |
12 import re |
13 |
13 |
14 from PyQt6.QtCore import QProcess, QTimer, pyqtSlot |
14 from PyQt6.QtCore import QProcess, QTimer, pyqtSlot |
15 from PyQt6.QtWidgets import QDialog, QDialogButtonBox |
15 from PyQt6.QtWidgets import QDialog, QDialogButtonBox |
16 |
16 |
17 from eric7 import CondaInterface, Globals, Preferences, Utilities |
17 from eric7 import CondaInterface, Preferences |
18 from eric7.EricWidgets.EricApplication import ericApp |
18 from eric7.EricWidgets.EricApplication import ericApp |
19 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes |
19 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes |
|
20 from eric7.SystemUtilities import FileSystemUtilities, OSUtilities, PythonUtilities |
20 |
21 |
21 from .Ui_VirtualenvConfigurationDialog import Ui_VirtualenvConfigurationDialog |
22 from .Ui_VirtualenvConfigurationDialog import Ui_VirtualenvConfigurationDialog |
22 |
23 |
23 |
24 |
24 class VirtualenvConfigurationDialog(QDialog, Ui_VirtualenvConfigurationDialog): |
25 class VirtualenvConfigurationDialog(QDialog, Ui_VirtualenvConfigurationDialog): |
38 """ |
39 """ |
39 super().__init__(parent) |
40 super().__init__(parent) |
40 self.setupUi(self) |
41 self.setupUi(self) |
41 |
42 |
42 if not baseDir: |
43 if not baseDir: |
43 baseDir = Utilities.getHomeDir() |
44 baseDir = OSUtilities.getHomeDir() |
44 self.__envBaseDir = baseDir |
45 self.__envBaseDir = baseDir |
45 |
46 |
46 self.targetDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
47 self.targetDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
47 self.targetDirectoryPicker.setWindowTitle( |
48 self.targetDirectoryPicker.setWindowTitle( |
48 self.tr("Virtualenv Target Directory") |
49 self.tr("Virtualenv Target Directory") |
52 |
53 |
53 self.extraSearchPathPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
54 self.extraSearchPathPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
54 self.extraSearchPathPicker.setWindowTitle( |
55 self.extraSearchPathPicker.setWindowTitle( |
55 self.tr("Extra Search Path for setuptools/pip") |
56 self.tr("Extra Search Path for setuptools/pip") |
56 ) |
57 ) |
57 self.extraSearchPathPicker.setDefaultDirectory(Utilities.getHomeDir()) |
58 self.extraSearchPathPicker.setDefaultDirectory(OSUtilities.getHomeDir()) |
58 |
59 |
59 self.pythonExecPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
60 self.pythonExecPicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
60 self.pythonExecPicker.setWindowTitle(self.tr("Python Interpreter")) |
61 self.pythonExecPicker.setWindowTitle(self.tr("Python Interpreter")) |
61 self.pythonExecPicker.setDefaultDirectory(Globals.getPythonExecutable()) |
62 self.pythonExecPicker.setDefaultDirectory(PythonUtilities.getPythonExecutable()) |
62 |
63 |
63 self.condaTargetDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
64 self.condaTargetDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
64 self.condaTargetDirectoryPicker.setWindowTitle( |
65 self.condaTargetDirectoryPicker.setWindowTitle( |
65 self.tr("Conda Environment Location") |
66 self.tr("Conda Environment Location") |
66 ) |
67 ) |
67 self.condaTargetDirectoryPicker.setDefaultDirectory(Utilities.getHomeDir()) |
68 self.condaTargetDirectoryPicker.setDefaultDirectory(OSUtilities.getHomeDir()) |
68 |
69 |
69 self.condaCloneDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
70 self.condaCloneDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE) |
70 self.condaCloneDirectoryPicker.setWindowTitle( |
71 self.condaCloneDirectoryPicker.setWindowTitle( |
71 self.tr("Conda Environment Location") |
72 self.tr("Conda Environment Location") |
72 ) |
73 ) |
73 self.condaCloneDirectoryPicker.setDefaultDirectory(Utilities.getHomeDir()) |
74 self.condaCloneDirectoryPicker.setDefaultDirectory(OSUtilities.getHomeDir()) |
74 |
75 |
75 self.condaRequirementsFilePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
76 self.condaRequirementsFilePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) |
76 self.condaRequirementsFilePicker.setWindowTitle( |
77 self.condaRequirementsFilePicker.setWindowTitle( |
77 self.tr("Conda Requirements File") |
78 self.tr("Conda Requirements File") |
78 ) |
79 ) |
79 self.condaRequirementsFilePicker.setDefaultDirectory(Utilities.getHomeDir()) |
80 self.condaRequirementsFilePicker.setDefaultDirectory(OSUtilities.getHomeDir()) |
80 self.condaRequirementsFilePicker.setFilters( |
81 self.condaRequirementsFilePicker.setFilters( |
81 self.tr("Text Files (*.txt);;All Files (*)") |
82 self.tr("Text Files (*.txt);;All Files (*)") |
82 ) |
83 ) |
83 |
84 |
84 self.__versionRe = re.compile(r""".*?(\d+\.\d+\.\d+).*""") |
85 self.__versionRe = re.compile(r""".*?(\d+\.\d+\.\d+).*""") |
321 calls.append( |
322 calls.append( |
322 (self.pythonExecPicker.text(), ["-m", "virtualenv", "--version"]) |
323 (self.pythonExecPicker.text(), ["-m", "virtualenv", "--version"]) |
323 ) |
324 ) |
324 calls.extend( |
325 calls.extend( |
325 [ |
326 [ |
326 (Globals.getPythonExecutable(), ["-m", "virtualenv", "--version"]), |
327 ( |
|
328 PythonUtilities.getPythonExecutable(), |
|
329 ["-m", "virtualenv", "--version"], |
|
330 ), |
327 ("virtualenv", ["--version"]), |
331 ("virtualenv", ["--version"]), |
328 ] |
332 ] |
329 ) |
333 ) |
330 |
334 |
331 proc = QProcess() |
335 proc = QProcess() |
377 calls = [] |
381 calls = [] |
378 if self.pythonExecPicker.text(): |
382 if self.pythonExecPicker.text(): |
379 calls.append((self.pythonExecPicker.text(), ["-m", "venv"])) |
383 calls.append((self.pythonExecPicker.text(), ["-m", "venv"])) |
380 calls.extend( |
384 calls.extend( |
381 [ |
385 [ |
382 (Globals.getPythonExecutable(), ["-m", "venv"]), |
386 (PythonUtilities.getPythonExecutable(), ["-m", "venv"]), |
383 ("python3", ["-m", "venv"]), |
387 ("python3", ["-m", "venv"]), |
384 ("python", ["-m", "venv"]), |
388 ("python", ["-m", "venv"]), |
385 ] |
389 ] |
386 ) |
390 ) |
387 |
391 |
444 Private method to generate a valid target directory path. |
448 Private method to generate a valid target directory path. |
445 |
449 |
446 @return target directory path |
450 @return target directory path |
447 @rtype str |
451 @rtype str |
448 """ |
452 """ |
449 targetDirectory = Utilities.toNativeSeparators( |
453 targetDirectory = FileSystemUtilities.toNativeSeparators( |
450 self.targetDirectoryPicker.text() |
454 self.targetDirectoryPicker.text() |
451 ) |
455 ) |
452 if not os.path.isabs(targetDirectory): |
456 if not os.path.isabs(targetDirectory): |
453 targetDirectory = os.path.join(os.path.expanduser("~"), targetDirectory) |
457 targetDirectory = os.path.join(os.path.expanduser("~"), targetDirectory) |
454 return targetDirectory |
458 return targetDirectory |
486 else: |
490 else: |
487 if self.virtualenvButton.isChecked(): |
491 if self.virtualenvButton.isChecked(): |
488 if self.extraSearchPathPicker.text(): |
492 if self.extraSearchPathPicker.text(): |
489 args.append( |
493 args.append( |
490 "--extra-search-dir={0}".format( |
494 "--extra-search-dir={0}".format( |
491 Utilities.toNativeSeparators( |
495 FileSystemUtilities.toNativeSeparators( |
492 self.extraSearchPathPicker.text() |
496 self.extraSearchPathPicker.text() |
493 ) |
497 ) |
494 ) |
498 ) |
495 ) |
499 ) |
496 if self.promptPrefixEdit.text(): |
500 if self.promptPrefixEdit.text(): |
500 ) |
504 ) |
501 ) |
505 ) |
502 if self.pythonExecPicker.text(): |
506 if self.pythonExecPicker.text(): |
503 args.append( |
507 args.append( |
504 "--python={0}".format( |
508 "--python={0}".format( |
505 Utilities.toNativeSeparators(self.pythonExecPicker.text()) |
509 FileSystemUtilities.toNativeSeparators( |
|
510 self.pythonExecPicker.text() |
|
511 ) |
506 ) |
512 ) |
507 ) |
513 ) |
508 elif self.versionComboBox.currentText(): |
514 elif self.versionComboBox.currentText(): |
509 args.append( |
515 args.append( |
510 "--python=python{0}".format(self.versionComboBox.currentText()) |
516 "--python=python{0}".format(self.versionComboBox.currentText()) |
581 ), |
587 ), |
582 "openTarget": self.openCheckBox.isChecked(), |
588 "openTarget": self.openCheckBox.isChecked(), |
583 "createLog": self.logCheckBox.isChecked(), |
589 "createLog": self.logCheckBox.isChecked(), |
584 "createScript": self.scriptCheckBox.isChecked(), |
590 "createScript": self.scriptCheckBox.isChecked(), |
585 "targetDirectory": self.__generateTargetDir(), |
591 "targetDirectory": self.__generateTargetDir(), |
586 "pythonExe": Utilities.toNativeSeparators( |
592 "pythonExe": FileSystemUtilities.toNativeSeparators( |
587 self.pythonExecPicker.text() |
593 self.pythonExecPicker.text() |
588 ), |
594 ), |
589 } |
595 } |
590 ) |
596 ) |
591 |
597 |