Plugins/VcsPlugins/vcsMercurial/ShelveExtension/ProjectBrowserHelper.py

changeset 3305
cf4f22a19dc6
child 3312
7535e5a5cbce
equal deleted inserted replaced
3304:505055151390 3305:cf4f22a19dc6
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2014 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the shelve extension project browser helper.
8 """
9
10 from PyQt4.QtGui import QMenu
11
12 from E5Gui import E5MessageBox
13
14 from ..HgExtensionProjectBrowserHelper import HgExtensionProjectBrowserHelper
15
16
17 class ShelveProjectBrowserHelper(HgExtensionProjectBrowserHelper):
18 """
19 Class implementing the shelve extension project browser helper.
20 """
21 def __init__(self, vcsObject, browserObject, projectObject):
22 """
23 Constructor
24
25 @param vcsObject reference to the vcs object
26 @param browserObject reference to the project browser object
27 @param projectObject reference to the project object
28 """
29 super().__init__(vcsObject, browserObject, projectObject)
30
31 def initMenus(self):
32 """
33 Public method to generate the extension menus.
34
35 Note: Derived class must implement this method.
36
37 @return dictionary of populated menu (dict of QMenu). The dict
38 must have the keys 'mainMenu', 'multiMenu', 'backMenu', 'dirMenu'
39 and 'dirMultiMenu'.
40 """
41 self.__menus = {}
42
43 menu = QMenu(self.menuTitle())
44 menu.setTearOffEnabled(True)
45 menu.addAction(self.tr("Shelve changes"), self.__hgShelve)
46 self.__menus['mainMenu'] = menu
47
48 menu = QMenu(self.menuTitle())
49 menu.setTearOffEnabled(True)
50 menu.addAction(self.tr("Shelve changes"), self.__hgShelve)
51 self.__menus['multiMenu'] = menu
52
53 menu = QMenu(self.menuTitle())
54 menu.setTearOffEnabled(True)
55 menu.addAction(self.tr("Shelve changes"), self.__hgShelve)
56 self.__menus['dirMenu'] = menu
57
58 menu = QMenu(self.menuTitle())
59 menu.setTearOffEnabled(True)
60 menu.addAction(self.tr("Shelve changes"), self.__hgShelve)
61 self.__menus['dirMultiMenu'] = menu
62
63 return self.__menus
64
65 def menuTitle(self):
66 """
67 Public method to get the menu title.
68
69 Note: Derived class must implement this method.
70
71 @return title of the menu (string)
72 """
73 return self.tr("Shelve")
74
75 def __reopenProject(self, shouldReopen, title):
76 """
77 Private method to reopen the project if needed and wanted.
78
79 @param shouldReopen flag indicating that the project should
80 be reopened (boolean)
81 @param title title of the message box (string)
82 """
83 if shouldReopen:
84 res = E5MessageBox.yesNo(
85 None,
86 title,
87 self.tr("""The project should be reread. Do this now?"""),
88 yesDefault=True)
89 if res:
90 self.project.reopenProject()
91
92 def __hgShelve(self):
93 """
94 Private slot used to shelve all current changes.
95 """
96 names = []
97 for itm in self.browser.getSelectedItems():
98 try:
99 name = itm.fileName()
100 except AttributeError:
101 name = itm.dirName()
102 names.append(name)
103 shouldReopen = self.vcs.getExtensionObject("shelve")\
104 .hgShelve(names)
105 self.__reopenProject(shouldReopen, self.tr("Shelve"))

eric ide

mercurial