src/eric7/Project/ProjectProtocolsBrowser.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
--- a/src/eric7/Project/ProjectProtocolsBrowser.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/Project/ProjectProtocolsBrowser.py	Wed Jul 13 14:55:47 2022 +0200
@@ -20,14 +20,18 @@
 from EricWidgets.EricProgressDialog import EricProgressDialog
 
 from .ProjectBrowserModel import (
-    ProjectBrowserFileItem, ProjectBrowserSimpleDirectoryItem,
-    ProjectBrowserDirectoryItem, ProjectBrowserProtocolsType
+    ProjectBrowserFileItem,
+    ProjectBrowserSimpleDirectoryItem,
+    ProjectBrowserDirectoryItem,
+    ProjectBrowserProtocolsType,
 )
 from .ProjectBaseBrowser import ProjectBaseBrowser
 
 from UI.BrowserModel import (
-    BrowserFileItem, BrowserClassItem, BrowserMethodItem,
-    BrowserClassAttributeItem
+    BrowserFileItem,
+    BrowserClassItem,
+    BrowserMethodItem,
+    BrowserClassAttributeItem,
 )
 import UI.PixmapCache
 from UI.NotificationWidget import NotificationTypes
@@ -40,7 +44,7 @@
 class ProjectProtocolsBrowser(ProjectBaseBrowser):
     """
     A class used to display the protocols (protobuf) part of the project.
-    
+
     @signal appendStdout(str) emitted after something was received from
         a QProcess on stdout
     @signal appendStderr(str) emitted after something was received from
@@ -48,37 +52,41 @@
     @signal showMenu(str, QMenu) emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
     """
+
     appendStdout = pyqtSignal(str)
     appendStderr = pyqtSignal(str)
     showMenu = pyqtSignal(str, QMenu)
-    
+
     def __init__(self, project, parent=None):
         """
         Constructor
-        
+
         @param project reference to the project object
         @type Project
         @param parent parent widget of this browser
         @type QWidget
         """
-        ProjectBaseBrowser.__init__(self, project,
-                                    ProjectBrowserProtocolsType, parent)
-        
-        self.selectedItemsFilter = [ProjectBrowserFileItem,
-                                    ProjectBrowserSimpleDirectoryItem]
-        
-        self.setWindowTitle(self.tr('Protocols (protobuf)'))
-        
-        self.setWhatsThis(self.tr(
-            """<b>Project Protocols Browser</b>"""
-            """<p>This allows to easily see all protocols (protobuf files)"""
-            """ contained in the current project. Several actions can be"""
-            """ executed via the context menu.</p>"""
-        ))
-        
+        ProjectBaseBrowser.__init__(self, project, ProjectBrowserProtocolsType, parent)
+
+        self.selectedItemsFilter = [
+            ProjectBrowserFileItem,
+            ProjectBrowserSimpleDirectoryItem,
+        ]
+
+        self.setWindowTitle(self.tr("Protocols (protobuf)"))
+
+        self.setWhatsThis(
+            self.tr(
+                """<b>Project Protocols Browser</b>"""
+                """<p>This allows to easily see all protocols (protobuf files)"""
+                """ contained in the current project. Several actions can be"""
+                """ executed via the context menu.</p>"""
+            )
+        )
+
         project.prepareRepopulateItem.connect(self._prepareRepopulateItem)
         project.completeRepopulateItem.connect(self._completeRepopulateItem)
-    
+
     def _createPopupMenus(self):
         """
         Protected overloaded method to generate the popup menu.
@@ -87,224 +95,238 @@
         self.multiMenuActions = []
         self.dirMenuActions = []
         self.dirMultiMenuActions = []
-        
+
         self.sourceMenu = QMenu(self)
+        self.sourceMenu.addAction(self.tr("Compile protocol"), self.__compileProtocol)
         self.sourceMenu.addAction(
-            self.tr('Compile protocol'), self.__compileProtocol)
-        self.sourceMenu.addAction(
-            self.tr('Compile all protocols'),
-            self.__compileAllProtocols)
+            self.tr("Compile all protocols"), self.__compileAllProtocols
+        )
         self.sourceMenu.addSeparator()
         self.sourceMenu.addAction(
-            self.tr('Compile protocol as gRPC'),
-            lambda: self.__compileProtocol(grpc=True))
+            self.tr("Compile protocol as gRPC"),
+            lambda: self.__compileProtocol(grpc=True),
+        )
         self.sourceMenu.addAction(
-            self.tr('Compile all protocols as gRPC'),
-            lambda: self.__compileAllProtocols(grpc=True))
+            self.tr("Compile all protocols as gRPC"),
+            lambda: self.__compileAllProtocols(grpc=True),
+        )
         self.sourceMenu.addSeparator()
-        self.sourceMenu.addAction(self.tr('Open'), self._openItem)
+        self.sourceMenu.addAction(self.tr("Open"), self._openItem)
         self.sourceMenu.addSeparator()
-        act = self.sourceMenu.addAction(
-            self.tr('Rename file'), self._renameFile)
+        act = self.sourceMenu.addAction(self.tr("Rename file"), self._renameFile)
         self.menuActions.append(act)
         act = self.sourceMenu.addAction(
-            self.tr('Remove from project'), self._removeFile)
+            self.tr("Remove from project"), self._removeFile
+        )
+        self.menuActions.append(act)
+        act = self.sourceMenu.addAction(self.tr("Delete"), self.__deleteFile)
         self.menuActions.append(act)
-        act = self.sourceMenu.addAction(
-            self.tr('Delete'), self.__deleteFile)
-        self.menuActions.append(act)
+        self.sourceMenu.addSeparator()
+        self.sourceMenu.addAction(self.tr("Add protocols..."), self.__addProtocolFiles)
+        self.sourceMenu.addAction(
+            self.tr("Add protocols directory..."), self.__addProtocolsDirectory
+        )
         self.sourceMenu.addSeparator()
         self.sourceMenu.addAction(
-            self.tr('Add protocols...'), self.__addProtocolFiles)
-        self.sourceMenu.addAction(
-            self.tr('Add protocols directory...'),
-            self.__addProtocolsDirectory)
-        self.sourceMenu.addSeparator()
-        self.sourceMenu.addAction(
-            self.tr('Copy Path to Clipboard'), self._copyToClipboard)
+            self.tr("Copy Path to Clipboard"), self._copyToClipboard
+        )
         self.sourceMenu.addSeparator()
         self.sourceMenu.addAction(
-            self.tr('Expand all directories'), self._expandAllDirs)
+            self.tr("Expand all directories"), self._expandAllDirs
+        )
         self.sourceMenu.addAction(
-            self.tr('Collapse all directories'), self._collapseAllDirs)
+            self.tr("Collapse all directories"), self._collapseAllDirs
+        )
         self.sourceMenu.addSeparator()
-        self.sourceMenu.addAction(self.tr('Configure...'), self._configure)
+        self.sourceMenu.addAction(self.tr("Configure..."), self._configure)
         self.sourceMenu.addAction(
-            self.tr('Configure Protobuf...'), self.__configureProtobuf)
+            self.tr("Configure Protobuf..."), self.__configureProtobuf
+        )
 
         self.menu = QMenu(self)
-        self.menu.addAction(
-            self.tr('Compile protocol'), self.__compileProtocol)
+        self.menu.addAction(self.tr("Compile protocol"), self.__compileProtocol)
         self.menu.addAction(
-            self.tr('Compile all protocols'),
-            self.__compileAllProtocols)
+            self.tr("Compile all protocols"), self.__compileAllProtocols
+        )
         self.menu.addSeparator()
         self.menu.addAction(
-            self.tr('Compile protocol as gRPC'),
-            lambda: self.__compileProtocol(grpc=True))
-        self.menu.addAction(
-            self.tr('Compile all protocols as gRPC'),
-            lambda: self.__compileAllProtocols(grpc=True))
-        self.menu.addSeparator()
-        self.menu.addAction(self.tr('Open'), self._openItem)
-        self.menu.addSeparator()
-        self.menu.addAction(
-            self.tr('Add protocols...'), self.__addProtocolFiles)
+            self.tr("Compile protocol as gRPC"),
+            lambda: self.__compileProtocol(grpc=True),
+        )
         self.menu.addAction(
-            self.tr('Add protocols directory...'),
-            self.__addProtocolsDirectory)
+            self.tr("Compile all protocols as gRPC"),
+            lambda: self.__compileAllProtocols(grpc=True),
+        )
         self.menu.addSeparator()
-        self.menu.addAction(
-            self.tr('Expand all directories'), self._expandAllDirs)
+        self.menu.addAction(self.tr("Open"), self._openItem)
+        self.menu.addSeparator()
+        self.menu.addAction(self.tr("Add protocols..."), self.__addProtocolFiles)
         self.menu.addAction(
-            self.tr('Collapse all directories'), self._collapseAllDirs)
+            self.tr("Add protocols directory..."), self.__addProtocolsDirectory
+        )
         self.menu.addSeparator()
-        self.menu.addAction(self.tr('Configure...'), self._configure)
-        self.menu.addAction(
-            self.tr('Configure Protobuf...'), self.__configureProtobuf)
+        self.menu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
+        self.menu.addAction(self.tr("Collapse all directories"), self._collapseAllDirs)
+        self.menu.addSeparator()
+        self.menu.addAction(self.tr("Configure..."), self._configure)
+        self.menu.addAction(self.tr("Configure Protobuf..."), self.__configureProtobuf)
 
         self.backMenu = QMenu(self)
         self.backMenu.addAction(
-            self.tr('Compile all protocols'),
-            self.__compileAllProtocols)
-        self.backMenu.addSeparator()
-        self.backMenu.addAction(
-            self.tr('Compile all protocols as gRPC'),
-            lambda: self.__compileAllProtocols(grpc=True))
+            self.tr("Compile all protocols"), self.__compileAllProtocols
+        )
         self.backMenu.addSeparator()
         self.backMenu.addAction(
-            self.tr('Add protocols...'), self.project.addProtoFiles)
-        self.backMenu.addAction(
-            self.tr('Add protocols directory...'), self.project.addProtoDir)
+            self.tr("Compile all protocols as gRPC"),
+            lambda: self.__compileAllProtocols(grpc=True),
+        )
         self.backMenu.addSeparator()
+        self.backMenu.addAction(self.tr("Add protocols..."), self.project.addProtoFiles)
         self.backMenu.addAction(
-            self.tr('Expand all directories'), self._expandAllDirs)
-        self.backMenu.addAction(
-            self.tr('Collapse all directories'), self._collapseAllDirs)
+            self.tr("Add protocols directory..."), self.project.addProtoDir
+        )
         self.backMenu.addSeparator()
-        self.backMenu.addAction(self.tr('Configure...'), self._configure)
+        self.backMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
         self.backMenu.addAction(
-            self.tr('Configure Protobuf...'), self.__configureProtobuf)
+            self.tr("Collapse all directories"), self._collapseAllDirs
+        )
+        self.backMenu.addSeparator()
+        self.backMenu.addAction(self.tr("Configure..."), self._configure)
+        self.backMenu.addAction(
+            self.tr("Configure Protobuf..."), self.__configureProtobuf
+        )
         self.backMenu.setEnabled(False)
 
         # create the menu for multiple selected files
         self.multiMenu = QMenu(self)
         self.multiMenu.addAction(
-            self.tr('Compile protocols'),
-            self.__compileSelectedProtocols)
+            self.tr("Compile protocols"), self.__compileSelectedProtocols
+        )
         self.multiMenu.addSeparator()
         self.multiMenu.addAction(
-            self.tr('Compile protocols as gRPC'),
-            lambda: self.__compileSelectedProtocols(grpc=True))
-        self.multiMenu.addSeparator()
-        self.multiMenu.addAction(self.tr('Open'), self._openItem)
+            self.tr("Compile protocols as gRPC"),
+            lambda: self.__compileSelectedProtocols(grpc=True),
+        )
         self.multiMenu.addSeparator()
-        act = self.multiMenu.addAction(
-            self.tr('Remove from project'), self._removeFile)
+        self.multiMenu.addAction(self.tr("Open"), self._openItem)
+        self.multiMenu.addSeparator()
+        act = self.multiMenu.addAction(self.tr("Remove from project"), self._removeFile)
         self.multiMenuActions.append(act)
-        act = self.multiMenu.addAction(
-            self.tr('Delete'), self.__deleteFile)
+        act = self.multiMenu.addAction(self.tr("Delete"), self.__deleteFile)
         self.multiMenuActions.append(act)
         self.multiMenu.addSeparator()
-        self.multiMenu.addAction(
-            self.tr('Expand all directories'), self._expandAllDirs)
+        self.multiMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
         self.multiMenu.addAction(
-            self.tr('Collapse all directories'), self._collapseAllDirs)
+            self.tr("Collapse all directories"), self._collapseAllDirs
+        )
         self.multiMenu.addSeparator()
-        self.multiMenu.addAction(self.tr('Configure...'), self._configure)
+        self.multiMenu.addAction(self.tr("Configure..."), self._configure)
         self.multiMenu.addAction(
-            self.tr('Configure Protobuf...'), self.__configureProtobuf)
+            self.tr("Configure Protobuf..."), self.__configureProtobuf
+        )
 
         self.dirMenu = QMenu(self)
         self.dirMenu.addAction(
-            self.tr('Compile all protocols'),
-            self.__compileAllProtocols)
-        self.dirMenu.addSeparator()
-        self.dirMenu.addAction(
-            self.tr('Compile all protocols as gRPC'),
-            lambda: self.__compileAllProtocols(grpc=True))
-        act = self.dirMenu.addAction(
-            self.tr('Remove from project'), self._removeFile)
-        self.dirMenuActions.append(act)
-        act = self.dirMenu.addAction(
-            self.tr('Delete'), self._deleteDirectory)
-        self.dirMenuActions.append(act)
-        self.dirMenu.addSeparator()
-        self.dirMenu.addAction(
-            self.tr('Add protocols...'), self.__addProtocolFiles)
-        self.dirMenu.addAction(
-            self.tr('Add protocols directory...'),
-            self.__addProtocolsDirectory)
-        self.dirMenu.addSeparator()
-        self.dirMenu.addAction(
-            self.tr('Copy Path to Clipboard'), self._copyToClipboard)
+            self.tr("Compile all protocols"), self.__compileAllProtocols
+        )
         self.dirMenu.addSeparator()
         self.dirMenu.addAction(
-            self.tr('Expand all directories'), self._expandAllDirs)
+            self.tr("Compile all protocols as gRPC"),
+            lambda: self.__compileAllProtocols(grpc=True),
+        )
+        act = self.dirMenu.addAction(self.tr("Remove from project"), self._removeFile)
+        self.dirMenuActions.append(act)
+        act = self.dirMenu.addAction(self.tr("Delete"), self._deleteDirectory)
+        self.dirMenuActions.append(act)
+        self.dirMenu.addSeparator()
+        self.dirMenu.addAction(self.tr("Add protocols..."), self.__addProtocolFiles)
         self.dirMenu.addAction(
-            self.tr('Collapse all directories'), self._collapseAllDirs)
+            self.tr("Add protocols directory..."), self.__addProtocolsDirectory
+        )
         self.dirMenu.addSeparator()
-        self.dirMenu.addAction(self.tr('Configure...'), self._configure)
+        self.dirMenu.addAction(self.tr("Copy Path to Clipboard"), self._copyToClipboard)
+        self.dirMenu.addSeparator()
+        self.dirMenu.addAction(self.tr("Expand all directories"), self._expandAllDirs)
         self.dirMenu.addAction(
-            self.tr('Configure Protobuf...'), self.__configureProtobuf)
-        
+            self.tr("Collapse all directories"), self._collapseAllDirs
+        )
+        self.dirMenu.addSeparator()
+        self.dirMenu.addAction(self.tr("Configure..."), self._configure)
+        self.dirMenu.addAction(
+            self.tr("Configure Protobuf..."), self.__configureProtobuf
+        )
+
         self.dirMultiMenu = QMenu(self)
         self.dirMultiMenu.addAction(
-            self.tr('Compile all protocols'),
-            self.__compileAllProtocols)
+            self.tr("Compile all protocols"), self.__compileAllProtocols
+        )
         self.dirMultiMenu.addSeparator()
         self.dirMultiMenu.addAction(
-            self.tr('Compile all protocols as gRPC'),
-            lambda: self.__compileAllProtocols(grpc=True))
+            self.tr("Compile all protocols as gRPC"),
+            lambda: self.__compileAllProtocols(grpc=True),
+        )
         self.dirMultiMenu.addAction(
-            self.tr('Add protocols...'), self.project.addProtoFiles)
+            self.tr("Add protocols..."), self.project.addProtoFiles
+        )
         self.dirMultiMenu.addAction(
-            self.tr('Add protocols directory...'), self.project.addProtoDir)
+            self.tr("Add protocols directory..."), self.project.addProtoDir
+        )
         self.dirMultiMenu.addSeparator()
         self.dirMultiMenu.addAction(
-            self.tr('Expand all directories'), self._expandAllDirs)
-        self.dirMultiMenu.addAction(
-            self.tr('Collapse all directories'), self._collapseAllDirs)
-        self.dirMultiMenu.addSeparator()
+            self.tr("Expand all directories"), self._expandAllDirs
+        )
         self.dirMultiMenu.addAction(
-            self.tr('Configure...'), self._configure)
-        self.dirMultiMenu.addAction(self.tr('Configure Protobuf...'),
-                                    self.__configureProtobuf)
-        
+            self.tr("Collapse all directories"), self._collapseAllDirs
+        )
+        self.dirMultiMenu.addSeparator()
+        self.dirMultiMenu.addAction(self.tr("Configure..."), self._configure)
+        self.dirMultiMenu.addAction(
+            self.tr("Configure Protobuf..."), self.__configureProtobuf
+        )
+
         self.sourceMenu.aboutToShow.connect(self.__showContextMenu)
         self.multiMenu.aboutToShow.connect(self.__showContextMenuMulti)
         self.dirMenu.aboutToShow.connect(self.__showContextMenuDir)
         self.dirMultiMenu.aboutToShow.connect(self.__showContextMenuDirMulti)
         self.backMenu.aboutToShow.connect(self.__showContextMenuBack)
         self.mainMenu = self.sourceMenu
-        
+
     def _contextMenuRequested(self, coord):
         """
         Protected slot to show the context menu.
-        
+
         @param coord the position of the mouse pointer (QPoint)
         """
         if not self.project.isOpen():
             return
-        
+
         with contextlib.suppress(Exception):
             categories = self.getSelectedItemsCountCategorized(
-                [ProjectBrowserFileItem, BrowserClassItem,
-                 BrowserMethodItem, ProjectBrowserSimpleDirectoryItem])
+                [
+                    ProjectBrowserFileItem,
+                    BrowserClassItem,
+                    BrowserMethodItem,
+                    ProjectBrowserSimpleDirectoryItem,
+                ]
+            )
             cnt = categories["sum"]
             if cnt <= 1:
                 index = self.indexAt(coord)
                 if index.isValid():
                     self._selectSingleItem(index)
                     categories = self.getSelectedItemsCountCategorized(
-                        [ProjectBrowserFileItem, BrowserClassItem,
-                         BrowserMethodItem, ProjectBrowserSimpleDirectoryItem])
+                        [
+                            ProjectBrowserFileItem,
+                            BrowserClassItem,
+                            BrowserMethodItem,
+                            ProjectBrowserSimpleDirectoryItem,
+                        ]
+                    )
                     cnt = categories["sum"]
-            
+
             bfcnt = categories[str(ProjectBrowserFileItem)]
             cmcnt = (
-                categories[str(BrowserClassItem)] +
-                categories[str(BrowserMethodItem)]
+                categories[str(BrowserClassItem)] + categories[str(BrowserMethodItem)]
             )
             sdcnt = categories[str(ProjectBrowserSimpleDirectoryItem)]
             if cnt > 1 and cnt == bfcnt:
@@ -318,10 +340,7 @@
                         itm = self.model().item(index)
                         if isinstance(itm, ProjectBrowserFileItem):
                             self.sourceMenu.popup(self.mapToGlobal(coord))
-                        elif isinstance(
-                            itm,
-                            (BrowserClassItem, BrowserMethodItem)
-                        ):
+                        elif isinstance(itm, (BrowserClassItem, BrowserMethodItem)):
                             self.menu.popup(self.mapToGlobal(coord))
                         else:
                             self.backMenu.popup(self.mapToGlobal(coord))
@@ -331,112 +350,114 @@
                         self.backMenu.popup(self.mapToGlobal(coord))
                 else:
                     self.backMenu.popup(self.mapToGlobal(coord))
-        
+
     def __showContextMenu(self):
         """
         Private slot called by the menu aboutToShow signal.
         """
         ProjectBaseBrowser._showContextMenu(self, self.menu)
-        
+
         self.showMenu.emit("Main", self.menu)
-        
+
     def __showContextMenuMulti(self):
         """
         Private slot called by the multiMenu aboutToShow signal.
         """
         ProjectBaseBrowser._showContextMenuMulti(self, self.multiMenu)
-        
+
         self.showMenu.emit("MainMulti", self.multiMenu)
-        
+
     def __showContextMenuDir(self):
         """
         Private slot called by the dirMenu aboutToShow signal.
         """
         ProjectBaseBrowser._showContextMenuDir(self, self.dirMenu)
-        
+
         self.showMenu.emit("MainDir", self.dirMenu)
-        
+
     def __showContextMenuDirMulti(self):
         """
         Private slot called by the dirMultiMenu aboutToShow signal.
         """
         ProjectBaseBrowser._showContextMenuDirMulti(self, self.dirMultiMenu)
-        
+
         self.showMenu.emit("MainDirMulti", self.dirMultiMenu)
-        
+
     def __showContextMenuBack(self):
         """
         Private slot called by the backMenu aboutToShow signal.
         """
         ProjectBaseBrowser._showContextMenuBack(self, self.backMenu)
-        
+
         self.showMenu.emit("MainBack", self.backMenu)
-        
+
     def _openItem(self):
         """
         Protected slot to handle the open popup menu entry.
         """
         itmList = self.getSelectedItems(
-            [BrowserFileItem, BrowserClassItem, BrowserMethodItem,
-             BrowserClassAttributeItem])
-        
+            [
+                BrowserFileItem,
+                BrowserClassItem,
+                BrowserMethodItem,
+                BrowserClassAttributeItem,
+            ]
+        )
+
         for itm in itmList:
             if isinstance(itm, BrowserFileItem):
                 self.sourceFile[str].emit(itm.fileName())
             elif isinstance(itm, BrowserClassItem):
-                self.sourceFile[str, int].emit(
-                    itm.fileName(), itm.classObject().lineno)
+                self.sourceFile[str, int].emit(itm.fileName(), itm.classObject().lineno)
             elif isinstance(itm, BrowserMethodItem):
                 self.sourceFile[str, int].emit(
-                    itm.fileName(), itm.functionObject().lineno)
+                    itm.fileName(), itm.functionObject().lineno
+                )
             elif isinstance(itm, BrowserClassAttributeItem):
                 self.sourceFile[str, int].emit(
-                    itm.fileName(), itm.attributeObject().lineno)
-        
+                    itm.fileName(), itm.attributeObject().lineno
+                )
+
     def __addProtocolFiles(self):
         """
         Private method to add protocol files to the project.
         """
         itm = self.model().item(self.currentIndex())
         if isinstance(
-            itm,
-            (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem)
+            itm, (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem)
         ):
             dn = os.path.dirname(itm.fileName())
         elif isinstance(
-            itm,
-            (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem)
+            itm, (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem)
         ):
             dn = itm.dirName()
         else:
             dn = None
-        self.project.addFiles('protocol', dn)
-        
+        self.project.addFiles("protocol", dn)
+
     def __addProtocolsDirectory(self):
         """
         Private method to add protocol files of a directory to the project.
         """
         itm = self.model().item(self.currentIndex())
         if isinstance(
-            itm,
-            (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem)
+            itm, (ProjectBrowserFileItem, BrowserClassItem, BrowserMethodItem)
         ):
             dn = os.path.dirname(itm.fileName())
         elif isinstance(
-            itm,
-            (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem)
+            itm, (ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem)
         ):
             dn = itm.dirName()
         else:
             dn = None
-        self.project.addDirectory('protocol', dn)
-        
+        self.project.addDirectory("protocol", dn)
+
     def __deleteFile(self):
         """
         Private method to delete files from the project.
         """
         itmList = self.getSelectedItems()
-        
+
         files = []
         fullNames = []
         for itm in itmList:
@@ -444,30 +465,31 @@
             fullNames.append(fn2)
             fn = self.project.getRelativePath(fn2)
             files.append(fn)
-        
-        from UI.DeleteFilesConfirmationDialog import (
-            DeleteFilesConfirmationDialog
-        )
+
+        from UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog
+
         dlg = DeleteFilesConfirmationDialog(
             self.parent(),
             self.tr("Delete Protocols"),
-            self.tr("Do you really want to delete these protocol files from"
-                    " the project?"),
-            files)
-        
+            self.tr(
+                "Do you really want to delete these protocol files from" " the project?"
+            ),
+            files,
+        )
+
         if dlg.exec() == QDialog.DialogCode.Accepted:
             for fn2, fn in zip(fullNames, files):
                 self.closeSourceWindow.emit(fn2)
                 self.project.deleteFile(fn)
-    
+
     ###########################################################################
     ##  Methods to handle the various compile commands
     ###########################################################################
-    
+
     def __getCompilerCommand(self, grpc):
         """
         Private method to get the compiler command.
-        
+
         @param grpc flag indicating to get a gRPC command
         @type bool
         @return tuple giving the executable and its parameter list
@@ -475,24 +497,21 @@
         """
         exe = None
         exeArgs = []
-        
+
         if grpc:
             exe = Preferences.getProtobuf("grpcPython")
             if exe == "":
                 exe = Globals.getPythonExecutable()
-            exeArgs = ['-m', 'grpc_tools.protoc']
+            exeArgs = ["-m", "grpc_tools.protoc"]
         else:
             exe = Preferences.getProtobuf("protoc")
             if exe == "":
-                exe = (
-                    Utilities.isWindowsPlatform() and
-                    "protoc.exe" or "protoc"
-                )
+                exe = Utilities.isWindowsPlatform() and "protoc.exe" or "protoc"
             if not Utilities.isinpath(exe):
                 exe = None
-        
+
         return exe, exeArgs
-    
+
     def __readStdout(self):
         """
         Private slot to handle the readyReadStandardOutput signal of the
@@ -500,16 +519,16 @@
         """
         if self.compileProc is None:
             return
-        
+
         ioEncoding = Preferences.getSystem("IOEncoding")
-        
+
         self.compileProc.setReadChannel(QProcess.ProcessChannel.StandardOutput)
         while self.compileProc and self.compileProc.canReadLine():
-            s = 'protoc: '
-            output = str(self.compileProc.readLine(), ioEncoding, 'replace')
+            s = "protoc: "
+            output = str(self.compileProc.readLine(), ioEncoding, "replace")
             s += output
             self.appendStdout.emit(s)
-        
+
     def __readStderr(self):
         """
         Private slot to handle the readyReadStandardError signal of the
@@ -517,20 +536,20 @@
         """
         if self.compileProc is None:
             return
-        
+
         ioEncoding = Preferences.getSystem("IOEncoding")
-        
+
         self.compileProc.setReadChannel(QProcess.ProcessChannel.StandardError)
         while self.compileProc and self.compileProc.canReadLine():
-            s = 'protoc: '
-            error = str(self.compileProc.readLine(), ioEncoding, 'replace')
+            s = "protoc: "
+            error = str(self.compileProc.readLine(), ioEncoding, "replace")
             s += error
             self.appendStderr.emit(s)
-        
+
     def __compileProtoDone(self, exitCode, exitStatus, grpc):
         """
         Private slot to handle the finished signal of the protoc process.
-        
+
         @param exitCode exit code of the process
         @type int
         @param exitStatus exit status of the process
@@ -554,9 +573,8 @@
             ui.showNotification(
                 icon,
                 self.tr("Protocol Compilation"),
-                self.tr(
-                    "The compilation of the protocol file was"
-                    " successful."))
+                self.tr("The compilation of the protocol file was" " successful."),
+            )
         else:
             if grpc:
                 icon = UI.PixmapCache.getPixmap("gRPC48")
@@ -565,12 +583,12 @@
             ui.showNotification(
                 icon,
                 self.tr("Protocol Compilation"),
-                self.tr(
-                    "The compilation of the protocol file failed."),
+                self.tr("The compilation of the protocol file failed."),
                 kind=NotificationTypes.CRITICAL,
-                timeout=0)
+                timeout=0,
+            )
         self.compileProc = None
-        
+
     def __compileProto(self, fn, noDialog=False, progress=None, grpc=False):
         """
         Private method to compile a .proto file to Python.
@@ -590,22 +608,23 @@
         if exe:
             self.compileProc = QProcess()
             args = []
-            
+
             fn = os.path.join(self.project.ppath, fn)
             self.__protoFile = fn
-            
+
             srcPath = os.path.dirname(fn)
             args.append("--proto_path={0}".format(srcPath))
             args.append("--python_out={0}".format(srcPath))
             if grpc:
                 args.append("--grpc_python_out={0}".format(srcPath))
             args.append(fn)
-            
+
             self.compileProc.finished.connect(
-                lambda c, s: self.__compileProtoDone(c, s, grpc))
+                lambda c, s: self.__compileProtoDone(c, s, grpc)
+            )
             self.compileProc.readyReadStandardOutput.connect(self.__readStdout)
             self.compileProc.readyReadStandardError.connect(self.__readStderr)
-            
+
             self.noDialog = noDialog
             self.compileProc.start(exe, exeArgs + args)
             procStarted = self.compileProc.waitForStarted(5000)
@@ -618,23 +637,25 @@
                     progress.cancel()
                 EricMessageBox.critical(
                     self,
-                    self.tr('Process Generation Error'),
+                    self.tr("Process Generation Error"),
                     self.tr(
-                        '<p>Could not start {0}.<br>'
-                        'Ensure that it is in the search path.</p>'
-                    ).format(exe))
+                        "<p>Could not start {0}.<br>"
+                        "Ensure that it is in the search path.</p>"
+                    ).format(exe),
+                )
                 return None
         else:
             EricMessageBox.critical(
                 self,
-                self.tr('Compiler Invalid'),
-                self.tr('The configured compiler is invalid.'))
+                self.tr("Compiler Invalid"),
+                self.tr("The configured compiler is invalid."),
+            )
             return None
-        
+
     def __compileProtocol(self, grpc=False):
         """
         Private method to compile a protocol to Python.
-        
+
         @param grpc flag indicating to compile as gRPC files
         @type bool
         """
@@ -643,11 +664,11 @@
             fn2 = itm.fileName()
             fn = self.project.getRelativePath(fn2)
             self.__compileProto(fn, grpc=grpc)
-        
+
     def __compileAllProtocols(self, grpc=False):
         """
         Private method to compile all protocols to Python.
-        
+
         @param grpc flag indicating to compile as gRPC files
         @type bool
         """
@@ -655,12 +676,16 @@
             numProtos = len(self.project.pdata["PROTOCOLS"])
             progress = EricProgressDialog(
                 self.tr("Compiling Protocols..."),
-                self.tr("Abort"), 0, numProtos,
-                self.tr("%v/%m Protocols"), self)
+                self.tr("Abort"),
+                0,
+                numProtos,
+                self.tr("%v/%m Protocols"),
+                self,
+            )
             progress.setModal(True)
             progress.setMinimumDuration(0)
             progress.setWindowTitle(self.tr("Protocols"))
-            
+
             for prog, fn in enumerate(self.project.pdata["PROTOCOLS"]):
                 progress.setValue(prog)
                 if progress.wasCanceled():
@@ -673,28 +698,31 @@
                 else:
                     break
             progress.setValue(numProtos)
-        
+
     def __compileSelectedProtocols(self, grpc=False):
         """
         Private method to compile selected protocols to Python.
-        
+
         @param grpc flag indicating to compile as gRPC files
         @type bool
         """
         if self.__getCompilerCommand(grpc)[0] is not None:
             items = self.getSelectedItems()
-            
-            files = [self.project.getRelativePath(itm.fileName())
-                     for itm in items]
+
+            files = [self.project.getRelativePath(itm.fileName()) for itm in items]
             numProtos = len(files)
             progress = EricProgressDialog(
                 self.tr("Compiling Protocols..."),
-                self.tr("Abort"), 0, numProtos,
-                self.tr("%v/%m Protocols"), self)
+                self.tr("Abort"),
+                0,
+                numProtos,
+                self.tr("%v/%m Protocols"),
+                self,
+            )
             progress.setModal(True)
             progress.setMinimumDuration(0)
             progress.setWindowTitle(self.tr("Protocols"))
-            
+
             for prog, fn in enumerate(files):
                 progress.setValue(prog)
                 if progress.wasCanceled():
@@ -707,7 +735,7 @@
                 else:
                     break
             progress.setValue(numProtos)
-        
+
     def __configureProtobuf(self):
         """
         Private method to open the configuration dialog.

eric ide

mercurial