From 0a4de5accb49c9b16e395e46280191dc7ee41891 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 8 Jul 2021 10:06:14 +0200 Subject: [PATCH] added method that handle for triggering callbacks --- openpype/tools/new_publisher/control.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/openpype/tools/new_publisher/control.py b/openpype/tools/new_publisher/control.py index 962c712b12..ce0f2a30db 100644 --- a/openpype/tools/new_publisher/control.py +++ b/openpype/tools/new_publisher/control.py @@ -37,6 +37,20 @@ class PublisherController: ref = weakref.WeakMethod(callback) self._reset_callback_refs.add(ref) + + def _trigger_callbacks(self, callbacks, *args, **kwargs): + # Trigger reset callbacks + to_remove = set() + for ref in callbacks: + callback = ref() + if callback: + callback() + else: + to_remove.add(ref) + + for ref in to_remove: + callbacks.remove(ref) + def reset(self): if self._in_reset: return @@ -45,15 +59,7 @@ class PublisherController: self._reset() # Trigger reset callbacks - to_remove = set() - for ref in self._reset_callback_refs: - callback = ref() - if callback: - callback() - else: - to_remove.add(ref) - for ref in to_remove: - self._reset_callback_refs.remove(ref) + self._trigger_callbacks(self._reset_callback_refs) self._in_reset = False