Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectHelper.py

changeset 3291
58e95eea9b6d
parent 3290
dbb53746813f
child 3297
7b7e8124fb51
diff -r dbb53746813f -r 58e95eea9b6d Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectHelper.py
--- a/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectHelper.py	Thu Feb 20 19:51:30 2014 +0100
+++ b/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectHelper.py	Fri Feb 21 18:57:15 2014 +0100
@@ -9,9 +9,10 @@
 
 from PyQt4.QtGui import QMenu
 
-from ..HgExtensionProjectHelper import HgExtensionProjectHelper
+from E5Gui.E5Action import E5Action
+from E5Gui import E5MessageBox
 
-from .shelve import Shelve
+from ..HgExtensionProjectHelper import HgExtensionProjectHelper
 
 
 class ShelveProjectHelper(HgExtensionProjectHelper):
@@ -28,6 +29,19 @@
         """
         Public method to generate the action objects.
         """
+        self.hgShelveAct = E5Action(
+            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)
     
     def initMenu(self, mainMenu):
         """
@@ -39,6 +53,8 @@
         menu = QMenu(self.menuTitle(), mainMenu)
         menu.setTearOffEnabled(True)
         
+        menu.addAction(self.hgShelveAct)
+        
         return menu
     
     def menuTitle(self):
@@ -48,3 +64,18 @@
         @return title of the menu (string)
         """
         return self.tr("Shelve")
+    
+    def __hgShelve(self):
+        """
+        Private slot used to shelve all current changes.
+        """
+        shouldReopen = self.vcs.getExtensionObject("shelve")\
+            .hgShelve(self.project.getProjectPath())
+        if shouldReopen:
+            res = E5MessageBox.yesNo(
+                None,
+                self.tr("Shelve"),
+                self.tr("""The project should be reread. Do this now?"""),
+                yesDefault=True)
+            if res:
+                self.project.reopenProject()

eric ide

mercurial