Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Adding predefined project folders creation in PM #2030

Merged
merged 6 commits into from
Sep 22, 2021
Merged
Changes from 3 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
54 changes: 50 additions & 4 deletions openpype/tools/project_manager/project_manager/window.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import logging
from Qt import QtWidgets, QtCore, QtGui

from . import (
Expand All @@ -15,8 +16,11 @@
from openpype.widgets import PasswordDialog

from openpype import resources
from openpype.api import get_project_basic_paths, create_project_folders
from avalon.api import AvalonMongoDB

log = logging.getLogger(__name__)
icyvapor marked this conversation as resolved.
Show resolved Hide resolved


class ProjectManagerWindow(QtWidgets.QWidget):
"""Main widget of Project Manager tool."""
Expand All @@ -28,6 +32,9 @@ def __init__(self, parent=None):
self._password_dialog = None
self._user_passed = False

# keep track of the current project PM is viewing
self._current_project = None
iLLiCiTiT marked this conversation as resolved.
Show resolved Hide resolved

self.setWindowTitle("OpenPype Project Manager")
self.setWindowIcon(QtGui.QIcon(resources.pype_icon_filepath()))

Expand Down Expand Up @@ -82,11 +89,23 @@ def __init__(self, parent=None):
add_asset_btn.setObjectName("IconBtn")
add_task_btn.setObjectName("IconBtn")

add_misc_folders_label = QtWidgets.QLabel(
iLLiCiTiT marked this conversation as resolved.
Show resolved Hide resolved
"Create misc. folders:",
helper_btns_widget
)
add_misc_folders_btn = QtWidgets.QPushButton(
ResourceCache.get_icon("asset", "default"),
"Create Misc. Folders",
helper_btns_widget
)

helper_btns_layout = QtWidgets.QHBoxLayout(helper_btns_widget)
helper_btns_layout.setContentsMargins(0, 0, 0, 0)
helper_btns_layout.addWidget(helper_label)
helper_btns_layout.addWidget(add_asset_btn)
helper_btns_layout.addWidget(add_task_btn)
helper_btns_layout.addWidget(add_misc_folders_label)
helper_btns_layout.addWidget(add_misc_folders_btn)
helper_btns_layout.addStretch(1)

# Add widgets to top widget layout
Expand Down Expand Up @@ -128,6 +147,7 @@ def __init__(self, parent=None):
save_btn.clicked.connect(self._on_save_click)
add_asset_btn.clicked.connect(self._on_add_asset)
add_task_btn.clicked.connect(self._on_add_task)
add_misc_folders_btn.clicked.connect(self._on_add_misc_folders)

self._project_model = project_model

Expand All @@ -142,6 +162,7 @@ def __init__(self, parent=None):

self._add_asset_btn = add_asset_btn
self._add_task_btn = add_task_btn
self._add_misc_folders_btn = add_misc_folders_btn

self.resize(1200, 600)
self.setStyleSheet(load_stylesheet())
Expand Down Expand Up @@ -179,7 +200,9 @@ def refresh_projects(self, project_name=None):
self._set_project(self._project_combobox.currentText())

def _on_project_change(self):
self._set_project(self._project_combobox.currentText())
if self._project_combobox.currentIndex() != 0:
self._current_project = self._project_combobox.currentText()
self._set_project(self._current_project)

def _on_project_refresh(self):
self.refresh_projects()
Expand All @@ -193,6 +216,27 @@ def _on_add_asset(self):
def _on_add_task(self):
self.hierarchy_view.add_task()

def _on_add_misc_folders(self):
if not self._current_project:
return

qm = QtWidgets.QMessageBox
ans = qm.question(self,
"",
"Confirm to create misc. project folders?",
qm.Yes | qm.No)
if ans == qm.Yes:
try:
# Get paths based on presets
basic_paths = get_project_basic_paths(self._current_project)
if not basic_paths:
pass
# Invoking OpenPype API to create the project folders
create_project_folders(basic_paths, self._current_project)
except Exception as exc:
icyvapor marked this conversation as resolved.
Show resolved Hide resolved
log.warning("Failed to create misc folders: {}".format(exc),
exc_info=True)

def show_message(self, message):
# TODO add nicer message pop
self.message_label.setText(message)
Expand All @@ -203,9 +247,11 @@ def _on_project_create(self):
if dialog.result() != 1:
return

project_name = dialog.project_name
self.show_message("Created project \"{}\"".format(project_name))
self.refresh_projects(project_name)
self._current_project = dialog.project_name
self.show_message(
"Created project \"{}\"".format(self._current_project)
)
self.refresh_projects(self._current_project)

def _show_password_dialog(self):
if self._password_dialog:
Expand Down