16 |
16 |
17 class ShelveProjectBrowserHelper(HgExtensionProjectBrowserHelper): |
17 class ShelveProjectBrowserHelper(HgExtensionProjectBrowserHelper): |
18 """ |
18 """ |
19 Class implementing the shelve extension project browser helper. |
19 Class implementing the shelve extension project browser helper. |
20 """ |
20 """ |
|
21 |
21 def __init__(self, vcsObject, browserObject, projectObject): |
22 def __init__(self, vcsObject, browserObject, projectObject): |
22 """ |
23 """ |
23 Constructor |
24 Constructor |
24 |
25 |
25 @param vcsObject reference to the vcs object |
26 @param vcsObject reference to the vcs object |
26 @param browserObject reference to the project browser object |
27 @param browserObject reference to the project browser object |
27 @param projectObject reference to the project object |
28 @param projectObject reference to the project object |
28 """ |
29 """ |
29 super().__init__( |
30 super().__init__(vcsObject, browserObject, projectObject) |
30 vcsObject, browserObject, projectObject) |
31 |
31 |
|
32 def initMenus(self): |
32 def initMenus(self): |
33 """ |
33 """ |
34 Public method to generate the extension menus. |
34 Public method to generate the extension menus. |
35 |
35 |
36 @return dictionary of populated menu (dict of QMenu). The dict |
36 @return dictionary of populated menu (dict of QMenu). The dict |
37 must have the keys 'mainMenu', 'multiMenu', 'backMenu', 'dirMenu' |
37 must have the keys 'mainMenu', 'multiMenu', 'backMenu', 'dirMenu' |
38 and 'dirMultiMenu'. |
38 and 'dirMultiMenu'. |
39 """ |
39 """ |
40 self.__menus = {} |
40 self.__menus = {} |
41 |
41 |
42 menu = QMenu(self.menuTitle()) |
42 menu = QMenu(self.menuTitle()) |
43 menu.setTearOffEnabled(True) |
43 menu.setTearOffEnabled(True) |
44 menu.addAction(self.tr("Shelve changes"), self.__hgShelve) |
44 menu.addAction(self.tr("Shelve changes"), self.__hgShelve) |
45 self.__menus['mainMenu'] = menu |
45 self.__menus["mainMenu"] = menu |
46 |
46 |
47 menu = QMenu(self.menuTitle()) |
47 menu = QMenu(self.menuTitle()) |
48 menu.setTearOffEnabled(True) |
48 menu.setTearOffEnabled(True) |
49 menu.addAction(self.tr("Shelve changes"), self.__hgShelve) |
49 menu.addAction(self.tr("Shelve changes"), self.__hgShelve) |
50 self.__menus['multiMenu'] = menu |
50 self.__menus["multiMenu"] = menu |
51 |
51 |
52 menu = QMenu(self.menuTitle()) |
52 menu = QMenu(self.menuTitle()) |
53 menu.setTearOffEnabled(True) |
53 menu.setTearOffEnabled(True) |
54 menu.addAction(self.tr("Shelve changes"), self.__hgShelve) |
54 menu.addAction(self.tr("Shelve changes"), self.__hgShelve) |
55 self.__menus['dirMenu'] = menu |
55 self.__menus["dirMenu"] = menu |
56 |
56 |
57 menu = QMenu(self.menuTitle()) |
57 menu = QMenu(self.menuTitle()) |
58 menu.setTearOffEnabled(True) |
58 menu.setTearOffEnabled(True) |
59 menu.addAction(self.tr("Shelve changes"), self.__hgShelve) |
59 menu.addAction(self.tr("Shelve changes"), self.__hgShelve) |
60 self.__menus['dirMultiMenu'] = menu |
60 self.__menus["dirMultiMenu"] = menu |
61 |
61 |
62 return self.__menus |
62 return self.__menus |
63 |
63 |
64 def menuTitle(self): |
64 def menuTitle(self): |
65 """ |
65 """ |
66 Public method to get the menu title. |
66 Public method to get the menu title. |
67 |
67 |
68 @return title of the menu (string) |
68 @return title of the menu (string) |
69 """ |
69 """ |
70 return self.tr("Shelve") |
70 return self.tr("Shelve") |
71 |
71 |
72 def showExtensionMenu(self, key, controlled): |
72 def showExtensionMenu(self, key, controlled): |
73 """ |
73 """ |
74 Public method to prepare the extension menu for display. |
74 Public method to prepare the extension menu for display. |
75 |
75 |
76 @param key menu key (string, one of 'mainMenu', 'multiMenu', |
76 @param key menu key (string, one of 'mainMenu', 'multiMenu', |
77 'backMenu', 'dirMenu' or 'dirMultiMenu') |
77 'backMenu', 'dirMenu' or 'dirMultiMenu') |
78 @param controlled flag indicating to prepare the menu for a |
78 @param controlled flag indicating to prepare the menu for a |
79 version controlled entry or a non-version controlled entry |
79 version controlled entry or a non-version controlled entry |
80 (boolean) |
80 (boolean) |
81 """ |
81 """ |
82 if key in self.__menus: |
82 if key in self.__menus: |
83 self.__menus[key].setEnabled(controlled) |
83 self.__menus[key].setEnabled(controlled) |
84 |
84 |
85 def __reopenProject(self, shouldReopen, title): |
85 def __reopenProject(self, shouldReopen, title): |
86 """ |
86 """ |
87 Private method to reopen the project if needed and wanted. |
87 Private method to reopen the project if needed and wanted. |
88 |
88 |
89 @param shouldReopen flag indicating that the project should |
89 @param shouldReopen flag indicating that the project should |
90 be reopened (boolean) |
90 be reopened (boolean) |
91 @param title title of the message box (string) |
91 @param title title of the message box (string) |
92 """ |
92 """ |
93 if shouldReopen: |
93 if shouldReopen: |
94 res = EricMessageBox.yesNo( |
94 res = EricMessageBox.yesNo( |
95 None, |
95 None, |
96 title, |
96 title, |
97 self.tr("""The project should be reread. Do this now?"""), |
97 self.tr("""The project should be reread. Do this now?"""), |
98 yesDefault=True) |
98 yesDefault=True, |
|
99 ) |
99 if res: |
100 if res: |
100 self.project.reopenProject() |
101 self.project.reopenProject() |
101 |
102 |
102 def __hgShelve(self): |
103 def __hgShelve(self): |
103 """ |
104 """ |
104 Private slot used to shelve all current changes. |
105 Private slot used to shelve all current changes. |
105 """ |
106 """ |
106 names = [] |
107 names = [] |