diff -r d6c0b8ab1fc6 -r 17b3c75913de VirtualEnv/VirtualenvManagerDialog.py --- a/VirtualEnv/VirtualenvManagerDialog.py Fri Jun 15 18:49:48 2018 +0200 +++ b/VirtualEnv/VirtualenvManagerDialog.py Sat Jun 16 13:34:22 2018 +0200 @@ -21,6 +21,8 @@ Class implementing a dialog to manage the list of defined virtual environments. """ + PythonVariantRole = Qt.UserRole + def __init__(self, manager, parent=None): """ Constructor @@ -47,6 +49,17 @@ selectedItemsCount = len(self.venvList.selectedItems()) topLevelItemCount = self.venvList.topLevelItemCount() + deletableSelectedItemCount = 0 + for itm in self.venvList.selectedItems(): + if itm.text(0) != "<default>" and bool(itm.text(1)): + deletableSelectedItemCount += 1 + + deletableItemCount = 0 + for index in range(topLevelItemCount): + itm = self.venvList.topLevelItem(index) + if itm.text(0) != "<default>" and bool(itm.text(1)): + deletableItemCount += 1 + canBeDeleted = ( selectedItemsCount == 1 and self.venvList.selectedItems()[0].text(0) != "<default>" @@ -57,12 +70,13 @@ ) self.editButton.setEnabled(selectedItemsCount == 1) + self.removeButton.setEnabled(selectedItemsCount > 1 or canBeDeleted) self.removeAllButton.setEnabled( topLevelItemCount > 1 or canAllBeDeleted) - self.deleteButton.setEnabled(selectedItemsCount > 1 or canBeDeleted) - self.deleteAllButton.setEnabled( - topLevelItemCount > 1 or canAllBeDeleted) + + self.deleteButton.setEnabled(deletableSelectedItemCount) + self.deleteAllButton.setEnabled(deletableItemCount) @pyqtSlot() def on_addButton_clicked(self): @@ -72,10 +86,11 @@ from .VirtualenvAddEditDialog import VirtualenvAddEditDialog dlg = VirtualenvAddEditDialog(self.__manager) if dlg.exec_() == QDialog.Accepted: - venvName, venvDirectory, venvInterpreter = dlg.getData() + venvName, venvDirectory, venvInterpreter, venvVariant = \ + dlg.getData() self.__manager.addVirtualEnv(venvName, venvDirectory, - venvInterpreter) + venvInterpreter, venvVariant) @pyqtSlot() def on_newButton_clicked(self): @@ -93,17 +108,21 @@ oldVenvName = selectedItem.text(0) from .VirtualenvAddEditDialog import VirtualenvAddEditDialog - dlg = VirtualenvAddEditDialog(self.__manager, selectedItem.text(0), - selectedItem.text(1), - selectedItem.text(2)) + dlg = VirtualenvAddEditDialog( + self.__manager, selectedItem.text(0), + selectedItem.text(1), selectedItem.text(2), + selectedItem.data(0, VirtualenvManagerDialog.PythonVariantRole) + ) if dlg.exec_() == QDialog.Accepted: - venvName, venvDirectory, venvInterpreter = dlg.getData() + venvName, venvDirectory, venvInterpreter, venvVariant = \ + dlg.getData() if venvName != oldVenvName: self.__manager.renameVirtualEnv( - oldVenvName, venvName, venvDirectory, venvInterpreter) + oldVenvName, venvName, venvDirectory, venvInterpreter, + venvVariant) else: self.__manager.setVirtualEnv( - venvName, venvDirectory, venvInterpreter) + venvName, venvDirectory, venvInterpreter, venvVariant) @pyqtSlot() def on_removeButton_clicked(self): @@ -192,11 +211,13 @@ """ environments = self.__manager.getEnvironmentEntries() for venvName in environments: - QTreeWidgetItem(self.venvList, [ + itm = QTreeWidgetItem(self.venvList, [ venvName, - environments[venvName][0], - environments[venvName][1], + environments[venvName]["path"], + environments[venvName]["interpreter"], ]) + itm.setData(0, VirtualenvManagerDialog.PythonVariantRole, + environments[venvName]["variant"]) self.__resizeSections()