From 259b7c2433d74b6001e30f288f8ae50a83166ea3 Mon Sep 17 00:00:00 2001 From: iLLiCiTiT Date: Thu, 8 Jul 2021 10:17:12 +0200 Subject: [PATCH] added ability to register callbacks on create --- openpype/tools/new_publisher/control.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/openpype/tools/new_publisher/control.py b/openpype/tools/new_publisher/control.py index 3d9fdeb517..2a74b218b5 100644 --- a/openpype/tools/new_publisher/control.py +++ b/openpype/tools/new_publisher/control.py @@ -26,6 +26,7 @@ class PublisherController: self.dbcon = dbcon self._reset_callback_refs = set() + self._on_create_callback_refs = set() self.creators = {} self.publish_plugins = [] @@ -37,6 +38,9 @@ class PublisherController: ref = weakref.WeakMethod(callback) self._reset_callback_refs.add(ref) + def add_on_create_callback(self, callback): + ref = weakref.WeakMethod(callback) + self._on_create_callback_refs.add(ref) def _trigger_callbacks(self, callbacks, *args, **kwargs): # Trigger reset callbacks @@ -102,5 +106,16 @@ class PublisherController: self.instances = instances def create(self, family, subset_name, instance_data, options): + # QUESTION Force to return instances or call `list_instances` on each + # creation? (`list_instances` may slow down...) creator = self.creators[family] - return creator.create(subset_name, instance_data, options) + result = creator.create(subset_name, instance_data, options) + if result and not isinstance(result, (list, tuple)): + result = [result] + + for instance in result: + self.instances.append(instance) + + self._trigger_callbacks(self._on_create_callback_refs) + + return result