src/eric7/VirtualEnv/VirtualenvManagerWidgets.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
--- a/src/eric7/VirtualEnv/VirtualenvManagerWidgets.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/VirtualEnv/VirtualenvManagerWidgets.py	Wed Jul 13 14:55:47 2022 +0200
@@ -12,8 +12,12 @@
 
 from PyQt6.QtCore import pyqtSlot, Qt
 from PyQt6.QtWidgets import (
-    QWidget, QDialog, QDialogButtonBox, QTreeWidgetItem, QHeaderView,
-    QVBoxLayout
+    QWidget,
+    QDialog,
+    QDialogButtonBox,
+    QTreeWidgetItem,
+    QHeaderView,
+    QVBoxLayout,
 )
 
 from EricWidgets.EricPathPicker import EricPathPickerModes
@@ -30,15 +34,16 @@
     Class implementing a widget to manage the list of defined virtual
     environments.
     """
+
     IsGlobalRole = Qt.ItemDataRole.UserRole + 1
     IsCondaRole = Qt.ItemDataRole.UserRole + 2
     IsRemoteRole = Qt.ItemDataRole.UserRole + 3
     ExecPathRole = Qt.ItemDataRole.UserRole + 4
-    
+
     def __init__(self, manager, parent=None):
         """
         Constructor
-        
+
         @param manager reference to the virtual environment manager
         @type VirtualenvManager
         @param parent reference to the parent widget
@@ -46,9 +51,9 @@
         """
         super().__init__(parent)
         self.setupUi(self)
-        
+
         self.__manager = manager
-        
+
         self.refreshButton.setIcon(UI.PixmapCache.getIcon("reload"))
         self.addButton.setIcon(UI.PixmapCache.getIcon("plus"))
         self.newButton.setIcon(UI.PixmapCache.getIcon("new"))
@@ -59,76 +64,75 @@
         self.deleteButton.setIcon(UI.PixmapCache.getIcon("fileDelete"))
         self.deleteAllButton.setIcon(UI.PixmapCache.getIcon("fileDeleteList"))
         self.saveButton.setIcon(UI.PixmapCache.getIcon("fileSave"))
-        
+
         baseDir = self.__manager.getVirtualEnvironmentsBaseDir()
         if not baseDir:
             baseDir = Utilities.getHomeDir()
-        
+
         self.envBaseDirectoryPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
-        self.envBaseDirectoryPicker.setWindowTitle(
-            self.tr("Virtualenv Base Directory"))
+        self.envBaseDirectoryPicker.setWindowTitle(self.tr("Virtualenv Base Directory"))
         self.envBaseDirectoryPicker.setText(baseDir)
-        
+
         self.__populateVenvList()
         self.__updateButtons()
-        
+
         self.venvList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder)
-        
+
         self.__manager.virtualEnvironmentsListChanged.connect(self.__refresh)
-    
+
     def __updateButtons(self):
         """
         Private method to update the enabled state of the various buttons.
         """
         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)) and
-                not itm.data(0, VirtualenvManagerWidget.IsGlobalRole) and
-                not itm.data(0, VirtualenvManagerWidget.IsRemoteRole)
+                itm.text(0) != "<default>"
+                and bool(itm.text(1))
+                and not itm.data(0, VirtualenvManagerWidget.IsGlobalRole)
+                and not itm.data(0, VirtualenvManagerWidget.IsRemoteRole)
             ):
                 deletableSelectedItemCount += 1
-        
+
         deletableItemCount = 0
         for index in range(topLevelItemCount):
             itm = self.venvList.topLevelItem(index)
             if (
-                itm.text(0) != "<default>" and
-                bool(itm.text(1)) and
-                not itm.data(0, VirtualenvManagerWidget.IsRemoteRole)
+                itm.text(0) != "<default>"
+                and bool(itm.text(1))
+                and not itm.data(0, VirtualenvManagerWidget.IsRemoteRole)
             ):
                 deletableItemCount += 1
-        
+
         canBeRemoved = (
-            selectedItemsCount == 1 and
-            self.venvList.selectedItems()[0].text(0) != "<default>"
+            selectedItemsCount == 1
+            and self.venvList.selectedItems()[0].text(0) != "<default>"
         )
         canAllBeRemoved = (
-            topLevelItemCount == 1 and
-            self.venvList.topLevelItem(0).text(0) != "<default>"
+            topLevelItemCount == 1
+            and self.venvList.topLevelItem(0).text(0) != "<default>"
         )
-        
+
         self.editButton.setEnabled(selectedItemsCount == 1)
-        
+
         self.removeButton.setEnabled(selectedItemsCount > 1 or canBeRemoved)
-        self.removeAllButton.setEnabled(
-            topLevelItemCount > 1 or canAllBeRemoved)
-        
+        self.removeAllButton.setEnabled(topLevelItemCount > 1 or canAllBeRemoved)
+
         self.deleteButton.setEnabled(deletableSelectedItemCount)
         self.deleteAllButton.setEnabled(deletableItemCount)
-        
+
         if selectedItemsCount == 1:
             venvName = self.venvList.selectedItems()[0].text(0)
             venvDirectory = self.__manager.getVirtualenvDirectory(venvName)
-            self.upgradeButton.setEnabled(os.path.exists(os.path.join(
-                venvDirectory, "pyvenv.cfg")))
+            self.upgradeButton.setEnabled(
+                os.path.exists(os.path.join(venvDirectory, "pyvenv.cfg"))
+            )
         else:
             self.upgradeButton.setEnabled(False)
-    
+
     @pyqtSlot()
     def on_refreshButton_clicked(self):
         """
@@ -136,33 +140,45 @@
         """
         self.__manager.reloadSettings()
         self.__refresh()
-    
+
     @pyqtSlot()
     def on_addButton_clicked(self):
         """
         Private slot to add a new entry.
         """
         from .VirtualenvAddEditDialog import VirtualenvAddEditDialog
+
         dlg = VirtualenvAddEditDialog(
-            self.__manager,
-            baseDir=self.envBaseDirectoryPicker.text()
+            self.__manager, baseDir=self.envBaseDirectoryPicker.text()
         )
         if dlg.exec() == QDialog.DialogCode.Accepted:
-            (venvName, venvDirectory, venvInterpreter, isGlobal, isConda,
-             isRemote, execPath) = dlg.getData()
-            
+            (
+                venvName,
+                venvDirectory,
+                venvInterpreter,
+                isGlobal,
+                isConda,
+                isRemote,
+                execPath,
+            ) = dlg.getData()
+
             self.__manager.addVirtualEnv(
-                venvName, venvDirectory, venvInterpreter, isGlobal, isConda,
-                isRemote, execPath)
-    
+                venvName,
+                venvDirectory,
+                venvInterpreter,
+                isGlobal,
+                isConda,
+                isRemote,
+                execPath,
+            )
+
     @pyqtSlot()
     def on_newButton_clicked(self):
         """
         Private slot to create a new virtual environment.
         """
-        self.__manager.createVirtualEnv(
-            baseDir=self.envBaseDirectoryPicker.text())
-    
+        self.__manager.createVirtualEnv(baseDir=self.envBaseDirectoryPicker.text())
+
     @pyqtSlot()
     def on_editButton_clicked(self):
         """
@@ -170,37 +186,59 @@
         """
         selectedItem = self.venvList.selectedItems()[0]
         oldVenvName = selectedItem.text(0)
-        
+
         from .VirtualenvAddEditDialog import VirtualenvAddEditDialog
+
         dlg = VirtualenvAddEditDialog(
-            self.__manager, selectedItem.text(0),
-            selectedItem.text(1), selectedItem.text(2),
+            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),
-            baseDir=self.envBaseDirectoryPicker.text()
+            baseDir=self.envBaseDirectoryPicker.text(),
         )
         if dlg.exec() == QDialog.DialogCode.Accepted:
-            (venvName, venvDirectory, venvInterpreter, isGlobal, isConda,
-             isRemote, execPath) = dlg.getData()
+            (
+                venvName,
+                venvDirectory,
+                venvInterpreter,
+                isGlobal,
+                isConda,
+                isRemote,
+                execPath,
+            ) = dlg.getData()
             if venvName != oldVenvName:
                 self.__manager.renameVirtualEnv(
-                    oldVenvName, venvName, venvDirectory, venvInterpreter,
-                    isGlobal, isConda, isRemote, execPath)
+                    oldVenvName,
+                    venvName,
+                    venvDirectory,
+                    venvInterpreter,
+                    isGlobal,
+                    isConda,
+                    isRemote,
+                    execPath,
+                )
             else:
                 self.__manager.setVirtualEnv(
-                    venvName, venvDirectory, venvInterpreter, isGlobal,
-                    isConda, isRemote, execPath)
-    
+                    venvName,
+                    venvDirectory,
+                    venvInterpreter,
+                    isGlobal,
+                    isConda,
+                    isRemote,
+                    execPath,
+                )
+
     @pyqtSlot()
     def on_upgradeButton_clicked(self):
         """
         Private slot to upgrade a virtual environment.
         """
-        self.__manager.upgradeVirtualEnv(
-            self.venvList.selectedItems()[0].text(0))
-    
+        self.__manager.upgradeVirtualEnv(self.venvList.selectedItems()[0].text(0))
+
     @pyqtSlot()
     def on_removeButton_clicked(self):
         """
@@ -210,10 +248,10 @@
         selectedVenvs = []
         for itm in self.venvList.selectedItems():
             selectedVenvs.append(itm.text(0))
-        
+
         if selectedVenvs:
             self.__manager.removeVirtualEnvs(selectedVenvs)
-    
+
     @pyqtSlot()
     def on_removeAllButton_clicked(self):
         """
@@ -224,10 +262,10 @@
         for index in range(self.venvList.topLevelItemCount()):
             itm = self.venvList.topLevelItem(index)
             venvNames.append(itm.text(0))
-        
+
         if venvNames:
             self.__manager.removeVirtualEnvs(venvNames)
-    
+
     @pyqtSlot()
     def on_deleteButton_clicked(self):
         """
@@ -236,10 +274,10 @@
         selectedVenvs = []
         for itm in self.venvList.selectedItems():
             selectedVenvs.append(itm.text(0))
-        
+
         if selectedVenvs:
             self.__manager.deleteVirtualEnvs(selectedVenvs)
-    
+
     @pyqtSlot()
     def on_deleteAllButton_clicked(self):
         """
@@ -249,17 +287,17 @@
         for index in range(self.venvList.topLevelItemCount()):
             itm = self.venvList.topLevelItem(index)
             venvNames.append(itm.text(0))
-        
+
         if venvNames:
             self.__manager.deleteVirtualEnvs(venvNames)
-    
+
     @pyqtSlot()
     def on_venvList_itemSelectionChanged(self):
         """
         Private slot handling a change of the selected items.
         """
         self.__updateButtons()
-    
+
     @pyqtSlot()
     def __refresh(self):
         """
@@ -269,40 +307,54 @@
         selectedVenvs = []
         for itm in self.venvList.selectedItems():
             selectedVenvs.append(itm.text(0))
-        
+
         # 2. clear the list
         self.venvList.clear()
-        
+
         # 3. re-populate the list
         self.__populateVenvList()
-        
+
         # 4. re-establish selection
         for venvName in selectedVenvs:
-            itms = self.venvList.findItems(
-                venvName, Qt.MatchFlag.MatchExactly, 0)
+            itms = self.venvList.findItems(venvName, Qt.MatchFlag.MatchExactly, 0)
             if itms:
                 itms[0].setSelected(True)
-    
+
     def __populateVenvList(self):
         """
         Private method to populate the list of virtual environments.
         """
         environments = self.__manager.getEnvironmentEntries()
         for venvName in environments:
-            itm = QTreeWidgetItem(self.venvList, [
-                venvName,
-                environments[venvName]["path"],
-                environments[venvName]["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 = QTreeWidgetItem(
+                self.venvList,
+                [
+                    venvName,
+                    environments[venvName]["path"],
+                    environments[venvName]["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"],
+            )
+
             # show remote environments with underlined font
             if environments[venvName]["is_remote"]:
                 font = itm.font(0)
@@ -311,32 +363,31 @@
                     itm.setFont(column, font)
             else:
                 # local environments
-                
+
                 # show global environments with bold font
                 if environments[venvName]["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"]:
                     font = itm.font(0)
                     font.setItalic(True)
                     for column in range(itm.columnCount()):
                         itm.setFont(column, font)
-        
+
         self.__resizeSections()
-    
+
     def __resizeSections(self):
         """
         Private method to resize the sections of the environment list to their
         contents.
         """
-        self.venvList.header().resizeSections(
-            QHeaderView.ResizeMode.ResizeToContents)
+        self.venvList.header().resizeSections(QHeaderView.ResizeMode.ResizeToContents)
         self.venvList.header().setStretchLastSection(True)
-    
+
     @pyqtSlot()
     def on_saveButton_clicked(self):
         """
@@ -350,10 +401,11 @@
     """
     Class implementing the virtual environments manager dialog variant.
     """
+
     def __init__(self, manager, parent=None):
         """
         Constructor
-        
+
         @param manager reference to the virtual environment manager
         @type VirtualenvManager
         @param parent reference to the parent widget
@@ -361,22 +413,21 @@
         """
         super().__init__(parent)
         self.setSizeGripEnabled(True)
-        
+
         self.__layout = QVBoxLayout(self)
         self.setLayout(self.__layout)
-        
+
         self.cw = VirtualenvManagerWidget(manager, self)
         self.__layout.addWidget(self.cw)
-        
+
         self.buttonBox = QDialogButtonBox(
-            QDialogButtonBox.StandardButton.Close,
-            Qt.Orientation.Horizontal,
-            self)
+            QDialogButtonBox.StandardButton.Close, Qt.Orientation.Horizontal, self
+        )
         self.__layout.addWidget(self.buttonBox)
-        
+
         self.resize(700, 500)
         self.setWindowTitle(self.tr("Manage Virtual Environments"))
-        
+
         self.buttonBox.accepted.connect(self.accept)
         self.buttonBox.rejected.connect(self.reject)
 
@@ -385,34 +436,36 @@
     """
     Main window class for the standalone virtual environments manager.
     """
+
     def __init__(self, parent=None):
         """
         Constructor
-        
+
         @param parent reference to the parent widget (QWidget)
         """
         super().__init__(parent)
-        
+
         from VirtualEnv.VirtualenvManager import VirtualenvManager
+
         self.__virtualenvManager = VirtualenvManager(self)
-        
+
         self.__centralWidget = QWidget(self)
         self.__layout = QVBoxLayout(self.__centralWidget)
         self.__centralWidget.setLayout(self.__layout)
-        
+
         self.__virtualenvManagerWidget = VirtualenvManagerWidget(
-            self.__virtualenvManager, self.__centralWidget)
+            self.__virtualenvManager, self.__centralWidget
+        )
         self.__layout.addWidget(self.__virtualenvManagerWidget)
-        
+
         self.__buttonBox = QDialogButtonBox(
-            QDialogButtonBox.StandardButton.Close,
-            Qt.Orientation.Horizontal,
-            self)
+            QDialogButtonBox.StandardButton.Close, Qt.Orientation.Horizontal, self
+        )
         self.__layout.addWidget(self.__buttonBox)
-        
+
         self.setCentralWidget(self.__centralWidget)
         self.resize(700, 500)
         self.setWindowTitle(self.tr("Manage Virtual Environments"))
-        
+
         self.__buttonBox.accepted.connect(self.close)
         self.__buttonBox.rejected.connect(self.close)

eric ide

mercurial