Wed, 30 Dec 2020 11:00:05 +0100
Updated copyright for 2021.
# -*- 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(HgExtensionProjectBrowserHelper, self).__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)