diff --git a/pype/tools/standalonepublish/app.py b/pype/tools/standalonepublish/app.py index feba46987f..a22dae32b9 100644 --- a/pype/tools/standalonepublish/app.py +++ b/pype/tools/standalonepublish/app.py @@ -62,6 +62,7 @@ class Window(QtWidgets.QDialog): # signals widget_assets.selection_changed.connect(self.on_asset_changed) + widget_assets.project_changed.connect(self.on_project_change) widget_family.stateChanged.connect(self.set_valid_family) self.widget_assets = widget_assets @@ -116,6 +117,9 @@ class Window(QtWidgets.QDialog): parents.append(parent['name']) return parents + def on_project_change(self, project_name): + self.widget_family.refresh() + def on_asset_changed(self): '''Callback on asset selection changed diff --git a/pype/tools/standalonepublish/widgets/widget_asset.py b/pype/tools/standalonepublish/widgets/widget_asset.py index 6f041a535f..91565668cc 100644 --- a/pype/tools/standalonepublish/widgets/widget_asset.py +++ b/pype/tools/standalonepublish/widgets/widget_asset.py @@ -121,6 +121,7 @@ class AssetWidget(QtWidgets.QWidget): """ + project_changed = QtCore.Signal(str) assets_refreshed = QtCore.Signal() # on model refresh selection_changed = QtCore.Signal() # on view selection change current_changed = QtCore.Signal() # on view current index change @@ -249,6 +250,9 @@ class AssetWidget(QtWidgets.QWidget): project_name = self.combo_projects.currentText() if project_name in projects: self.dbcon.Session["AVALON_PROJECT"] = project_name + + self.project_changed.emit(project_name) + self.refresh() def _refresh_model(self): diff --git a/pype/tools/standalonepublish/widgets/widget_family.py b/pype/tools/standalonepublish/widgets/widget_family.py index 5c0c8ccd38..ed30dba420 100644 --- a/pype/tools/standalonepublish/widgets/widget_family.py +++ b/pype/tools/standalonepublish/widgets/widget_family.py @@ -285,7 +285,10 @@ class FamilyWidget(QtWidgets.QWidget): self.schedule(self._on_data_changed, 500, channel="gui") def on_selection_changed(self, *args): - plugin = self.list_families.currentItem().data(PluginRole) + item = self.list_families.currentItem() + if not item: + return + plugin = item.data(PluginRole) if plugin is None: return @@ -309,10 +312,15 @@ class FamilyWidget(QtWidgets.QWidget): """ def refresh(self): + self.list_families.clear() + has_families = False - settings = get_project_settings(os.environ['AVALON_PROJECT']) + project_name = self.dbcon.Session.get("AVALON_PROJECT") + if not project_name: + return + + settings = get_project_settings(project_name) sp_settings = settings.get('standalonepublisher', {}) - print(sp_settings) for key, creator in sp_settings.get("create", {}).items(): if key == "__dynamic_keys_labels__":