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 ListWidget(QtWidgets.QListWidget):
[docs] def sizeHint(self): s = QtCore.QSize() height = self.count() * 24 s.setHeight(height) s.setWidth(self.sizeHintForColumn(0)) return s
[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()