# HG changeset patch
# User KPOP
# Date 1618732619 -7200
# Sun Apr 18 09:56:59 2021 +0200
# Node ID 78b331b42fdec874d9cd202c5d1b5a42f78ef67e
# Parent b4a1ab073d5990827d26b2fb64e874469edc2f53
Use delayed menu's to apply to action to all open repositories (#5709)
diff -r b4a1ab073d59 -r 78b331b42fde tortoisehg/hgqt/shortcutregistry.py
--- a/tortoisehg/hgqt/shortcutregistry.py Fri Apr 16 19:12:27 2021 -0400
+++ b/tortoisehg/hgqt/shortcutregistry.py Sun Apr 18 09:56:59 2021 +0200
@@ -113,10 +113,12 @@
'Repository.pickRevision': (_('Pick...'), None),
'Repository.pruneRevisions': (_('&Prune...'), None),
'Repository.pull': (_('&Pull'), None),
+ 'Repository.pullAllTabs': (_('Pull &All Tabs'), None),
'Repository.pullToRevision': (_('Pull to here...'), None),
'Repository.purge': (_('&Purge...'), None),
'Repository.push': (_('P&ush'), None),
'Repository.pushAll': (_('Push &All'), None),
+ 'Repository.pushAllTabs': (_('Push A&ll Tabs'), None),
'Repository.pushBranch': (_('Push Selected &Branch'), None),
'Repository.pushToRevision': (_('Push to &Here'), None),
'Repository.rebaseRevision': (_('&Rebase...'), None),
diff -r b4a1ab073d59 -r 78b331b42fde tortoisehg/hgqt/workbench.py
--- a/tortoisehg/hgqt/workbench.py Fri Apr 16 19:12:27 2021 -0400
+++ b/tortoisehg/hgqt/workbench.py Sun Apr 18 09:56:59 2021 +0200
@@ -386,15 +386,35 @@
newnamed('Workbench.aboutQt', QApplication.aboutQt, menu='help')
newnamed('Workbench.about', self.onAbout, menu='help', icon='thg')
+ syncActionGroup = QActionGroup(self)
+ syncActionGroup.triggered.connect(self._runSyncAction)
newnamed('Repository.incoming', data='incoming', icon='hg-incoming',
- enabled='repoopen', toolbar='sync')
- newnamed('Repository.pull', data='pull', icon='hg-pull',
- enabled='repoopen', toolbar='sync')
+ enabled='repoopen', toolbar='sync', group=syncActionGroup)
+ pullAction = newnamed('Repository.pull', data='pull', icon='hg-pull',
+ enabled='repoopen', toolbar='sync',
+ group=syncActionGroup)
newnamed('Repository.outgoing', data='outgoing', icon='hg-outgoing',
- enabled='repoopen', toolbar='sync')
- newnamed('Repository.push', data='push', icon='hg-push',
- enabled='repoopen', toolbar='sync')
- menuSync.addActions(self.synctbar.actions())
+ enabled='repoopen', toolbar='sync', group=syncActionGroup)
+ pushAction = newnamed('Repository.push', data='push', icon='hg-push',
+ enabled='repoopen', toolbar='sync',
+ group=syncActionGroup)
+ menuSync.addActions(syncActionGroup.actions())
+ menuSync.addSeparator()
+
+ def addSyncActionMenu(parentAction, action):
+ tbb = self.synctbar.widgetForAction(parentAction)
+ menu = QMenu(self)
+ menu.addAction(action)
+ tbb.setMenu(menu)
+ syncAllTabsActionGroup = QActionGroup(self)
+ syncAllTabsActionGroup.triggered.connect(self._runSyncAllTabsAction)
+ addSyncActionMenu(pullAction, newnamed('Repository.pullAllTabs',
+ data='pull', icon='hg-pull', enabled='repoopen',
+ group=syncAllTabsActionGroup))
+ addSyncActionMenu(pushAction, newnamed('Repository.pushAllTabs',
+ data='push', icon='hg-push', enabled='repoopen',
+ group=syncAllTabsActionGroup))
+ menuSync.addActions(syncAllTabsActionGroup.actions())
menuSync.addSeparator()
action = QAction(self)
@@ -411,7 +431,6 @@
self.urlComboAction = self.synctbar.addWidget(self.urlCombo)
# hide it because workbench could be started without open repo
self.urlComboAction.setVisible(False)
- self.synctbar.actionTriggered.connect(self._runSyncAction)
def _setupUrlCombo(self, repoagent):
"""repository has been switched, fill urlCombo with URLs"""
@@ -567,7 +586,7 @@
def _addNewAction(self, text, slot=None, icon=None, shortcut=None,
checkable=False, tooltip=None, data=None, enabled=None,
- visible=None, menu=None, toolbar=None):
+ visible=None, menu=None, toolbar=None, group=None):
"""Create new action and register it
:slot: function called if action triggered or toggled.
@@ -611,15 +630,18 @@
getattr(self, 'menu%s' % menu.title()).addAction(action)
if toolbar:
getattr(self, '%stbar' % toolbar).addAction(action)
+ if group:
+ group.addAction(action)
return action
def _addNewNamedAction(self, name, slot=None, icon=None, checkable=False,
tooltip=None, data=None, enabled=None,
- visible=None, menu=None, toolbar=None):
+ visible=None, menu=None, toolbar=None, group=None):
"""Create new action and register it as user-configurable"""
a = self._addNewAction('', slot=slot, icon=icon, checkable=checkable,
tooltip=tooltip, data=data, enabled=enabled,
- visible=visible, menu=menu, toolbar=toolbar)
+ visible=visible, menu=menu, toolbar=toolbar,
+ group=group)
self._actionregistry.registerAction(name, a)
return a
@@ -883,6 +905,14 @@
w.setSyncUrl(self._syncUrlFor(op) or '')
getattr(w, op)()
+ @pyqtSlot(QAction)
+ def _runSyncAllTabsAction(self, action):
+ originalIndex = self.repoTabsWidget.currentIndex()
+ for index in range(0, self.repoTabsWidget.count()):
+ self.repoTabsWidget.setCurrentIndex(index)
+ self._runSyncAction(action)
+ self.repoTabsWidget.setCurrentIndex(originalIndex)
+
@pyqtSlot()
def _runSyncBookmarks(self):
w = self._currentRepoWidget()
Op maandag 12 april 2021 om 16:40:18 UTC+2 schreef KPOP: