mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-24 21:04:40 +01:00
fix validation of context in main window
This commit is contained in:
parent
c3aff4deb2
commit
e2eb8260de
3 changed files with 59 additions and 4 deletions
|
|
@ -35,7 +35,27 @@ class PublisherController(
|
|||
Known topics:
|
||||
"show.detailed.help" - Detailed help requested (UI related).
|
||||
"show.card.message" - Show card message request (UI related).
|
||||
"instances.refresh.finished" - Instances are refreshed.
|
||||
# --- Create model ---
|
||||
"create.model.reset" - Reset of create model.
|
||||
"instances.create.failed" - Creation failed.
|
||||
"convertors.convert.failed" - Convertor failed.
|
||||
"instances.save.failed" - Save failed.
|
||||
"instance.thumbnail.changed" - Thumbnail changed.
|
||||
"instances.collection.failed" - Collection of instances failed.
|
||||
"convertors.find.failed" - Convertor find failed.
|
||||
"instances.create.failed" - Create instances failed.
|
||||
"instances.remove.failed" - Remove instances failed.
|
||||
"create.context.added.instance" - Create instance added to context.
|
||||
"create.context.value.changed" - Create instance or context value
|
||||
changed.
|
||||
"create.context.pre.create.attrs.changed" - Pre create attributes
|
||||
changed.
|
||||
"create.context.create.attrs.changed" - Create attributes changed.
|
||||
"create.context.publish.attrs.changed" - Publish attributes changed.
|
||||
"create.context.removed.instance" - Instance removed from context.
|
||||
"create.model.instances.context.changed" - Instances changed context.
|
||||
like folder, task or variant.
|
||||
# --- Publish model ---
|
||||
"plugins.refresh.finished" - Plugins refreshed.
|
||||
"publish.reset.finished" - Reset finished.
|
||||
"controller.reset.started" - Controller reset started.
|
||||
|
|
|
|||
|
|
@ -371,6 +371,8 @@ def merge_attr_defs(attr_defs: List[List[AbstractAttrDef]]):
|
|||
|
||||
|
||||
class CreateModel:
|
||||
_CONTEXT_KEYS = {"folderPath", "task", "variant", "productName"}
|
||||
|
||||
def __init__(self, controller: AbstractPublisherBackend):
|
||||
self._log = None
|
||||
self._controller: AbstractPublisherBackend = controller
|
||||
|
|
@ -527,6 +529,12 @@ class CreateModel:
|
|||
instance = self._get_instance_by_id(instance_id)
|
||||
for key, value in changes.items():
|
||||
instance[key] = value
|
||||
self._emit_event(
|
||||
"create.model.instances.context.changed",
|
||||
{
|
||||
"instance_ids": list(changes_by_instance_id.keys())
|
||||
}
|
||||
)
|
||||
|
||||
def get_convertor_items(self) -> Dict[str, ConvertorItem]:
|
||||
return self._create_context.convertor_items_by_id
|
||||
|
|
@ -1032,16 +1040,28 @@ class CreateModel:
|
|||
return
|
||||
|
||||
instance_changes = {}
|
||||
context_changed_ids = set()
|
||||
for item in event.data["changes"]:
|
||||
instance_id = None
|
||||
if item["instance"]:
|
||||
instance_id = item["instance"].id
|
||||
instance_changes[instance_id] = item["changes"]
|
||||
changes = item["changes"]
|
||||
instance_changes[instance_id] = changes
|
||||
if instance_id is None:
|
||||
continue
|
||||
|
||||
if self._CONTEXT_KEYS.intersection(set(changes)):
|
||||
context_changed_ids.add(instance_id)
|
||||
|
||||
self._emit_event(
|
||||
"create.context.value.changed",
|
||||
{"instance_changes": instance_changes},
|
||||
)
|
||||
if context_changed_ids:
|
||||
self._emit_event(
|
||||
"create.model.instances.context.changed",
|
||||
{"instance_ids": list(context_changed_ids)},
|
||||
)
|
||||
|
||||
def _cc_pre_create_attr_changed(self, event):
|
||||
identifiers = event["identifiers"]
|
||||
|
|
|
|||
|
|
@ -281,7 +281,19 @@ class PublisherWindow(QtWidgets.QDialog):
|
|||
)
|
||||
|
||||
controller.register_event_callback(
|
||||
"instances.refresh.finished", self._on_instances_refresh
|
||||
"create.model.reset", self._on_create_model_reset
|
||||
)
|
||||
controller.register_event_callback(
|
||||
"create.context.added.instance",
|
||||
self._event_callback_validate_instances
|
||||
)
|
||||
controller.register_event_callback(
|
||||
"create.context.removed.instance",
|
||||
self._event_callback_validate_instances
|
||||
)
|
||||
controller.register_event_callback(
|
||||
"create.model.instances.context.changed",
|
||||
self._event_callback_validate_instances
|
||||
)
|
||||
controller.register_event_callback(
|
||||
"publish.reset.finished", self._on_publish_reset
|
||||
|
|
@ -936,13 +948,16 @@ class PublisherWindow(QtWidgets.QDialog):
|
|||
|
||||
self._set_footer_enabled(bool(all_valid))
|
||||
|
||||
def _on_instances_refresh(self):
|
||||
def _on_create_model_reset(self):
|
||||
self._validate_create_instances()
|
||||
|
||||
context_title = self._controller.get_context_title()
|
||||
self.set_context_label(context_title)
|
||||
self._update_publish_details_widget()
|
||||
|
||||
def _event_callback_validate_instances(self, _event):
|
||||
self._validate_create_instances()
|
||||
|
||||
def _set_comment_input_visiblity(self, visible):
|
||||
self._comment_input.setVisible(visible)
|
||||
self._footer_spacer.setVisible(not visible)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue