eric7/CondaInterface/CondaNewEnvironmentDataDialog.py

branch
eric7
changeset 8312
800c432b34c8
parent 8257
28146736bbfc
child 8318
962bce857696
equal deleted inserted replaced
8311:4e8b98454baa 8312:800c432b34c8
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2019 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing a dialog to enter data for a new conda environment.
8 """
9
10 from PyQt5.QtCore import pyqtSlot
11 from PyQt5.QtWidgets import QDialog, QDialogButtonBox
12
13 from E5Gui.E5PathPicker import E5PathPickerModes
14
15 from .Ui_CondaNewEnvironmentDataDialog import Ui_CondaNewEnvironmentDataDialog
16
17
18 class CondaNewEnvironmentDataDialog(QDialog, Ui_CondaNewEnvironmentDataDialog):
19 """
20 Class implementing a dialog to enter data for a new conda environment.
21 """
22 def __init__(self, title, showRequirements, parent=None):
23 """
24 Constructor
25
26 @param title tirle of the dialog
27 @type str
28 @param showRequirements flag indicating to show the requirements
29 file input widget
30 @type bool
31 @param parent reference to the parent widget
32 @type QWidget
33 """
34 super().__init__(parent)
35 self.setupUi(self)
36
37 self.setWindowTitle(title)
38
39 self.__requirementsMode = showRequirements
40
41 self.requirementsFilePicker.setMode(E5PathPickerModes.OpenFileMode)
42 self.requirementsFilePicker.setFilters(
43 self.tr("Text Files (*.txt);;All Files (*)"))
44
45 self.requirementsLabel.setVisible(showRequirements)
46 self.requirementsFilePicker.setVisible(showRequirements)
47
48 self.__updateOK()
49
50 msh = self.minimumSizeHint()
51 self.resize(max(self.width(), msh.width()), msh.height())
52
53 def __updateOK(self):
54 """
55 Private method to update the enabled state of the OK button.
56 """
57 enable = bool(self.nameEdit.text()) and bool(self.condaNameEdit.text())
58 if self.__requirementsMode:
59 enable &= bool(self.requirementsFilePicker.text())
60
61 self.buttonBox.button(
62 QDialogButtonBox.StandardButton.Ok).setEnabled(enable)
63
64 @pyqtSlot(str)
65 def on_nameEdit_textChanged(self, txt):
66 """
67 Private slot to handle changes of the logical name.
68
69 @param txt current text of the logical name entry
70 @type str
71 """
72 self.__updateOK()
73
74 @pyqtSlot(str)
75 def on_condaNameEdit_textChanged(self, txt):
76 """
77 Private slot to handle changes of the conda name.
78
79 @param txt current text of the conda name entry
80 @type str
81 """
82 self.__updateOK()
83
84 @pyqtSlot(str)
85 def on_requirementsFilePicker_textChanged(self, txt):
86 """
87 Private slot to handle changes of the requirements file name.
88
89 @param txt current text of the requirements file name entry
90 @type str
91 """
92 self.__updateOK()
93
94 def getData(self):
95 """
96 Public method to get the entered data.
97
98 @return tuple with the logical name of the new environment, the conda
99 name and the requirements file name
100 @rtype tuple of (str, str, str)
101 """
102 requirementsFile = (
103 self.requirementsFilePicker.text()
104 if self.__requirementsMode else
105 ""
106 )
107
108 return (
109 self.nameEdit.text(),
110 self.condaNameEdit.text(),
111 requirementsFile
112 )

eric ide

mercurial