mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
precreate widget is separated from create dialog completely
This commit is contained in:
parent
f8be5763b5
commit
7ec4d50180
2 changed files with 85 additions and 29 deletions
|
|
@ -17,7 +17,7 @@ from openpype.pipeline.create import (
|
|||
from .widgets import IconValuePixmapLabel
|
||||
from .assets_widget import CreateDialogAssetsWidget
|
||||
from .tasks_widget import CreateDialogTasksWidget
|
||||
from .precreate_widget import AttributesWidget
|
||||
from .precreate_widget import PreCreateWidget
|
||||
from ..constants import (
|
||||
VARIANT_TOOLTIP,
|
||||
CREATOR_IDENTIFIER_ROLE,
|
||||
|
|
@ -216,22 +216,11 @@ class CreateDialog(QtWidgets.QDialog):
|
|||
context_layout.addWidget(assets_widget, 2)
|
||||
context_layout.addWidget(tasks_widget, 1)
|
||||
|
||||
pre_create_scroll_area = QtWidgets.QScrollArea(self)
|
||||
pre_create_contet_widget = QtWidgets.QWidget(pre_create_scroll_area)
|
||||
pre_create_scroll_area.setWidget(pre_create_contet_widget)
|
||||
pre_create_scroll_area.setWidgetResizable(True)
|
||||
# Precreate attributes widgets
|
||||
pre_create_widget = PreCreateWidget(self)
|
||||
|
||||
pre_create_contet_layout = QtWidgets.QVBoxLayout(
|
||||
pre_create_contet_widget
|
||||
)
|
||||
pre_create_attributes_widget = AttributesWidget(
|
||||
pre_create_contet_widget
|
||||
)
|
||||
pre_create_contet_layout.addWidget(pre_create_attributes_widget, 0)
|
||||
pre_create_contet_layout.addStretch(1)
|
||||
|
||||
creator_description_widget = CreatorDescriptionWidget(self)
|
||||
# TODO add HELP button
|
||||
creator_description_widget = CreatorDescriptionWidget(self)
|
||||
creator_description_widget.setVisible(False)
|
||||
|
||||
creators_view = QtWidgets.QListView(self)
|
||||
|
|
@ -273,17 +262,11 @@ class CreateDialog(QtWidgets.QDialog):
|
|||
mid_layout.addLayout(form_layout, 0)
|
||||
mid_layout.addWidget(create_btn, 0)
|
||||
|
||||
left_layout = QtWidgets.QVBoxLayout()
|
||||
left_layout.addWidget(QtWidgets.QLabel("Choose family:", self))
|
||||
left_layout.addWidget(creators_view, 1)
|
||||
left_layout.addLayout(form_layout, 0)
|
||||
left_layout.addWidget(create_btn, 0)
|
||||
|
||||
layout = QtWidgets.QHBoxLayout(self)
|
||||
layout.setSpacing(10)
|
||||
layout.addWidget(context_widget, 1)
|
||||
layout.addWidget(mid_widget, 1)
|
||||
layout.addWidget(pre_create_scroll_area, 1)
|
||||
layout.addWidget(pre_create_widget, 1)
|
||||
|
||||
prereq_timer = QtCore.QTimer()
|
||||
prereq_timer.setInterval(50)
|
||||
|
|
@ -306,7 +289,8 @@ class CreateDialog(QtWidgets.QDialog):
|
|||
|
||||
controller.add_plugins_refresh_callback(self._on_plugins_refresh)
|
||||
|
||||
self._pre_create_attributes_widget = pre_create_attributes_widget
|
||||
self._pre_create_widget = pre_create_widget
|
||||
|
||||
self._context_widget = context_widget
|
||||
self._assets_widget = assets_widget
|
||||
self._tasks_widget = tasks_widget
|
||||
|
|
@ -519,10 +503,11 @@ class CreateDialog(QtWidgets.QDialog):
|
|||
creator = self.controller.manual_creators.get(identifier)
|
||||
|
||||
self.creator_description_widget.set_plugin(creator)
|
||||
self._pre_create_widget.set_plugin(creator)
|
||||
|
||||
self._selected_creator = creator
|
||||
|
||||
if not creator:
|
||||
self._pre_create_attributes_widget.set_attr_defs([])
|
||||
self._set_context_enabled(False)
|
||||
return
|
||||
|
||||
|
|
@ -533,9 +518,6 @@ class CreateDialog(QtWidgets.QDialog):
|
|||
self._set_context_enabled(creator.create_allow_context_change)
|
||||
self._refresh_asset()
|
||||
|
||||
attr_defs = creator.get_pre_create_attr_defs()
|
||||
self._pre_create_attributes_widget.set_attr_defs(attr_defs)
|
||||
|
||||
default_variants = creator.get_default_variants()
|
||||
if not default_variants:
|
||||
default_variants = ["Main"]
|
||||
|
|
@ -682,7 +664,7 @@ class CreateDialog(QtWidgets.QDialog):
|
|||
variant = self.variant_input.text()
|
||||
asset_name = self._get_asset_name()
|
||||
task_name = self._get_task_name()
|
||||
pre_create_data = self._pre_create_attributes_widget.current_value()
|
||||
pre_create_data = self._pre_create_widget.current_value()
|
||||
# Where to define these data?
|
||||
# - what data show be stored?
|
||||
instance_data = {
|
||||
|
|
|
|||
|
|
@ -1,8 +1,82 @@
|
|||
from Qt import QtWidgets
|
||||
from Qt import QtWidgets, QtCore
|
||||
|
||||
from openpype.widgets.attribute_defs import create_widget_for_attr_def
|
||||
|
||||
|
||||
class PreCreateWidget(QtWidgets.QWidget):
|
||||
def __init__(self, parent):
|
||||
super(PreCreateWidget, self).__init__(parent)
|
||||
|
||||
# Precreate attribute defininitions of Creator
|
||||
scroll_area = QtWidgets.QScrollArea(self)
|
||||
contet_widget = QtWidgets.QWidget(scroll_area)
|
||||
scroll_area.setWidget(contet_widget)
|
||||
scroll_area.setWidgetResizable(True)
|
||||
|
||||
attributes_widget = AttributesWidget(contet_widget)
|
||||
contet_layout = QtWidgets.QVBoxLayout(contet_widget)
|
||||
contet_layout.setContentsMargins(0, 0, 0, 0)
|
||||
contet_layout.addWidget(attributes_widget, 0)
|
||||
contet_layout.addStretch(1)
|
||||
|
||||
# Widget showed when there are no attribute definitions from creator
|
||||
empty_widget = QtWidgets.QWidget(self)
|
||||
empty_widget.setVisible(False)
|
||||
|
||||
# Label showed when creator is not selected
|
||||
no_creator_label = QtWidgets.QLabel(
|
||||
"Creator is not selected",
|
||||
empty_widget
|
||||
)
|
||||
no_creator_label.setWordWrap(True)
|
||||
|
||||
# Creator does not have precreate attributes
|
||||
empty_label = QtWidgets.QLabel(
|
||||
"This creator had no configurable options",
|
||||
empty_widget
|
||||
)
|
||||
empty_label.setWordWrap(True)
|
||||
empty_label.setVisible(False)
|
||||
|
||||
empty_layout = QtWidgets.QVBoxLayout(empty_widget)
|
||||
empty_layout.setContentsMargins(0, 0, 0, 0)
|
||||
empty_layout.addStretch(1)
|
||||
empty_layout.addWidget(empty_label, 0, QtCore.Qt.AlignCenter)
|
||||
empty_layout.addWidget(no_creator_label, 0, QtCore.Qt.AlignCenter)
|
||||
empty_layout.addStretch(1)
|
||||
|
||||
main_layout = QtWidgets.QHBoxLayout(self)
|
||||
main_layout.setContentsMargins(0, 0, 0, 0)
|
||||
main_layout.addWidget(scroll_area, 1)
|
||||
main_layout.addWidget(empty_widget, 1)
|
||||
|
||||
self._scroll_area = scroll_area
|
||||
self._empty_widget = empty_widget
|
||||
|
||||
self._empty_label = empty_label
|
||||
self._no_creator_label = no_creator_label
|
||||
self._attributes_widget = attributes_widget
|
||||
|
||||
def current_value(self):
|
||||
return self._attributes_widget.current_value()
|
||||
|
||||
def set_plugin(self, creator):
|
||||
attr_defs = []
|
||||
creator_selected = False
|
||||
if creator is not None:
|
||||
creator_selected = True
|
||||
attr_defs = creator.get_pre_create_attr_defs()
|
||||
|
||||
self._attributes_widget.set_attr_defs(attr_defs)
|
||||
|
||||
attr_defs_available = len(attr_defs) > 0
|
||||
self._scroll_area.setVisible(attr_defs_available)
|
||||
self._empty_widget.setVisible(not attr_defs_available)
|
||||
|
||||
self._empty_label.setVisible(creator_selected)
|
||||
self._no_creator_label.setVisible(not creator_selected)
|
||||
|
||||
|
||||
class AttributesWidget(QtWidgets.QWidget):
|
||||
def __init__(self, parent=None):
|
||||
super(AttributesWidget, self).__init__(parent)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue