VirtualEnv/VirtualenvManagerDialog.py

changeset 6349
17b3c75913de
parent 6338
104ee21d765d
child 6362
ec32d1d7f525
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()
     

eric ide

mercurial