src/eric7/Plugins/VcsPlugins/vcsMercurial/ProjectBrowserHelper.py

branch
eric7
changeset 11068
15f0385e0471
parent 10683
779cda568acb
child 11082
58838580274e
equal deleted inserted replaced
11067:67b92e2cb719 11068:15f0385e0471
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"),

eric ide

mercurial