src/eric7/VirtualEnv/VirtualenvManagerWidgets.py

branch
eric7
changeset 10194
2c26b4fe25db
parent 9653
e67609152c5e
child 10351
1f9bafeff96c
diff -r 0d7392e49c48 -r 2c26b4fe25db src/eric7/VirtualEnv/VirtualenvManagerWidgets.py
--- a/src/eric7/VirtualEnv/VirtualenvManagerWidgets.py	Tue Sep 05 14:17:29 2023 +0200
+++ b/src/eric7/VirtualEnv/VirtualenvManagerWidgets.py	Wed Sep 06 10:28:50 2023 +0200
@@ -34,11 +34,7 @@
     environments.
     """
 
-    IsGlobalRole = Qt.ItemDataRole.UserRole + 1
-    IsCondaRole = Qt.ItemDataRole.UserRole + 2
-    IsRemoteRole = Qt.ItemDataRole.UserRole + 3
-    ExecPathRole = Qt.ItemDataRole.UserRole + 4
-    DescriptionRole = Qt.ItemDataRole.UserRole + 5
+    MetadataRole = Qt.ItemDataRole.UserRole + 1
 
     def __init__(self, manager, parent=None):
         """
@@ -94,8 +90,8 @@
             if (
                 itm.text(0) != "<default>"
                 and bool(itm.text(1))
-                and not itm.data(0, VirtualenvManagerWidget.IsGlobalRole)
-                and not itm.data(0, VirtualenvManagerWidget.IsRemoteRole)
+                and not itm.data(0, VirtualenvManagerWidget.MetadataRole).is_global
+                and not itm.data(0, VirtualenvManagerWidget.MetadataRole).is_remote
             ):
                 deletableSelectedItemCount += 1
 
@@ -105,7 +101,7 @@
             if (
                 itm.text(0) != "<default>"
                 and bool(itm.text(1))
-                and not itm.data(0, VirtualenvManagerWidget.IsRemoteRole)
+                and not itm.data(0, VirtualenvManagerWidget.MetadataRole).is_remote
             ):
                 deletableItemCount += 1
 
@@ -151,30 +147,11 @@
         from .VirtualenvAddEditDialog import VirtualenvAddEditDialog
 
         dlg = VirtualenvAddEditDialog(
-            self.__manager, baseDir=self.envBaseDirectoryPicker.text()
+            self.__manager, baseDir=self.envBaseDirectoryPicker.text(), parent=self
         )
         if dlg.exec() == QDialog.DialogCode.Accepted:
-            (
-                venvName,
-                venvDirectory,
-                venvInterpreter,
-                isGlobal,
-                isConda,
-                isRemote,
-                execPath,
-                description,
-            ) = dlg.getData()
-
-            self.__manager.addVirtualEnv(
-                venvName,
-                venvDirectory,
-                venvInterpreter,
-                isGlobal,
-                isConda,
-                isRemote,
-                execPath,
-                description,
-            )
+            metadata = dlg.getMetaData()
+            self.__manager.addVirtualEnv(metadata)
 
     @pyqtSlot()
     def on_newButton_clicked(self):
@@ -195,50 +172,16 @@
 
         dlg = VirtualenvAddEditDialog(
             self.__manager,
-            selectedItem.text(0),
-            selectedItem.text(1),
-            selectedItem.text(2),
-            selectedItem.data(0, VirtualenvManagerWidget.IsGlobalRole),
-            selectedItem.data(0, VirtualenvManagerWidget.IsCondaRole),
-            selectedItem.data(0, VirtualenvManagerWidget.IsRemoteRole),
-            selectedItem.data(0, VirtualenvManagerWidget.ExecPathRole),
-            selectedItem.data(0, VirtualenvManagerWidget.DescriptionRole),
+            selectedItem.data(0, VirtualenvManagerWidget.MetadataRole),
             baseDir=self.envBaseDirectoryPicker.text(),
+            parent=self,
         )
         if dlg.exec() == QDialog.DialogCode.Accepted:
-            (
-                venvName,
-                venvDirectory,
-                venvInterpreter,
-                isGlobal,
-                isConda,
-                isRemote,
-                execPath,
-                description,
-            ) = dlg.getData()
-            if venvName != oldVenvName:
-                self.__manager.renameVirtualEnv(
-                    oldVenvName,
-                    venvName,
-                    venvDirectory,
-                    venvInterpreter,
-                    isGlobal,
-                    isConda,
-                    isRemote,
-                    execPath,
-                    description,
-                )
+            metadata = dlg.getMetaData()
+            if metadata.name != oldVenvName:
+                self.__manager.renameVirtualEnv(oldVenvName, metadata)
             else:
-                self.__manager.setVirtualEnv(
-                    venvName,
-                    venvDirectory,
-                    venvInterpreter,
-                    isGlobal,
-                    isConda,
-                    isRemote,
-                    execPath,
-                    description,
-                )
+                self.__manager.setVirtualEnv(metadata)
 
     @pyqtSlot()
     def on_upgradeButton_clicked(self):
@@ -309,7 +252,9 @@
         selectedItems = self.venvList.selectedItems()
         if len(selectedItems) == 1:
             self.descriptionEdit.setPlainText(
-                selectedItems[0].data(0, VirtualenvManagerWidget.DescriptionRole)
+                selectedItems[0]
+                .data(0, VirtualenvManagerWidget.MetadataRole)
+                .description
             )
         else:
             self.descriptionEdit.clear()
@@ -340,44 +285,19 @@
         """
         Private method to populate the list of virtual environments.
         """
-        environments = self.__manager.getEnvironmentEntries()
-        for venvName in environments:
+        for environment in self.__manager.getEnvironmentEntries():
             itm = QTreeWidgetItem(
                 self.venvList,
                 [
-                    venvName,
-                    environments[venvName]["path"],
-                    environments[venvName]["interpreter"],
+                    environment.name,
+                    environment.path,
+                    environment.interpreter,
                 ],
             )
-            itm.setData(
-                0,
-                VirtualenvManagerWidget.IsGlobalRole,
-                environments[venvName]["is_global"],
-            )
-            itm.setData(
-                0,
-                VirtualenvManagerWidget.IsCondaRole,
-                environments[venvName]["is_conda"],
-            )
-            itm.setData(
-                0,
-                VirtualenvManagerWidget.IsRemoteRole,
-                environments[venvName]["is_remote"],
-            )
-            itm.setData(
-                0,
-                VirtualenvManagerWidget.ExecPathRole,
-                environments[venvName]["exec_path"],
-            )
-            itm.setData(
-                0,
-                VirtualenvManagerWidget.DescriptionRole,
-                environments[venvName]["description"],
-            )
+            itm.setData(0, VirtualenvManagerWidget.MetadataRole, environment)
 
             # show remote environments with underlined font
-            if environments[venvName]["is_remote"]:
+            if environment.is_remote:
                 font = itm.font(0)
                 font.setUnderline(True)
                 for column in range(itm.columnCount()):
@@ -386,14 +306,14 @@
                 # local environments
 
                 # show global environments with bold font
-                if environments[venvName]["is_global"]:
+                if environment.is_global:
                     font = itm.font(0)
                     font.setBold(True)
                     for column in range(itm.columnCount()):
                         itm.setFont(column, font)
 
                 # show Anaconda environments with italic font
-                if environments[venvName]["is_conda"]:
+                if environment.is_conda:
                     font = itm.font(0)
                     font.setItalic(True)
                     for column in range(itm.columnCount()):

eric ide

mercurial