Merge pull request #426 from BigRoy/enhancement/workfile_template_event_system

Workfile Templates: add event system to Workfile Template Builder
This commit is contained in:
Jakub Trllo 2024-04-30 10:38:31 +02:00 committed by GitHub
commit 8e7913fb74
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -36,6 +36,7 @@ from ayon_core.lib import (
filter_profiles,
attribute_definitions,
)
from ayon_core.lib.events import EventSystem, EventCallback, Event
from ayon_core.lib.attribute_definitions import get_attributes_keys
from ayon_core.pipeline import Anatomy
from ayon_core.pipeline.load import (
@ -131,6 +132,8 @@ class AbstractTemplateBuilder(object):
self._current_task_entity = _NOT_SET
self._linked_folder_entities = _NOT_SET
self._event_system = EventSystem()
@property
def project_name(self):
if isinstance(self._host, HostBase):
@ -268,6 +271,8 @@ class AbstractTemplateBuilder(object):
self._project_settings = None
self._event_system = EventSystem()
self.clear_shared_data()
self.clear_shared_populate_data()
@ -746,6 +751,16 @@ class AbstractTemplateBuilder(object):
placeholder.set_finished()
# Trigger on_depth_processed event
self.emit_event(
topic="template.depth_processed",
data={
"depth": iter_counter,
"placeholders_by_scene_id": placeholder_by_scene_id
},
source="builder"
)
# Clear shared data before getting new placeholders
self.clear_shared_populate_data()
@ -764,6 +779,16 @@ class AbstractTemplateBuilder(object):
placeholder_by_scene_id[identifier] = placeholder
placeholders.append(placeholder)
# Trigger on_finished event
self.emit_event(
topic="template.finished",
data={
"depth": iter_counter,
"placeholders_by_scene_id": placeholder_by_scene_id,
},
source="builder"
)
self.refresh()
def _get_build_profiles(self):
@ -891,6 +916,30 @@ class AbstractTemplateBuilder(object):
"create_first_version": create_first_version
}
def emit_event(self, topic, data=None, source=None) -> Event:
return self._event_system.emit(topic, data, source)
def add_event_callback(self, topic, callback, order=None):
return self._event_system.add_callback(topic, callback, order=order)
def add_on_finished_callback(
self, callback, order=None
) -> EventCallback:
return self.add_event_callback(
topic="template.finished",
callback=callback,
order=order
)
def add_on_depth_processed_callback(
self, callback, order=None
) -> EventCallback:
return self.add_event_callback(
topic="template.depth_processed",
callback=callback,
order=order
)
@six.add_metaclass(ABCMeta)
class PlaceholderPlugin(object):