eric7/Plugins/VcsPlugins/vcsMercurial/HgExtensionProjectBrowserHelper.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Plugins/VcsPlugins/vcsMercurial/HgExtensionProjectBrowserHelper.py	Sat May 15 18:45:04 2021 +0200
@@ -0,0 +1,97 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the project browser helper base for Mercurial extension
+interfaces.
+"""
+
+from PyQt5.QtCore import QObject
+from PyQt5.QtWidgets import QMenu
+
+
+class HgExtensionProjectBrowserHelper(QObject):
+    """
+    Class implementing the project browser helper base for Mercurial extension
+    interfaces.
+    
+    Note: The methods initMenus() and menuTitle() have to be reimplemented by
+    derived classes.
+    """
+    def __init__(self, vcsObject, browserObject, projectObject):
+        """
+        Constructor
+        
+        @param vcsObject reference to the vcs object
+        @param browserObject reference to the project browser object
+        @param projectObject reference to the project object
+        """
+        super().__init__()
+        
+        self.vcs = vcsObject
+        self.browser = browserObject
+        self.project = projectObject
+    
+    def initMenus(self):
+        """
+        Public method to generate the extension menus.
+        
+        Note: Derived class must implement this method.
+        
+        @return dictionary of populated menu (dict of QMenu). The dict
+            must have the keys 'mainMenu', 'multiMenu', 'backMenu', 'dirMenu'
+            and 'dirMultiMenu'.
+        @exception NotImplementedError raised if the class has not been
+            reimplemented
+        """
+        raise NotImplementedError
+        
+        return {
+            'mainMenu': QMenu(),
+            'multiMenu': QMenu(),
+            'backMenu': QMenu(),
+            'dirMenu': QMenu(),
+            'dirMultiMenu': QMenu(),
+        }
+    
+    def menuTitle(self):
+        """
+        Public method to get the menu title.
+        
+        Note: Derived class must implement this method.
+        
+        @return title of the menu (string)
+        @exception NotImplementedError raised if the class has not been
+            reimplemented
+        """
+        raise NotImplementedError
+        
+        return ""
+    
+    def showExtensionMenu(self, key, controlled):
+        """
+        Public method to prepare the extension menu for display.
+        
+        Note: Derived class must implement this method to adjust the
+        enabled states of its menus.
+        
+        @param key menu key (string, one of 'mainMenu', 'multiMenu',
+            'backMenu', 'dirMenu' or 'dirMultiMenu')
+        @param controlled flag indicating to prepare the menu for a
+            version controlled entry or a non-version controlled entry
+            (boolean)
+        @exception NotImplementedError raised if the class has not been
+            reimplemented
+        """
+        raise NotImplementedError
+
+    def _updateVCSStatus(self, name):
+        """
+        Protected method to update the VCS status of an item.
+        
+        @param name filename or directoryname of the item to be updated
+            (string)
+        """
+        self.project.getModel().updateVCSStatus(name)

eric ide

mercurial