Sat, 31 Dec 2022 16:23:21 +0100
Updated copyright for 2023.
# -*- coding: utf-8 -*- # Copyright (c) 2014 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> # """ Module implementing the shelve extension project helper. """ from PyQt6.QtWidgets import QMenu from eric7.EricGui.EricAction import EricAction from eric7.EricWidgets import EricMessageBox from ..HgExtensionProjectHelper import HgExtensionProjectHelper class ShelveProjectHelper(HgExtensionProjectHelper): """ Class implementing the shelve extension project helper. """ def __init__(self): """ Constructor """ super().__init__() def initActions(self): """ Public method to generate the action objects. """ self.hgShelveAct = EricAction( self.tr("Shelve changes"), self.tr("Shelve changes..."), 0, 0, self, "mercurial_shelve", ) self.hgShelveAct.setStatusTip( self.tr("Shelve all current changes of the project") ) self.hgShelveAct.setWhatsThis( self.tr( """<b>Shelve changes</b>""" """<p>This shelves all current changes of the project.</p>""" ) ) self.hgShelveAct.triggered.connect(self.__hgShelve) self.actions.append(self.hgShelveAct) self.hgShelveBrowserAct = EricAction( self.tr("Show shelve browser"), self.tr("Show shelve browser..."), 0, 0, self, "mercurial_shelve_browser", ) self.hgShelveBrowserAct.setStatusTip(self.tr("Show a dialog with all shelves")) self.hgShelveBrowserAct.setWhatsThis( self.tr( """<b>Show shelve browser...</b>""" """<p>This shows a dialog listing all available shelves.""" """ Actions on these shelves may be executed via the""" """ context menu.</p>""" ) ) self.hgShelveBrowserAct.triggered.connect(self.__hgShelveBrowser) self.actions.append(self.hgShelveBrowserAct) self.hgUnshelveAct = EricAction( self.tr("Restore shelved change"), self.tr("Restore shelved change..."), 0, 0, self, "mercurial_unshelve", ) self.hgUnshelveAct.setStatusTip( self.tr("Restore a shelved change to the project directory") ) self.hgUnshelveAct.setWhatsThis( self.tr( """<b>Restore shelved change</b>""" """<p>This restore a shelved change to the project directory.""" """</p>""" ) ) self.hgUnshelveAct.triggered.connect(self.__hgUnshelve) self.actions.append(self.hgUnshelveAct) self.hgUnshelveAbortAct = EricAction( self.tr("Abort restore"), self.tr("Abort restore..."), 0, 0, self, "mercurial_unshelve_abort", ) self.hgUnshelveAbortAct.setStatusTip( self.tr("Abort the restore operation in progress") ) self.hgUnshelveAbortAct.setWhatsThis( self.tr( """<b>Abort restore</b>""" """<p>This aborts the restore operation in progress and reverts""" """ already applied changes.</p>""" ) ) self.hgUnshelveAbortAct.triggered.connect(self.__hgUnshelveAbort) self.actions.append(self.hgUnshelveAbortAct) self.hgUnshelveContinueAct = EricAction( self.tr("Continue restore"), self.tr("Continue restore..."), 0, 0, self, "mercurial_unshelve_continue", ) self.hgUnshelveContinueAct.setStatusTip( self.tr("Continue the restore operation in progress") ) self.hgUnshelveContinueAct.setWhatsThis( self.tr( """<b>Continue restore</b>""" """<p>This continues the restore operation in progress.</p>""" ) ) self.hgUnshelveContinueAct.triggered.connect(self.__hgUnshelveContinue) self.actions.append(self.hgUnshelveContinueAct) self.hgShelveDeleteAct = EricAction( self.tr("Delete shelved changes"), self.tr("Delete shelved changes..."), 0, 0, self, "mercurial_shelve_delete", ) self.hgShelveDeleteAct.setWhatsThis( self.tr( """<b>Delete shelved changes...</b>""" """<p>This opens a dialog to select the shelved changes to""" """ delete and deletes the selected ones.</p>""" ) ) self.hgShelveDeleteAct.triggered.connect(self.__hgDeleteShelves) self.actions.append(self.hgShelveDeleteAct) self.hgShelveCleanupAct = EricAction( self.tr("Delete ALL shelved changes"), self.tr("Delete ALL shelved changes"), 0, 0, self, "mercurial_shelve_cleanup", ) self.hgShelveCleanupAct.setWhatsThis( self.tr( """<b>Delete ALL shelved changes</b>""" """<p>This deletes all shelved changes.</p>""" ) ) self.hgShelveCleanupAct.triggered.connect(self.__hgCleanupShelves) self.actions.append(self.hgShelveCleanupAct) def initMenu(self, mainMenu): """ Public method to generate the extension menu. @param mainMenu reference to the main menu (QMenu) @return populated menu (QMenu) """ menu = QMenu(self.menuTitle(), mainMenu) menu.setTearOffEnabled(True) menu.addAction(self.hgShelveAct) menu.addSeparator() menu.addAction(self.hgShelveBrowserAct) menu.addSeparator() menu.addAction(self.hgUnshelveAct) menu.addAction(self.hgUnshelveContinueAct) menu.addAction(self.hgUnshelveAbortAct) menu.addSeparator() menu.addAction(self.hgShelveDeleteAct) menu.addAction(self.hgShelveCleanupAct) return menu def menuTitle(self): """ Public method to get the menu title. @return title of the menu (string) """ return self.tr("Shelve") def __reopenProject(self, shouldReopen, title): """ Private method to reopen the project if needed and wanted. @param shouldReopen flag indicating that the project should be reopened (boolean) @param title title of the message box (string) """ if shouldReopen: res = EricMessageBox.yesNo( None, title, self.tr("""The project should be reread. Do this now?"""), yesDefault=True, ) if res: self.project.reopenProject() def __hgShelve(self): """ Private slot used to shelve all current changes. """ shouldReopen = self.vcs.getExtensionObject("shelve").hgShelve( self.project.getProjectPath() ) self.__reopenProject(shouldReopen, self.tr("Shelve")) def __hgShelveBrowser(self): """ Private slot to show the shelve browser dialog. """ self.vcs.getExtensionObject("shelve").hgShelveBrowser() def __hgUnshelve(self): """ Private slot used to restore a shelved change. """ shouldReopen = self.vcs.getExtensionObject("shelve").hgUnshelve() self.__reopenProject(shouldReopen, self.tr("Unshelve")) def __hgUnshelveAbort(self): """ Private slot used to abort an ongoing restore operation. """ shouldReopen = self.vcs.getExtensionObject("shelve").hgUnshelveAbort() self.__reopenProject(shouldReopen, self.tr("Abort Unshelve")) def __hgUnshelveContinue(self): """ Private slot used to continue an ongoing restore operation. """ shouldReopen = self.vcs.getExtensionObject("shelve").hgUnshelveContinue() self.__reopenProject(shouldReopen, self.tr("Continue Unshelve")) def __hgDeleteShelves(self): """ Private slot to delete selected shelves. """ self.vcs.getExtensionObject("shelve").hgDeleteShelves() def __hgCleanupShelves(self): """ Private slot to delete all shelves. """ self.vcs.getExtensionObject("shelve").hgCleanupShelves()