50 @type str |
50 @type str |
51 """ |
51 """ |
52 from .LargefilesExtension.ProjectBrowserHelper import ( |
52 from .LargefilesExtension.ProjectBrowserHelper import ( |
53 LargefilesProjectBrowserHelper, |
53 LargefilesProjectBrowserHelper, |
54 ) |
54 ) |
55 from .ShelveExtension.ProjectBrowserHelper import ShelveProjectBrowserHelper |
55 from .ShelveBuiltin.ProjectBrowserHelper import ShelveProjectBrowserHelper |
56 |
56 |
57 super().__init__( |
57 super().__init__( |
58 vcsObject, |
58 vcsObject, |
59 browserObject, |
59 browserObject, |
60 projectObject, |
60 projectObject, |
61 isTranslationsBrowser, |
61 isTranslationsBrowser, |
62 parent, |
62 parent, |
63 name, |
63 name, |
64 ) |
64 ) |
65 |
65 |
66 # instantiate the extensions |
66 # instantiate interfaces for additional built-in functions |
67 self.__extensions = { |
67 self.__builtins = { |
68 "shelve": ShelveProjectBrowserHelper( |
68 "shelve": ShelveProjectBrowserHelper( |
69 vcsObject, browserObject, projectObject |
69 vcsObject, browserObject, projectObject |
70 ), |
70 ), |
|
71 } |
|
72 self.__builtinMenuTitles = { |
|
73 self.__builtins[b].menuTitle(): b for b in self.__builtins |
|
74 } |
|
75 self.__builtinMenus = { |
|
76 b: self.__builtins[b].initMenus() for b in self.__builtins |
|
77 } |
|
78 |
|
79 # instantiate the extensions |
|
80 self.__extensions = { |
71 "largefiles": LargefilesProjectBrowserHelper( |
81 "largefiles": LargefilesProjectBrowserHelper( |
72 vcsObject, browserObject, projectObject |
82 vcsObject, browserObject, projectObject |
73 ), |
83 ), |
74 } |
84 } |
75 |
85 self.__extensionMenuTitles = { |
76 self.__extensionMenuTitles = {} |
86 self.__extensions[e].menuTitle(): e for e in self.__extensions |
77 for extension in self.__extensions: |
87 } |
78 self.__extensionMenuTitles[self.__extensions[extension].menuTitle()] = ( |
88 self.__extensionMenus = { |
79 extension |
89 e: self.__extensions[e].initMenus() for e in self.__extensions |
80 ) |
90 } |
81 self.__extensionMenus = {} |
91 |
82 for extension in self.__extensions: |
92 def __showBuiltinsMenu(self, key, controlled): |
83 self.__extensionMenus[extension] = self.__extensions[extension].initMenus() |
93 """ |
|
94 Private slot showing the 'Other Functions' menu. |
|
95 |
|
96 @param key menu key (one of 'mainMenu', 'multiMenu', 'backMenu', 'dirMenu' |
|
97 or 'dirMultiMenu') |
|
98 @type str |
|
99 @param controlled flag indicating to show the menu for a |
|
100 version controlled entry or a non-version controlled entry |
|
101 @type bool |
|
102 """ |
|
103 for builtinName in self.__builtinMenus: |
|
104 if key in self.__builtinMenus[builtinName]: |
|
105 # adjust individual extension menu entries |
|
106 self.__builtins[builtinName].showMenu(key, controlled) |
84 |
107 |
85 def __showExtensionMenu(self, key, controlled): |
108 def __showExtensionMenu(self, key, controlled): |
86 """ |
109 """ |
87 Private slot showing the extensions menu. |
110 Private slot showing the extensions menu. |
88 |
111 |
98 self.__extensionMenus[extensionName][key].setEnabled( |
121 self.__extensionMenus[extensionName][key].setEnabled( |
99 self.vcs.isExtensionActive(extensionName) |
122 self.vcs.isExtensionActive(extensionName) |
100 ) |
123 ) |
101 if self.__extensionMenus[extensionName][key].isEnabled(): |
124 if self.__extensionMenus[extensionName][key].isEnabled(): |
102 # adjust individual extension menu entries |
125 # adjust individual extension menu entries |
103 self.__extensions[extensionName].showExtensionMenu(key, controlled) |
126 self.__extensions[extensionName].showMenu(key, controlled) |
104 if ( |
127 if ( |
105 not self.__extensionMenus[extensionName][key].isEnabled() |
128 not self.__extensionMenus[extensionName][key].isEnabled() |
106 and self.__extensionMenus[extensionName][key].isTearOffMenuVisible() |
129 and self.__extensionMenus[extensionName][key].isTearOffMenuVisible() |
107 ): |
130 ): |
108 self.__extensionMenus[extensionName][key].hideTearOffMenu() |
131 self.__extensionMenus[extensionName][key].hideTearOffMenu() |
262 self.__showExtensionMenu("dirMultiMenu", controlled) |
285 self.__showExtensionMenu("dirMultiMenu", controlled) |
263 |
286 |
264 ########################################################################### |
287 ########################################################################### |
265 ## Private menu generation methods below |
288 ## Private menu generation methods below |
266 ########################################################################### |
289 ########################################################################### |
|
290 |
|
291 def __addBuiltinsMenu(self, menu, key): |
|
292 """ |
|
293 Private method to add a 'Other Functions' menu entry. |
|
294 |
|
295 @param menu menu to add it to |
|
296 @type QMenu |
|
297 @param key menu key (one of 'mainMenu', 'multiMenu', 'backMenu', 'dirMenu' |
|
298 or 'dirMultiMenu') |
|
299 @type str |
|
300 @return reference to the menu action |
|
301 @rtype QAction |
|
302 """ |
|
303 act = None |
|
304 if key in ["mainMenu", "multiMenu", "backMenu", "dirMenu", "dirMultiMenu"]: |
|
305 builtinsMenu = QMenu(self.tr("Other Functions"), menu) |
|
306 builtinsMenu.setTearOffEnabled(True) |
|
307 for othersMenuTitle in sorted(self.__builtinMenuTitles): |
|
308 builtinName = self.__builtinMenuTitles[othersMenuTitle] |
|
309 if key in self.__builtinMenus[builtinName]: |
|
310 builtinsMenu.addMenu(self.__builtinMenus[builtinName][key]) |
|
311 if not builtinsMenu.isEmpty(): |
|
312 if not menu.isEmpty(): |
|
313 menu.addSeparator() |
|
314 act = menu.addMenu(builtinsMenu) |
|
315 return act |
267 |
316 |
268 def __addExtensionsMenu(self, menu, key): |
317 def __addExtensionsMenu(self, menu, key): |
269 """ |
318 """ |
270 Private method to add an extension menu entry. |
319 Private method to add an extension menu entry. |
271 |
320 |
323 EricPixmapCache.getIcon("vcsCommit"), |
372 EricPixmapCache.getIcon("vcsCommit"), |
324 self.tr("Commit changes to repository..."), |
373 self.tr("Commit changes to repository..."), |
325 self._VCSCommit, |
374 self._VCSCommit, |
326 ) |
375 ) |
327 self.vcsMenuActions.append(act) |
376 self.vcsMenuActions.append(act) |
|
377 self.__addBuiltinsMenu(menu, "mainMenu") |
328 self.__addExtensionsMenu(menu, "mainMenu") |
378 self.__addExtensionsMenu(menu, "mainMenu") |
329 menu.addSeparator() |
379 menu.addSeparator() |
330 act = menu.addAction( |
380 act = menu.addAction( |
331 EricPixmapCache.getIcon("vcsAdd"), |
381 EricPixmapCache.getIcon("vcsAdd"), |
332 self.tr("Add to repository"), |
382 self.tr("Add to repository"), |
466 EricPixmapCache.getIcon("vcsCommit"), |
516 EricPixmapCache.getIcon("vcsCommit"), |
467 self.tr("Commit changes to repository..."), |
517 self.tr("Commit changes to repository..."), |
468 self._VCSCommit, |
518 self._VCSCommit, |
469 ) |
519 ) |
470 self.vcsMultiMenuActions.append(act) |
520 self.vcsMultiMenuActions.append(act) |
|
521 self.__addBuiltinsMenu(menu, "multiMenu") |
471 self.__addExtensionsMenu(menu, "multiMenu") |
522 self.__addExtensionsMenu(menu, "multiMenu") |
472 menu.addSeparator() |
523 menu.addSeparator() |
473 act = menu.addAction( |
524 act = menu.addAction( |
474 EricPixmapCache.getIcon("vcsAdd"), |
525 EricPixmapCache.getIcon("vcsAdd"), |
475 self.tr("Add to repository"), |
526 self.tr("Add to repository"), |
619 EricPixmapCache.getIcon("vcsCommit"), |
670 EricPixmapCache.getIcon("vcsCommit"), |
620 self.tr("Commit changes to repository..."), |
671 self.tr("Commit changes to repository..."), |
621 self._VCSCommit, |
672 self._VCSCommit, |
622 ) |
673 ) |
623 self.vcsDirMenuActions.append(act) |
674 self.vcsDirMenuActions.append(act) |
|
675 self.__addBuiltinsMenu(menu, "dirMenu") |
624 self.__addExtensionsMenu(menu, "dirMenu") |
676 self.__addExtensionsMenu(menu, "dirMenu") |
625 menu.addSeparator() |
677 menu.addSeparator() |
626 act = menu.addAction( |
678 act = menu.addAction( |
627 EricPixmapCache.getIcon("vcsAdd"), |
679 EricPixmapCache.getIcon("vcsAdd"), |
628 self.tr("Add to repository"), |
680 self.tr("Add to repository"), |
733 EricPixmapCache.getIcon("vcsCommit"), |
785 EricPixmapCache.getIcon("vcsCommit"), |
734 self.tr("Commit changes to repository..."), |
786 self.tr("Commit changes to repository..."), |
735 self._VCSCommit, |
787 self._VCSCommit, |
736 ) |
788 ) |
737 self.vcsDirMultiMenuActions.append(act) |
789 self.vcsDirMultiMenuActions.append(act) |
|
790 self.__addBuiltinsMenu(menu, "dirMultiMenu") |
738 self.__addExtensionsMenu(menu, "dirMultiMenu") |
791 self.__addExtensionsMenu(menu, "dirMultiMenu") |
739 menu.addSeparator() |
792 menu.addSeparator() |
740 act = menu.addAction( |
793 act = menu.addAction( |
741 EricPixmapCache.getIcon("vcsAdd"), |
794 EricPixmapCache.getIcon("vcsAdd"), |
742 self.tr("Add to repository"), |
795 self.tr("Add to repository"), |