Source code for cgl.ui.widgets.publish_dialog
from PySide6 import QtCore, QtWidgets
from cgl.core.path.object import PathObject
from cgl.core.path.support import lj_list_dir
from cgl.ui.widgets.base import LJDialog
[docs]
class PublishDialog(LJDialog):
do_publish = QtCore.Signal()
def __init__(self, parent=None, path_object=None, verbose=False, cfg=None):
LJDialog.__init__(self, parent)
if not path_object:
return
if cfg:
self.cfg = cfg
else:
from cgl.core.config.config import ProjectConfig
self.cfg = ProjectConfig(path_object)
self.do_review = True
self.setMinimumWidth(300)
self.setWindowTitle(
"Publish %s -->> %s"
% (path_object.version, path_object.next_major_version().version)
)
layout = QtWidgets.QVBoxLayout()
if path_object.context == "render":
render_files = lj_list_dir(path_object.split_after("resolution"))
path_object.set_attr(entity_type="source")
source_files = lj_list_dir(path_object.split_after("resolution"))
else:
source_files = lj_list_dir(path_object.split_after("resolution"))
path_object.set_attr(entity_type="render")
render_files = lj_list_dir(path_object.split_after("resolution"))
current_user_label = QtWidgets.QLabel(
"Current User: <b>%s</b>" % path_object.user
)
current_version_label = QtWidgets.QLabel(
"Current Version: <b>%s</b>" % path_object.version
)
publish_version_label = QtWidgets.QLabel(
"<b>Publish to Version: %s?</b>" % path_object.next_major_version().version
)
publish_version_label.setAlignment(
QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter
)
self.source_label = QtWidgets.QLabel("My Files")
self.render_label = QtWidgets.QLabel("Publish Files")
self.source_files_widget = ListWidget()
self.source_files_widget.setEnabled(False)
self.render_files_widget = ListWidget()
self.source_files_widget.addItems(source_files)
if render_files:
self.render_files_widget.addItems(render_files)
cancel_button = QtWidgets.QPushButton()
cancel_button.setText("Cancel")
self.publish_button = QtWidgets.QPushButton()
self.publish_button.setText("Publish")
self.submit_review_checkbox = QtWidgets.QCheckBox("Submit Review with Publish")
if render_files:
self.render_files_widget.setCurrentItem(self.render_files_widget.item(0))
self.submit_review_checkbox.setChecked(True)
button_row = QtWidgets.QHBoxLayout()
button_row.addStretch(1)
button_row.addWidget(cancel_button)
button_row.addWidget(self.publish_button)
layout.addWidget(current_user_label)
layout.addWidget(current_version_label)
layout.addWidget(self.source_label)
layout.addWidget(self.source_files_widget)
layout.addWidget(self.render_label)
layout.addWidget(self.render_files_widget)
layout.addWidget(self.submit_review_checkbox)
layout.addWidget(publish_version_label)
layout.addLayout(button_row)
self.setLayout(layout)
self.publish_button.clicked.connect(self.on_publish_clicked)
self.submit_review_checkbox.clicked.connect(self.on_check_box_clicked)
cancel_button.clicked.connect(self.accept)
if not verbose:
self.hide_details()
[docs]
def hide_details(self):
self.source_files_widget.hide()
self.source_label.hide()
self.render_files_widget.hide()
self.render_label.hide()
[docs]
def on_render_selected(self):
self.submit_review_checkbox.setChecked(True)
[docs]
def on_publish_clicked(self):
self.do_publish.emit()
self.accept()
[docs]
def on_check_box_clicked(self):
if self.submit_review_checkbox.checkState() == QtCore.Qt.Checked:
self.do_review = True
else:
self.do_review = False
if __name__ == "__main__":
from cgl.ui.startup import do_gui_init
test_path = (
r"D:/VFX/FRIDAY_ROOT/cglumberjack/render/cgl_testProjectH/shots/SJM/010/comp/tmiko/000.006/high/"
r"03_2a_#####.exr"
)
path_object = PathObject().from_path_string(test_path)
app = do_gui_init()
mw = PublishDialog(path_object=path_object)
mw.setWindowTitle("Publish")
mw.show()
mw.raise_()
# style_sheet = load_style_sheet()
# app.setStyleSheet(style_sheet)
app.exec()