Merge pull request #633 from hgiesel/dconf_hooks
Add three deck config hooks
This commit is contained in:
commit
6b05272ed4
@ -33,6 +33,7 @@ Henry Tang <hktang@ualberta.ca>
|
|||||||
Simone Gaiarin <simgunz@gmail.com>
|
Simone Gaiarin <simgunz@gmail.com>
|
||||||
Rai (Michal Pokorny) <agentydragon@gmail.com>
|
Rai (Michal Pokorny) <agentydragon@gmail.com>
|
||||||
Zeno Gantner <zeno.gantner@gmail.com>
|
Zeno Gantner <zeno.gantner@gmail.com>
|
||||||
|
Henrik Giesel <hengiesel@gmail.com>
|
||||||
|
|
||||||
********************
|
********************
|
||||||
|
|
||||||
|
@ -119,10 +119,12 @@ class DeckConf(QDialog):
|
|||||||
name = getOnlyText(_("New options group name:"))
|
name = getOnlyText(_("New options group name:"))
|
||||||
if not name:
|
if not name:
|
||||||
return
|
return
|
||||||
|
|
||||||
# first, save currently entered data to current conf
|
# first, save currently entered data to current conf
|
||||||
self.saveConf()
|
self.saveConf()
|
||||||
# then clone the conf
|
# then clone the conf
|
||||||
id = self.mw.col.decks.add_config_returning_id(name, clone_from=self.conf)
|
id = self.mw.col.decks.add_config_returning_id(name, clone_from=self.conf)
|
||||||
|
gui_hooks.deck_conf_did_add_config(self, self.deck, self.conf, name, id)
|
||||||
# set the deck to the new conf
|
# set the deck to the new conf
|
||||||
self.deck["conf"] = id
|
self.deck["conf"] = id
|
||||||
# then reload the conf list
|
# then reload the conf list
|
||||||
@ -132,6 +134,7 @@ class DeckConf(QDialog):
|
|||||||
if int(self.conf["id"]) == 1:
|
if int(self.conf["id"]) == 1:
|
||||||
showInfo(_("The default configuration can't be removed."), self)
|
showInfo(_("The default configuration can't be removed."), self)
|
||||||
else:
|
else:
|
||||||
|
gui_hooks.deck_conf_will_remove_config(self, self.deck, self.conf)
|
||||||
self.mw.col.modSchema(check=True)
|
self.mw.col.modSchema(check=True)
|
||||||
self.mw.col.decks.remove_config(self.conf["id"])
|
self.mw.col.decks.remove_config(self.conf["id"])
|
||||||
self.conf = None
|
self.conf = None
|
||||||
@ -143,6 +146,8 @@ class DeckConf(QDialog):
|
|||||||
name = getOnlyText(_("New name:"), default=old)
|
name = getOnlyText(_("New name:"), default=old)
|
||||||
if not name or name == old:
|
if not name or name == old:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
gui_hooks.deck_conf_will_rename_config(self, self.deck, self.conf, name)
|
||||||
self.conf["name"] = name
|
self.conf["name"] = name
|
||||||
self.saveConf()
|
self.saveConf()
|
||||||
self.loadConfs()
|
self.loadConfs()
|
||||||
|
@ -917,6 +917,52 @@ class _DeckBrowserWillShowOptionsMenuHook:
|
|||||||
deck_browser_will_show_options_menu = _DeckBrowserWillShowOptionsMenuHook()
|
deck_browser_will_show_options_menu = _DeckBrowserWillShowOptionsMenuHook()
|
||||||
|
|
||||||
|
|
||||||
|
class _DeckConfDidAddConfigHook:
|
||||||
|
"""Allows modification of a newly created config group
|
||||||
|
|
||||||
|
This hook is called after the config group was created, but
|
||||||
|
before initializing the widget state.
|
||||||
|
|
||||||
|
`deck_conf` will point to the old config group, `new_conf_id` will
|
||||||
|
point to the newly created config group.
|
||||||
|
|
||||||
|
Config groups are created as clones of the current one.
|
||||||
|
"""
|
||||||
|
|
||||||
|
_hooks: List[Callable[["aqt.deckconf.DeckConf", Any, Any, str, int], None]] = []
|
||||||
|
|
||||||
|
def append(
|
||||||
|
self, cb: Callable[["aqt.deckconf.DeckConf", Any, Any, str, int], None]
|
||||||
|
) -> None:
|
||||||
|
"""(deck_conf: aqt.deckconf.DeckConf, deck: Any, config: Any, new_name: str, new_conf_id: int)"""
|
||||||
|
self._hooks.append(cb)
|
||||||
|
|
||||||
|
def remove(
|
||||||
|
self, cb: Callable[["aqt.deckconf.DeckConf", Any, Any, str, int], None]
|
||||||
|
) -> None:
|
||||||
|
if cb in self._hooks:
|
||||||
|
self._hooks.remove(cb)
|
||||||
|
|
||||||
|
def __call__(
|
||||||
|
self,
|
||||||
|
deck_conf: aqt.deckconf.DeckConf,
|
||||||
|
deck: Any,
|
||||||
|
config: Any,
|
||||||
|
new_name: str,
|
||||||
|
new_conf_id: int,
|
||||||
|
) -> None:
|
||||||
|
for hook in self._hooks:
|
||||||
|
try:
|
||||||
|
hook(deck_conf, deck, config, new_name, new_conf_id)
|
||||||
|
except:
|
||||||
|
# if the hook fails, remove it
|
||||||
|
self._hooks.remove(hook)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
deck_conf_did_add_config = _DeckConfDidAddConfigHook()
|
||||||
|
|
||||||
|
|
||||||
class _DeckConfDidLoadConfigHook:
|
class _DeckConfDidLoadConfigHook:
|
||||||
"""Called once widget state has been set from deck config"""
|
"""Called once widget state has been set from deck config"""
|
||||||
|
|
||||||
@ -971,6 +1017,66 @@ class _DeckConfDidSetupUiFormHook:
|
|||||||
deck_conf_did_setup_ui_form = _DeckConfDidSetupUiFormHook()
|
deck_conf_did_setup_ui_form = _DeckConfDidSetupUiFormHook()
|
||||||
|
|
||||||
|
|
||||||
|
class _DeckConfWillRemoveConfigHook:
|
||||||
|
"""Called before current config group is removed"""
|
||||||
|
|
||||||
|
_hooks: List[Callable[["aqt.deckconf.DeckConf", Any, Any], None]] = []
|
||||||
|
|
||||||
|
def append(self, cb: Callable[["aqt.deckconf.DeckConf", Any, Any], None]) -> None:
|
||||||
|
"""(deck_conf: aqt.deckconf.DeckConf, deck: Any, config: Any)"""
|
||||||
|
self._hooks.append(cb)
|
||||||
|
|
||||||
|
def remove(self, cb: Callable[["aqt.deckconf.DeckConf", Any, Any], None]) -> None:
|
||||||
|
if cb in self._hooks:
|
||||||
|
self._hooks.remove(cb)
|
||||||
|
|
||||||
|
def __call__(
|
||||||
|
self, deck_conf: aqt.deckconf.DeckConf, deck: Any, config: Any
|
||||||
|
) -> None:
|
||||||
|
for hook in self._hooks:
|
||||||
|
try:
|
||||||
|
hook(deck_conf, deck, config)
|
||||||
|
except:
|
||||||
|
# if the hook fails, remove it
|
||||||
|
self._hooks.remove(hook)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
deck_conf_will_remove_config = _DeckConfWillRemoveConfigHook()
|
||||||
|
|
||||||
|
|
||||||
|
class _DeckConfWillRenameConfigHook:
|
||||||
|
"""Called before config group is renamed"""
|
||||||
|
|
||||||
|
_hooks: List[Callable[["aqt.deckconf.DeckConf", Any, Any, str], None]] = []
|
||||||
|
|
||||||
|
def append(
|
||||||
|
self, cb: Callable[["aqt.deckconf.DeckConf", Any, Any, str], None]
|
||||||
|
) -> None:
|
||||||
|
"""(deck_conf: aqt.deckconf.DeckConf, deck: Any, config: Any, new_name: str)"""
|
||||||
|
self._hooks.append(cb)
|
||||||
|
|
||||||
|
def remove(
|
||||||
|
self, cb: Callable[["aqt.deckconf.DeckConf", Any, Any, str], None]
|
||||||
|
) -> None:
|
||||||
|
if cb in self._hooks:
|
||||||
|
self._hooks.remove(cb)
|
||||||
|
|
||||||
|
def __call__(
|
||||||
|
self, deck_conf: aqt.deckconf.DeckConf, deck: Any, config: Any, new_name: str
|
||||||
|
) -> None:
|
||||||
|
for hook in self._hooks:
|
||||||
|
try:
|
||||||
|
hook(deck_conf, deck, config, new_name)
|
||||||
|
except:
|
||||||
|
# if the hook fails, remove it
|
||||||
|
self._hooks.remove(hook)
|
||||||
|
raise
|
||||||
|
|
||||||
|
|
||||||
|
deck_conf_will_rename_config = _DeckConfWillRenameConfigHook()
|
||||||
|
|
||||||
|
|
||||||
class _DeckConfWillSaveConfigHook:
|
class _DeckConfWillSaveConfigHook:
|
||||||
"""Called before widget state is saved to config"""
|
"""Called before widget state is saved to config"""
|
||||||
|
|
||||||
|
@ -172,6 +172,41 @@ hooks = [
|
|||||||
args=["deck_conf: aqt.deckconf.DeckConf", "deck: Any", "config: Any"],
|
args=["deck_conf: aqt.deckconf.DeckConf", "deck: Any", "config: Any"],
|
||||||
doc="Called before widget state is saved to config",
|
doc="Called before widget state is saved to config",
|
||||||
),
|
),
|
||||||
|
Hook(
|
||||||
|
name="deck_conf_did_add_config",
|
||||||
|
args=[
|
||||||
|
"deck_conf: aqt.deckconf.DeckConf",
|
||||||
|
"deck: Any",
|
||||||
|
"config: Any",
|
||||||
|
"new_name: str",
|
||||||
|
"new_conf_id: int",
|
||||||
|
],
|
||||||
|
doc="""Allows modification of a newly created config group
|
||||||
|
|
||||||
|
This hook is called after the config group was created, but
|
||||||
|
before initializing the widget state.
|
||||||
|
|
||||||
|
`deck_conf` will point to the old config group, `new_conf_id` will
|
||||||
|
point to the newly created config group.
|
||||||
|
|
||||||
|
Config groups are created as clones of the current one.
|
||||||
|
""",
|
||||||
|
),
|
||||||
|
Hook(
|
||||||
|
name="deck_conf_will_remove_config",
|
||||||
|
args=["deck_conf: aqt.deckconf.DeckConf", "deck: Any", "config: Any"],
|
||||||
|
doc="Called before current config group is removed",
|
||||||
|
),
|
||||||
|
Hook(
|
||||||
|
name="deck_conf_will_rename_config",
|
||||||
|
args=[
|
||||||
|
"deck_conf: aqt.deckconf.DeckConf",
|
||||||
|
"deck: Any",
|
||||||
|
"config: Any",
|
||||||
|
"new_name: str",
|
||||||
|
],
|
||||||
|
doc="Called before config group is renamed",
|
||||||
|
),
|
||||||
# Browser
|
# Browser
|
||||||
###################
|
###################
|
||||||
Hook(name="browser_will_show", args=["browser: aqt.browser.Browser"]),
|
Hook(name="browser_will_show", args=["browser: aqt.browser.Browser"]),
|
||||||
|
Loading…
Reference in New Issue
Block a user