diff --git a/openpype/tools/loader/app.py b/openpype/tools/loader/app.py index cce05c1d3e..18e94b7474 100644 --- a/openpype/tools/loader/app.py +++ b/openpype/tools/loader/app.py @@ -232,8 +232,11 @@ class LoaderWidow(QtWidgets.QDialog): # ------------------------------ def on_context_task_change(self, *args, **kwargs): - # Change to context asset on context change assets_widget = self.data["widgets"]["assets"] + families_view = self.data["widgets"]["families"] + # Refresh families config + families_view.refresh() + # Change to context asset on context change assets_widget.select_assets(io.Session["AVALON_ASSET"]) def _refresh(self): diff --git a/openpype/tools/loader/widgets.py b/openpype/tools/loader/widgets.py index 650879ac86..e94942e7b7 100644 --- a/openpype/tools/loader/widgets.py +++ b/openpype/tools/loader/widgets.py @@ -889,11 +889,7 @@ class FamilyModel(QtGui.QStandardItemModel): new_items = [] for family in families: - if family in self._items_by_family: - continue - family_config = self.family_config_cache.family_config(family) - label = family_config.get("label", family) icon = family_config.get("icon", None) @@ -902,20 +898,25 @@ class FamilyModel(QtGui.QStandardItemModel): else: state = QtCore.Qt.Unchecked - item = QtGui.QStandardItem(label) - item.setFlags( - QtCore.Qt.ItemIsEnabled - | QtCore.Qt.ItemIsSelectable - | QtCore.Qt.ItemIsUserCheckable - ) + if family not in self._items_by_family: + item = QtGui.QStandardItem(label) + item.setFlags( + QtCore.Qt.ItemIsEnabled + | QtCore.Qt.ItemIsSelectable + | QtCore.Qt.ItemIsUserCheckable + ) + + else: + item = self._items_by_family[label] + item.setData(QtCore.Qt.DisplayRole, label) + new_items.append(item) + self._items_by_family[family] = item + item.setCheckState(state) if icon: item.setIcon(icon) - new_items.append(item) - self._items_by_family[family] = item - if new_items: root_item.appendRows(new_items) diff --git a/openpype/tools/utils/lib.py b/openpype/tools/utils/lib.py index 8454dad0e5..d01dbbd169 100644 --- a/openpype/tools/utils/lib.py +++ b/openpype/tools/utils/lib.py @@ -296,7 +296,6 @@ class FamilyConfigCache: ) return cls._default_icon - def family_config(self, family_name): """Get value from config with fallback to default""" if self._require_refresh: @@ -343,9 +342,9 @@ class FamilyConfigCache: return # Update the icons from the project configuration - project_name = self.dbcon.Session.get("AVALON_PROJECT") - asset_name = self.dbcon.Session.get("AVALON_ASSET") - task_name = self.dbcon.Session.get("AVALON_TASK") + project_name = os.environ.get("AVALON_PROJECT") + asset_name = os.environ.get("AVALON_ASSET") + task_name = os.environ.get("AVALON_TASK") if not all((project_name, asset_name, task_name)): return