Merge pull request #531 from Arthur-Milchior/browser_will_show_context_menu

hook browser_header_will_show_context_menu
This commit is contained in:
Damien Elmes 2020-03-28 14:50:02 +10:00 committed by GitHub
commit ef79f7d676
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 29 additions and 0 deletions

View file

@ -970,6 +970,7 @@ QTableView {{ gridline-color: {grid} }}
a.setCheckable(True) a.setCheckable(True)
a.setChecked(type in self.model.activeCols) a.setChecked(type in self.model.activeCols)
a.toggled.connect(lambda b, t=type: self.toggleField(t)) a.toggled.connect(lambda b, t=type: self.toggleField(t))
gui_hooks.browser_header_will_show_context_menu(self, m)
m.exec_(gpos) m.exec_(gpos)
def toggleField(self, type): def toggleField(self, type):

View file

@ -385,6 +385,30 @@ class _BrowserDidSearchHook:
browser_did_search = _BrowserDidSearchHook() browser_did_search = _BrowserDidSearchHook()
class _BrowserHeaderWillShowContextMenuHook:
_hooks: List[Callable[["aqt.browser.Browser", QMenu], None]] = []
def append(self, cb: Callable[["aqt.browser.Browser", QMenu], None]) -> None:
"""(browser: aqt.browser.Browser, menu: QMenu)"""
self._hooks.append(cb)
def remove(self, cb: Callable[["aqt.browser.Browser", QMenu], None]) -> None:
if cb in self._hooks:
self._hooks.remove(cb)
def __call__(self, browser: aqt.browser.Browser, menu: QMenu) -> None:
for hook in self._hooks:
try:
hook(browser, menu)
except:
# if the hook fails, remove it
self._hooks.remove(hook)
raise
browser_header_will_show_context_menu = _BrowserHeaderWillShowContextMenuHook()
class _BrowserMenusDidInitHook: class _BrowserMenusDidInitHook:
_hooks: List[Callable[["aqt.browser.Browser"], None]] = [] _hooks: List[Callable[["aqt.browser.Browser"], None]] = []

View file

@ -185,6 +185,10 @@ hooks = [
args=["browser: aqt.browser.Browser", "menu: QMenu"], args=["browser: aqt.browser.Browser", "menu: QMenu"],
legacy_hook="browser.onContextMenu", legacy_hook="browser.onContextMenu",
), ),
Hook(
name="browser_header_will_show_context_menu",
args=["browser: aqt.browser.Browser", "menu: QMenu"],
),
Hook( Hook(
name="browser_did_change_row", name="browser_did_change_row",
args=["browser: aqt.browser.Browser"], args=["browser: aqt.browser.Browser"],