Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions python/tk_multi_loader/dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -682,19 +682,21 @@ def _content_size_hint():
view.model().modelReset.connect(self._update_history_view_height)

def _update_history_view_height(self) -> None:
"""Notify the layout that the history view's ideal size has changed."""
self.ui.history_view.updateGeometry()
"""Resize history_view to exactly fit its content (capped at max)."""
view = self.ui.history_view
model = view.model()
if model and model.rowCount() > 0:
row_h = view.sizeHintForRow(0)
content_h = row_h * model.rowCount() + 4
view.setMaximumHeight(min(content_h, self._history_view_max_height))
else:
view.setMaximumHeight(0)
view.updateGeometry()

def _on_details_button_toggled(self, checked: bool) -> None:
"""
Triggers a show/hide of the details header with an animation.
"""
content_height = 0
try:
content_height = self.ui.details_header.sizeHint().height()
except Exception:
pass

if (
self._current_animation
and self._current_animation.state() == QtCore.QAbstractAnimation.Running
Expand All @@ -706,12 +708,16 @@ def _on_details_button_toggled(self, checked: bool) -> None:
animation.setEasingCurve(QtCore.QEasingCurve.InOutQuad)

if checked:
# Release the maximumHeight constraint so the label sizes itself
# to its content via the Preferred size policy.
animation.setStartValue(0)
animation.setEndValue(content_height)
animation.setEndValue(16777215)
else:
animation.setStartValue(content_height)
# Collapse from the actual rendered height, not a stale sizeHint.
animation.setStartValue(self.ui.details_header.height())
animation.setEndValue(0)

animation.finished.connect(lambda: setattr(self, "_current_animation", None))
self._current_animation = animation
animation.start(QtCore.QAbstractAnimation.DeleteWhenStopped)

Expand Down
8 changes: 6 additions & 2 deletions python/tk_multi_loader/medm/entity_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,9 @@ def _load_medm_assets(self) -> None:
return

try:
self._app.log_debug("FlowAM: Loading entity tree (project children only)...")
self._app.log_debug(
"FlowAM: Loading entity tree (project children only)..."
)

count = 0
for asset in self._project.iterate_children():
Expand Down Expand Up @@ -432,7 +434,9 @@ def _load_children_for_item(self, item: QtGui.QStandardItem) -> None:
f"(non-structural leaf children hidden from tree)"
)
except Exception as e:
self._app.log_debug(f"FlowAM: Could not get children for '{asset.name}': {e}")
self._app.log_debug(
f"FlowAM: Could not get children for '{asset.name}': {e}"
)

def _fetch_and_cache_children(self, asset: Asset) -> List[Asset]:
"""
Expand Down
4 changes: 1 addition & 3 deletions python/tk_multi_loader/medm/template_queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,7 @@ def get_templates(pipeline_step: Any) -> list[Any]:
return pipeline_step.find_children(type_id=template_type_id)


def find_template_pipeline_step(
project: Any, pipeline_step_name: str
) -> Optional[Any]:
def find_template_pipeline_step(project: Any, pipeline_step_name: str) -> Optional[Any]:
"""Find a pipeline step by name under the Templates folder.

:param project: Flow AM ``Project`` instance to query.
Expand Down
58 changes: 20 additions & 38 deletions python/tk_multi_loader/ui/build_asset_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,86 +9,78 @@
################################################################################

from tank.platform.qt import QtCore

for name, cls in QtCore.__dict__.items():
if isinstance(cls, type):
globals()[name] = cls
if isinstance(cls, type): globals()[name] = cls

from tank.platform.qt import QtGui

for name, cls in QtGui.__dict__.items():
if isinstance(cls, type):
globals()[name] = cls
if isinstance(cls, type): globals()[name] = cls


class Ui_BuildAssetDialog(object):
def setupUi(self, BuildAssetDialog):
if not BuildAssetDialog.objectName():
BuildAssetDialog.setObjectName("BuildAssetDialog")
BuildAssetDialog.setObjectName(u"BuildAssetDialog")
BuildAssetDialog.resize(310, 190)
sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(BuildAssetDialog.sizePolicy().hasHeightForWidth())
BuildAssetDialog.setSizePolicy(sizePolicy)
self.verticalLayout_3 = QVBoxLayout(BuildAssetDialog)
self.verticalLayout_3.setObjectName("verticalLayout_3")
self.verticalLayout_3.setObjectName(u"verticalLayout_3")
self.verticalLayout = QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout")
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setSizeConstraint(QLayout.SetMinimumSize)
self.verticalLayout.setContentsMargins(9, 9, 9, 9)
self.label = QLabel(BuildAssetDialog)
self.label.setObjectName("label")
self.label.setObjectName(u"label")

self.verticalLayout.addWidget(self.label)

self.build_mode_combo_box = QComboBox(BuildAssetDialog)
self.build_mode_combo_box.setObjectName("build_mode_combo_box")
self.build_mode_combo_box.setObjectName(u"build_mode_combo_box")

self.verticalLayout.addWidget(self.build_mode_combo_box)

self.templateWidget = QWidget(BuildAssetDialog)
self.templateWidget.setObjectName("templateWidget")
sizePolicy.setHeightForWidth(
self.templateWidget.sizePolicy().hasHeightForWidth()
)
self.templateWidget.setObjectName(u"templateWidget")
sizePolicy.setHeightForWidth(self.templateWidget.sizePolicy().hasHeightForWidth())
self.templateWidget.setSizePolicy(sizePolicy)
self.verticalLayout_2 = QVBoxLayout(self.templateWidget)
self.verticalLayout_2.setObjectName("verticalLayout_2")
self.verticalLayout_2.setObjectName(u"verticalLayout_2")
self.verticalLayout_2.setContentsMargins(0, 0, 0, 9)
self.pipeline_step_label = QLabel(self.templateWidget)
self.pipeline_step_label.setObjectName("pipeline_step_label")
self.pipeline_step_label.setObjectName(u"pipeline_step_label")
self.pipeline_step_label.setEnabled(True)

self.verticalLayout_2.addWidget(self.pipeline_step_label)

self.pipeline_step_combo_box = QComboBox(self.templateWidget)
self.pipeline_step_combo_box.setObjectName("pipeline_step_combo_box")
self.pipeline_step_combo_box.setObjectName(u"pipeline_step_combo_box")
self.pipeline_step_combo_box.setEnabled(True)

self.verticalLayout_2.addWidget(self.pipeline_step_combo_box)

self.templates_label = QLabel(self.templateWidget)
self.templates_label.setObjectName("templates_label")
self.templates_label.setObjectName(u"templates_label")
self.templates_label.setEnabled(True)
self.templates_label.setMinimumSize(QSize(41, 0))

self.verticalLayout_2.addWidget(self.templates_label)

self.templates_combo_box = QComboBox(self.templateWidget)
self.templates_combo_box.setObjectName("templates_combo_box")
self.templates_combo_box.setObjectName(u"templates_combo_box")
self.templates_combo_box.setEnabled(True)

self.verticalLayout_2.addWidget(self.templates_combo_box)

self.verticalLayout.addWidget(self.templateWidget)

self.build_button_box = QDialogButtonBox(BuildAssetDialog)
self.build_button_box.setObjectName("build_button_box")
self.build_button_box.setObjectName(u"build_button_box")
self.build_button_box.setOrientation(Qt.Horizontal)
self.build_button_box.setStandardButtons(
QDialogButtonBox.Cancel | QDialogButtonBox.Ok
)
self.build_button_box.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)

self.verticalLayout.addWidget(self.build_button_box)

Expand All @@ -99,21 +91,11 @@ def setupUi(self, BuildAssetDialog):
self.build_button_box.rejected.connect(BuildAssetDialog.reject)

QMetaObject.connectSlotsByName(BuildAssetDialog)

# setupUi

def retranslateUi(self, BuildAssetDialog):
BuildAssetDialog.setWindowTitle(
QCoreApplication.translate("BuildAssetDialog", "Build New Scene", None)
)
self.label.setText(
QCoreApplication.translate("BuildAssetDialog", "Build from", None)
)
self.pipeline_step_label.setText(
QCoreApplication.translate("BuildAssetDialog", "Pipeline Step", None)
)
self.templates_label.setText(
QCoreApplication.translate("BuildAssetDialog", "Templates", None)
)

BuildAssetDialog.setWindowTitle(QCoreApplication.translate("BuildAssetDialog", u"Build New Scene", None))
self.label.setText(QCoreApplication.translate("BuildAssetDialog", u"Build from", None))
self.pipeline_step_label.setText(QCoreApplication.translate("BuildAssetDialog", u"Pipeline Step", None))
self.templates_label.setText(QCoreApplication.translate("BuildAssetDialog", u"Templates", None))
# retranslateUi
76 changes: 25 additions & 51 deletions python/tk_multi_loader/ui/build_template_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,94 +9,86 @@
################################################################################

from tank.platform.qt import QtCore

for name, cls in QtCore.__dict__.items():
if isinstance(cls, type):
globals()[name] = cls
if isinstance(cls, type): globals()[name] = cls

from tank.platform.qt import QtGui

for name, cls in QtGui.__dict__.items():
if isinstance(cls, type):
globals()[name] = cls
if isinstance(cls, type): globals()[name] = cls


class Ui_BuildTemplateDialog(object):
def setupUi(self, BuildTemplateDialog):
if not BuildTemplateDialog.objectName():
BuildTemplateDialog.setObjectName("BuildTemplateDialog")
BuildTemplateDialog.setObjectName(u"BuildTemplateDialog")
BuildTemplateDialog.resize(296, 416)
self.widget = QWidget(BuildTemplateDialog)
self.widget.setObjectName("widget")
self.widget.setObjectName(u"widget")
self.widget.setGeometry(QRect(20, 22, 258, 379))
self.verticalLayout = QVBoxLayout(self.widget)
self.verticalLayout.setObjectName("verticalLayout")
self.verticalLayout.setObjectName(u"verticalLayout")
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.build_mode_label = QLabel(self.widget)
self.build_mode_label.setObjectName("build_mode_label")
self.build_mode_label.setObjectName(u"build_mode_label")

self.verticalLayout.addWidget(self.build_mode_label)

self.build_mode_combo_box = QComboBox(self.widget)
self.build_mode_combo_box.setObjectName("build_mode_combo_box")
self.build_mode_combo_box.setObjectName(u"build_mode_combo_box")

self.verticalLayout.addWidget(self.build_mode_combo_box)

self.pipeline_step_label = QLabel(self.widget)
self.pipeline_step_label.setObjectName("pipeline_step_label")
self.pipeline_step_label.setObjectName(u"pipeline_step_label")

self.verticalLayout.addWidget(self.pipeline_step_label)

self.pipeline_step_combo_box = QComboBox(self.widget)
self.pipeline_step_combo_box.setObjectName("pipeline_step_combo_box")
self.pipeline_step_combo_box.setObjectName(u"pipeline_step_combo_box")

self.verticalLayout.addWidget(self.pipeline_step_combo_box)

self.template_name_label = QLabel(self.widget)
self.template_name_label.setObjectName("template_name_label")
self.template_name_label.setObjectName(u"template_name_label")

self.verticalLayout.addWidget(self.template_name_label)

self.template_name_line_edit = QLineEdit(self.widget)
self.template_name_line_edit.setObjectName("template_name_line_edit")
self.template_name_line_edit.setObjectName(u"template_name_line_edit")

self.verticalLayout.addWidget(self.template_name_line_edit)

self.horizontalLayout = QHBoxLayout()
self.horizontalLayout.setSpacing(0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.horizontalLayout.setObjectName(u"horizontalLayout")
self.horizontalLayout.setSizeConstraint(QLayout.SetDefaultConstraint)
self.description_label = QLabel(self.widget)
self.description_label.setObjectName("description_label")
self.description_label.setObjectName(u"description_label")
sizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(
self.description_label.sizePolicy().hasHeightForWidth()
)
sizePolicy.setHeightForWidth(self.description_label.sizePolicy().hasHeightForWidth())
self.description_label.setSizePolicy(sizePolicy)

self.horizontalLayout.addWidget(self.description_label)

self.optional_label = QLabel(self.widget)
self.optional_label.setObjectName("optional_label")
self.optional_label.setObjectName(u"optional_label")
self.optional_label.setEnabled(False)

self.horizontalLayout.addWidget(self.optional_label)

self.verticalLayout.addLayout(self.horizontalLayout)

self.description_text_edit = QTextEdit(self.widget)
self.description_text_edit.setObjectName("description_text_edit")
self.description_text_edit.setObjectName(u"description_text_edit")

self.verticalLayout.addWidget(self.description_text_edit)

self.build_template_button_box = QDialogButtonBox(self.widget)
self.build_template_button_box.setObjectName("build_template_button_box")
self.build_template_button_box.setObjectName(u"build_template_button_box")
self.build_template_button_box.setOrientation(Qt.Horizontal)
self.build_template_button_box.setStandardButtons(
QDialogButtonBox.Cancel | QDialogButtonBox.Ok
)
self.build_template_button_box.setStandardButtons(QDialogButtonBox.Cancel|QDialogButtonBox.Ok)

self.verticalLayout.addWidget(self.build_template_button_box)

Expand All @@ -105,32 +97,14 @@ def setupUi(self, BuildTemplateDialog):
self.build_template_button_box.rejected.connect(BuildTemplateDialog.reject)

QMetaObject.connectSlotsByName(BuildTemplateDialog)

# setupUi

def retranslateUi(self, BuildTemplateDialog):
BuildTemplateDialog.setWindowTitle(
QCoreApplication.translate("BuildTemplateDialog", "Build Template", None)
)
self.build_mode_label.setText(
QCoreApplication.translate("BuildTemplateDialog", "Build Mode", None)
)
self.pipeline_step_label.setText(
QCoreApplication.translate("BuildTemplateDialog", "Pipeline Step", None)
)
self.template_name_label.setText(
QCoreApplication.translate("BuildTemplateDialog", "Template Name", None)
)
self.description_label.setText(
QCoreApplication.translate("BuildTemplateDialog", "Description", None)
)
self.optional_label.setText(
QCoreApplication.translate("BuildTemplateDialog", " (optional)", None)
)
self.description_text_edit.setPlaceholderText(
QCoreApplication.translate(
"BuildTemplateDialog", "Add a brief description...", None
)
)

BuildTemplateDialog.setWindowTitle(QCoreApplication.translate("BuildTemplateDialog", u"Build Template", None))
self.build_mode_label.setText(QCoreApplication.translate("BuildTemplateDialog", u"Build Mode", None))
self.pipeline_step_label.setText(QCoreApplication.translate("BuildTemplateDialog", u"Pipeline Step", None))
self.template_name_label.setText(QCoreApplication.translate("BuildTemplateDialog", u"Template Name", None))
self.description_label.setText(QCoreApplication.translate("BuildTemplateDialog", u"Description", None))
self.optional_label.setText(QCoreApplication.translate("BuildTemplateDialog", u" (optional)", None))
self.description_text_edit.setPlaceholderText(QCoreApplication.translate("BuildTemplateDialog", u"Add a brief description...", None))
# retranslateUi
Loading
Loading