Sat, 23 Jun 2018 15:14:48 +0200
Virtual Environments: improved the virtual environment handling
--- a/APIs/Python3/eric6.api Fri Jun 22 18:18:23 2018 +0200 +++ b/APIs/Python3/eric6.api Sat Jun 23 15:14:48 2018 +0200 @@ -10579,7 +10579,7 @@ eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog.on_nameEdit_textChanged?4(txt) eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog.on_pythonExecPicker_textChanged?4(txt) eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog.on_targetDirectoryPicker_textChanged?4(txt) -eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog?1(manager, venvName="", venvDirectory="", venvInterpreter="", venvVariant=3, parent=None) +eric6.VirtualEnv.VirtualenvAddEditDialog.VirtualenvAddEditDialog?1(manager, venvName="", venvDirectory="", venvInterpreter="", venvVariant=3, isGlobal=False, parent=None) eric6.VirtualEnv.VirtualenvConfigurationDialog.VirtualenvConfigurationDialog.getData?4() eric6.VirtualEnv.VirtualenvConfigurationDialog.VirtualenvConfigurationDialog.on_pythonExecPicker_textChanged?4(txt) eric6.VirtualEnv.VirtualenvConfigurationDialog.VirtualenvConfigurationDialog.on_pyvenvButton_toggled?4(checked) @@ -10592,7 +10592,7 @@ eric6.VirtualEnv.VirtualenvInterpreterSelectionDialog.VirtualenvInterpreterSelectionDialog.getData?4() eric6.VirtualEnv.VirtualenvInterpreterSelectionDialog.VirtualenvInterpreterSelectionDialog.on_pythonExecPicker_textChanged?4(txt) eric6.VirtualEnv.VirtualenvInterpreterSelectionDialog.VirtualenvInterpreterSelectionDialog?1(venvName, venvDirectory, parent=None) -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.addVirtualEnv?4(venvName, venvDirectory, venvInterpreter="", venvVariant=3) +eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.addVirtualEnv?4(venvName, venvDirectory, venvInterpreter="", venvVariant=3, isGlobal=False) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.createVirtualEnv?4() eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.deleteVirtualEnvs?4(venvNames) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getEnvironmentEntries?4() @@ -10600,13 +10600,15 @@ eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvInterpreter?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvNames?4() eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.getVirtualenvNamesForVariant?4(variant) +eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.isGlobalEnvironment?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.isUnique?4(venvName) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.removeVirtualEnvs?4(venvNames) -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.renameVirtualEnv?4(oldVenvName, venvName, venvDirectory, venvInterpreter, venvVariant) -eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.setVirtualEnv?4(venvName, venvDirectory, venvInterpreter, venvVariant) +eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.renameVirtualEnv?4(oldVenvName, venvName, venvDirectory, venvInterpreter, venvVariant, isGlobal) +eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.setVirtualEnv?4(venvName, venvDirectory, venvInterpreter, venvVariant, isGlobal) eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.showVirtualenvManagerDialog?4() eric6.VirtualEnv.VirtualenvManager.VirtualenvManager.shutdown?4() eric6.VirtualEnv.VirtualenvManager.VirtualenvManager?1(parent=None) +eric6.VirtualEnv.VirtualenvManagerDialog.VirtualenvManagerDialog.IsGlobalRole?7 eric6.VirtualEnv.VirtualenvManagerDialog.VirtualenvManagerDialog.PythonVariantRole?7 eric6.VirtualEnv.VirtualenvManagerDialog.VirtualenvManagerDialog.on_addButton_clicked?4() eric6.VirtualEnv.VirtualenvManagerDialog.VirtualenvManagerDialog.on_deleteAllButton_clicked?4()
--- a/Documentation/Help/source.qhp Fri Jun 22 18:18:23 2018 +0200 +++ b/Documentation/Help/source.qhp Sat Jun 23 15:14:48 2018 +0200 @@ -17434,6 +17434,7 @@ <keyword name="VirtualenvManager" id="VirtualenvManager" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager" /> <keyword name="VirtualenvManager (Constructor)" id="VirtualenvManager (Constructor)" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.__init__" /> <keyword name="VirtualenvManager (Module)" id="VirtualenvManager (Module)" ref="eric6.VirtualEnv.VirtualenvManager.html" /> + <keyword name="VirtualenvManager.__isEnvironmentDeleteable" id="VirtualenvManager.__isEnvironmentDeleteable" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.__isEnvironmentDeleteable" /> <keyword name="VirtualenvManager.__loadSettings" id="VirtualenvManager.__loadSettings" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.__loadSettings" /> <keyword name="VirtualenvManager.__saveSettings" id="VirtualenvManager.__saveSettings" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.__saveSettings" /> <keyword name="VirtualenvManager.addVirtualEnv" id="VirtualenvManager.addVirtualEnv" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.addVirtualEnv" /> @@ -17444,6 +17445,7 @@ <keyword name="VirtualenvManager.getVirtualenvInterpreter" id="VirtualenvManager.getVirtualenvInterpreter" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.getVirtualenvInterpreter" /> <keyword name="VirtualenvManager.getVirtualenvNames" id="VirtualenvManager.getVirtualenvNames" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.getVirtualenvNames" /> <keyword name="VirtualenvManager.getVirtualenvNamesForVariant" id="VirtualenvManager.getVirtualenvNamesForVariant" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.getVirtualenvNamesForVariant" /> + <keyword name="VirtualenvManager.isGlobalEnvironment" id="VirtualenvManager.isGlobalEnvironment" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.isGlobalEnvironment" /> <keyword name="VirtualenvManager.isUnique" id="VirtualenvManager.isUnique" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.isUnique" /> <keyword name="VirtualenvManager.removeVirtualEnvs" id="VirtualenvManager.removeVirtualEnvs" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.removeVirtualEnvs" /> <keyword name="VirtualenvManager.renameVirtualEnv" id="VirtualenvManager.renameVirtualEnv" ref="eric6.VirtualEnv.VirtualenvManager.html#VirtualenvManager.renameVirtualEnv" />
--- a/Documentation/Source/eric6.VirtualEnv.VirtualenvAddEditDialog.html Fri Jun 22 18:18:23 2018 +0200 +++ b/Documentation/Source/eric6.VirtualEnv.VirtualenvAddEditDialog.html Sat Jun 23 15:14:48 2018 +0200 @@ -85,7 +85,7 @@ </table> <a NAME="VirtualenvAddEditDialog.__init__" ID="VirtualenvAddEditDialog.__init__"></a> <h4>VirtualenvAddEditDialog (Constructor)</h4> -<b>VirtualenvAddEditDialog</b>(<i>manager, venvName="", venvDirectory="", venvInterpreter="", venvVariant=3, parent=None</i>) +<b>VirtualenvAddEditDialog</b>(<i>manager, venvName="", venvDirectory="", venvInterpreter="", venvVariant=3, isGlobal=False, parent=None</i>) <p> Constructor </p><dl> @@ -104,6 +104,9 @@ </dd><dt><i>venvVariant</i> (int)</dt> <dd> Python variant of the virtual environment +</dd><dt><i>isGlobal</i> (bool)</dt> +<dd> +flag indicating a global environment </dd><dt><i>parent</i> (QWidget)</dt> <dd> reference to the parent widget @@ -122,12 +125,13 @@ <dt>Returns:</dt> <dd> tuple containing the logical name, the directory, the - interpreter of the virtual environment and the Python variant + interpreter of the virtual environment, the Python variant + and a flag indicating a global environment </dd> </dl><dl> <dt>Return Type:</dt> <dd> -tuple of (str, str, str, int) +tuple of (str, str, str, int, bool) </dd> </dl><a NAME="VirtualenvAddEditDialog.on_globalCheckBox_toggled" ID="VirtualenvAddEditDialog.on_globalCheckBox_toggled"></a> <h4>VirtualenvAddEditDialog.on_globalCheckBox_toggled</h4>
--- a/Documentation/Source/eric6.VirtualEnv.VirtualenvManager.html Fri Jun 22 18:18:23 2018 +0200 +++ b/Documentation/Source/eric6.VirtualEnv.VirtualenvManager.html Sat Jun 23 15:14:48 2018 +0200 @@ -60,6 +60,9 @@ <td><a href="#VirtualenvManager.__init__">VirtualenvManager</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#VirtualenvManager.__isEnvironmentDeleteable">__isEnvironmentDeleteable</a></td> +<td>Private method to check, if a virtual environment can be deleted from disk.</td> +</tr><tr> <td><a href="#VirtualenvManager.__loadSettings">__loadSettings</a></td> <td>Private slot to load the virtual environments.</td> </tr><tr> @@ -90,6 +93,9 @@ <td><a href="#VirtualenvManager.getVirtualenvNamesForVariant">getVirtualenvNamesForVariant</a></td> <td>Public method to get a list of virtual environments for a given Python variant.</td> </tr><tr> +<td><a href="#VirtualenvManager.isGlobalEnvironment">isGlobalEnvironment</a></td> +<td>Public method to test, if a given environment is a global one.</td> +</tr><tr> <td><a href="#VirtualenvManager.isUnique">isUnique</a></td> <td>Public method to check, if the give logical name is unique.</td> </tr><tr> @@ -123,6 +129,27 @@ <dd> reference to the parent object </dd> +</dl><a NAME="VirtualenvManager.__isEnvironmentDeleteable" ID="VirtualenvManager.__isEnvironmentDeleteable"></a> +<h4>VirtualenvManager.__isEnvironmentDeleteable</h4> +<b>__isEnvironmentDeleteable</b>(<i>venvName</i>) +<p> + Private method to check, if a virtual environment can be deleted from + disk. +</p><dl> +<dt><i>venvName</i> (str)</dt> +<dd> +name of the virtual environment +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating it can be deleted +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="VirtualenvManager.__loadSettings" ID="VirtualenvManager.__loadSettings"></a> <h4>VirtualenvManager.__loadSettings</h4> <b>__loadSettings</b>(<i></i>) @@ -135,7 +162,7 @@ Private slot to save the virtual environments. </p><a NAME="VirtualenvManager.addVirtualEnv" ID="VirtualenvManager.addVirtualEnv"></a> <h4>VirtualenvManager.addVirtualEnv</h4> -<b>addVirtualEnv</b>(<i>venvName, venvDirectory, venvInterpreter="", venvVariant=3</i>) +<b>addVirtualEnv</b>(<i>venvName, venvDirectory, venvInterpreter="", venvVariant=3, isGlobal=False</i>) <p> Public method to add a virtual environment. </p><dl> @@ -151,6 +178,9 @@ </dd><dt><i>venvVariant</i> (int)</dt> <dd> Python variant of the virtual environment +</dd><dt><i>isGlobal</i> (bool)</dt> +<dd> +flag indicating a global environment </dd> </dl><a NAME="VirtualenvManager.createVirtualEnv" ID="VirtualenvManager.createVirtualEnv"></a> <h4>VirtualenvManager.createVirtualEnv</h4> @@ -260,6 +290,26 @@ <dd> list of str </dd> +</dl><a NAME="VirtualenvManager.isGlobalEnvironment" ID="VirtualenvManager.isGlobalEnvironment"></a> +<h4>VirtualenvManager.isGlobalEnvironment</h4> +<b>isGlobalEnvironment</b>(<i>venvName</i>) +<p> + Public method to test, if a given environment is a global one. +</p><dl> +<dt><i>venvName</i> (str)</dt> +<dd> +logical name of the virtual environment +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +flag indicating a global environment +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> </dl><a NAME="VirtualenvManager.isUnique" ID="VirtualenvManager.isUnique"></a> <h4>VirtualenvManager.isUnique</h4> <b>isUnique</b>(<i>venvName</i>) @@ -292,7 +342,7 @@ </dd> </dl><a NAME="VirtualenvManager.renameVirtualEnv" ID="VirtualenvManager.renameVirtualEnv"></a> <h4>VirtualenvManager.renameVirtualEnv</h4> -<b>renameVirtualEnv</b>(<i>oldVenvName, venvName, venvDirectory, venvInterpreter, venvVariant</i>) +<b>renameVirtualEnv</b>(<i>oldVenvName, venvName, venvDirectory, venvInterpreter, venvVariant, isGlobal</i>) <p> Public method to substitute a virtual environment entry with a new name. @@ -312,10 +362,13 @@ </dd><dt><i>venvVariant</i> (int)</dt> <dd> Python variant of the virtual environment +</dd><dt><i>isGlobal</i> (bool)</dt> +<dd> +flag indicating a global environment </dd> </dl><a NAME="VirtualenvManager.setVirtualEnv" ID="VirtualenvManager.setVirtualEnv"></a> <h4>VirtualenvManager.setVirtualEnv</h4> -<b>setVirtualEnv</b>(<i>venvName, venvDirectory, venvInterpreter, venvVariant</i>) +<b>setVirtualEnv</b>(<i>venvName, venvDirectory, venvInterpreter, venvVariant, isGlobal</i>) <p> Public method to change a virtual environment. </p><dl> @@ -331,6 +384,9 @@ </dd><dt><i>venvVariant</i> (int)</dt> <dd> Python variant of the virtual environment +</dd><dt><i>isGlobal</i> (bool)</dt> +<dd> +flag indicating a global environment </dd> </dl><a NAME="VirtualenvManager.showVirtualenvManagerDialog" ID="VirtualenvManager.showVirtualenvManagerDialog"></a> <h4>VirtualenvManager.showVirtualenvManagerDialog</h4>
--- a/Documentation/Source/eric6.VirtualEnv.VirtualenvManagerDialog.html Fri Jun 22 18:18:23 2018 +0200 +++ b/Documentation/Source/eric6.VirtualEnv.VirtualenvManagerDialog.html Sat Jun 23 15:14:48 2018 +0200 @@ -50,7 +50,7 @@ QDialog, Ui_VirtualenvManagerDialog <h3>Class Attributes</h3> <table> -<tr><td>PythonVariantRole</td></tr> +<tr><td>IsGlobalRole</td></tr><tr><td>PythonVariantRole</td></tr> </table> <h3>Class Methods</h3> <table>
--- a/VirtualEnv/VirtualenvAddEditDialog.py Fri Jun 22 18:18:23 2018 +0200 +++ b/VirtualEnv/VirtualenvAddEditDialog.py Sat Jun 23 15:14:48 2018 +0200 @@ -27,7 +27,8 @@ Class implementing a dialog to enter the data of a virtual environment. """ def __init__(self, manager, venvName="", venvDirectory="", - venvInterpreter="", venvVariant=3, parent=None): + venvInterpreter="", venvVariant=3, isGlobal=False, + parent=None): """ Constructor @@ -41,6 +42,8 @@ @type str @param venvVariant Python variant of the virtual environment @type int + @param isGlobal flag indicating a global environment + @type bool @param parent reference to the parent widget @type QWidget """ @@ -66,8 +69,7 @@ self.targetDirectoryPicker.setText(venvDirectory) self.pythonExecPicker.setText(venvInterpreter) self.variantComboBox.setCurrentIndex(3 - venvVariant) - self.globalCheckBox.setChecked(self.__editMode and - not bool(venvDirectory)) + self.globalCheckBox.setChecked(isGlobal) self.__updateOk() @@ -146,8 +148,6 @@ @param checked state of the check box @type bool """ - self.targetDirectoryPicker.setEnabled(not checked) - self.__updateOk() def getData(self): @@ -155,20 +155,14 @@ Public method to retrieve the entered data. @return tuple containing the logical name, the directory, the - interpreter of the virtual environment and the Python variant - @rtype tuple of (str, str, str, int) + interpreter of the virtual environment, the Python variant + and a flag indicating a global environment + @rtype tuple of (str, str, str, int, bool) """ - if self.globalCheckBox.isChecked(): - return ( - self.nameEdit.text(), - "", - self.pythonExecPicker.text(), - 3 - self.variantComboBox.currentIndex(), - ) - else: - return ( - self.nameEdit.text(), - self.targetDirectoryPicker.text(), - self.pythonExecPicker.text(), - 3 - self.variantComboBox.currentIndex(), - ) + return ( + self.nameEdit.text(), + self.targetDirectoryPicker.text(), + self.pythonExecPicker.text(), + 3 - self.variantComboBox.currentIndex(), + self.globalCheckBox.isChecked(), + )
--- a/VirtualEnv/VirtualenvManager.py Fri Jun 22 18:18:23 2018 +0200 +++ b/VirtualEnv/VirtualenvManager.py Sat Jun 23 15:14:48 2018 +0200 @@ -56,11 +56,15 @@ # (empty for a global environment) # interpreter: the path of the Python interpreter # variant: Python variant (2 or 3) + # is_global: a flag indicating a global environment # for venvName in environments: interpreter = environments[venvName]["interpreter"] if os.access(interpreter, os.X_OK): - self.__virtualEnvironments[venvName] = environments[venvName] + environment = environments[venvName] + if "is_global" not in environment: + environment["is_global"] = environment["path"] == "" + self.__virtualEnvironments[venvName] = environment # check, if the interpreter used to run eric is in the environments defaultPy = sys.executable.replace("w.exe", ".exe") @@ -76,6 +80,7 @@ "path": "", "interpreter": defaultPy, "variant": sys.version_info[0], + "is_global": True, } self.__saveSettings() @@ -112,7 +117,7 @@ dia.exec_() def addVirtualEnv(self, venvName, venvDirectory, venvInterpreter="", - venvVariant=3): + venvVariant=3, isGlobal=False): """ Public method to add a virtual environment. @@ -124,6 +129,8 @@ @type str @param venvVariant Python variant of the virtual environment @type int + @param isGlobal flag indicating a global environment + @type bool """ if venvName in self.__virtualEnvironments: ok = E5MessageBox.yesNo( @@ -142,12 +149,14 @@ dlg = VirtualenvInterpreterSelectionDialog(venvName, venvDirectory) if dlg.exec_() == QDialog.Accepted: venvInterpreter, venvVariant = dlg.getData() + isGlobal = True if venvInterpreter: self.__virtualEnvironments[venvName] = { "path": venvDirectory, "interpreter": venvInterpreter, "variant": venvVariant, + "is_global": isGlobal, } self.__saveSettings() @@ -156,7 +165,7 @@ self.__virtualenvManagerDialog.refresh() def setVirtualEnv(self, venvName, venvDirectory, venvInterpreter, - venvVariant): + venvVariant, isGlobal): """ Public method to change a virtual environment. @@ -168,6 +177,8 @@ @type str @param venvVariant Python variant of the virtual environment @type int + @param isGlobal flag indicating a global environment + @type bool """ if venvName not in self.__virtualEnvironments: E5MessageBox.yesNo( @@ -183,6 +194,7 @@ "path": venvDirectory, "interpreter": venvInterpreter, "variant": venvVariant, + "is_global": isGlobal, } self.__saveSettings() @@ -191,7 +203,7 @@ self.__virtualenvManagerDialog.refresh() def renameVirtualEnv(self, oldVenvName, venvName, venvDirectory, - venvInterpreter, venvVariant): + venvInterpreter, venvVariant, isGlobal): """ Public method to substitute a virtual environment entry with a new name. @@ -206,6 +218,8 @@ @type str @param venvVariant Python variant of the virtual environment @type int + @param isGlobal flag indicating a global environment + @type bool """ if oldVenvName not in self.__virtualEnvironments: E5MessageBox.yesNo( @@ -219,7 +233,7 @@ del self.__virtualEnvironments[oldVenvName] self.addVirtualEnv(venvName, venvDirectory, venvInterpreter, - venvVariant) + venvVariant, isGlobal) def deleteVirtualEnvs(self, venvNames): """ @@ -246,8 +260,7 @@ ) if dlg.exec_() == QDialog.Accepted: for venvName in venvNames: - if venvName in self.__virtualEnvironments and \ - bool(self.__virtualEnvironments[venvName]["path"]): + if self.__isEnvironmentDeleteable(venvName): shutil.rmtree( self.__virtualEnvironments[venvName]["path"], True) del self.__virtualEnvironments[venvName] @@ -257,6 +270,26 @@ if self.__virtualenvManagerDialog: self.__virtualenvManagerDialog.refresh() + def __isEnvironmentDeleteable(self, venvName): + """ + Private method to check, if a virtual environment can be deleted from + disk. + + @param venvName name of the virtual environment + @type str + @return flag indicating it can be deleted + @rtype bool + """ + ok = False + if venvName in self.__virtualEnvironments: + ok = True + ok &= bool(self.__virtualEnvironments[venvName]["path"]) + ok &= not self.__virtualEnvironments[venvName]["is_global"] + ok &= os.access(self.__virtualEnvironments[venvName]["path"], + os.W_OK) + + return ok + def removeVirtualEnvs(self, venvNames): """ Public method to delete virtual environment from the list. @@ -386,3 +419,14 @@ environments.append(venvName) return environments + + def isGlobalEnvironment(self, venvName): + """ + Public method to test, if a given environment is a global one. + + @param venvName logical name of the virtual environment + @type str + @return flag indicating a global environment + @rtype bool + """ + return self.__virtualEnvironments[venvName]["is_global"]
--- a/VirtualEnv/VirtualenvManagerDialog.py Fri Jun 22 18:18:23 2018 +0200 +++ b/VirtualEnv/VirtualenvManagerDialog.py Sat Jun 23 15:14:48 2018 +0200 @@ -22,6 +22,7 @@ environments. """ PythonVariantRole = Qt.UserRole + IsGlobalRole = Qt.UserRole + 1 def __init__(self, manager, parent=None): """ @@ -51,7 +52,9 @@ deletableSelectedItemCount = 0 for itm in self.venvList.selectedItems(): - if itm.text(0) != "<default>" and bool(itm.text(1)): + if itm.text(0) != "<default>" and \ + bool(itm.text(1)) and \ + not itm.data(0, VirtualenvManagerDialog.IsGlobalRole): deletableSelectedItemCount += 1 deletableItemCount = 0 @@ -86,8 +89,8 @@ from .VirtualenvAddEditDialog import VirtualenvAddEditDialog dlg = VirtualenvAddEditDialog(self.__manager) if dlg.exec_() == QDialog.Accepted: - venvName, venvDirectory, venvInterpreter, venvVariant = \ - dlg.getData() + venvName, venvDirectory, venvInterpreter, venvVariant, \ + isGlobal = dlg.getData() self.__manager.addVirtualEnv(venvName, venvDirectory, venvInterpreter, venvVariant) @@ -111,18 +114,20 @@ dlg = VirtualenvAddEditDialog( self.__manager, selectedItem.text(0), selectedItem.text(1), selectedItem.text(2), - selectedItem.data(0, VirtualenvManagerDialog.PythonVariantRole) + selectedItem.data(0, VirtualenvManagerDialog.PythonVariantRole), + selectedItem.data(0, VirtualenvManagerDialog.IsGlobalRole) ) if dlg.exec_() == QDialog.Accepted: - venvName, venvDirectory, venvInterpreter, venvVariant = \ - dlg.getData() + venvName, venvDirectory, venvInterpreter, venvVariant, \ + isGlobal = dlg.getData() if venvName != oldVenvName: self.__manager.renameVirtualEnv( oldVenvName, venvName, venvDirectory, venvInterpreter, - venvVariant) + venvVariant, isGlobal) else: self.__manager.setVirtualEnv( - venvName, venvDirectory, venvInterpreter, venvVariant) + venvName, venvDirectory, venvInterpreter, venvVariant, + isGlobal) @pyqtSlot() def on_removeButton_clicked(self): @@ -218,6 +223,8 @@ ]) itm.setData(0, VirtualenvManagerDialog.PythonVariantRole, environments[venvName]["variant"]) + itm.setData(0, VirtualenvManagerDialog.IsGlobalRole, + environments[venvName]["is_global"]) self.__resizeSections()