From bfc305fa2668438143c5e53eaa4e8c00aeea5098 Mon Sep 17 00:00:00 2001 From: Arthur Milchior Date: Thu, 19 Mar 2020 13:20:06 +0100 Subject: [PATCH] hook backup_is_done I expect to use this hook in add-on 529955533. It'll serve me to create long term backup at the same time than your backup --- qt/aqt/gui_hooks.py | 24 ++++++++++++++++++++++++ qt/aqt/main.py | 1 + qt/tools/genhooks_gui.py | 1 + 3 files changed, 26 insertions(+) diff --git a/qt/aqt/gui_hooks.py b/qt/aqt/gui_hooks.py index eed241f7e..01c415ba9 100644 --- a/qt/aqt/gui_hooks.py +++ b/qt/aqt/gui_hooks.py @@ -272,6 +272,30 @@ class _AvPlayerWillPlayHook: av_player_will_play = _AvPlayerWillPlayHook() +class _BackupIsDoneHook: + _hooks: List[Callable[[], None]] = [] + + def append(self, cb: Callable[[], None]) -> None: + """()""" + self._hooks.append(cb) + + def remove(self, cb: Callable[[], None]) -> None: + if cb in self._hooks: + self._hooks.remove(cb) + + def __call__(self) -> None: + for hook in self._hooks: + try: + hook() + except: + # if the hook fails, remove it + self._hooks.remove(hook) + raise + + +backup_is_done = _BackupIsDoneHook() + + class _BrowserDidChangeRowHook: _hooks: List[Callable[["aqt.browser.Browser"], None]] = [] diff --git a/qt/aqt/main.py b/qt/aqt/main.py index 3f3034bb5..013bdf5e4 100644 --- a/qt/aqt/main.py +++ b/qt/aqt/main.py @@ -561,6 +561,7 @@ from the profile screen." fname = backups.pop(0) path = os.path.join(dir, fname) os.unlink(path) + gui_hooks.backup_is_done() def maybeOptimize(self) -> None: # have two weeks passed? diff --git a/qt/tools/genhooks_gui.py b/qt/tools/genhooks_gui.py index dcf543979..6403950e1 100644 --- a/qt/tools/genhooks_gui.py +++ b/qt/tools/genhooks_gui.py @@ -341,6 +341,7 @@ hooks = [ ), # Main ################### + Hook(name="backup_is_done"), Hook(name="profile_did_open", legacy_hook="profileLoaded"), Hook(name="profile_will_close", legacy_hook="unloadProfile"), Hook(