diff --git a/openpype/tools/project_manager/project_manager/model.py b/openpype/tools/project_manager/project_manager/model.py index 1d48e78a19..7617275b91 100644 --- a/openpype/tools/project_manager/project_manager/model.py +++ b/openpype/tools/project_manager/project_manager/model.py @@ -115,6 +115,7 @@ class HierarchyModel(QtCore.QAbstractItemModel): } index_moved = QtCore.Signal(QtCore.QModelIndex) + project_changed = QtCore.Signal() def __init__(self, dbcon, parent=None): super(HierarchyModel, self).__init__(parent) @@ -281,6 +282,8 @@ class HierarchyModel(QtCore.QAbstractItemModel): self.add_items(task_items, asset_item) + self.project_changed.emit() + def rowCount(self, parent=None): if parent is None or not parent.isValid(): parent_item = self._root_item diff --git a/openpype/tools/project_manager/project_manager/view.py b/openpype/tools/project_manager/project_manager/view.py index 0131687541..02d5b40fd6 100644 --- a/openpype/tools/project_manager/project_manager/view.py +++ b/openpype/tools/project_manager/project_manager/view.py @@ -145,6 +145,7 @@ class HierarchyView(QtWidgets.QTreeView): source_model.index_moved.connect(self._on_rows_moved) self.customContextMenuRequested.connect(self._on_context_menu) + self._source_model.project_changed.connect(self._on_project_reset) self._project_doc_cache = project_doc_cache self._tools_cache = tools_cache @@ -153,6 +154,20 @@ class HierarchyView(QtWidgets.QTreeView): self._column_delegates = column_delegates self._column_key_to_index = column_key_to_index + def header_init(self): + header = self.header() + header.setStretchLastSection(False) + for idx in range(header.count()): + logical_index = header.logicalIndex(idx) + if idx == 0: + header.setSectionResizeMode( + logical_index, QtWidgets.QHeaderView.Stretch + ) + else: + header.setSectionResizeMode( + logical_index, QtWidgets.QHeaderView.ResizeToContents + ) + def set_project(self, project_name): # Trigger helpers first self._project_doc_cache.set_project(project_name) @@ -161,6 +176,9 @@ class HierarchyView(QtWidgets.QTreeView): # Trigger update of model after all data for delegates are filled self._source_model.set_project(project_name) + def _on_project_reset(self): + self.header_init() + self.collapseAll() project_item = self._source_model.project_item diff --git a/openpype/tools/project_manager/project_manager/window.py b/openpype/tools/project_manager/project_manager/window.py index c4243c3cc3..49c48912cf 100644 --- a/openpype/tools/project_manager/project_manager/window.py +++ b/openpype/tools/project_manager/project_manager/window.py @@ -75,19 +75,6 @@ class Window(QtWidgets.QWidget): _selection_model.setModel(hierarchy_view.model()) hierarchy_view.setSelectionModel(_selection_model) - header = hierarchy_view.header() - header.setStretchLastSection(False) - for idx in range(header.count()): - logical_index = header.logicalIndex(idx) - if idx == 0: - header.setSectionResizeMode( - logical_index, QtWidgets.QHeaderView.Stretch - ) - else: - header.setSectionResizeMode( - logical_index, QtWidgets.QHeaderView.ResizeToContents - ) - buttons_widget = QtWidgets.QWidget(self) message_label = QtWidgets.QLabel(buttons_widget)