diff --git a/openpype/tools/project_manager/project_manager/window.py b/openpype/tools/project_manager/project_manager/window.py index 79eb9651e9..41ae59c0f9 100644 --- a/openpype/tools/project_manager/project_manager/window.py +++ b/openpype/tools/project_manager/project_manager/window.py @@ -7,7 +7,8 @@ from . import ( HierarchySelectionModel, HierarchyView, - CreateProjectDialog + CreateProjectDialog, + PROJECT_NAME_ROLE ) from openpype.style import load_stylesheet from .style import ResourceCache @@ -35,9 +36,6 @@ class ProjectManagerWindow(QtWidgets.QWidget): self._password_dialog = None self._user_passed = False - # keep track of the current project PM is viewing - self._current_project = None - self.setWindowTitle("OpenPype Project Manager") self.setWindowIcon(QtGui.QIcon(resources.get_openpype_icon_filepath())) @@ -167,6 +165,13 @@ class ProjectManagerWindow(QtWidgets.QWidget): def _set_project(self, project_name=None): self.hierarchy_view.set_project(project_name) + def _current_project(self): + row = self._project_combobox.currentIndex() + if row < 0: + return None + index = self._project_proxy_model.index(row, 0) + return index.data(PROJECT_NAME_ROLE) + def showEvent(self, event): super(ProjectManagerWindow, self).showEvent(event) @@ -194,12 +199,13 @@ class ProjectManagerWindow(QtWidgets.QWidget): if row >= 0: self._project_combobox.setCurrentIndex(row) - self._set_project(self._project_combobox.currentText()) + selected_project = self._current_project() + + self._set_project(selected_project) def _on_project_change(self): - if self._project_combobox.currentIndex() != 0: - self._current_project = self._project_combobox.currentText() - self._set_project(self._current_project) + selected_project = self._current_project() + self._set_project(selected_project) def _on_project_refresh(self): self.refresh_projects() @@ -214,7 +220,8 @@ class ProjectManagerWindow(QtWidgets.QWidget): self.hierarchy_view.add_task() def _on_create_folders(self): - if not self._current_project: + project_name = self._current_project() + if not project_name: return qm = QtWidgets.QMessageBox @@ -225,11 +232,11 @@ class ProjectManagerWindow(QtWidgets.QWidget): if ans == qm.Yes: try: # Get paths based on presets - basic_paths = get_project_basic_paths(self._current_project) + basic_paths = get_project_basic_paths(project_name) if not basic_paths: pass # Invoking OpenPype API to create the project folders - create_project_folders(basic_paths, self._current_project) + create_project_folders(basic_paths, project_name) except Exception as exc: self.log.warning( "Cannot create starting folders: {}".format(exc), @@ -246,11 +253,9 @@ class ProjectManagerWindow(QtWidgets.QWidget): if dialog.result() != 1: return - self._current_project = dialog.project_name - self.show_message( - "Created project \"{}\"".format(self._current_project) - ) - self.refresh_projects(self._current_project) + project_name = dialog.project_name + self.show_message("Created project \"{}\"".format(project_name)) + self.refresh_projects(project_name) def _show_password_dialog(self): if self._password_dialog: