src/eric7/Plugins/VcsPlugins/vcsSubversion/ProjectBrowserHelper.py

branch
eric7
changeset 9221
bf71ee032bb4
parent 9209
b99e7fd55fd3
child 9413
80c06d472826
--- a/src/eric7/Plugins/VcsPlugins/vcsSubversion/ProjectBrowserHelper.py	Wed Jul 13 11:16:20 2022 +0200
+++ b/src/eric7/Plugins/VcsPlugins/vcsSubversion/ProjectBrowserHelper.py	Wed Jul 13 14:55:47 2022 +0200
@@ -23,11 +23,19 @@
     """
     Class implementing the VCS project browser helper for subversion.
     """
-    def __init__(self, vcsObject, browserObject, projectObject,
-                 isTranslationsBrowser, parent=None, name=None):
+
+    def __init__(
+        self,
+        vcsObject,
+        browserObject,
+        projectObject,
+        isTranslationsBrowser,
+        parent=None,
+        name=None,
+    ):
         """
         Constructor
-        
+
         @param vcsObject reference to the vcs object
         @param browserObject reference to the project browser object
         @param projectObject reference to the project object
@@ -36,17 +44,23 @@
         @param parent parent widget (QWidget)
         @param name name of this object (string)
         """
-        VcsProjectBrowserHelper.__init__(self, vcsObject, browserObject,
-                                         projectObject, isTranslationsBrowser,
-                                         parent, name)
-    
+        VcsProjectBrowserHelper.__init__(
+            self,
+            vcsObject,
+            browserObject,
+            projectObject,
+            isTranslationsBrowser,
+            parent,
+            name,
+        )
+
     def showContextMenu(self, menu, standardItems):
         """
         Public slot called before the context menu is shown.
-        
+
         It enables/disables the VCS menu entries depending on the overall
         VCS status and the file status.
-        
+
         @param menu reference to the menu to be shown
         @param standardItems array of standard items that need
             activation/deactivation depending on the overall VCS status
@@ -58,7 +72,7 @@
                 act.setEnabled(False)
             for act in standardItems:
                 act.setEnabled(False)
-            if not hasattr(self.browser.currentItem(), 'fileName'):
+            if not hasattr(self.browser.currentItem(), "fileName"):
                 self.blameAct.setEnabled(False)
         else:
             for act in self.vcsMenuActions:
@@ -74,15 +88,15 @@
                     self.vcsMenuAddTree.setEnabled(False)
             for act in standardItems:
                 act.setEnabled(True)
-    
+
     def showContextMenuMulti(self, menu, standardItems):
         """
         Public slot called before the context menu (multiple selections) is
         shown.
-        
+
         It enables/disables the VCS menu entries depending on the overall
         VCS status and the files status.
-        
+
         @param menu reference to the menu to be shown
         @param standardItems array of standard items that need
             activation/deactivation depending on the overall VCS status
@@ -94,7 +108,7 @@
         for itm in items:
             if itm.data(1) == vcsName:
                 vcsItems += 1
-        
+
         if vcsItems > 0:
             if vcsItems != len(items):
                 for act in self.vcsMultiMenuActions:
@@ -111,21 +125,18 @@
                 act.setEnabled(False)
             for act in self.vcsAddMultiMenuActions:
                 act.setEnabled(True)
-            if (
-                1 in self.browser.specialMenuEntries and
-                self.__itemsHaveFiles(items)
-            ):
+            if 1 in self.browser.specialMenuEntries and self.__itemsHaveFiles(items):
                 self.vcsMultiMenuAddTree.setEnabled(False)
             for act in standardItems:
                 act.setEnabled(True)
-    
+
     def showContextMenuDir(self, menu, standardItems):
         """
         Public slot called before the context menu is shown.
-        
+
         It enables/disables the VCS menu entries depending on the overall
         VCS status and the directory status.
-        
+
         @param menu reference to the menu to be shown
         @param standardItems array of standard items that need
             activation/deactivation depending on the overall VCS status
@@ -144,14 +155,14 @@
                 act.setEnabled(True)
             for act in standardItems:
                 act.setEnabled(True)
-    
+
     def showContextMenuDirMulti(self, menu, standardItems):
         """
         Public slot called before the context menu is shown.
-        
+
         It enables/disables the VCS menu entries depending on the overall
         VCS status and the directory status.
-        
+
         @param menu reference to the menu to be shown
         @param standardItems array of standard items that need
             activation/deactivation depending on the overall VCS status
@@ -163,7 +174,7 @@
         for itm in items:
             if itm.data(1) == vcsName:
                 vcsItems += 1
-        
+
         if vcsItems > 0:
             if vcsItems != len(items):
                 for act in self.vcsDirMultiMenuActions:
@@ -190,548 +201,635 @@
     def _addVCSMenu(self, mainMenu):
         """
         Protected method used to add the VCS menu to all project browsers.
-        
+
         @param mainMenu reference to the menu to be amended
         """
         self.vcsMenuActions = []
         self.vcsAddMenuActions = []
-        
+
         menu = QMenu(self.tr("Version Control"))
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon(
-                os.path.join("VcsPlugins", "vcsSubversion", "icons",
-                             "subversion.svg")),
-            self.vcs.vcsName(), self._VCSInfoDisplay)
+                os.path.join("VcsPlugins", "vcsSubversion", "icons", "subversion.svg")
+            ),
+            self.vcs.vcsName(),
+            self._VCSInfoDisplay,
+        )
         font = act.font()
         font.setBold(True)
         act.setFont(font)
         menu.addSeparator()
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsUpdate"),
-            self.tr('Update from repository'), self._VCSUpdate)
+            self.tr("Update from repository"),
+            self._VCSUpdate,
+        )
         self.vcsMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsCommit"),
-            self.tr('Commit changes to repository...'),
-            self._VCSCommit)
+            self.tr("Commit changes to repository..."),
+            self._VCSCommit,
+        )
         self.vcsMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsAdd"),
-            self.tr('Add to repository'),
-            self._VCSAdd)
+            UI.PixmapCache.getIcon("vcsAdd"), self.tr("Add to repository"), self._VCSAdd
+        )
         self.vcsAddMenuActions.append(act)
         if 1 in self.browser.specialMenuEntries:
             self.vcsMenuAddTree = menu.addAction(
                 UI.PixmapCache.getIcon("vcsAdd"),
-                self.tr('Add tree to repository'),
-                self._VCSAddTree)
+                self.tr("Add tree to repository"),
+                self._VCSAddTree,
+            )
             self.vcsAddMenuActions.append(self.vcsMenuAddTree)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsRemove"),
-            self.tr('Remove from repository (and disk)'),
-            self._VCSRemove)
+            self.tr("Remove from repository (and disk)"),
+            self._VCSRemove,
+        )
         self.vcsMenuActions.append(act)
         menu.addSeparator()
-        act = menu.addAction(self.tr('Copy'), self.__SVNCopy)
+        act = menu.addAction(self.tr("Copy"), self.__SVNCopy)
         self.vcsMenuActions.append(act)
-        act = menu.addAction(self.tr('Move'), self.__SVNMove)
+        act = menu.addAction(self.tr("Move"), self.__SVNMove)
         self.vcsMenuActions.append(act)
         if self.vcs.version >= (1, 5, 0):
             menu.addSeparator()
             act = menu.addAction(
-                self.tr("Add to Changelist"),
-                self.__SVNAddToChangelist)
+                self.tr("Add to Changelist"), self.__SVNAddToChangelist
+            )
             self.vcsMenuActions.append(act)
             act = menu.addAction(
-                self.tr("Remove from Changelist"),
-                self.__SVNRemoveFromChangelist)
+                self.tr("Remove from Changelist"), self.__SVNRemoveFromChangelist
+            )
             self.vcsMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsLog"),
-            self.tr('Show log browser'), self._VCSLogBrowser)
+            self.tr("Show log browser"),
+            self._VCSLogBrowser,
+        )
         self.vcsMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsStatus"),
-            self.tr('Show status'), self._VCSStatus)
+            UI.PixmapCache.getIcon("vcsStatus"), self.tr("Show status"), self._VCSStatus
+        )
         self.vcsMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences'), self._VCSDiff)
+            self.tr("Show differences"),
+            self._VCSDiff,
+        )
         self.vcsMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsSbsDiff"),
-            self.tr('Show differences side-by-side'), self.__SVNSbsDiff)
+            self.tr("Show differences side-by-side"),
+            self.__SVNSbsDiff,
+        )
         self.vcsMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences (extended)'),
-            self.__SVNExtendedDiff)
+            self.tr("Show differences (extended)"),
+            self.__SVNExtendedDiff,
+        )
         self.vcsMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsSbsDiff"),
-            self.tr('Show differences side-by-side (extended)'),
-            self.__SVNSbsExtendedDiff)
+            self.tr("Show differences side-by-side (extended)"),
+            self.__SVNSbsExtendedDiff,
+        )
         self.vcsMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences (URLs)'),
-            self.__SVNUrlDiff)
+            self.tr("Show differences (URLs)"),
+            self.__SVNUrlDiff,
+        )
         self.vcsMenuActions.append(act)
-        self.blameAct = menu.addAction(
-            self.tr('Show annotated file'),
-            self.__SVNBlame)
+        self.blameAct = menu.addAction(self.tr("Show annotated file"), self.__SVNBlame)
         self.vcsMenuActions.append(self.blameAct)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsRevert"),
-            self.tr('Revert changes'), self._VCSRevert)
+            self.tr("Revert changes"),
+            self._VCSRevert,
+        )
         self.vcsMenuActions.append(act)
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsMerge"),
-            self.tr('Merge changes'), self._VCSMerge)
+            UI.PixmapCache.getIcon("vcsMerge"), self.tr("Merge changes"), self._VCSMerge
+        )
         self.vcsMenuActions.append(act)
-        act = menu.addAction(
-            self.tr('Conflicts resolved'), self.__SVNResolve)
+        act = menu.addAction(self.tr("Conflicts resolved"), self.__SVNResolve)
         self.vcsMenuActions.append(act)
         if self.vcs.version >= (1, 2, 0):
             menu.addSeparator()
             act = menu.addAction(
-                UI.PixmapCache.getIcon("vcsLock"),
-                self.tr('Lock'), self.__SVNLock)
+                UI.PixmapCache.getIcon("vcsLock"), self.tr("Lock"), self.__SVNLock
+            )
+            self.vcsMenuActions.append(act)
+            act = menu.addAction(
+                UI.PixmapCache.getIcon("vcsUnlock"), self.tr("Unlock"), self.__SVNUnlock
+            )
             self.vcsMenuActions.append(act)
             act = menu.addAction(
                 UI.PixmapCache.getIcon("vcsUnlock"),
-                self.tr('Unlock'), self.__SVNUnlock)
-            self.vcsMenuActions.append(act)
-            act = menu.addAction(
-                UI.PixmapCache.getIcon("vcsUnlock"),
-                self.tr('Break Lock'), self.__SVNBreakLock)
+                self.tr("Break Lock"),
+                self.__SVNBreakLock,
+            )
             self.vcsMenuActions.append(act)
             act = menu.addAction(
                 UI.PixmapCache.getIcon("vcsUnlock"),
-                self.tr('Steal Lock'), self.__SVNStealLock)
+                self.tr("Steal Lock"),
+                self.__SVNStealLock,
+            )
             self.vcsMenuActions.append(act)
         menu.addSeparator()
-        act = menu.addAction(self.tr('Set Property'), self.__SVNSetProp)
+        act = menu.addAction(self.tr("Set Property"), self.__SVNSetProp)
         self.vcsMenuActions.append(act)
-        act = menu.addAction(
-            self.tr('List Properties'), self.__SVNListProps)
+        act = menu.addAction(self.tr("List Properties"), self.__SVNListProps)
         self.vcsMenuActions.append(act)
-        act = menu.addAction(self.tr('Delete Property'), self.__SVNDelProp)
+        act = menu.addAction(self.tr("Delete Property"), self.__SVNDelProp)
         self.vcsMenuActions.append(act)
         menu.addSeparator()
-        menu.addAction(self.tr('Select all local file entries'),
-                       self.browser.selectLocalEntries)
-        menu.addAction(self.tr('Select all versioned file entries'),
-                       self.browser.selectVCSEntries)
-        menu.addAction(self.tr('Select all local directory entries'),
-                       self.browser.selectLocalDirEntries)
-        menu.addAction(self.tr('Select all versioned directory entries'),
-                       self.browser.selectVCSDirEntries)
+        menu.addAction(
+            self.tr("Select all local file entries"), self.browser.selectLocalEntries
+        )
+        menu.addAction(
+            self.tr("Select all versioned file entries"), self.browser.selectVCSEntries
+        )
+        menu.addAction(
+            self.tr("Select all local directory entries"),
+            self.browser.selectLocalDirEntries,
+        )
+        menu.addAction(
+            self.tr("Select all versioned directory entries"),
+            self.browser.selectVCSDirEntries,
+        )
         menu.addSeparator()
         menu.addAction(self.tr("Configure..."), self.__SVNConfigure)
-        
+
         mainMenu.addSeparator()
         mainMenu.addMenu(menu)
         self.menu = menu
-        
+
     def _addVCSMenuMulti(self, mainMenu):
         """
         Protected method used to add the VCS menu for multi selection to all
         project browsers.
-        
+
         @param mainMenu reference to the menu to be amended
         """
         self.vcsMultiMenuActions = []
         self.vcsAddMultiMenuActions = []
-        
+
         menu = QMenu(self.tr("Version Control"))
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon(
-                os.path.join("VcsPlugins", "vcsSubversion", "icons",
-                             "subversion.svg")),
-            self.vcs.vcsName(), self._VCSInfoDisplay)
+                os.path.join("VcsPlugins", "vcsSubversion", "icons", "subversion.svg")
+            ),
+            self.vcs.vcsName(),
+            self._VCSInfoDisplay,
+        )
         font = act.font()
         font.setBold(True)
         act.setFont(font)
         menu.addSeparator()
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsUpdate"),
-            self.tr('Update from repository'), self._VCSUpdate)
+            self.tr("Update from repository"),
+            self._VCSUpdate,
+        )
         self.vcsMultiMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsCommit"),
-            self.tr('Commit changes to repository...'),
-            self._VCSCommit)
+            self.tr("Commit changes to repository..."),
+            self._VCSCommit,
+        )
         self.vcsMultiMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsAdd"),
-            self.tr('Add to repository'), self._VCSAdd)
+            UI.PixmapCache.getIcon("vcsAdd"), self.tr("Add to repository"), self._VCSAdd
+        )
         self.vcsAddMultiMenuActions.append(act)
         if 1 in self.browser.specialMenuEntries:
             self.vcsMultiMenuAddTree = menu.addAction(
                 UI.PixmapCache.getIcon("vcsAdd"),
-                self.tr('Add tree to repository'), self._VCSAddTree)
+                self.tr("Add tree to repository"),
+                self._VCSAddTree,
+            )
             self.vcsAddMultiMenuActions.append(self.vcsMultiMenuAddTree)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsRemove"),
-            self.tr('Remove from repository (and disk)'),
-            self._VCSRemove)
+            self.tr("Remove from repository (and disk)"),
+            self._VCSRemove,
+        )
         self.vcsMultiMenuActions.append(act)
         if self.vcs.version >= (1, 5, 0):
             menu.addSeparator()
             act = menu.addAction(
-                self.tr("Add to Changelist"),
-                self.__SVNAddToChangelist)
+                self.tr("Add to Changelist"), self.__SVNAddToChangelist
+            )
             self.vcsMenuActions.append(act)
             act = menu.addAction(
-                self.tr("Remove from Changelist"),
-                self.__SVNRemoveFromChangelist)
+                self.tr("Remove from Changelist"), self.__SVNRemoveFromChangelist
+            )
             self.vcsMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsStatus"),
-            self.tr('Show status'), self._VCSStatus)
+            UI.PixmapCache.getIcon("vcsStatus"), self.tr("Show status"), self._VCSStatus
+        )
         self.vcsMultiMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences'), self._VCSDiff)
+            self.tr("Show differences"),
+            self._VCSDiff,
+        )
         self.vcsMultiMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences (extended)'),
-            self.__SVNExtendedDiff)
+            self.tr("Show differences (extended)"),
+            self.__SVNExtendedDiff,
+        )
         self.vcsMultiMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences (URLs)'),
-            self.__SVNUrlDiff)
+            self.tr("Show differences (URLs)"),
+            self.__SVNUrlDiff,
+        )
         self.vcsMultiMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsRevert"),
-            self.tr('Revert changes'), self._VCSRevert)
+            self.tr("Revert changes"),
+            self._VCSRevert,
+        )
         self.vcsMultiMenuActions.append(act)
-        act = menu.addAction(
-            self.tr('Conflicts resolved'), self.__SVNResolve)
+        act = menu.addAction(self.tr("Conflicts resolved"), self.__SVNResolve)
         self.vcsMultiMenuActions.append(act)
         if self.vcs.version >= (1, 2, 0):
             menu.addSeparator()
             act = menu.addAction(
-                UI.PixmapCache.getIcon("vcsLock"),
-                self.tr('Lock'), self.__SVNLock)
+                UI.PixmapCache.getIcon("vcsLock"), self.tr("Lock"), self.__SVNLock
+            )
+            self.vcsMultiMenuActions.append(act)
+            act = menu.addAction(
+                UI.PixmapCache.getIcon("vcsUnlock"), self.tr("Unlock"), self.__SVNUnlock
+            )
             self.vcsMultiMenuActions.append(act)
             act = menu.addAction(
                 UI.PixmapCache.getIcon("vcsUnlock"),
-                self.tr('Unlock'), self.__SVNUnlock)
-            self.vcsMultiMenuActions.append(act)
-            act = menu.addAction(
-                UI.PixmapCache.getIcon("vcsUnlock"),
-                self.tr('Break Lock'), self.__SVNBreakLock)
+                self.tr("Break Lock"),
+                self.__SVNBreakLock,
+            )
             self.vcsMultiMenuActions.append(act)
             act = menu.addAction(
                 UI.PixmapCache.getIcon("vcsUnlock"),
-                self.tr('Steal Lock'), self.__SVNStealLock)
+                self.tr("Steal Lock"),
+                self.__SVNStealLock,
+            )
             self.vcsMultiMenuActions.append(act)
         menu.addSeparator()
-        act = menu.addAction(self.tr('Set Property'), self.__SVNSetProp)
+        act = menu.addAction(self.tr("Set Property"), self.__SVNSetProp)
         self.vcsMultiMenuActions.append(act)
-        act = menu.addAction(
-            self.tr('List Properties'), self.__SVNListProps)
+        act = menu.addAction(self.tr("List Properties"), self.__SVNListProps)
         self.vcsMultiMenuActions.append(act)
-        act = menu.addAction(self.tr('Delete Property'), self.__SVNDelProp)
+        act = menu.addAction(self.tr("Delete Property"), self.__SVNDelProp)
         self.vcsMultiMenuActions.append(act)
         menu.addSeparator()
-        menu.addAction(self.tr('Select all local file entries'),
-                       self.browser.selectLocalEntries)
-        menu.addAction(self.tr('Select all versioned file entries'),
-                       self.browser.selectVCSEntries)
-        menu.addAction(self.tr('Select all local directory entries'),
-                       self.browser.selectLocalDirEntries)
-        menu.addAction(self.tr('Select all versioned directory entries'),
-                       self.browser.selectVCSDirEntries)
+        menu.addAction(
+            self.tr("Select all local file entries"), self.browser.selectLocalEntries
+        )
+        menu.addAction(
+            self.tr("Select all versioned file entries"), self.browser.selectVCSEntries
+        )
+        menu.addAction(
+            self.tr("Select all local directory entries"),
+            self.browser.selectLocalDirEntries,
+        )
+        menu.addAction(
+            self.tr("Select all versioned directory entries"),
+            self.browser.selectVCSDirEntries,
+        )
         menu.addSeparator()
         menu.addAction(self.tr("Configure..."), self.__SVNConfigure)
-        
+
         mainMenu.addSeparator()
         mainMenu.addMenu(menu)
         self.menuMulti = menu
-        
+
     def _addVCSMenuBack(self, mainMenu):
         """
         Protected method used to add the VCS menu to all project browsers.
-        
+
         @param mainMenu reference to the menu to be amended
         """
         menu = QMenu(self.tr("Version Control"))
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon(
-                os.path.join("VcsPlugins", "vcsSubversion", "icons",
-                             "subversion.svg")),
-            self.vcs.vcsName(), self._VCSInfoDisplay)
+                os.path.join("VcsPlugins", "vcsSubversion", "icons", "subversion.svg")
+            ),
+            self.vcs.vcsName(),
+            self._VCSInfoDisplay,
+        )
         font = act.font()
         font.setBold(True)
         act.setFont(font)
         menu.addSeparator()
-        
-        menu.addAction(self.tr('Select all local file entries'),
-                       self.browser.selectLocalEntries)
-        menu.addAction(self.tr('Select all versioned file entries'),
-                       self.browser.selectVCSEntries)
-        menu.addAction(self.tr('Select all local directory entries'),
-                       self.browser.selectLocalDirEntries)
-        menu.addAction(self.tr('Select all versioned directory entries'),
-                       self.browser.selectVCSDirEntries)
+
+        menu.addAction(
+            self.tr("Select all local file entries"), self.browser.selectLocalEntries
+        )
+        menu.addAction(
+            self.tr("Select all versioned file entries"), self.browser.selectVCSEntries
+        )
+        menu.addAction(
+            self.tr("Select all local directory entries"),
+            self.browser.selectLocalDirEntries,
+        )
+        menu.addAction(
+            self.tr("Select all versioned directory entries"),
+            self.browser.selectVCSDirEntries,
+        )
         menu.addSeparator()
         menu.addAction(self.tr("Configure..."), self.__SVNConfigure)
-        
+
         mainMenu.addSeparator()
         mainMenu.addMenu(menu)
         self.menuBack = menu
-        
+
     def _addVCSMenuDir(self, mainMenu):
         """
         Protected method used to add the VCS menu to all project browsers.
-        
+
         @param mainMenu reference to the menu to be amended
         """
         if mainMenu is None:
             return
-        
+
         self.vcsDirMenuActions = []
         self.vcsAddDirMenuActions = []
-        
+
         menu = QMenu(self.tr("Version Control"))
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon(
-                os.path.join("VcsPlugins", "vcsSubversion", "icons",
-                             "subversion.svg")),
-            self.vcs.vcsName(), self._VCSInfoDisplay)
+                os.path.join("VcsPlugins", "vcsSubversion", "icons", "subversion.svg")
+            ),
+            self.vcs.vcsName(),
+            self._VCSInfoDisplay,
+        )
         font = act.font()
         font.setBold(True)
         act.setFont(font)
         menu.addSeparator()
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsUpdate"),
-            self.tr('Update from repository'), self._VCSUpdate)
+            self.tr("Update from repository"),
+            self._VCSUpdate,
+        )
         self.vcsDirMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsCommit"),
-            self.tr('Commit changes to repository...'),
-            self._VCSCommit)
+            self.tr("Commit changes to repository..."),
+            self._VCSCommit,
+        )
         self.vcsDirMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsAdd"),
-            self.tr('Add to repository'), self._VCSAdd)
+            UI.PixmapCache.getIcon("vcsAdd"), self.tr("Add to repository"), self._VCSAdd
+        )
         self.vcsAddDirMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsRemove"),
-            self.tr('Remove from repository (and disk)'),
-            self._VCSRemove)
+            self.tr("Remove from repository (and disk)"),
+            self._VCSRemove,
+        )
         self.vcsDirMenuActions.append(act)
         menu.addSeparator()
-        act = menu.addAction(self.tr('Copy'), self.__SVNCopy)
+        act = menu.addAction(self.tr("Copy"), self.__SVNCopy)
         self.vcsDirMenuActions.append(act)
-        act = menu.addAction(self.tr('Move'), self.__SVNMove)
+        act = menu.addAction(self.tr("Move"), self.__SVNMove)
         self.vcsDirMenuActions.append(act)
         if self.vcs.version >= (1, 5, 0):
             menu.addSeparator()
             act = menu.addAction(
-                self.tr("Add to Changelist"),
-                self.__SVNAddToChangelist)
+                self.tr("Add to Changelist"), self.__SVNAddToChangelist
+            )
             self.vcsMenuActions.append(act)
             act = menu.addAction(
-                self.tr("Remove from Changelist"),
-                self.__SVNRemoveFromChangelist)
+                self.tr("Remove from Changelist"), self.__SVNRemoveFromChangelist
+            )
             self.vcsMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsLog"),
-            self.tr('Show log browser'), self._VCSLogBrowser)
+            self.tr("Show log browser"),
+            self._VCSLogBrowser,
+        )
         self.vcsDirMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsStatus"),
-            self.tr('Show status'), self._VCSStatus)
+            UI.PixmapCache.getIcon("vcsStatus"), self.tr("Show status"), self._VCSStatus
+        )
         self.vcsDirMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences'), self._VCSDiff)
+            self.tr("Show differences"),
+            self._VCSDiff,
+        )
         self.vcsDirMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences (extended)'),
-            self.__SVNExtendedDiff)
+            self.tr("Show differences (extended)"),
+            self.__SVNExtendedDiff,
+        )
         self.vcsDirMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences (URLs)'),
-            self.__SVNUrlDiff)
+            self.tr("Show differences (URLs)"),
+            self.__SVNUrlDiff,
+        )
         self.vcsDirMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsRevert"),
-            self.tr('Revert changes'), self._VCSRevert)
-        self.vcsDirMenuActions.append(act)
-        act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsMerge"),
-            self.tr('Merge changes'), self._VCSMerge)
-        self.vcsDirMenuActions.append(act)
-        act = menu.addAction(
-            self.tr('Conflicts resolved'), self.__SVNResolve)
-        self.vcsDirMenuActions.append(act)
-        menu.addSeparator()
-        act = menu.addAction(self.tr('Set Property'), self.__SVNSetProp)
+            self.tr("Revert changes"),
+            self._VCSRevert,
+        )
         self.vcsDirMenuActions.append(act)
         act = menu.addAction(
-            self.tr('List Properties'), self.__SVNListProps)
+            UI.PixmapCache.getIcon("vcsMerge"), self.tr("Merge changes"), self._VCSMerge
+        )
+        self.vcsDirMenuActions.append(act)
+        act = menu.addAction(self.tr("Conflicts resolved"), self.__SVNResolve)
         self.vcsDirMenuActions.append(act)
-        act = menu.addAction(self.tr('Delete Property'), self.__SVNDelProp)
+        menu.addSeparator()
+        act = menu.addAction(self.tr("Set Property"), self.__SVNSetProp)
+        self.vcsDirMenuActions.append(act)
+        act = menu.addAction(self.tr("List Properties"), self.__SVNListProps)
+        self.vcsDirMenuActions.append(act)
+        act = menu.addAction(self.tr("Delete Property"), self.__SVNDelProp)
         self.vcsDirMenuActions.append(act)
         menu.addSeparator()
-        menu.addAction(self.tr('Select all local file entries'),
-                       self.browser.selectLocalEntries)
-        menu.addAction(self.tr('Select all versioned file entries'),
-                       self.browser.selectVCSEntries)
-        menu.addAction(self.tr('Select all local directory entries'),
-                       self.browser.selectLocalDirEntries)
-        menu.addAction(self.tr('Select all versioned directory entries'),
-                       self.browser.selectVCSDirEntries)
+        menu.addAction(
+            self.tr("Select all local file entries"), self.browser.selectLocalEntries
+        )
+        menu.addAction(
+            self.tr("Select all versioned file entries"), self.browser.selectVCSEntries
+        )
+        menu.addAction(
+            self.tr("Select all local directory entries"),
+            self.browser.selectLocalDirEntries,
+        )
+        menu.addAction(
+            self.tr("Select all versioned directory entries"),
+            self.browser.selectVCSDirEntries,
+        )
         menu.addSeparator()
         menu.addAction(self.tr("Configure..."), self.__SVNConfigure)
-        
+
         mainMenu.addSeparator()
         mainMenu.addMenu(menu)
         self.menuDir = menu
-        
+
     def _addVCSMenuDirMulti(self, mainMenu):
         """
         Protected method used to add the VCS menu to all project browsers.
-        
+
         @param mainMenu reference to the menu to be amended
         """
         if mainMenu is None:
             return
-        
+
         self.vcsDirMultiMenuActions = []
         self.vcsAddDirMultiMenuActions = []
-        
+
         menu = QMenu(self.tr("Version Control"))
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon(
-                os.path.join("VcsPlugins", "vcsSubversion", "icons",
-                             "subversion.svg")),
-            self.vcs.vcsName(), self._VCSInfoDisplay)
+                os.path.join("VcsPlugins", "vcsSubversion", "icons", "subversion.svg")
+            ),
+            self.vcs.vcsName(),
+            self._VCSInfoDisplay,
+        )
         font = act.font()
         font.setBold(True)
         act.setFont(font)
         menu.addSeparator()
-        
+
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsUpdate"),
-            self.tr('Update from repository'), self._VCSUpdate)
+            self.tr("Update from repository"),
+            self._VCSUpdate,
+        )
         self.vcsDirMultiMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsCommit"),
-            self.tr('Commit changes to repository...'),
-            self._VCSCommit)
+            self.tr("Commit changes to repository..."),
+            self._VCSCommit,
+        )
         self.vcsDirMultiMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsAdd"),
-            self.tr('Add to repository'), self._VCSAdd)
+            UI.PixmapCache.getIcon("vcsAdd"), self.tr("Add to repository"), self._VCSAdd
+        )
         self.vcsAddDirMultiMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsRemove"),
-            self.tr('Remove from repository (and disk)'),
-            self._VCSRemove)
+            self.tr("Remove from repository (and disk)"),
+            self._VCSRemove,
+        )
         self.vcsDirMultiMenuActions.append(act)
         if self.vcs.version >= (1, 5, 0):
             menu.addSeparator()
             act = menu.addAction(
-                self.tr("Add to Changelist"),
-                self.__SVNAddToChangelist)
+                self.tr("Add to Changelist"), self.__SVNAddToChangelist
+            )
             self.vcsMenuActions.append(act)
             act = menu.addAction(
-                self.tr("Remove from Changelist"),
-                self.__SVNRemoveFromChangelist)
+                self.tr("Remove from Changelist"), self.__SVNRemoveFromChangelist
+            )
             self.vcsMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsStatus"),
-            self.tr('Show status'), self._VCSStatus)
+            UI.PixmapCache.getIcon("vcsStatus"), self.tr("Show status"), self._VCSStatus
+        )
         self.vcsDirMultiMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences'), self._VCSDiff)
+            self.tr("Show differences"),
+            self._VCSDiff,
+        )
         self.vcsDirMultiMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences (extended)'),
-            self.__SVNExtendedDiff)
+            self.tr("Show differences (extended)"),
+            self.__SVNExtendedDiff,
+        )
         self.vcsDirMultiMenuActions.append(act)
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsDiff"),
-            self.tr('Show differences (URLs)'),
-            self.__SVNUrlDiff)
+            self.tr("Show differences (URLs)"),
+            self.__SVNUrlDiff,
+        )
         self.vcsDirMultiMenuActions.append(act)
         menu.addSeparator()
         act = menu.addAction(
             UI.PixmapCache.getIcon("vcsRevert"),
-            self.tr('Revert changes'), self._VCSRevert)
-        self.vcsDirMultiMenuActions.append(act)
-        act = menu.addAction(
-            UI.PixmapCache.getIcon("vcsMerge"),
-            self.tr('Merge changes'), self._VCSMerge)
-        self.vcsDirMultiMenuActions.append(act)
-        act = menu.addAction(
-            self.tr('Conflicts resolved'), self.__SVNResolve)
-        self.vcsDirMultiMenuActions.append(act)
-        menu.addSeparator()
-        act = menu.addAction(self.tr('Set Property'), self.__SVNSetProp)
+            self.tr("Revert changes"),
+            self._VCSRevert,
+        )
         self.vcsDirMultiMenuActions.append(act)
         act = menu.addAction(
-            self.tr('List Properties'), self.__SVNListProps)
+            UI.PixmapCache.getIcon("vcsMerge"), self.tr("Merge changes"), self._VCSMerge
+        )
+        self.vcsDirMultiMenuActions.append(act)
+        act = menu.addAction(self.tr("Conflicts resolved"), self.__SVNResolve)
         self.vcsDirMultiMenuActions.append(act)
-        act = menu.addAction(self.tr('Delete Property'), self.__SVNDelProp)
+        menu.addSeparator()
+        act = menu.addAction(self.tr("Set Property"), self.__SVNSetProp)
+        self.vcsDirMultiMenuActions.append(act)
+        act = menu.addAction(self.tr("List Properties"), self.__SVNListProps)
+        self.vcsDirMultiMenuActions.append(act)
+        act = menu.addAction(self.tr("Delete Property"), self.__SVNDelProp)
         self.vcsDirMultiMenuActions.append(act)
         menu.addSeparator()
-        menu.addAction(self.tr('Select all local file entries'),
-                       self.browser.selectLocalEntries)
-        menu.addAction(self.tr('Select all versioned file entries'),
-                       self.browser.selectVCSEntries)
-        menu.addAction(self.tr('Select all local directory entries'),
-                       self.browser.selectLocalDirEntries)
-        menu.addAction(self.tr('Select all versioned directory entries'),
-                       self.browser.selectVCSDirEntries)
+        menu.addAction(
+            self.tr("Select all local file entries"), self.browser.selectLocalEntries
+        )
+        menu.addAction(
+            self.tr("Select all versioned file entries"), self.browser.selectVCSEntries
+        )
+        menu.addAction(
+            self.tr("Select all local directory entries"),
+            self.browser.selectLocalDirEntries,
+        )
+        menu.addAction(
+            self.tr("Select all versioned directory entries"),
+            self.browser.selectVCSDirEntries,
+        )
         menu.addSeparator()
         menu.addAction(self.tr("Configure..."), self.__SVNConfigure)
-        
+
         mainMenu.addSeparator()
         mainMenu.addMenu(menu)
         self.menuDirMulti = menu
-    
+
     ###########################################################################
     # Menu handling methods below
     ###########################################################################
-    
+
     def __SVNCopy(self):
         """
         Private slot called by the context menu to copy the selected file.
@@ -742,7 +840,7 @@
         except AttributeError:
             fn = itm.dirName()
         self.vcs.svnCopy(fn, self.project)
-        
+
     def __SVNMove(self):
         """
         Private slot called by the context menu to move the selected file.
@@ -762,7 +860,7 @@
                 for mf in movefiles:
                     self.browser.closeSourceWindow.emit(mf)
         self.browser.project.startFileSystemMonitoring()
-    
+
     def __SVNResolve(self):
         """
         Private slot called by the context menu to resolve conflicts of a file.
@@ -774,7 +872,7 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.vcsResolved(names)
-        
+
     def __SVNListProps(self):
         """
         Private slot called by the context menu to list the subversion
@@ -787,7 +885,7 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnListProps(names)
-        
+
     def __SVNSetProp(self):
         """
         Private slot called by the context menu to set a subversion property
@@ -800,7 +898,7 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnSetProp(names)
-        
+
     def __SVNDelProp(self):
         """
         Private slot called by the context menu to delete a subversion
@@ -813,12 +911,12 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnDelProp(names)
-        
+
     def __SVNExtendedDiff(self):
         """
         Private slot called by the context menu to show the difference of a
         file to the repository.
-        
+
         This gives the chance to enter the revisions to compare.
         """
         names = []
@@ -828,12 +926,12 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnExtendedDiff(names)
-        
+
     def __SVNUrlDiff(self):
         """
         Private slot called by the context menu to show the difference of a
         file of two repository URLs.
-        
+
         This gives the chance to enter the repository URLs to compare.
         """
         names = []
@@ -843,7 +941,7 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnUrlDiff(names)
-        
+
     def __SVNSbsDiff(self):
         """
         Private slot called by the context menu to show the difference of a
@@ -852,18 +950,18 @@
         itm = self.browser.currentItem()
         fn = itm.fileName()
         self.vcs.vcsSbsDiff(fn)
-    
+
     def __SVNSbsExtendedDiff(self):
         """
         Private slot called by the context menu to show the difference of a
         file to the repository side-by-side.
-       
+
         It allows the selection of revisions to compare.
         """
         itm = self.browser.currentItem()
         fn = itm.fileName()
         self.vcs.vcsSbsDiff(fn, extended=True)
-    
+
     def __SVNBlame(self):
         """
         Private slot called by the context menu to show the blame of a file.
@@ -871,7 +969,7 @@
         itm = self.browser.currentItem()
         fn = itm.fileName()
         self.vcs.svnBlame(fn)
-        
+
     def __SVNLock(self):
         """
         Private slot called by the context menu to lock files in the
@@ -884,7 +982,7 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnLock(names)
-        
+
     def __SVNUnlock(self):
         """
         Private slot called by the context menu to unlock files in the
@@ -897,7 +995,7 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnUnlock(names)
-        
+
     def __SVNBreakLock(self):
         """
         Private slot called by the context menu to break lock files in the
@@ -910,7 +1008,7 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnUnlock(names, breakIt=True)
-        
+
     def __SVNStealLock(self):
         """
         Private slot called by the context menu to steal lock files in the
@@ -923,14 +1021,13 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnLock(names, stealIt=True)
-        
+
     def __SVNConfigure(self):
         """
         Private method to open the configuration dialog.
         """
-        ericApp().getObject("UserInterface").showPreferences(
-            "zzz_subversionPage")
-        
+        ericApp().getObject("UserInterface").showPreferences("zzz_subversionPage")
+
     def __SVNAddToChangelist(self):
         """
         Private slot called by the context menu to add files to a changelist.
@@ -942,7 +1039,7 @@
             except AttributeError:
                 names.append(itm.dirName())
         self.vcs.svnAddToChangelist(names)
-        
+
     def __SVNRemoveFromChangelist(self):
         """
         Private slot called by the context menu to remove files from their
@@ -959,11 +1056,11 @@
     ###########################################################################
     # Some private utility methods below
     ###########################################################################
-    
+
     def __itemsHaveFiles(self, items):
         """
         Private method to check, if items contain file type items.
-        
+
         @param items items to check (list of QTreeWidgetItems)
         @return flag indicating items contain file type items (boolean)
         """

eric ide

mercurial