precreate widget is separated from create dialog completely

This commit is contained in:
Jakub Trllo 2022-01-25 13:48:03 +01:00
parent f8be5763b5
commit 7ec4d50180
2 changed files with 85 additions and 29 deletions

View file

@ -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 = {

View file

@ -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)