diff -r 4e8b98454baa -r 800c432b34c8 eric7/Plugins/VcsPlugins/vcsMercurial/HgExtensionProjectBrowserHelper.py --- /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)