def setupUi(self, PlayblastDialog): PlayblastDialog.setObjectName("PlayblastDialog") PlayblastDialog.resize(470, 132) self.gridLayout = QtGui.QGridLayout(PlayblastDialog) self.gridLayout.setObjectName("gridLayout") self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.cmbPercentage = QtGui.QComboBox(PlayblastDialog) self.cmbPercentage.setObjectName("cmbPercentage") self.horizontalLayout_3.addWidget(self.cmbPercentage) self.chbUploadToShotgun = QtGui.QCheckBox(PlayblastDialog) self.chbUploadToShotgun.setObjectName("chbUploadToShotgun") self.horizontalLayout_3.addWidget(self.chbUploadToShotgun) self.chbShowViewer = QtGui.QCheckBox(PlayblastDialog) self.chbShowViewer.setChecked(True) self.chbShowViewer.setObjectName("chbShowViewer") self.horizontalLayout_3.addWidget(self.chbShowViewer) self.verticalLayout.addLayout(self.horizontalLayout_3) self.groupBox_3 = QtGui.QGroupBox(PlayblastDialog) self.groupBox_3.setObjectName("groupBox_3") self.gridLayout_5 = QtGui.QGridLayout(self.groupBox_3) self.gridLayout_5.setObjectName("gridLayout_5") self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label_4 = QtGui.QLabel(self.groupBox_3) self.label_4.setObjectName("label_4") self.horizontalLayout_2.addWidget(self.label_4) self.spB_day = QtGui.QSpinBox(self.groupBox_3) self.spB_day.setObjectName("spB_day") self.horizontalLayout_2.addWidget(self.spB_day) self.label_5 = QtGui.QLabel(self.groupBox_3) self.label_5.setObjectName("label_5") self.horizontalLayout_2.addWidget(self.label_5) self.spB_hrs = QtGui.QSpinBox(self.groupBox_3) self.spB_hrs.setObjectName("spB_hrs") self.horizontalLayout_2.addWidget(self.spB_hrs) self.label_6 = QtGui.QLabel(self.groupBox_3) self.label_6.setObjectName("label_6") self.horizontalLayout_2.addWidget(self.label_6) spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem) self.gridLayout_5.addLayout(self.horizontalLayout_2, 0, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox_3) self.btnPlayblast = QtGui.QPushButton(PlayblastDialog) self.btnPlayblast.setMinimumSize(QtCore.QSize(450, 0)) self.btnPlayblast.setObjectName("btnPlayblast") self.verticalLayout.addWidget(self.btnPlayblast) self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1) self.retranslateUi(PlayblastDialog) QtCore.QMetaObject.connectSlotsByName(PlayblastDialog)
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(588, 285) self.verticalLayout = QtGui.QVBoxLayout(Dialog) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.label_6 = QtGui.QLabel(Dialog) self.label_6.setObjectName("label_6") self.horizontalLayout_3.addWidget(self.label_6) self.sel_node = QtGui.QLineEdit(Dialog) self.sel_node.setObjectName("sel_node") self.horizontalLayout_3.addWidget(self.sel_node) self.verticalLayout.addLayout(self.horizontalLayout_3) self.groupBox_3 = QtGui.QGroupBox(Dialog) self.groupBox_3.setObjectName("groupBox_3") self.horizontalLayout = QtGui.QHBoxLayout(self.groupBox_3) self.horizontalLayout.setObjectName("horizontalLayout") self.verticalLayout_8 = QtGui.QVBoxLayout() self.verticalLayout_8.setObjectName("verticalLayout_8") self.label_5 = QtGui.QLabel(self.groupBox_3) self.label_5.setObjectName("label_5") self.verticalLayout_8.addWidget(self.label_5) self.start_frame = QtGui.QLineEdit(self.groupBox_3) self.start_frame.setText("") self.start_frame.setObjectName("start_frame") self.verticalLayout_8.addWidget(self.start_frame) self.horizontalLayout.addLayout(self.verticalLayout_8) self.verticalLayout_9 = QtGui.QVBoxLayout() self.verticalLayout_9.setObjectName("verticalLayout_9") self.label_7 = QtGui.QLabel(self.groupBox_3) self.label_7.setObjectName("label_7") self.verticalLayout_9.addWidget(self.label_7) self.end_frame = QtGui.QLineEdit(self.groupBox_3) self.end_frame.setObjectName("end_frame") self.verticalLayout_9.addWidget(self.end_frame) self.horizontalLayout.addLayout(self.verticalLayout_9) self.verticalLayout.addWidget(self.groupBox_3) self.sg_check = QtGui.QCheckBox(Dialog) self.sg_check.setChecked(True) self.sg_check.setObjectName("sg_check") self.verticalLayout.addWidget(self.sg_check) self.output_btn = QtGui.QPushButton(Dialog) self.output_btn.setObjectName("output_btn") self.verticalLayout.addWidget(self.output_btn) self.farm_btn = QtGui.QPushButton(Dialog) self.farm_btn.setObjectName("farm_btn") self.verticalLayout.addWidget(self.farm_btn) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog)
def setupUi(self, AppMenu): AppMenu.setObjectName("AppMenu") AppMenu.resize(268, 293) self.verticalLayout = QtGui.QVBoxLayout(AppMenu) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(2, 2, 2, 2) self.verticalLayout.setObjectName("verticalLayout") self.browser_header = QtGui.QGroupBox(AppMenu) self.browser_header.setMinimumSize(QtCore.QSize(0, 44)) self.browser_header.setMaximumSize(QtCore.QSize(16777215, 44)) self.browser_header.setStyleSheet( "#browser_header {\n" "border: none;\n" "background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(97, 97, 97, 255), stop:1 rgba(49, 49, 49, 255))\n" "}") self.browser_header.setTitle("") self.browser_header.setObjectName("browser_header") self.horizontalLayout_2 = QtGui.QHBoxLayout(self.browser_header) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label = QtGui.QLabel(self.browser_header) self.label.setAlignment(QtCore.Qt.AlignCenter) self.label.setObjectName("label") self.horizontalLayout_2.addWidget(self.label) self.verticalLayout.addWidget(self.browser_header) self.scroll_area = QtGui.QScrollArea(AppMenu) self.scroll_area.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.scroll_area.setWidgetResizable(True) self.scroll_area.setObjectName("scroll_area") self.scrollAreaWidgetContents = QtGui.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 262, 244)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.verticalLayout_4 = QtGui.QVBoxLayout( self.scrollAreaWidgetContents) self.verticalLayout_4.setSpacing(0) self.verticalLayout_4.setContentsMargins(4, 4, 4, 4) self.verticalLayout_4.setObjectName("verticalLayout_4") self.scroll_area_layout = QtGui.QVBoxLayout() self.scroll_area_layout.setSpacing(0) self.scroll_area_layout.setObjectName("scroll_area_layout") self.verticalLayout_4.addLayout(self.scroll_area_layout) spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_4.addItem(spacerItem) self.scroll_area.setWidget(self.scrollAreaWidgetContents) self.verticalLayout.addWidget(self.scroll_area) self.retranslateUi(AppMenu) QtCore.QMetaObject.connectSlotsByName(AppMenu)
def __init__(self, app): """ main UI for DuplicateShotAssets """ QtGui.QWidget.__init__(self) self.app = app self.charMaxChars = 0 self.propMaxChars = 0 ## To get the step context = self.app.context debug(self.app, method='MainUI', message='Context Step: %s' % context.step['name'], verbose=False) self.chars = [] self.props = [] ## Now build the UI self.mainLayout = QtGui.QHBoxLayout(self) debug(self.app, method='MainUI', message='self.mainLayout built...', verbose=False) ############### ## CHARS LAYOUT self.charParent = QtGui.QGroupBox(self) self.charParent.setTitle('CHARS:') #self.charParent.setMinimumWidth(600) self.charParentLayout = QtGui.QVBoxLayout(self.charParent) self.charScrollLayout = QtGui.QScrollArea(self) debug(self.app, method='MainUI', message='self.charScrollLayout built...', verbose=False) self.charGroupBox = QtGui.QGroupBox(self.charScrollLayout) self.charGroupBox.setFlat(True) self.charScrollLayout.setWidget(self.charGroupBox) self.charScrollLayout.setWidgetResizable(True) debug(self.app, method='MainUI', message='self.charGroupBox built...', verbose=False) self.charLayout = QtGui.QVBoxLayout(self.charGroupBox) debug(self.app, method='MainUI', message='self.charLayout built...', verbose=False) ############### ## PROPS LAYOUT self.propParent = QtGui.QGroupBox(self) self.propParent.setTitle('PROPS:') #self.propParent.setMinimumWidth(600) self.propParentLayout = QtGui.QVBoxLayout(self.propParent) self.propScrollLayout = QtGui.QScrollArea(self) debug(self.app, method='MainUI', message='self.propScrollLayout built...', verbose=False) self.propsGroupBox = QtGui.QGroupBox(self.propScrollLayout) self.propsGroupBox.setFlat(True) self.propScrollLayout.setWidget(self.propsGroupBox) self.propScrollLayout.setWidgetResizable(True) debug(self.app, method='MainUI', message='self.propsGroupBox built...', verbose=False) self.propsLayout = QtGui.QVBoxLayout(self.propsGroupBox) debug(self.app, method='MainUI', message='self.propsLayout built...', verbose=False) #################### ## The Button layout self.buttonLayout = QtGui.QVBoxLayout(self) ## The buttons ## The duplicate button self.duplicateButton = QtGui.QPushButton(Icon('plus.png'), 'Duplicate Assets', self) self.duplicateButton.clicked.connect(self._duplicateAssets) ## Add buttons to layout self.buttonLayout.addWidget(self.duplicateButton) self.buttonLayout.addStretch(1) self.charParentLayout.addWidget(self.charScrollLayout) self.propParentLayout.addWidget(self.propScrollLayout) ## Now do the final layout bits self.mainLayout.addWidget(self.charParent) self.mainLayout.addWidget(self.propParent) self.mainLayout.addLayout(self.buttonLayout) debug(self.app, method='MainUI', message='self.mainLayout addWidgets success...', verbose=False) self._popChars() debug(self.app, method='MainUI', message='self._popChars()...', verbose=False) self._popProps() debug(self.app, method='MainUI', message='self._popProps()...', verbose=False) if not self.props: self.propScrollLayout.hide() if not self.chars: self.charScrollLayout.hide() self.charGroupBox.resize(self.charGroupBox.sizeHint()) self.propsGroupBox.resize(self.propsGroupBox.sizeHint()) debug(self.app, method='MainUI', message='self.charMaxChars: %s' % self.charMaxChars, verbose=False) self.charParent.setMinimumWidth(self.charMaxChars + 500) self.propParent.setMinimumWidth(self.propMaxChars + 500) self.resize(self.sizeHint())
def __init__(self, app): """ main UI for STATIC ENV handling I always build my UI in __init__ so suck it up.. """ QtGui.QWidget.__init__(self) self.app = app context = self.app.context self.fileBoxes = [] ## Instance the api for talking directly to shotgun. base_url = "http://bubblebathbay.shotgunstudio.com" script_name = 'audioUploader' api_key = 'bbfc5a7f42364edd915656d7a48d436dc864ae7b48caeb69423a912b930bc76a' self.sgsrv = Shotgun(base_url=base_url, script_name=script_name, api_key=api_key, ensure_ascii=True, connect=True) self.shotNum = self._getShotNum()[0] self.currentENV = self._getShotNum()[1] debug(self.app, method='MainUI', message='self.shotNum: %s' % self.shotNum, verbose=False) debug(self.app, method='MainUI', message='self.currentENV: %s' % self.currentENV, verbose=False) self.lightAlembicFolder = 'I:/lsapipeline/episodes/ep000/%s/Light/publish/alembic_anim' % self.shotNum ## Now build the UI self.mainLayout = QtGui.QHBoxLayout(self) self.leftSideLayout = QtGui.QVBoxLayout(self) debug(self.app, method='MainUI', message='self.mainLayout built...', verbose=False) ########################## ### ENV SELECTION PULLDOWN self.envLayout = QtGui.QVBoxLayout(self) self.envPulldown = QtGui.QComboBox() getENVS = self.sgsrv.find( 'Asset', filters=[["code", "contains", 'ENV_'], ["code", "not_contains", '_ENV_'], ["code", "not_contains", 'WORLDMAP'], ["code", "not_contains", 'TSETbuild']], fields=['code']) debug(self.app, method='MainUI', message='getENVS: %s' % getENVS, verbose=False) if self.shotNum: for each in getENVS: if each['code'] == self.currentENV: self.envPulldown.addItem(each['code']) self.lightAlembicFolder = 'I:/lsapipeline/episodes/ep000/%s/Light/publish/alembic_anim' % self.shotNum self.envPulldown.setCurrentIndex( self.envPulldown.findText(self.currentENV)) debug(self.app, method='MainUI', message='self.envPulldown setCurrentIndex...', verbose=False) else: for each in getENVS: if 'ANIM' in each['code']: self.envPulldown.addItem(each['code']) self.fetchAssetListButton = QtGui.QPushButton(Icon('refresh.png'), 'Fetch Asset List') self.fetchAssetListButton.setStyleSheet( "QPushButton {text-align : left}") self.fetchAssetListButton.released.connect(self._fetchAssetList) debug(self.app, method='MainUI', message='self.fetchAssetListButton built...', verbose=False) self.importAssetButton = QtGui.QPushButton(Icon('alembic.png'), 'Import latest Pub ABC') self.importAssetButton.setStyleSheet("QPushButton {text-align : left}") self.importAssetButton.released.connect(self._fetchMDLAlembicPublish) debug(self.app, method='MainUI', message='self.importAssetButton built...', verbose=False) self.checkMDLButton = QtGui.QPushButton(Icon('refresh.png'), 'Check For RIG Publishes') self.checkMDLButton.setStyleSheet("QPushButton {text-align : left}") self.checkMDLButton.released.connect( self._checkVersionsAgainstPublishes) debug(self.app, method='MainUI', message='self.checkMDLButton built...', verbose=False) self.checkSRFXMLButton = QtGui.QPushButton(Icon('refresh.png'), 'Check For SRF Publishes') self.checkSRFXMLButton.setStyleSheet("QPushButton {text-align : left}") self.checkSRFXMLButton.released.connect( self._checkSRFVersionsAgainstPublishes) self.lambert1Button = QtGui.QPushButton(Icon('refresh.png'), 'Check lambert1 objects') self.lambert1Button.setStyleSheet("QPushButton {text-align : left}") self.lambert1Button.released.connect(self._lambert1Object) self.checkFileInPathButton = QtGui.QPushButton( Icon('refresh.png'), 'Check Invalid FileIn Path') self.checkFileInPathButton.setStyleSheet( "QPushButton {text-align : left}") self.checkFileInPathButton.released.connect(self.checkFileInPath) self.checkNonManifoldButton = QtGui.QPushButton( Icon('refresh.png'), 'Check Non-Manifold Geometry') self.checkNonManifoldButton.setStyleSheet( "QPushButton {text-align : left}") self.checkNonManifoldButton.released.connect( self.cleanupNonManifoldGeometry) if context.step['name'] == 'Anm': self.creaseXMLButton = QtGui.QPushButton('Create crease XML') self.creaseXMLButton.released.connect(self._writeCreaseToXML) self.creaseXMLButton.setEnabled(True) if context.step['name'] == 'Light': self.fetchCreaseXMLButton = QtGui.QPushButton( 'Fetch latest published crease XML') self.fetchCreaseXMLButton.released.connect( partial(self._getCreaseFromXML, rootPrefix='ENV_DOCKS_STATICANIM_ABC_ANIM_CACHES_hrc')) self.fetchCreaseXMLButton.setEnabled(True) self.republishALL = QtGui.QPushButton('Publish ABC from ANM') self.republishALL.released.connect(self._republishAllAlembicsForENV) self.republishALL.setEnabled(True) ## Add stuff to the env layout self.envLayout.addWidget(self.envPulldown) self.envLayout.addWidget(self.fetchAssetListButton) self.envLayout.addWidget(self.importAssetButton) self.envLayout.addWidget(self.checkMDLButton) self.envLayout.addWidget(self.checkSRFXMLButton) self.envLayout.addWidget(self.lambert1Button) self.envLayout.addWidget(self.checkFileInPathButton) self.envLayout.addWidget(self.checkNonManifoldButton) self.envLayout.addWidget(self.republishALL) if context.step['name'] == 'Anm': self.envLayout.addWidget(self.creaseXMLButton) if context.step['name'] == 'Light': self.envLayout.addWidget(self.fetchCreaseXMLButton) ###################### ### ENV RELATED ASSETS self.assetLayout = QtGui.QVBoxLayout(self) ### Now do the check boxes for files.... self.scrollLayout = QtGui.QScrollArea(self) self.scrollLayout.setMinimumHeight(300) self.envAssetsGroupBox = QtGui.QGroupBox(self.scrollLayout) self.envAssetsGroupBox.setFlat(True) self.scrollLayout.setWidget(self.envAssetsGroupBox) self.scrollLayout.setWidgetResizable(True) self.envAssetsLayout = QtGui.QGridLayout(self.envAssetsGroupBox) self.assetLayout.addWidget(self.scrollLayout) self.mainLayout.addLayout(self.leftSideLayout) ## Add stuff to leftSideLayout self.leftSideLayout.addLayout(self.envLayout) self.leftSideLayout.addStretch(1) ## Add anything else to the HBox self.mainLayout.addLayout(self.assetLayout) self.resize(1000, 500) debug(self.app, method='MainUI', message='ui built successfully fetching assets now...', verbose=False) debug(self.app, method='MainUI', message='self.envPulldown.currentText(): %s' % self.envPulldown.currentText(), verbose=False) self._fetchAssetList() self.envPulldown.currentIndexChanged.connect( partial(self._getShotNumFromMenuName)) self.envPulldown.currentIndexChanged.connect( partial(self._fetchAssetList))
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(431, 425) self.gridLayout_3 = QtGui.QGridLayout(Dialog) self.gridLayout_3.setObjectName("gridLayout_3") self.context = QtGui.QLabel(Dialog) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.context.sizePolicy().hasHeightForWidth()) self.context.setSizePolicy(sizePolicy) self.context.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter) self.context.setObjectName("context") self.gridLayout_3.addWidget(self.context, 0, 0, 1, 2) self.pb_submit = QtGui.QPushButton(Dialog) self.pb_submit.setObjectName("pb_submit") self.gridLayout_3.addWidget(self.pb_submit, 4, 1, 1, 1) self.groupBox_2 = QtGui.QGroupBox(Dialog) self.groupBox_2.setObjectName("groupBox_2") self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_2) self.gridLayout_2.setObjectName("gridLayout_2") self.te_notes = QtGui.QTextEdit(self.groupBox_2) self.te_notes.setObjectName("te_notes") self.gridLayout_2.addWidget(self.te_notes, 1, 0, 1, 1) self.gridLayout_3.addWidget(self.groupBox_2, 3, 1, 1, 1) self.groupBox = QtGui.QGroupBox(Dialog) self.groupBox.setObjectName("groupBox") self.gridLayout = QtGui.QGridLayout(self.groupBox) self.gridLayout.setObjectName("gridLayout") self.lw_FileList = QtGui.QListWidget(self.groupBox) self.lw_FileList.setObjectName("lw_FileList") self.gridLayout.addWidget(self.lw_FileList, 2, 0, 1, 3) self.pb_loadFiles = QtGui.QPushButton(self.groupBox) self.pb_loadFiles.setObjectName("pb_loadFiles") self.gridLayout.addWidget(self.pb_loadFiles, 3, 0, 1, 1) self.pb_delFiles = QtGui.QPushButton(self.groupBox) self.pb_delFiles.setObjectName("pb_delFiles") self.gridLayout.addWidget(self.pb_delFiles, 3, 1, 1, 1) self.gridLayout_3.addWidget(self.groupBox, 1, 0, 1, 2) self.groupBox_3 = QtGui.QGroupBox(Dialog) self.groupBox_3.setObjectName("groupBox_3") self.gridLayout_4 = QtGui.QGridLayout(self.groupBox_3) self.gridLayout_4.setObjectName("gridLayout_4") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.label_3 = QtGui.QLabel(self.groupBox_3) self.label_3.setObjectName("label_3") self.horizontalLayout.addWidget(self.label_3) self.spB_day = QtGui.QSpinBox(self.groupBox_3) self.spB_day.setObjectName("spB_day") self.horizontalLayout.addWidget(self.spB_day) self.label = QtGui.QLabel(self.groupBox_3) self.label.setObjectName("label") self.horizontalLayout.addWidget(self.label) self.spB_hrs = QtGui.QSpinBox(self.groupBox_3) self.spB_hrs.setObjectName("spB_hrs") self.horizontalLayout.addWidget(self.spB_hrs) self.label_2 = QtGui.QLabel(self.groupBox_3) self.label_2.setObjectName("label_2") self.horizontalLayout.addWidget(self.label_2) spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.gridLayout_4.addLayout(self.horizontalLayout, 0, 0, 1, 1) self.gridLayout_3.addWidget(self.groupBox_3, 2, 1, 1, 1) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog)
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(783, 489) self.horizontalLayout_2 = QtGui.QHBoxLayout(Dialog) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.central_stackedWidget = QtGui.QStackedWidget(Dialog) self.central_stackedWidget.setObjectName("central_stackedWidget") self.submit_page = QtGui.QWidget() self.submit_page.setObjectName("submit_page") self.horizontalLayout_4 = QtGui.QHBoxLayout(self.submit_page) self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.verticalLayout_7 = QtGui.QVBoxLayout() self.verticalLayout_7.setSpacing(4) self.verticalLayout_7.setObjectName("verticalLayout_7") self.items_title_label = QtGui.QLabel(self.submit_page) self.items_title_label.setStyleSheet("#items_title_label {\n" "font-size: 14px\n" "}") self.items_title_label.setIndent(4) self.items_title_label.setObjectName("items_title_label") self.verticalLayout_7.addWidget(self.items_title_label) self.renders_stacked_widget = QtGui.QStackedWidget(self.submit_page) self.renders_stacked_widget.setStyleSheet("") self.renders_stacked_widget.setObjectName("renders_stacked_widget") self.renders_page = QtGui.QWidget() self.renders_page.setObjectName("renders_page") self.horizontalLayout_7 = QtGui.QHBoxLayout(self.renders_page) self.horizontalLayout_7.setSpacing(0) self.horizontalLayout_7.setContentsMargins(0, 0, 0, 0) self.horizontalLayout_7.setObjectName("horizontalLayout_7") self.task_scroll = QtGui.QScrollArea(self.renders_page) self.task_scroll.setStyleSheet("#task_scroll {\n" "border-style: solid;\n" "border-width: 1px;\n" "border-radius: 2px;\n" "border-color: rgb(32,32,32);\n" "}") self.task_scroll.setWidgetResizable(True) self.task_scroll.setObjectName("task_scroll") self.contents = QtGui.QWidget() self.contents.setGeometry(QtCore.QRect(0, 0, 359, 419)) self.contents.setObjectName("contents") self.task_scroll.setWidget(self.contents) self.horizontalLayout_7.addWidget(self.task_scroll) self.renders_stacked_widget.addWidget(self.renders_page) self.no_renders_page = QtGui.QWidget() self.no_renders_page.setStyleSheet("") self.no_renders_page.setObjectName("no_renders_page") self.verticalLayout_2 = QtGui.QVBoxLayout(self.no_renders_page) self.verticalLayout_2.setSpacing(0) self.verticalLayout_2.setContentsMargins(0, 0, 0, 0) self.verticalLayout_2.setObjectName("verticalLayout_2") self.no_renders_frame = QtGui.QFrame(self.no_renders_page) self.no_renders_frame.setStyleSheet("#no_publishes_frame {\n" "border-style: solid;\n" "border-width: 1px;\n" "border-radius: 2px;\n" "border-color: rgb(32,32,32);\n" "}") self.no_renders_frame.setFrameShape(QtGui.QFrame.StyledPanel) self.no_renders_frame.setFrameShadow(QtGui.QFrame.Raised) self.no_renders_frame.setObjectName("no_renders_frame") self.verticalLayout_3 = QtGui.QVBoxLayout(self.no_renders_frame) self.verticalLayout_3.setSpacing(0) self.verticalLayout_3.setContentsMargins(0, 0, 0, 0) self.verticalLayout_3.setObjectName("verticalLayout_3") spacerItem = QtGui.QSpacerItem(0, 88, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_3.addItem(spacerItem) self.horizontalLayout_9 = QtGui.QHBoxLayout() self.horizontalLayout_9.setObjectName("horizontalLayout_9") spacerItem1 = QtGui.QSpacerItem(0, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_9.addItem(spacerItem1) self.label_6 = QtGui.QLabel(self.no_renders_frame) self.label_6.setAlignment(QtCore.Qt.AlignCenter) self.label_6.setWordWrap(True) self.label_6.setObjectName("label_6") self.horizontalLayout_9.addWidget(self.label_6) spacerItem2 = QtGui.QSpacerItem(0, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_9.addItem(spacerItem2) self.verticalLayout_3.addLayout(self.horizontalLayout_9) spacerItem3 = QtGui.QSpacerItem(0, 88, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_3.addItem(spacerItem3) self.verticalLayout_2.addWidget(self.no_renders_frame) self.renders_stacked_widget.addWidget(self.no_renders_page) self.verticalLayout_7.addWidget(self.renders_stacked_widget) self.horizontalLayout_4.addLayout(self.verticalLayout_7) self.verticalLayout = QtGui.QVBoxLayout() self.verticalLayout.setSpacing(4) self.verticalLayout.setObjectName("verticalLayout") self.info_title_label = QtGui.QLabel(self.submit_page) self.info_title_label.setStyleSheet("#info_title_label {\n" "font-size: 14px\n" "}") self.info_title_label.setIndent(4) self.info_title_label.setObjectName("info_title_label") self.verticalLayout.addWidget(self.info_title_label) self.groupBox = QtGui.QGroupBox(self.submit_page) self.groupBox.setTitle("") self.groupBox.setFlat(False) self.groupBox.setCheckable(False) self.groupBox.setObjectName("groupBox") self.gridLayout = QtGui.QGridLayout(self.groupBox) self.gridLayout.setContentsMargins(-1, 12, -1, -1) self.gridLayout.setObjectName("gridLayout") self.verticalLayout.addWidget(self.groupBox) spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem4) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") spacerItem5 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem5) self.cancel_btn = QtGui.QPushButton(self.submit_page) self.cancel_btn.setMinimumSize(QtCore.QSize(80, 0)) self.cancel_btn.setObjectName("cancel_btn") self.horizontalLayout.addWidget(self.cancel_btn) self.submit_btn = QtGui.QPushButton(self.submit_page) self.submit_btn.setObjectName("submit_btn") self.horizontalLayout.addWidget(self.submit_btn) self.verticalLayout.addLayout(self.horizontalLayout) self.horizontalLayout_4.addLayout(self.verticalLayout) self.central_stackedWidget.addWidget(self.submit_page) self.progress_page = QtGui.QWidget() self.progress_page.setObjectName("progress_page") self.verticalLayout_10 = QtGui.QVBoxLayout(self.progress_page) self.verticalLayout_10.setObjectName("verticalLayout_10") self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") spacerItem6 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem6) self.verticalLayout_9 = QtGui.QVBoxLayout() self.verticalLayout_9.setSpacing(6) self.verticalLayout_9.setObjectName("verticalLayout_9") spacerItem7 = QtGui.QSpacerItem(20, 97, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_9.addItem(spacerItem7) self.title = QtGui.QLabel(self.progress_page) self.title.setStyleSheet("#title {\n" "font-size: 24px;\n" "}") self.title.setObjectName("title") self.verticalLayout_9.addWidget(self.title) self.progress_details = QtGui.QLabel(self.progress_page) self.progress_details.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.progress_details.setWordWrap(False) self.progress_details.setObjectName("progress_details") self.verticalLayout_9.addWidget(self.progress_details) spacerItem8 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_9.addItem(spacerItem8) self.verticalLayout_9.setStretch(0, 2) self.verticalLayout_9.setStretch(3, 3) self.horizontalLayout_3.addLayout(self.verticalLayout_9) spacerItem9 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_3.addItem(spacerItem9) self.horizontalLayout_3.setStretch(0, 1) self.horizontalLayout_3.setStretch(1, 5) self.horizontalLayout_3.setStretch(2, 1) self.verticalLayout_10.addLayout(self.horizontalLayout_3) self.central_stackedWidget.addWidget(self.progress_page) self.success_page = QtGui.QWidget() self.success_page.setObjectName("success_page") self.verticalLayout_8 = QtGui.QVBoxLayout(self.success_page) self.verticalLayout_8.setObjectName("verticalLayout_8") spacerItem10 = QtGui.QSpacerItem(20, 134, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_8.addItem(spacerItem10) self.horizontalLayout_6 = QtGui.QHBoxLayout() self.horizontalLayout_6.setObjectName("horizontalLayout_6") spacerItem11 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_6.addItem(spacerItem11) self.verticalLayout_5 = QtGui.QVBoxLayout() self.verticalLayout_5.setObjectName("verticalLayout_5") self.status_icon = QtGui.QLabel(self.success_page) self.status_icon.setMinimumSize(QtCore.QSize(80, 80)) self.status_icon.setMaximumSize(QtCore.QSize(80, 80)) self.status_icon.setBaseSize(QtCore.QSize(32, 32)) self.status_icon.setText("") self.status_icon.setPixmap(QtGui.QPixmap(":/res/success.png")) self.status_icon.setScaledContents(False) self.status_icon.setAlignment(QtCore.Qt.AlignCenter) self.status_icon.setObjectName("status_icon") self.verticalLayout_5.addWidget(self.status_icon) spacerItem12 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_5.addItem(spacerItem12) self.horizontalLayout_6.addLayout(self.verticalLayout_5) self.verticalLayout_6 = QtGui.QVBoxLayout() self.verticalLayout_6.setSpacing(0) self.verticalLayout_6.setObjectName("verticalLayout_6") self.success_status_title = QtGui.QLabel(self.success_page) font = QtGui.QFont() font.setPointSize(18) self.success_status_title.setFont(font) self.success_status_title.setStyleSheet("") self.success_status_title.setObjectName("success_status_title") self.verticalLayout_6.addWidget(self.success_status_title) self.success_details = QtGui.QLabel(self.success_page) self.success_details.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.success_details.setWordWrap(True) self.success_details.setTextInteractionFlags( QtCore.Qt.LinksAccessibleByMouse | QtCore.Qt.TextSelectableByMouse) self.success_details.setObjectName("success_details") self.verticalLayout_6.addWidget(self.success_details) self.verticalLayout_6.setStretch(1, 1) self.horizontalLayout_6.addLayout(self.verticalLayout_6) spacerItem13 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_6.addItem(spacerItem13) self.horizontalLayout_6.setStretch(2, 3) self.horizontalLayout_6.setStretch(3, 1) self.verticalLayout_8.addLayout(self.horizontalLayout_6) spacerItem14 = QtGui.QSpacerItem(20, 134, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_8.addItem(spacerItem14) self.horizontalLayout_5 = QtGui.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") spacerItem15 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_5.addItem(spacerItem15) self.success_close_btn = QtGui.QPushButton(self.success_page) self.success_close_btn.setObjectName("success_close_btn") self.horizontalLayout_5.addWidget(self.success_close_btn) self.verticalLayout_8.addLayout(self.horizontalLayout_5) self.central_stackedWidget.addWidget(self.success_page) self.failure_page = QtGui.QWidget() self.failure_page.setObjectName("failure_page") self.verticalLayout_19 = QtGui.QVBoxLayout(self.failure_page) self.verticalLayout_19.setObjectName("verticalLayout_19") spacerItem16 = QtGui.QSpacerItem(20, 134, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_19.addItem(spacerItem16) self.horizontalLayout_15 = QtGui.QHBoxLayout() self.horizontalLayout_15.setObjectName("horizontalLayout_15") spacerItem17 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_15.addItem(spacerItem17) self.verticalLayout_17 = QtGui.QVBoxLayout() self.verticalLayout_17.setObjectName("verticalLayout_17") self.status_icon_3 = QtGui.QLabel(self.failure_page) self.status_icon_3.setMinimumSize(QtCore.QSize(80, 80)) self.status_icon_3.setMaximumSize(QtCore.QSize(80, 80)) self.status_icon_3.setBaseSize(QtCore.QSize(32, 32)) self.status_icon_3.setText("") self.status_icon_3.setPixmap(QtGui.QPixmap(":/res/failure.png")) self.status_icon_3.setScaledContents(False) self.status_icon_3.setAlignment(QtCore.Qt.AlignCenter) self.status_icon_3.setObjectName("status_icon_3") self.verticalLayout_17.addWidget(self.status_icon_3) spacerItem18 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_17.addItem(spacerItem18) self.horizontalLayout_15.addLayout(self.verticalLayout_17) self.verticalLayout_18 = QtGui.QVBoxLayout() self.verticalLayout_18.setSpacing(0) self.verticalLayout_18.setObjectName("verticalLayout_18") self.failure_status_title = QtGui.QLabel(self.failure_page) font = QtGui.QFont() font.setPointSize(18) self.failure_status_title.setFont(font) self.failure_status_title.setStyleSheet("") self.failure_status_title.setObjectName("failure_status_title") self.verticalLayout_18.addWidget(self.failure_status_title) self.failure_details = QtGui.QLabel(self.failure_page) self.failure_details.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.failure_details.setWordWrap(True) self.failure_details.setTextInteractionFlags( QtCore.Qt.LinksAccessibleByMouse | QtCore.Qt.TextSelectableByMouse) self.failure_details.setObjectName("failure_details") self.verticalLayout_18.addWidget(self.failure_details) self.verticalLayout_18.setStretch(1, 1) self.horizontalLayout_15.addLayout(self.verticalLayout_18) spacerItem19 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_15.addItem(spacerItem19) self.horizontalLayout_15.setStretch(2, 3) self.horizontalLayout_15.setStretch(3, 1) self.verticalLayout_19.addLayout(self.horizontalLayout_15) spacerItem20 = QtGui.QSpacerItem(20, 134, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_19.addItem(spacerItem20) self.horizontalLayout_14 = QtGui.QHBoxLayout() self.horizontalLayout_14.setObjectName("horizontalLayout_14") spacerItem21 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_14.addItem(spacerItem21) self.failure_close_btn = QtGui.QPushButton(self.failure_page) self.failure_close_btn.setObjectName("failure_close_btn") self.horizontalLayout_14.addWidget(self.failure_close_btn) self.verticalLayout_19.addLayout(self.horizontalLayout_14) self.central_stackedWidget.addWidget(self.failure_page) self.horizontalLayout_2.addWidget(self.central_stackedWidget) self.retranslateUi(Dialog) self.central_stackedWidget.setCurrentIndex(0) self.renders_stacked_widget.setCurrentIndex(1) QtCore.QMetaObject.connectSlotsByName(Dialog)
def __init__(self, app): """ """ QtGui.QWidget.__init__(self) self.app = app debug(self.app, method='MainUI.__init__', message='Running app...', verbose=False) self.context = self.app.context debug(self.app, method='MainUI.__init__', message='Context Step: %s' % self.context.step['name'], verbose=False) if self.context.step['name'] != 'Light': tank.TankError("Cannot load, not a valid Light step.") else: debug(app=self.app, method='MainUI.__init__', message='Valid Light step...', verbose=False) ### PROCESS ALL THE SCENE STUFF ## Load the API self.tk = sgtk.sgtk_from_path("T:/software/bubblebathbay") debug(app=self.app, method='MainUI.__init__', message='tk: %s' % self.tk, verbose=False) ## Working scene path scene_path = cmds.file(query=True, sn=True) debug(app=self.app, method='MainUI.__init__', message='scene_path: %s' % scene_path, verbose=False) if not scene_path: cmds.warning("Not a valid scene file...") else: ## Build an entity type to get some values from. self.entity = self.context.entity ## returns {'type': 'Shot', 'name': 'ep100_sh010', 'id': 1166} debug(app=self.app, method='MainUI.__init__', message='self.entity: %s' % self.entity, verbose=False) ## Filter for the matching ID for the shot sg_filters = [["id", "is", self.entity["id"]]] debug(app=self.app, method='MainUI.__init__', message='sg_filters: %s' % sg_filters, verbose=False) ## Build an entity type to get some values from. sg_entity_type = self.entity["type"] ## returns Shot debug(app=self.app, method='MainUI.__init__', message='sg_entity_type: %s' % sg_entity_type, verbose=False) ## Get template path ## primary_publish_template: maya_shot_publish ## maya_shot_publish = '@shot_root/publish/maya/{name}.v{version}.mb' self.staticAlembicFolder = self.tk.templates[ self.app.get_setting( 'static_alembic_cache_version' )] ## returns <Sgtk TemplatePath maya_shot_publish: episodes/{Sequence}/{Shot}/{Step}/publish/maya/{name}.v{version}.mb> # print self.staticAlembicFolder debug(app=self.app, method='MainUI.__init__', message='template_path: %s' % self.staticAlembicFolder, verbose=False) self.animAlembicFolder = self.tk.templates[self.app.get_setting( 'anim_alembic_cache_version' )] ## returns <Sgtk TemplatePath maya_shot_publish: episodes/{Sequence}/{Shot}/{Step}/publish/maya/{name}.v{version}.mb> # print self.animAlembicFolder debug(app=self.app, method='MainUI.__init__', message='template_path: %s' % self.animAlembicFolder, verbose=False) self.oceanPreset = self.tk.templates[self.app.get_setting( 'ocean_preset' )] ## returns <Sgtk TemplatePath maya_shot_publish: episodes/{Sequence}/{Shot}/{Step}/publish/maya/{name}.v{version}.mb> # print self.oceanPreset debug(app=self.app, method='MainUI.__init__', message='template_path: %s' % self.oceanPreset, verbose=False) self.camVersion = self.tk.templates[self.app.get_setting( 'cam_version' )] ## returns <Sgtk TemplatePath maya_shot_publish: episodes/{Sequence}/{Shot}/{Step}/publish/maya/{name}.v{version}.mb> # print self.camVersion debug(app=self.app, method='MainUI.__init__', message='template_path: %s' % self.camVersion, verbose=False) self.fxCacheVersion = self.tk.templates[self.app.get_setting( 'ocean_preset' )] ## returns <Sgtk TemplatePath maya_shot_publish: episodes/{Sequence}/{Shot}/{Step}/publish/maya/{name}.v{version}.mb> # print self.fxCacheVersion debug(app=self.app, method='MainUI.__init__', message='template_path: %s' % self.fxCacheVersion, verbose=False) ## Shot name self.shotNum = self.entity["name"] debug(app=self.app, method='MainUI.__init__', message='shotName: %s' % self.shotNum, verbose=False) ## Shot ID self.id = self.entity["id"] debug(app=self.app, method='MainUI.__init__', message='shotId: %s' % self.id, verbose=False) ## Published animation cache version # getStaticAlembicVersionFolders = self.tk.paths_from_template(self.staticAlembicFolder, {'Step' : 'Anm', 'id' : self.id, 'Shot' : self.shotNum}) # returns ['I:\\bubblebathbay\\episodes\\ep101\\ep101_sh019\\Anm\\publish\\maya\\ep101sh019.v003.mb', 'I:\\bubblebathbay\\episodes\\ep101\\ep101_sh019\\Anm\\publish\\maya\\ep101sh019.v001.mb', 'I:\\bubblebathbay\\episodes\\ep101\\ep101_sh019\\Anm\\publish\\maya\\ep101sh019.v002.mb'] # if getStaticAlembicVersionFolders: # debug(app = self.app, method = 'MainUI.__init__', message = 'latestPublishedAnimVerFile: %s' % max(getStaticAlembicVersionFolders), verbose = False) # # print max(getStaticAlembicVersionFolders).split('\\')[-1].split('v')[-1] ####################################### ################### UI LOAD / BUILD NOW ####################################### ## Now build the UI self.mainLayout = QtGui.QVBoxLayout(self) ## Setup the layout and buttons self.fetchingGroupBox = QtGui.QGroupBox(self) self.fetchingGroupBox.setTitle(self.shotNum) self.buttonLayout = QtGui.QVBoxLayout(self.fetchingGroupBox) if cmds.objExists('ABC_ANIM_CACHES_hrc'): self.animVersionCheckerButton = QtGui.QPushButton( 'ANIM_CACHES WORK FILE ----------------------------------- %s | %s ----------------------------------- PUBLISHED FILE' % (self._getAnimCacheSceneVersion(), self._getLatestAnimCacheVersion())) self.animVersionCheckerButton.clicked.connect( self._compareAnimCacheVersion) self._compareAnimCacheVersion() self.buttonLayout.addWidget(self.animVersionCheckerButton) if cmds.objExists('ABC_STATIC_CACHES_hrc'): self.staticVersionCheckerButton = QtGui.QPushButton( 'STATIC_CACHES WORK FILE ----------------------------------- %s | %s ----------------------------------- PUBLISHED FILE' % (self._getStaticCacheSceneVersion(), self._getLatestStaticCacheVersion())) self.staticVersionCheckerButton.clicked.connect( self._compareStaticCacheVersion) self._compareStaticCacheVersion() self.buttonLayout.addWidget( self.staticVersionCheckerButton) if cmds.objExists('BAKE_CAM_hrc'): self.camVersionCheckerButton = QtGui.QPushButton( 'CAM WORK FILE ----------------------------------- %s | %s ----------------------------------- PUBLISHED FILE' % (self._getCamSceneVersion(), self._getLatestCamVersion())) self.camVersionCheckerButton.clicked.connect( self._compareCamVersion) self._compareCamVersion() self.buttonLayout.addWidget(self.camVersionCheckerButton) if cmds.objExists('FX_CACHES_hrc'): self.oceanPresetVersionCheckerButton = QtGui.QPushButton( 'OCEAN PRESET WORK FILE ----------------------------------- %s | %s ----------------------------------- PUBLISHED FILE' % (self._getOceanPresetSceneVersion(), self._getLatestOceanPresetVersion())) self.oceanPresetVersionCheckerButton.clicked.connect( self._compareOceanPresetVersion) self._compareOceanPresetVersion() self.buttonLayout.addWidget( self.oceanPresetVersionCheckerButton) if cmds.objExists('FX_CACHES_hrc'): self.fxCacheVersionCheckerButton = QtGui.QPushButton( 'FX CACHES WORK FILE ----------------------------------- %s | %s ----------------------------------- PUBLISHED FILE' % (self._getFXCacheSceneVersion(), self._getLatestFXCacheVersion())) self.fxCacheVersionCheckerButton.clicked.connect( self._compareFXCacheVersion) self._compareFXCacheVersion() self.buttonLayout.addWidget( self.fxCacheVersionCheckerButton) ## Add the buttons to their layout widget # self.buttonLayout.addWidget(self.versionCheckerButton) self.mainLayout.addWidget(self.fetchingGroupBox) self.mainLayout.addStretch(1) self.resize(300, 20)
def __init__(self, app): QtGui.QWidget.__init__(self) self.app = app debug(app = self.app, method = 'MainUI', message = 'MainUI initialized...', verbose = False) #self.tk = sgtk.sgtk_from_path("T:/software/bubblebathbay") self.mainLayout = QtGui.QVBoxLayout(self) debug(app = self.app, method = 'MainUI', message = 'mainLayout built...', verbose = False) ## Time of Day self.todGroupBox = QtGui.QGroupBox(self) self.todGroupBox.setTitle('Time of Day:') debug(app = self.app, method = 'MainUI', message = 'self.todGroupBox built...', verbose = False) self.todLayout = QtGui.QHBoxLayout(self.todGroupBox) debug(app = self.app, method = 'MainUI', message = 'self.todLayout built...', verbose = False) ## Now do the checkBoxes self.afternoonLayout = QtGui.QVBoxLayout(self) self.afternoonCBox = QtGui.QRadioButton('Afternoon') self.afternoonCBox.setChecked(True) self.afternoonCBox.setAutoExclusive(True) self.afternoonButton = QtGui.QPushButton('Set Now') self.afternoonButton.released.connect(partial(self.setTOD, self.afternoonCBox, 'afternoon')) self.afternoonLayout.addWidget(self.afternoonCBox) self.afternoonLayout.addWidget(self.afternoonButton) self.dawnLayout = QtGui.QVBoxLayout(self) self.dawnCBox = QtGui.QRadioButton('Dawn') self.dawnCBox.setAutoExclusive(True) self.dawnButton = QtGui.QPushButton('Set Now') self.dawnButton.released.connect(partial(self.setTOD, self.dawnCBox, 'dawn')) self.dawnLayout.addWidget(self.dawnCBox) self.dawnLayout.addWidget(self.dawnButton) self.duskLayout = QtGui.QVBoxLayout(self) self.duskCBox = QtGui.QRadioButton('Dusk') self.duskCBox.setAutoExclusive(True) self.duskButton = QtGui.QPushButton('Set Now') self.duskButton.released.connect(partial(self.setTOD, self.duskCBox, 'dusk')) self.duskLayout.addWidget(self.duskCBox) self.duskLayout.addWidget(self.duskButton) self.middayLayout = QtGui.QVBoxLayout(self) self.middayCBox = QtGui.QRadioButton('Midday') self.middayCBox.setAutoExclusive(True) self.middayButton = QtGui.QPushButton('Set Now') self.middayButton.released.connect(partial(self.setTOD, self.middayCBox, 'midday')) self.middayLayout.addWidget(self.middayCBox) self.middayLayout.addWidget(self.middayButton) self.morningLayout = QtGui.QVBoxLayout(self) self.morningCBox = QtGui.QRadioButton('Morning') self.morningCBox.setAutoExclusive(True) self.morningButton = QtGui.QPushButton('Set Now') self.morningButton.released.connect(partial(self.setTOD, self.morningCBox, 'morning')) self.morningLayout.addWidget(self.morningCBox) self.morningLayout.addWidget(self.morningButton) self.nightLayout = QtGui.QVBoxLayout(self) self.nightCBox = QtGui.QRadioButton('Night') self.nightCBox.setAutoExclusive(True) self.nightButton = QtGui.QPushButton('Set Now') self.nightButton.released.connect(partial(self.setTOD, self.nightCBox, 'night')) self.nightLayout.addWidget(self.nightCBox) self.nightLayout.addWidget(self.nightButton) self.sunriseLayout = QtGui.QVBoxLayout(self) self.sunriseCBox = QtGui.QRadioButton('Sunrise') self.sunriseCBox.setAutoExclusive(True) self.sunriseButton = QtGui.QPushButton('Set Now') self.sunriseButton.released.connect(partial(self.setTOD, self.sunriseCBox, 'sunrise')) self.sunriseLayout.addWidget(self.sunriseCBox) self.sunriseLayout.addWidget(self.sunriseButton) self.sunsetLayout = QtGui.QVBoxLayout(self) self.sunsetCBox = QtGui.QRadioButton('SunSet') self.sunsetCBox.setAutoExclusive(True) self.sunsetButton = QtGui.QPushButton('Set Now') self.sunsetButton.released.connect(partial(self.setTOD, self.sunsetCBox, 'sunset')) self.sunsetLayout.addWidget(self.sunsetCBox) self.sunsetLayout.addWidget(self.sunsetButton) self.todLayout.addLayout(self.dawnLayout) self.splitter01 = BB_Widget_vr() self.todLayout.addWidget(self.splitter01) self.todLayout.addLayout(self.sunriseLayout) self.splitter02 = BB_Widget_vr() self.todLayout.addWidget(self.splitter02) self.todLayout.addLayout(self.morningLayout) self.splitter03 = BB_Widget_vr() self.todLayout.addWidget(self.splitter03) self.todLayout.addLayout(self.middayLayout) self.splitter04 = BB_Widget_vr() self.todLayout.addWidget(self.splitter04) self.todLayout.addLayout(self.afternoonLayout) self.splitter05 = BB_Widget_vr() self.todLayout.addWidget(self.splitter05) self.todLayout.addLayout(self.sunsetLayout) self.splitter06 = BB_Widget_vr() self.todLayout.addWidget(self.splitter06) self.todLayout.addLayout(self.duskLayout) self.splitter07 = BB_Widget_vr() self.todLayout.addWidget(self.splitter07) self.todLayout.addLayout(self.nightLayout) self.fixBBBLightDirectionButton = QtGui.QPushButton('FIX LIGHT WORLD ROTATION! (USE WITH CAUTION)') self.fixBBBLightDirectionButton.released.connect(self.fixLightWorldRotation) self.buildTODButton = QtGui.QPushButton('SETUP NOW...') self.buildTODButton.released.connect(self.doTODLoad) self.redoSmoothAttrAttachButton = QtGui.QPushButton('Rebuild subDiv connections...') self.redoSmoothAttrAttachButton.released.connect(partial(settings.attachMentalRaySubDiv)) self.deleteSetupButton = QtGui.QPushButton('Delete Setup!') self.deleteSetupButton.setStyleSheet("QPushButton {background: dark red}") self.deleteSetupButton.released.connect(self.deleteSetup) debug(app = self.app, method = 'MainUI', message = 'Widgets built...', verbose = False) self.mainLayout.addWidget(self.todGroupBox) self.mainLayout.addWidget(self.fixBBBLightDirectionButton) self.mainLayout.addWidget(self.buildTODButton) self.mainLayout.addWidget(self.redoSmoothAttrAttachButton) self.mainLayout.addWidget(self.deleteSetupButton) self.mainLayout.addStretch(1) ## Set the renderglobals on app load settings._setRenderGlobals() ## Check for the base nodes if they exist turn the buttons on... self.setButtonStates()
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(483, 436) self.gridLayout_3 = QtGui.QGridLayout(Dialog) self.gridLayout_3.setObjectName("gridLayout_3") self.stack_widget = QtGui.QStackedWidget(Dialog) self.stack_widget.setObjectName("stack_widget") self.page = QtGui.QWidget() self.page.setObjectName("page") self.verticalLayout = QtGui.QVBoxLayout(self.page) self.verticalLayout.setObjectName("verticalLayout") self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") self.version_name_label = QtGui.QLabel(self.page) self.version_name_label.setObjectName("version_name_label") self.horizontalLayout.addWidget(self.version_name_label) self.version_name = QtGui.QLineEdit(self.page) self.version_name.setObjectName("version_name") self.horizontalLayout.addWidget(self.version_name) self.verticalLayout.addLayout(self.horizontalLayout) self.context_widget = ContextWidget(self.page) self.context_widget.setObjectName("context_widget") self.verticalLayout.addWidget(self.context_widget) self.spacer_label = QtGui.QLabel(self.page) self.spacer_label.setText("") self.spacer_label.setObjectName("spacer_label") self.verticalLayout.addWidget(self.spacer_label) self.description_label = QtGui.QLabel(self.page) self.description_label.setObjectName("description_label") self.verticalLayout.addWidget(self.description_label) self.description = QtGui.QTextEdit(self.page) self.description.setObjectName("description") self.verticalLayout.addWidget(self.description) self.horizontalLayout_4 = QtGui.QHBoxLayout() self.horizontalLayout_4.setObjectName("horizontalLayout_4") self.frame_range = QtGui.QLabel(self.page) self.frame_range.setObjectName("frame_range") self.horizontalLayout_4.addWidget(self.frame_range) self.start_frame = QtGui.QLineEdit(self.page) self.start_frame.setMaximumSize(QtCore.QSize(40, 16777215)) self.start_frame.setObjectName("start_frame") self.horizontalLayout_4.addWidget(self.start_frame) self.frame_range_to = QtGui.QLabel(self.page) self.frame_range_to.setObjectName("frame_range_to") self.horizontalLayout_4.addWidget(self.frame_range_to) self.end_frame = QtGui.QLineEdit(self.page) self.end_frame.setMaximumSize(QtCore.QSize(40, 16777215)) self.end_frame.setObjectName("end_frame") self.horizontalLayout_4.addWidget(self.end_frame) spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_4.addItem(spacerItem) self.playlists = QtGui.QComboBox(self.page) self.playlists.setObjectName("playlists") self.horizontalLayout_4.addWidget(self.playlists) self.verticalLayout.addLayout(self.horizontalLayout_4) self.burnin_groupbox = QtGui.QGroupBox(self.page) self.burnin_groupbox.setCheckable(True) self.burnin_groupbox.setObjectName("burnin_groupbox") self.verticalLayout_2 = QtGui.QVBoxLayout(self.burnin_groupbox) self.verticalLayout_2.setObjectName("verticalLayout_2") self.horizontalLayout_5 = QtGui.QHBoxLayout() self.horizontalLayout_5.setObjectName("horizontalLayout_5") self.username_checkbox = QtGui.QCheckBox(self.burnin_groupbox) self.username_checkbox.setChecked(True) self.username_checkbox.setObjectName("username_checkbox") self.horizontalLayout_5.addWidget(self.username_checkbox) self.date_checkbox = QtGui.QCheckBox(self.burnin_groupbox) self.date_checkbox.setChecked(True) self.date_checkbox.setObjectName("date_checkbox") self.horizontalLayout_5.addWidget(self.date_checkbox) self.shotinfo_checkbox = QtGui.QCheckBox(self.burnin_groupbox) self.shotinfo_checkbox.setChecked(True) self.shotinfo_checkbox.setObjectName("shotinfo_checkbox") self.horizontalLayout_5.addWidget(self.shotinfo_checkbox) self.frames_checkbox = QtGui.QCheckBox(self.burnin_groupbox) self.frames_checkbox.setChecked(True) self.frames_checkbox.setObjectName("frames_checkbox") self.horizontalLayout_5.addWidget(self.frames_checkbox) self.verticalLayout_2.addLayout(self.horizontalLayout_5) self.horizontalLayout_6 = QtGui.QHBoxLayout() self.horizontalLayout_6.setObjectName("horizontalLayout_6") self.label = QtGui.QLabel(self.burnin_groupbox) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth()) self.label.setSizePolicy(sizePolicy) self.label.setObjectName("label") self.horizontalLayout_6.addWidget(self.label) self.fontsize_spinbox = QtGui.QSpinBox(self.burnin_groupbox) self.fontsize_spinbox.setMinimum(18) self.fontsize_spinbox.setMaximum(100) self.fontsize_spinbox.setProperty("value", 32) self.fontsize_spinbox.setObjectName("fontsize_spinbox") self.horizontalLayout_6.addWidget(self.fontsize_spinbox) self.label_2 = QtGui.QLabel(self.burnin_groupbox) sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Maximum, QtGui.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth()) self.label_2.setSizePolicy(sizePolicy) self.label_2.setObjectName("label_2") self.horizontalLayout_6.addWidget(self.label_2) self.fontcolor_combobox = QtGui.QComboBox(self.burnin_groupbox) self.fontcolor_combobox.setObjectName("fontcolor_combobox") self.fontcolor_combobox.addItem("") self.fontcolor_combobox.addItem("") self.horizontalLayout_6.addWidget(self.fontcolor_combobox) spacerItem1 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_6.addItem(spacerItem1) self.verticalLayout_2.addLayout(self.horizontalLayout_6) self.verticalLayout.addWidget(self.burnin_groupbox) self.stack_widget.addWidget(self.page) self.page_2 = QtGui.QWidget() self.page_2.setObjectName("page_2") self.gridLayout = QtGui.QGridLayout(self.page_2) self.gridLayout.setObjectName("gridLayout") spacerItem2 = QtGui.QSpacerItem(20, 41, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem2, 0, 1, 1, 1) spacerItem3 = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem3, 1, 0, 1, 1) self.horizontalLayout_3 = QtGui.QHBoxLayout() self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.label_6 = QtGui.QLabel(self.page_2) self.label_6.setMinimumSize(QtCore.QSize(100, 100)) self.label_6.setMaximumSize(QtCore.QSize(100, 100)) self.label_6.setText("") self.label_6.setPixmap(QtGui.QPixmap(":/tk_nuke_quickreview/complete.png")) self.label_6.setScaledContents(True) self.label_6.setObjectName("label_6") self.horizontalLayout_3.addWidget(self.label_6) self.verticalLayout_3 = QtGui.QVBoxLayout() self.verticalLayout_3.setObjectName("verticalLayout_3") spacerItem4 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_3.addItem(spacerItem4) self.label_8 = QtGui.QLabel(self.page_2) self.label_8.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByKeyboard|QtCore.Qt.LinksAccessibleByMouse) self.label_8.setObjectName("label_8") self.verticalLayout_3.addWidget(self.label_8) self.jump_to_shotgun = QtGui.QPushButton(self.page_2) self.jump_to_shotgun.setObjectName("jump_to_shotgun") self.verticalLayout_3.addWidget(self.jump_to_shotgun) self.jump_to_panel = QtGui.QPushButton(self.page_2) self.jump_to_panel.setObjectName("jump_to_panel") self.verticalLayout_3.addWidget(self.jump_to_panel) spacerItem5 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_3.addItem(spacerItem5) self.horizontalLayout_3.addLayout(self.verticalLayout_3) self.gridLayout.addLayout(self.horizontalLayout_3, 1, 1, 1, 1) spacerItem6 = QtGui.QSpacerItem(31, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.gridLayout.addItem(spacerItem6, 1, 2, 1, 1) spacerItem7 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.gridLayout.addItem(spacerItem7, 2, 1, 1, 1) self.stack_widget.addWidget(self.page_2) self.gridLayout_3.addWidget(self.stack_widget, 0, 0, 1, 1) self.line = QtGui.QFrame(Dialog) self.line.setFrameShape(QtGui.QFrame.HLine) self.line.setFrameShadow(QtGui.QFrame.Sunken) self.line.setObjectName("line") self.gridLayout_3.addWidget(self.line, 1, 0, 1, 1) self.horizontalLayout_2 = QtGui.QHBoxLayout() self.horizontalLayout_2.setObjectName("horizontalLayout_2") spacerItem8 = QtGui.QSpacerItem(148, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem8) self.cancel = QtGui.QPushButton(Dialog) self.cancel.setObjectName("cancel") self.horizontalLayout_2.addWidget(self.cancel) self.submit = QtGui.QPushButton(Dialog) self.submit.setObjectName("submit") self.horizontalLayout_2.addWidget(self.submit) self.gridLayout_3.addLayout(self.horizontalLayout_2, 2, 0, 1, 1) self.retranslateUi(Dialog) self.stack_widget.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(Dialog) Dialog.setTabOrder(self.description, self.version_name) Dialog.setTabOrder(self.version_name, self.start_frame) Dialog.setTabOrder(self.start_frame, self.end_frame) Dialog.setTabOrder(self.end_frame, self.submit) Dialog.setTabOrder(self.submit, self.cancel) Dialog.setTabOrder(self.cancel, self.jump_to_panel)
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(367, 464) self.verticalLayout = QtGui.QVBoxLayout(Dialog) self.verticalLayout.setObjectName("verticalLayout") self.label = QtGui.QLabel(Dialog) self.label.setText("") self.label.setPixmap(QtGui.QPixmap(":/res/tank_logo.png")) self.label.setObjectName("label") self.verticalLayout.addWidget(self.label) self.groupBox = QtGui.QGroupBox(Dialog) self.groupBox.setTitle("") self.groupBox.setObjectName("groupBox") self.gridLayout = QtGui.QGridLayout(self.groupBox) self.gridLayout.setObjectName("gridLayout") self.label_2 = QtGui.QLabel(self.groupBox) self.label_2.setObjectName("label_2") self.gridLayout.addWidget(self.label_2, 0, 0, 1, 1) self.template_preview = QtGui.QLabel(self.groupBox) self.template_preview.setObjectName("template_preview") self.gridLayout.addWidget(self.template_preview, 0, 2, 1, 1) self.label_8 = QtGui.QLabel(self.groupBox) self.label_8.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.label_8.setObjectName("label_8") self.gridLayout.addWidget(self.label_8, 7, 0, 1, 1) self.fields = QtGui.QLabel(self.groupBox) self.fields.setMinimumSize(QtCore.QSize(0, 60)) self.fields.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.fields.setWordWrap(True) self.fields.setObjectName("fields") self.gridLayout.addWidget(self.fields, 7, 2, 1, 1) self.name = QtGui.QLineEdit(self.groupBox) self.name.setObjectName("name") self.gridLayout.addWidget(self.name, 3, 2, 1, 1) self.label_4 = QtGui.QLabel(self.groupBox) self.label_4.setObjectName("label_4") self.gridLayout.addWidget(self.label_4, 3, 0, 1, 1) self.label_15 = QtGui.QLabel(self.groupBox) self.label_15.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.label_15.setObjectName("label_15") self.gridLayout.addWidget(self.label_15, 4, 0, 1, 1) self.context = QtGui.QLabel(self.groupBox) self.context.setMinimumSize(QtCore.QSize(0, 60)) self.context.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.context.setWordWrap(True) self.context.setObjectName("context") self.gridLayout.addWidget(self.context, 4, 2, 1, 1) self.path = QtGui.QLabel(self.groupBox) self.path.setObjectName("path") self.gridLayout.addWidget(self.path, 8, 2, 1, 1) self.label_3 = QtGui.QLabel(self.groupBox) self.label_3.setObjectName("label_3") self.gridLayout.addWidget(self.label_3, 8, 0, 1, 1) self.verticalLayout.addWidget(self.groupBox) spacerItem = QtGui.QSpacerItem(20, 26, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout.addItem(spacerItem) self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog)
def __init__(self, app): QtGui.QWidget.__init__(self) self.app = app debug(app=self.app, method='MainUI', message='MainUI initialized...', verbose=False) #self.tk = sgtk.sgtk_from_path("T:/software/bubblebathbay") self.mainLayout = QtGui.QVBoxLayout(self) debug(app=self.app, method='MainUI', message='mainLayout built...', verbose=False) ## Buttons self.buttonsGroupBox = QtGui.QGroupBox(self) self.buttonsGroupBox.setTitle('MDL/SRF:') debug(app=self.app, method='MainUI', message='self.optionsGroupBox built...', verbose=False) self.optionsLayout = QtGui.QGridLayout(self.buttonsGroupBox) debug(app=self.app, method='MainUI', message='self.optionsLayout built...', verbose=False) self.groupPaintedButton = QtGui.QPushButton('Cleanup Painted Archives') self.groupPaintedButton.released.connect(self.cleanUpPaintedArchives) self.groupPaintedButton.setToolTip( 'This is used to clean up your scene after doing a paint of the core_archives' ) self.cleanDeadCAButton = QtGui.QPushButton('Remove Dead Core Archives') self.cleanDeadCAButton.released.connect( coreLib.cleanupDeadCoreArchives) self.cleanDeadCAButton.setToolTip( 'Used to clean out any old core_archives.\nNOTE: If you have old namspaces left over newly imported core_archives\nwill have bad names so manually cleanup any left over namespaces!' ) self.removeAllNSButton = QtGui.QPushButton(Icon('skull.png'), 'Remove ALL Namespaces', self) self.removeAllNSButton.released.connect(cleanup.removeAllNS) self.removeAllNSButton.setToolTip( 'Cleans ALL namespaces from scene.\nDO NOT USE if you have active core archives in the scene you want to keep!\nUse ONLY on a full scene cleanup!' ) self.removeAllNSButton.setStyleSheet( "QPushButton {text-align: center; background: dark red}") self.prepPublishButton = QtGui.QPushButton('Prep for Publish') self.prepPublishButton.released.connect(self.prepForPublish) self.prepPublishButton.setToolTip( 'This can be used to clean a scenes archives prep for publish pre a full rebuild' ) ## THE PREVIEW STUFF GIN DID self.corePreviewSetupButton = QtGui.QPushButton('corePreviewSetup') self.corePreviewSetupButton.released.connect(coreLib.corePreviewSetup) self.corePreviewSetupButton.setToolTip( 'This can be used to preview your full res core archives') self.previewOnButton = QtGui.QPushButton( 'Turn Vis on For CArch Preview Meshes') self.previewOnButton.released.connect( partial(coreLib.cPreview_visibility, True)) self.previewOnButton.setToolTip( 'Turn on the vis for the high res preview meshes') self.previewOffButton = QtGui.QPushButton( 'Turn Vis Off For CArch Preview Meshes') self.previewOffButton.released.connect( partial(coreLib.cPreview_visibility, False)) self.previewOffButton.setToolTip( 'Turn off the vis for the high res preview meshes') self.coresOnButton = QtGui.QPushButton('Turn Vis on For CArchs') self.coresOnButton.released.connect( partial(coreLib.cArch_visibility, True)) self.coresOnButton.setToolTip('Turn on the vis for the core archives') self.coresOffButton = QtGui.QPushButton('Turn Vis Off For CArchs') self.coresOffButton.released.connect( partial(coreLib.cArch_visibility, False)) self.coresOffButton.setToolTip( 'Turn off the vis for the core archives') self.deletePreviewButton = QtGui.QPushButton( Icon('skull.png'), 'Remove CArch Preview Meshes', self) self.deletePreviewButton.released.connect( coreLib.deleteCorePreviewSetup) self.deletePreviewButton.setToolTip( 'Remove all high res preview meshes') self.deletePreviewButton.setStyleSheet( "QPushButton {text-align: center; background: dark red}") self.optionsLayout.addWidget(self.groupPaintedButton, 0, 0) self.optionsLayout.addWidget(self.cleanDeadCAButton, 0, 1) self.optionsLayout.addWidget(self.removeAllNSButton, 0, 2) self.optionsLayout.addWidget(self.prepPublishButton, 0, 3) self.optionsLayout.addWidget(self.corePreviewSetupButton, 1, 0) self.optionsLayout.addWidget(self.previewOnButton, 1, 1) self.optionsLayout.addWidget(self.previewOffButton, 1, 2) self.optionsLayout.addWidget(self.coresOnButton, 1, 3) self.optionsLayout.addWidget(self.coresOffButton, 1, 4) self.optionsLayout.addWidget(self.deletePreviewButton, 1, 5) self.lightingGroupBox = QtGui.QGroupBox(self) self.lightingGroupBox.setTitle('MDL/SRF/LIGHT:') self.lightingLayout = QtGui.QVBoxLayout(self.lightingGroupBox) ## The big bad rebuild all button self.rebuildAllButton = QtGui.QPushButton( 'Full Scene Rebuild of Core archives') self.rebuildAllButton.released.connect(self.rebuildArchives) self.rebuildAllButton.setToolTip( 'Use this to cleanup all the duplicated archives with a full rebuild of the scene.' ) self.lightingLayout.addWidget(self.rebuildAllButton) ## Delete Core Archive button self.removeCAButton = QtGui.QPushButton( 'Full cleanup of Core Archive!') self.removeCAButton.released.connect(self.removeCoreArchiveSetup) self.removeCAButton.setToolTip( 'Use this to remove all the core archive related stuffs.') self.removeCAButton.setStyleSheet( "QPushButton {text-align: center; background: dark red}") self.lightingLayout.addWidget(self.removeCAButton) self.mainLayout.addWidget(self.buttonsGroupBox) self.mainLayout.addWidget(self.lightingGroupBox) self.resize(self.sizeHint())
def __init__(self, app): """ """ QtGui.QWidget.__init__(self) self.app = app # debug(self.app, method = 'MainUI.__init__', message = 'Running app...', verbose = True) self.context = self.app.context ## To get the step # debug(app = self.app, method = 'MainUI.__init__', message = 'context: %s' % self.context, verbose = True) # debug(app = self.app, method = 'MainUI.__init__', message = 'context Step...%s' % self.context.step['name'], verbose = True) if self.context.step['name'] == 'Blocking': self.tk = sgtk.sgtk_from_path("T:/software/bubblebathbay") self.baseTemplatePath = self.tk.templates[self.app.get_setting( 'shotPathTemplate')] self.baseTemplateMoviePath = self.tk.templates[ self.app.get_setting('movie_workpath_template')] # debug(app = self.app, method = 'MainUI.__init__', message = 'self.baseTemplatePath: %s' % self.baseTemplatePath, verbose = True) ################### UI LOAD / BUILD NOW ## Now build the UI self.mainLayout = QtGui.QVBoxLayout(self) # List of shots to split self.treeWidget = QtGui.QTreeWidget() self.treeWidget.setHeaderLabel('Shots') self.treeWidgetItems = [] self.mySubShots = self._getSubShots() for each in self.mySubShots: self.treeWidgetItem = QtGui.QTreeWidgetItem([each['name']]) self.treeWidgetItem.setCheckState(0, QtCore.Qt.Checked) self.treeWidgetItems.append(self.treeWidgetItem) self.treeWidget.addTopLevelItems(self.treeWidgetItems) ## Setup the layout and buttons self.splitLayoutGroupBox = QtGui.QGroupBox(self) self.splitLayoutGroupBox.setTitle('Split Shot Loader:') # debug(self.app, method = 'MainUI.__init__', message = 'splitLayoutGroupBox built successfully...', verbose = True) # self.buttonLayout = QtGui.QHBoxLayout(self.splitLayoutGroupBox) self.buttonLayout = QtGui.QHBoxLayout() self.createCamera = QtGui.QPushButton('Create Shot Cameras') self.createCamera.clicked.connect(self._createShotCameras) self.fetchStoryBoardButton = QtGui.QPushButton('Fetch StoryBoard') self.fetchStoryBoardButton.clicked.connect(self._fetchStoryBoard) self.splitLayoutShotsButton = QtGui.QPushButton('Split layout Shots') self.splitLayoutShotsButton.clicked.connect(self._splitLayoutShots) self.localPlayblastButton = QtGui.QPushButton('Local Playblast') self.localPlayblastButton.clicked.connect(self._localPlayblast) # self.shotBasedSBoardButton = QtGui.QPushButton('Single Shot SBoard') # self.shotBasedSBoardButton.clicked.connect(self._singleShotSBoard) # self.cleanupButton = QtGui.QPushButton('Cleanup') # self.cleanupButton.clicked.connect(self._cleanup) # debug(self.app, method = 'MainUI.__init__', message = 'All buttons built successfully', verbose = True) ## Add the buttons to their layout widget self.buttonLayout.addWidget(self.fetchStoryBoardButton) self.buttonLayout.addWidget(self.splitLayoutShotsButton) self.buttonLayout.addWidget(self.localPlayblastButton) self.buttonLayout.addWidget(self.createCamera) # self.buttonLayout.addWidget(self.cleanupButton) self.mainLayout.addWidget(self.splitLayoutGroupBox) self.mainLayout.addWidget(self.treeWidget) self.mainLayout.addLayout(self.buttonLayout) self.mainLayout.addStretch(1) self.resize(300, 20)
def __init__(self, app): """ main UI for the Maya Create Ocean options """ QtGui.QWidget.__init__(self) self.app = app tk = sgtk.sgtk_from_path("T:/software/bubblebathbay") self.editor = self._getEditor() ## To get the step context = self.app.context debug(self.app, method = 'run_app', message = 'Context Step: %s' % context.step['name'], verbose = False) if context.step['name'] == 'FX' or context.step['name'] == 'Additional FX': self.editor = 'modelPanel4' if self.editor: debug(self.app, method = 'Main_UI', message = 'Lauching UI', verbose = False) ## Setup the paths for the presets and defaults etc... scene_path = os.path.abspath(cmds.file(query=True, sn= True)) debug(self.app, method = 'Main_UI', message = 'scene_path: %s' % scene_path, verbose = False) epName = scene_path.split('\\')[3] ###NOTE NO UNDERSCORES ARE ALLOWED HERE OR THE F*****G THING FAILS MISERABLY!!! FOR ***HOURS*** OF YOUR PRECIOUS LIFE!! wakePreset = 'newOceanWakeTexture' foamPreset = 'newOceanWakeFoamTexture' oceanDefaultPreset = 'oceanDefaultPreset' wakeEmitterPreset = 'wakeEmitter.mel' foamEmitterPreset = 'foamEmitter.mel' hullEmitterPreset = 'hullEmitter.mel' ## Now work out the published animation fx folder to get the ocean preset from for the published animation so our maya ocean matches after rebuild. entity = self.app.context.entity debug(self.app, method = 'Main_UI', message = 'entity: %s' % entity, verbose = False) debug(self.app, method = 'Main_UI', message = 'context.step["name"]: %s' % context.step['name'], verbose = False) ## Now get the templates from the shot_step.yml ## ocean_preset_template: maya_shot_oceanPresets ## ocean_publish_template: maya_shot_publishOceanCache oceanPublishTemplate = self.app.get_template('ocean_publish_template') ## maya_shot_oceanPresets: '@presetsRoot/ocean/{presetName}.mel' oceanWakePresetTemplate = self.app.get_template('ocean_preset_template') oceanFoamPresetTemplate = self.app.get_template('ocean_preset_template') oceanDefaultPresetTemplate = self.app.get_template('ocean_preset_template') animOceanPublishedPresetTemplate = self.app.get_template('shotfx_publish_template') ## maya_shot_publishOceanCache: '@shot_root/publish/fluids/{name}.v{version}.abc' debug(self.app, method = 'Main_UI', message = 'ocean_publish_template: %s' % oceanPublishTemplate, verbose = False) debug(self.app, method = 'Main_UI', message = 'oceanWakePresetTemplate: %s' % oceanWakePresetTemplate, verbose = False) debug(self.app, method = 'Main_UI', message = 'oceanFoamPresetTemplate: %s' % oceanFoamPresetTemplate, verbose = False) debug(self.app, method = 'Main_UI', message = 'oceanDefaultPresetTemplate: %s' % oceanDefaultPresetTemplate, verbose = False) debug(self.app, method = 'Main_UI', message = 'animOceanPublishedPresetTemplate: %s' % animOceanPublishedPresetTemplate, verbose = False) print ## Now get ready to convert these to / pathing using the r approach ## CONVERT WAKE TO A PROPER PATH self.wakePresetPath = r'%s' % oceanWakePresetTemplate.apply_fields({'presetName' : wakePreset}) debug(self.app, method = 'Main_UI', message = 'self.wakePresetPath: %s' % self.wakePresetPath.replace('\\', '/'), verbose = False) ## CONVERT FOAM TO A PROPER PATH self.foamPresetPath = r'%s' % oceanFoamPresetTemplate.apply_fields({'presetName' : foamPreset}) debug(self.app, method = 'Main_UI', message = 'self.foamPresetPath: %s' % self.foamPresetPath.replace('\\', '/'), verbose = False) ############################################################## ################ Process ocean preset path for Anim or FX step | Animation will use default preset, FX will use published preset. ############################################################## isFX = False if cmds.objExists('fxNugget'): debug(self.app, method = 'Main_UI', message = 'fxNugget found...', verbose = False) # getAnimVersionFolders = tk.paths_from_template(animOceanPublishedPresetTemplate, {'id' : entity["id"], 'Shot' : entity["name"]}) getAnimVersionFolders = tk.paths_from_template(animOceanPublishedPresetTemplate, {'Step' : 'Anm', 'id' : entity["id"], 'Shot' : entity["name"]}) debug(self.app, method = 'Main_UI', message = 'getAnimVersionFolders: %s' % getAnimVersionFolders, verbose = False) highestAnimVerFolder = max(getAnimVersionFolders) debug(self.app, method = 'Main_UI', message = 'Path to highest oceanPreset AnimVerFolder: %s' % highestAnimVerFolder, verbose = False) if not highestAnimVerFolder: cmds.warning('THERE IS NO PUBLISHED OCEAN PRESET FROM ANIMAITON! PLEASE FIX THIS NOW!') isFX = True else: cmds.warning('NO FX NUGGET FOUND!') getAnimVersNum = None isFX = False ############################################################## ################ Now set the preset path properly ############################################################## self.oceanPublishedPresetPath = None debug(self.app, method = 'Main_UI', message = 'Figuring out the ocean preset path now...', verbose = False) debug(self.app, method = 'Main_UI', message = 'isFX: %s' % isFX, verbose = False) if context.step['name'] == 'Anm' or context.step['name'] == 'FX' or context.step['name'] == 'Additional FX' or context.step['name'] == 'Blocking': if isFX: getMelPreset = [eachMel for eachMel in os.listdir(highestAnimVerFolder) if eachMel.endswith('.mel')] debug(self.app, method = 'Main_UI', message = 'getMelPreset: %s' % getMelPreset, verbose = False) if not getMelPreset: cmds.warning('NO ANIMATION OCEAN PRESET FOUND, USING THE DEFAULT.') debug(self.app, method = 'Main_UI', message = 'No published animation ocean preset found!!! Using default! NOT GOOD!', verbose = False) self.oceanPublishedPresetPath = r'%s' % oceanDefaultPresetTemplate.apply_fields({'presetName' : oceanDefaultPreset}) debug(self.app, method = 'Main_UI', message = 'self.oceanPublishedPresetPath: %s' % self.oceanPublishedPresetPath, verbose = False) else: presetPath = r'%s\%s' % (highestAnimVerFolder, getMelPreset[0]) debug(self.app, method = 'Main_UI', message = 'Using published ocean preset: %s' % presetPath, verbose = False) self.oceanPublishedPresetPath = presetPath debug(self.app, method = 'Main_UI', message = 'self.oceanPublishedPresetPath: %s' % self.oceanPublishedPresetPath, verbose = False) else: debug(self.app, method = 'Main_UI', message = 'No getAnimVersionFolders found... must be an animation scene or blocking scene setting default ocean preset template now', verbose = False) self.oceanPublishedPresetPath = r'%s' % oceanDefaultPresetTemplate.apply_fields({'presetName' : oceanDefaultPreset}) debug(self.app, method = 'Main_UI', message = 'self.oceanPublishedPresetPath: %s' % self.oceanPublishedPresetPath, verbose = False) else: debug(self.app, method = 'Main_UI', message = 'Context step is %s.' % context.step['name'], verbose = False) self.oceanPublishedPresetPath = r'%s' % oceanDefaultPresetTemplate.apply_fields({'presetName' : oceanDefaultPreset}) debug(self.app, method = 'Main_UI', message = 'self.oceanPublishedPresetPath: %s' % self.oceanPublishedPresetPath, verbose = False) ## Now build the UI self.mainLayout = QtGui.QVBoxLayout(self) ## High and Low Tide layout self.lowhiLayout = QtGui.QHBoxLayout(self) self.highTide = QtGui.QRadioButton('High Tide') self.highTide.setChecked(True) self.highTide.setEnabled(False) self.highTide.hide() self.lowTide = QtGui.QRadioButton('Low Tide') self.lowTide.setChecked(False) self.lowTide.setEnabled(False) self.lowTide.hide() ## Now parent these tot the layout self.lowhiLayout.addWidget(self.highTide) self.lowhiLayout.addWidget(self.lowTide) self.lowhiLayout.addStretch(1) debug(self.app, method = 'Main_UI', message = 'lowhiLayout built successfully...', verbose = False) ## Animation ocean setup self.animGroupBox = QtGui.QGroupBox(self) self.animGroupBox.setTitle('Animation Ocean Setup:') debug(self.app, method = 'Main_UI', message = 'animGroupBox built successfully...', verbose = False) self.animLayout = QtGui.QVBoxLayout(self.animGroupBox) debug(self.app, method = 'Main_UI', message = 'animLayout built successfully...', verbose = False) ## Build Base Animation Ocean Setup Button self.buildOceanButton = QtGui.QPushButton('Setup Animation Ocean') self.buildOceanButton.setStyleSheet("QPushButton {text-align: center; background: dark green; color: white}") self.buildOceanButton.pressed.connect(partial(oceanBuilder.buildAnimOcean, self.editor, self.oceanPublishedPresetPath, self.foamPresetPath.replace('\\', '/'), self.wakePresetPath.replace('\\', '/'), self.highTide.isChecked())) debug(self.app, method = 'Main_UI', message = 'self.buildOceanButton connected..', verbose = False) ## Fetch FX Cache for interactive wake referencing self.fetchWakeFromFXButton = QtGui.QPushButton('Fetch Cache from FX') self.fetchWakeFromFXButton.setStyleSheet("QPushButton {text-align: center; background: dark orange; color: black}") self.fetchWakeFromFXButton.pressed.connect(self.get_shotfx_publish_dirs) debug(self.app, method = 'Main_UI', message = 'self.fetchWakeFromFXButton connected..', verbose = False) # ## Setup Interactive Ocean On Selected world_ctrl button # self.buildInteractiveOceanButton = QtGui.QPushButton('Setup Interactive Ocean On Sel world_ctrl') # self.buildInteractiveOceanButton.pressed.connect(self.setupInteractionOcean) # self.buildInteractiveOceanButton.setEnabled(False) # debug(self.app, method = 'Main_UI', message = 'self.buildInteractiveOceanButton connected..', verbose = False) # # ## Apply Fluid Emitter Presets button # self.buildInteractivePresetsButton = QtGui.QPushButton('Apply Fluid Emitter Presets') # self.buildInteractivePresetsButton.pressed.connect(partial(fluidLib._setFluidEmitterPresets, wakeEmitterPreset, foamEmitterPreset, hullEmitterPreset)) # self.buildInteractivePresetsButton.setEnabled(False) # debug(self.app, method = 'Main_UI', message = 'self.buildInteractivePresetsButton connected..', verbose = False) self.animLayout.addWidget(self.buildOceanButton) self.animLayout.addWidget(self.fetchWakeFromFXButton) # self.animLayout.addWidget(self.buildInteractiveOceanButton) # self.animLayout.addWidget(self.buildInteractivePresetsButton) debug(self.app, method = 'Main_UI', message = 'animLayout built successfully...', verbose = False) ###################################### ##### FX STUFF if context.step['name'] == 'FX' or context.step['name'] == 'Additional FX': ############################### ## BUILD THE MAIN BUILD BUTTONS ############################### self.FXBuildGroupBox = QtGui.QGroupBox(self) self.FXBuildGroupBox.setTitle('FX Build Stuff:') self.mainFXBuildLayout = QtGui.QVBoxLayout(self.FXBuildGroupBox) self.hLayout = QtGui.QHBoxLayout(self) self.buildFXOceanSetupButton = QtGui.QPushButton('1. Setup FX Ocean') self.buildFXOceanSetupButton.pressed.connect(partial(self.setupFXOcean, highestAnimVerFolder)) self.buildFXOceanSetupButton.setStyleSheet("QPushButton {text-align: center; background: dark green}") self.buildPresetsButton = QtGui.QPushButton('2. Apply All Fluid Emitter Presets') self.buildPresetsButton.pressed.connect(partial(fluidLib._setFluidEmitterPresets, wakeEmitterPreset, foamEmitterPreset, hullEmitterPreset)) self.buildPresetsButton.setStyleSheet("QPushButton {text-align: center; background: dark green}") # self.buildParticlesPresetsButton = QtGui.QPushButton('3. Apply All Particle Presets') # self.buildParticlesPresetsButton.pressed.connect(self._setPresets) # self.buildParticlesPresetsButton.setStyleSheet("QPushButton {text-align: center; background: dark green}") ## Add the buttons to the hLayout self.hLayout.addWidget(self.buildFXOceanSetupButton) self.hLayout.addWidget(self.buildPresetsButton) # self.hLayout.addWidget(self.buildParticlesPresetsButton) debug(self.app, method = 'Main_UI', message = 'Added widgets to hLayout', verbose = False) self.mainFXBuildLayout.addLayout(self.hLayout) ############################### ## BUILD THE MAIN VIEW SWITCHING BUTTONS ############################### self.FXViewGroupBox = QtGui.QGroupBox(self) self.FXViewGroupBox.setTitle('Change FX Scene Settings:') self.mainFXViewLayout = QtGui.QVBoxLayout(self.FXViewGroupBox) self.h2Layout = QtGui.QHBoxLayout(self) self._setForRenderButton = QtGui.QPushButton('Apply Render View Settings') self._setForRenderButton.pressed.connect(partial(self._setForRender)) self._setForRenderButton.setStyleSheet("QPushButton {text-align: center; background: dark grey}") self._setForFluidsButton = QtGui.QPushButton('Apply Fluid View Settings') self._setForFluidsButton.pressed.connect(partial(self._setForFluids)) self._setForFluidsButton.setStyleSheet("QPushButton {text-align: center; background: dark grey}") # self._fetchAnimAlembicButton = QtGui.QPushButton(Icon('alembic.png'), 'Fetch Alembic Anim Caches', self) # self._fetchAnimAlembicButton.pressed.connect(partial(self._fetchAlembicCaches, highestAnimVerFolder)) # self._fetchAnimAlembicButton.setStyleSheet("QPushButton {text-align: center; background: dark grey}") ## Add the buttons to the h2Layout self.h2Layout.addWidget(self._setForRenderButton) self.h2Layout.addWidget(self._setForFluidsButton) # self.h2Layout.addWidget(self._fetchAnimAlembicButton) debug(self.app, method = 'Main_UI', message = 'Added widgets to h2Layout', verbose = False) self.mainFXViewLayout.addLayout(self.h2Layout) ############################## ##### MAIN SETTINGS UI ############################## self.FXSettingsGroupBox = QtGui.QGroupBox(self) self.FXSettingsGroupBox.setTitle('FX Build Settings:') self.mainFXLayout = QtGui.QVBoxLayout(self.FXSettingsGroupBox) self.optionsVBoxLayout = QtGui.QVBoxLayout(self) self.nurbsPreviewOptionsLayout = QtGui.QHBoxLayout() ##xRes of the NURBSPlane self.xResLabel = QtGui.QLabel('zRes') self.xRes = QtGui.QDoubleSpinBox() self.xRes.setRange(0, 100) self.xRes.setSingleStep(1) self.xRes.setValue(20) ##zRes of the NURBSPlane self.zResLabel = QtGui.QLabel('zRes') self.zRes = QtGui.QDoubleSpinBox() self.zRes.setRange(0, 100) self.zRes.setSingleStep(1) self.zRes.setValue(20) debug(self.app, method = 'Main_UI', message = 'Nurbs Preview options built...', verbose = False) self.mistPresetLabel = QtGui.QLabel('mist_ParticlePreset') self.mistPreset_pullDownMenu = QtGui.QComboBox (self) self.mistPreset_pullDownMenu.setMinimumWidth(250) self.mistPreset_pullDownMenu.setMaximumHeight(25) self.sprayPresetLabel = QtGui.QLabel('spray_ParticlePreset') self.sprayPreset_pullDownMenu = QtGui.QComboBox (self) self.sprayPreset_pullDownMenu.setMinimumWidth(250) self.sprayPreset_pullDownMenu.setMaximumHeight(25) self.rearPresetLabel = QtGui.QLabel('rear_ParticlePreset') self.rearPreset_pullDownMenu = QtGui.QComboBox (self) self.rearPreset_pullDownMenu.setMinimumWidth(250) self.rearPreset_pullDownMenu.setMaximumHeight(25) ## Add the res to the layout self.nurbsPreviewOptionsLayout.addWidget(self.xResLabel) self.nurbsPreviewOptionsLayout.addWidget(self.xRes) self.nurbsPreviewOptionsLayout.addWidget(self.zResLabel) self.nurbsPreviewOptionsLayout.addWidget(self.zRes) self.nurbsPreviewOptionsLayout.addWidget(self.mistPresetLabel) self.nurbsPreviewOptionsLayout.addWidget(self.mistPreset_pullDownMenu) self.nurbsPreviewOptionsLayout.addWidget(self.sprayPresetLabel) self.nurbsPreviewOptionsLayout.addWidget(self.sprayPreset_pullDownMenu) self.nurbsPreviewOptionsLayout.addWidget(self.rearPresetLabel) self.nurbsPreviewOptionsLayout.addWidget(self.rearPreset_pullDownMenu) self.nurbsPreviewOptionsLayout.addStretch(1) debug(self.app, method = 'Main_UI', message = 'Added widgets to nurbsPreviewOptionsLayout', verbose = False) self.optionsVBoxLayout .addLayout(self.nurbsPreviewOptionsLayout) self.mainFXLayout.addLayout(self.optionsVBoxLayout) debug(self.app, method = 'Main_UI', message = 'FXSettingsGroupBox built successfully...', verbose = False) ################################# ############################## ##### OPTIONS BOX BUILD self.FXOptionsGroupBox = QtGui.QGroupBox(self) self.FXOptionsGroupBox.setTitle('FX Ocean Manual Hookups:') self.FXOptionsMainLayout = QtGui.QVBoxLayout(self.FXOptionsGroupBox) ### MANUAL BUILD BUTTONS self.optionshLayout = QtGui.QHBoxLayout() # self.connectAllWithOceanButton = QtGui.QPushButton('FX / Connect Height Locks To Ocean') # self.connectAllWithOceanButton.pressed.connect(partial(connOH.connectAllWithOceanHeightAttr)) # debug(self.app, method = 'Main_UI', message = 'self.connectAllWithOceanButton built...', verbose = False) ############################################################# self.connectToOceanButton = QtGui.QToolButton(self) self.connectToOceanButton.setPopupMode(QtGui.QToolButton.MenuButtonPopup) self.connectToOceanButton.setStyleSheet("QToolButton {text-align: center; background: rgb(100, 100, 100); color: white}") connectToOceanButtonStretchPolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed) self.connectToOceanButton.setSizePolicy(connectToOceanButtonStretchPolicy) self.connectToOceanButton.setText('All Ocean Hookup') self.connectToOceanButton.setMenu( QtGui.QMenu(self.connectToOceanButton) ) self.connectToOceanButton.clicked.connect(self.connectOceanHeights) self.connectToOceanListWidget = QtGui.QListWidget() self.connectToOceanListWidget.setFixedHeight(60) self.connectToOceanListWidget.addItem('Dock') self.connectToOceanListWidget.addItem('Boat') self.connectToOceanListWidget.addItem('Prop') self.connectToOceanListWidget.addItem('All') self.connectToOceanListWidget.clicked.connect(self.connectToOceanButtonText) self.connectToOceanAction = QtGui.QWidgetAction(self.connectToOceanButton) self.connectToOceanAction.setDefaultWidget(self.connectToOceanListWidget) self.connectToOceanButton.menu().addAction(self.connectToOceanAction) ############################################################# if context.step['name'] == 'FX' or context.step['name'] == 'Additional FX': self.animShaderIntersectButton = QtGui.QPushButton('Anim Intersect') self.animShaderIntersectButton.pressed.connect( partial( fluidLib._intersect_animShader_expression ) ) debug(self.app, method = 'Main_UI', message = 'self.animShaderIntersectButton built...', verbose = False) self.dispShaderIntersectButton = QtGui.QPushButton('Disp Intersect') self.dispShaderIntersectButton.pressed.connect( partial( fluidLib._intersect_dispShader_expression ) ) debug(self.app, method = 'Main_UI', message = 'self.dispShaderIntersectButton built...', verbose = False) self.linkEmittersButton = QtGui.QPushButton('FX / Link Emitters To Ocean') self.linkEmittersButton.pressed.connect(partial(fluidLib._linkWakeEmitters)) debug(self.app, method = 'Main_UI', message = 'self.linkEmittersButton built...', verbose = False) self.optionshLayout.addWidget(self.connectToOceanButton) ## Add the buttons to the optionshLayout if context.step['name'] == 'FX' or context.step['name'] == 'Additional FX': self.optionshLayout.addWidget(self.animShaderIntersectButton) self.optionshLayout.addWidget(self.dispShaderIntersectButton) self.optionshLayout.addWidget(self.linkEmittersButton) ### Now parent the FXOption layouts to the options main VBoxLayout self.FXOptionsMainLayout.addLayout(self.optionshLayout) ############################### ## FX INTERACTIVE SECTION ############################### if context.step['name'] == 'FX' or context.step['name'] == 'Additional FX': ## MAIN SECTION self.FXInteractiveGroupBox = QtGui.QGroupBox(self) self.FXInteractiveGroupBox.setTitle('FX Interactive:') self.FXInteractiveMainLayout = QtGui.QVBoxLayout(self.FXInteractiveGroupBox) ## MAIN LAYOUT self.FXInteractiveLayout = QtGui.QHBoxLayout() ## SETUP BUTTONS self.cacheFluidsButton = QtGui.QPushButton('Cache fluids') self.cacheFluidsButton.pressed.connect(fc.cacheFluidsToCTemp) self.cacheFluidsButton.setStyleSheet("QPushButton {text-align: center; background: dark orange; color: black}") # self.cacheFluidsButton.setEnabled(False) self.previewInteractiveButton = QtGui.QPushButton('Preview Interactive') self.previewInteractiveButton.pressed.connect(fc.previewInteractiveCaches) self.previewInteractiveButton.setStyleSheet("QPushButton {text-align: center; background: dark orange; color: black}") # self.previewInteractiveButton.setEnabled(False) self.cleanupCacheFilesButton = QtGui.QPushButton('Cleanup fluids caches') self.cleanupCacheFilesButton.setStyleSheet("QPushButton {text-align: center; background: dark orange; color: black}") self.cleanupCacheFilesButton.pressed.connect(fc.deleteCaches) # self.cleanupCacheFilesButton.setEnabled(False) self.cleanupICacheFilesButton = QtGui.QPushButton('Cleanup interactive caches') self.cleanupICacheFilesButton.setStyleSheet("QPushButton {text-align: center; background: dark orange; color: black}") self.cleanupICacheFilesButton.pressed.connect(fc.deleteInteractiveCaches) # self.cleanupICacheFilesButton.setEnabled(False) ## ADD BUTTON TO LAYOUT self.FXInteractiveLayout.addWidget(self.cacheFluidsButton) self.FXInteractiveLayout.addWidget(self.previewInteractiveButton) self.FXInteractiveLayout.addWidget(self.cleanupCacheFilesButton) self.FXInteractiveLayout.addWidget(self.cleanupICacheFilesButton) ## Now parent the FXOption layouts to the options main VBoxLayout self.FXInteractiveMainLayout.addLayout(self.FXInteractiveLayout) ############################### ## BUILD THE FX LIBRARY STUFFS ############################### if context.step['name'] == 'FX' or context.step['name'] == 'Additional FX': self.FXLibGroupBox = QtGui.QGroupBox(self) self.FXLibGroupBox.setTitle('FX Library:') self.FXLibMainLayout = QtGui.QVBoxLayout(self.FXLibGroupBox) ### HORIZONTAL BOX LAYOUT self.fxLibshLayout = QtGui.QGridLayout() j = 0 pos = [ (0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (4, 0), (4, 1), (4, 2), (4, 3), (4, 4), ] fxNames = [('Boat Splash', fxLib.splashRigger, 'Creates a spherical volumetric emitter that emits sprite as splashes'), ('Splash Tool v1.0', self.openSplashTool,'working'), ('Bubble on selected Mesh(s)', fxLib.bubbleSetup, 'Creates bubble setup on selected mesh'), ('Kill Field', fxLib.nParticle_killField, 'How it works?\n - Creates a uniform field (change-able) volume shapes that kills any particles when in contact.\n - LifespanPP expression line added into runtime after dynamics of nParticleShape.\n - Lifespan mode needs to be changed to lifespanPP in order to work.\n\nUsage\n - Select nParticle(s) and click button.'), ('Wake / Foam Emitter', fluidLib._addWakeEmitter), ('-', fxLib._underConstruction), ('-', fxLib._underConstruction), ('-', fxLib._underConstruction), ('-', fxLib._underConstruction), ('-', fxLib._underConstruction), ] for fxName in fxNames: buttonName = fxName[0] buttonFunc = fxName[1] buttonToolTip = fxName[2] if len(fxName) == 3 else None button = QtGui.QPushButton(buttonName) button.pressed.connect( partial(buttonFunc) ) if buttonToolTip: button.setToolTip(buttonToolTip) self.fxLibshLayout.addWidget(button, pos[j][0], pos[j][1]) j += 1 ### Now parent the FXOption layouts to the options main VBoxLayout self.FXLibMainLayout.addLayout(self.fxLibshLayout) ############################### ## Delete Ocean Setup self.deleteButton = QtGui.QPushButton('Delete Ocean Setup!') self.deleteButton.setFlat(False) self.deleteButton.pressed.connect(partial(fxLib.removeOceanSetup, context.step["name"])) self.deleteButton.setStyleSheet("QPushButton {text-align: center; background: dark red; color: black}") ## Now add to the mainLayout debug(self.app, method = 'Main_UI', message = 'Parenting widgets....', verbose = False) self.mainLayout.addLayout(self.lowhiLayout) self.mainLayout.addWidget(self.animGroupBox) if context.step['name'] == 'FX' or context.step['name'] == 'Additional FX': self.mainLayout.addWidget(self.FXBuildGroupBox) self.mainLayout.addWidget(self.FXViewGroupBox) self.mainLayout.addWidget(self.FXSettingsGroupBox) self.mainLayout.addWidget(self.FXLibGroupBox) self.mainLayout.addWidget(self.FXInteractiveGroupBox) ## Hide the build settings atm because we're not using them self.FXSettingsGroupBox.hide() self.mainLayout.addWidget(self.FXOptionsGroupBox) self.mainLayout.addWidget(self.deleteButton) self.mainLayout.addStretch(1) self.resize(50,120) if context.step['name'] == 'FX' or context.step['name'] == 'Additional FX': self.animGroupBox.hide() self.populatePulldowns() debug(app = self.app, method = 'Main_UI', message= 'self.xRes.value(): %s' % self.xRes.value(), verbose = False) debug(app = self.app, method = 'Main_UI', message= 'self.zRes.value(): %s' % self.zRes.value(), verbose = False) debug(self.app, method = 'Main_UI', message = 'UI Build SUCCESS.', verbose = False) else: QtGui.QMessageBox.information(None, "Aborted...", 'You must have active a current 3D viewport! \nRight click the viewport to build from as we need to use the camera information.') self.parent.close()
def __init__(self, app): """ """ QtGui.QWidget.__init__(self) self.app = app debug(self.app, method='MainUI.__init__', message='Running app...', verbose=False) self.context = self.app.context debug(self.app, method='MainUI.__init__', message='Context Step: %s' % self.context.step['name'], verbose=False) if self.context.step['name'] != 'FX': tank.TankError("Cannot load, not a valid FX step.") else: debug(app=self.app, method='MainUI.__init__', message='Valid FX step...', verbose=False) ### PROCESS ALL THE SCENE STUFF ## Load the API self.tk = sgtk.sgtk_from_path("T:/software/bubblebathbay") debug(app=self.app, method='MainUI.__init__', message='tk: %s' % self.tk, verbose=False) ## Working scene path scene_path = cmds.file(query=True, sn=True) debug(app=self.app, method='MainUI.__init__', message='scene_path: %s' % scene_path, verbose=False) if not scene_path: cmds.warning("Not a valid scene file...") else: ## Build an entity type to get some values from. self.entity = self.context.entity ## returns {'type': 'Shot', 'name': 'ep100_sh010', 'id': 1166} debug(app=self.app, method='MainUI.__init__', message='self.entity: %s' % self.entity, verbose=False) ## Filter for the matching ID for the shot sg_filters = [["id", "is", self.entity["id"]]] debug(app=self.app, method='MainUI.__init__', message='sg_filters: %s' % sg_filters, verbose=False) ## Build an entity type to get some values from. sg_entity_type = self.entity["type"] ## returns Shot debug(app=self.app, method='MainUI.__init__', message='sg_entity_type: %s' % sg_entity_type, verbose=False) ## Get template path ## primary_publish_template: maya_shot_publish ## maya_shot_publish = '@shot_root/publish/maya/{name}.v{version}.mb' self.templateFile = self.tk.templates[self.app.get_setting( 'primary_publish_template' )] ## returns <Sgtk TemplatePath maya_shot_publish: episodes/{Sequence}/{Shot}/{Step}/publish/maya/{name}.v{version}.mb> debug(app=self.app, method='MainUI.__init__', message='template_path: %s' % self.templateFile, verbose=False) ## Shot name self.shotNum = self.entity["name"] debug(app=self.app, method='MainUI.__init__', message='shotName: %s' % self.shotNum, verbose=False) ## Shot ID self.id = self.entity["id"] debug(app=self.app, method='MainUI.__init__', message='shotId: %s' % self.id, verbose=False) ## Published animation version files getAnimVersionFolders = self.tk.paths_from_template( self.templateFile, { 'Step': 'Anm', 'id': self.id, 'Shot': self.shotNum } ) # returns ['I:\\bubblebathbay\\episodes\\ep101\\ep101_sh019\\Anm\\publish\\maya\\ep101sh019.v003.mb', 'I:\\bubblebathbay\\episodes\\ep101\\ep101_sh019\\Anm\\publish\\maya\\ep101sh019.v001.mb', 'I:\\bubblebathbay\\episodes\\ep101\\ep101_sh019\\Anm\\publish\\maya\\ep101sh019.v002.mb'] if getAnimVersionFolders: debug(app=self.app, method='MainUI.__init__', message='latestPublishedAnimVerFile: %s' % max(getAnimVersionFolders), verbose=False) ####################################### ################### UI LOAD / BUILD NOW ####################################### ## Now build the UI self.mainLayout = QtGui.QVBoxLayout(self) ## Setup the layout and buttons self.fetchingGroupBox = QtGui.QGroupBox(self) self.fetchingGroupBox.setTitle(self.shotNum) self.buttonLayout = QtGui.QHBoxLayout(self.fetchingGroupBox) self.versionCheckerButton = QtGui.QPushButton( 'WORK FILE ----------------------------------- %s | %s ----------------------------------- PUBLISHED FILE' % (self._getSceneVersion(), self._getPublishedLatestVersion())) self.versionCheckerButton.clicked.connect( self._compareAnimVersion) self._compareAnimVersion() ## Add the buttons to their layout widget self.buttonLayout.addWidget(self.versionCheckerButton) self.mainLayout.addWidget(self.fetchingGroupBox) self.mainLayout.addStretch(1) self.resize(300, 20)
def __init__(self, app): """ main UI for STATIC ENV handling I always build my UI in __init__ so suck it up.. """ QtGui.QWidget.__init__(self) self.app = app self.fileBoxes = [] ## Instance the api for talking directly to shotgun. base_url = "http://bubblebathbay.shotgunstudio.com" script_name = 'audioUploader' api_key = 'bbfc5a7f42364edd915656d7a48d436dc864ae7b48caeb69423a912b930bc76a' self.sgsrv = Shotgun(base_url = base_url , script_name = script_name, api_key = api_key, ensure_ascii=True, connect=True) self.shotNum = self._getShotNum()[0] self.currentENV = self._getShotNum()[1] debug(self.app, method = 'MainUI', message = 'self.shotNum: %s' % self.shotNum, verbose = False) debug(self.app, method = 'MainUI', message = 'self.currentENV: %s' % self.currentENV, verbose = False) self.lightAlembicFolder = 'I:/lsapipeline/episodes/ep000/%s/Light/publish/alembic_static' % self.shotNum ## Now build the UI self.mainLayout = QtGui.QHBoxLayout(self) self.leftSideLayout = QtGui.QVBoxLayout(self) debug(self.app, method = 'MainUI', message = 'self.mainLayout built...', verbose = False) ########################## ### ENV SELECTION PULLDOWN self.envLayout = QtGui.QVBoxLayout(self) self.envPulldown = QtGui.QComboBox() getENVS = self.sgsrv.find('Asset', filters = [["code", "contains", 'ENV_'], ["code", "not_contains", '_ENV_'], ["code", "not_contains", 'WORLDMAP'], ["code", "not_contains", 'TSETbuild']], fields=['code']) debug(self.app, method = 'MainUI', message = 'getENVS: %s' % getENVS, verbose = False) if self.shotNum: for each in getENVS: if each['code'] == self.currentENV: self.envPulldown.addItem(each['code']) self.lightAlembicFolder = 'I:/lsapipeline/episodes/ep000/%s/Light/publish/alembic_static' % self.shotNum self.envPulldown.setCurrentIndex(self.envPulldown.findText(self.currentENV)) debug(self.app, method = 'MainUI', message = 'self.envPulldown setCurrentIndex...', verbose = False) else: for each in getENVS: if 'STATIC' in each['code']: self.envPulldown.addItem(each['code']) self.fetchAssetListButton = QtGui.QPushButton(Icon('refresh.png'), 'Fetch Asset List') self.fetchAssetListButton.setStyleSheet("QPushButton {text-align : left}") self.fetchAssetListButton.released.connect(self._fetchAssetList) debug(self.app, method = 'MainUI', message = 'self.fetchAssetListButton built...', verbose = False) self.importAssetButton = QtGui.QPushButton(Icon('alembic.png'), 'Import latest Pub ABC for Sel') self.importAssetButton.setStyleSheet("QPushButton {text-align : left}") self.importAssetButton.released.connect(self._fetchMDLAlembicPublish) debug(self.app, method = 'MainUI', message = 'self.importAssetButton built...', verbose = False) self.checkMDLButton = QtGui.QPushButton(Icon('refresh.png'), 'Check For MDL ABC Publishes') self.checkMDLButton.setStyleSheet("QPushButton {text-align : left}") self.checkMDLButton.released.connect(self._checkVersionsAgainstPublishes) debug(self.app, method = 'MainUI', message = 'self.checkMDLButton built...', verbose = False) self.redoSetsButton = QtGui.QPushButton(Icon('plus.png'), 'ReDo Set Assignments') self.redoSetsButton.setStyleSheet("QPushButton {text-align : left}") self.redoSetsButton.released.connect(self._createSets) debug(self.app, method = 'MainUI', message = 'self.redoSetsButton built...', verbose = False) self.checkSRFXMLButton = QtGui.QPushButton(Icon('refresh.png'), 'Check For SRF Publishes') self.checkSRFXMLButton.setStyleSheet("QPushButton {text-align : left}") self.checkSRFXMLButton.released.connect(self._checkSRFVersionsAgainstPublishes) self.cleanDuplicateCoresButton = QtGui.QPushButton(Icon('AssignedFileIt.png'), 'Clean Duplicate Cores') self.cleanDuplicateCoresButton.setStyleSheet("QPushButton {text-align : left}") self.cleanDuplicateCoresButton.released.connect(self._fixTheFuckingCores) self.cleanDuplicateCoresButton.setToolTip('This is performed on every import of an static env via the multiloader.\n Exposed just in case you need to run this manually.\n This will go through a scene with multiple static ENVs in it \nand try to make sure duplicate cores are renering correctly.') self.removeCoreGrpsButton = QtGui.QPushButton(Icon('skull.png'), 'Remove old Core Grps under geo_hrc') self.removeCoreGrpsButton.setStyleSheet("QPushButton {text-align : left}") self.removeCoreGrpsButton.released.connect(self._removeCoreGrps) self.removeCoreGrpsButton.setToolTip('You can use this to clean up any old core grps under the geo_hrc grps in a scene\nafer you have done a core archive rebuild from xml...') ## THIS IS UP TO YOU TO ENABLE. IT SHOULDNT BE REQUIRED AS THE MDL PUBLISH SHOULD NOW BE EXPORTING THE CORRECT ATTRS FOR ALEMBIC self.republishALL = QtGui.QPushButton('Republish ALL MDL Alembics for %s' % self.currentENV) self.republishALL.released.connect(self._republishAllAlembicsForENV) self.republishALL.setEnabled(True) self.lambert1Button = QtGui.QPushButton(Icon('refresh.png'), 'Check lambert1 objects') self.lambert1Button.setStyleSheet("QPushButton {text-align : left}") self.lambert1Button.released.connect(self._lambert1Object) self.caNSclashCheckButton = QtGui.QPushButton(Icon('refresh.png'), 'Check Core Archive Namespace') self.caNSclashCheckButton.setStyleSheet("QPushButton {text-align : left}") self.caNSclashCheckButton.released.connect(self.coreArchiveNSclashCheck) self.checkFileInPathButton = QtGui.QPushButton(Icon('refresh.png'), 'Check Invalid FileIn Path') self.checkFileInPathButton.setStyleSheet("QPushButton {text-align : left}") self.checkFileInPathButton.released.connect(self.checkFileInPath) self.checkNonManifoldButton = QtGui.QPushButton(Icon('refresh.png'), 'Check Non-Manifold Geometry') self.checkNonManifoldButton.setStyleSheet("QPushButton {text-align : left}") self.checkNonManifoldButton.released.connect(self.cleanupNonManifoldGeometry) ## Add stuff to the env layout self.envLayout.addWidget(self.envPulldown) self.envLayout.addWidget(self.fetchAssetListButton) self.envLayout.addWidget(self.importAssetButton) self.envLayout.addWidget(self.checkMDLButton) self.envLayout.addWidget(self.checkSRFXMLButton) self.envLayout.addWidget(self.redoSetsButton) self.envLayout.addWidget(self.cleanDuplicateCoresButton) self.envLayout.addWidget(self.removeCoreGrpsButton) self.envLayout.addWidget(self.republishALL) self.envLayout.addWidget(self.lambert1Button) self.envLayout.addWidget(self.caNSclashCheckButton) self.envLayout.addWidget(self.checkFileInPathButton) self.envLayout.addWidget(self.checkNonManifoldButton) ###################### ### ENV RELATED ASSETS self.assetLayout = QtGui.QVBoxLayout(self) ### Now do the check boxes for files.... self.scrollLayout = QtGui.QScrollArea(self) self.scrollLayout.setMinimumHeight(300) self.envAssetsGroupBox = QtGui.QGroupBox(self.scrollLayout) self.envAssetsGroupBox.setFlat(True) self.scrollLayout.setWidget(self.envAssetsGroupBox) self.scrollLayout.setWidgetResizable(True) self.envAssetsLayout = QtGui.QGridLayout(self.envAssetsGroupBox) self.assetLayout.addWidget(self.scrollLayout) self.mainLayout.addLayout(self.leftSideLayout) ## Add stuff to leftSideLayout self.leftSideLayout.addLayout(self.envLayout) self.leftSideLayout.addStretch(1) ## Add anything else to the HBox self.mainLayout.addLayout(self.assetLayout) self.resize(1000, 500) debug(self.app, method = 'MainUI', message = 'ui built successfully fetching assets now...', verbose = False) debug(self.app, method = 'MainUI', message = 'self.envPulldown.currentText(): %s' % self.envPulldown.currentText(), verbose = False) self._fetchAssetList() self.envPulldown.currentIndexChanged.connect(partial(self._getShotNumFromMenuName)) self.envPulldown.currentIndexChanged.connect(partial(self._fetchAssetList))
def setupUi(self, Browser): Browser.setObjectName("Browser") Browser.resize(489, 293) self.verticalLayout = QtGui.QVBoxLayout(Browser) self.verticalLayout.setSpacing(0) self.verticalLayout.setContentsMargins(2, 2, 2, 2) self.verticalLayout.setObjectName("verticalLayout") self.browser_header = QtGui.QGroupBox(Browser) self.browser_header.setMinimumSize(QtCore.QSize(0, 44)) self.browser_header.setMaximumSize(QtCore.QSize(16777215, 44)) self.browser_header.setStyleSheet( "#browser_header {\n" "border: none;\n" "background: qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:0 rgba(97, 97, 97, 255), stop:1 rgba(49, 49, 49, 255))\n" "}") self.browser_header.setTitle("") self.browser_header.setObjectName("browser_header") self.horizontalLayout_2 = QtGui.QHBoxLayout(self.browser_header) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.label = QtGui.QLabel(self.browser_header) self.label.setObjectName("label") self.horizontalLayout_2.addWidget(self.label) spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout_2.addItem(spacerItem) self.search = QtGui.QLineEdit(self.browser_header) self.search.setMinimumSize(QtCore.QSize(150, 0)) self.search.setMaximumSize(QtCore.QSize(150, 16777215)) self.search.setStyleSheet("border-width: 1px; \n" "background-image: url(:/res/search.png);\n" "background-repeat: no-repeat;\n" "background-position: center left;\n" "border-style: inset; \n" "border-color: #535353; \n" "border-radius: 9px; \n" "padding-left: 15px") self.search.setObjectName("search") self.horizontalLayout_2.addWidget(self.search) self.verticalLayout.addWidget(self.browser_header) self.scroll_area = QtGui.QScrollArea(Browser) self.scroll_area.setHorizontalScrollBarPolicy( QtCore.Qt.ScrollBarAlwaysOff) self.scroll_area.setWidgetResizable(True) self.scroll_area.setObjectName("scroll_area") self.scrollAreaWidgetContents = QtGui.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 483, 155)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.verticalLayout_4 = QtGui.QVBoxLayout( self.scrollAreaWidgetContents) self.verticalLayout_4.setSpacing(0) self.verticalLayout_4.setContentsMargins(4, 4, 4, 4) self.verticalLayout_4.setObjectName("verticalLayout_4") self.scroll_area_layout = QtGui.QVBoxLayout() self.scroll_area_layout.setSpacing(0) self.scroll_area_layout.setObjectName("scroll_area_layout") self.verticalLayout_4.addLayout(self.scroll_area_layout) spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) self.verticalLayout_4.addItem(spacerItem1) self.scroll_area.setWidget(self.scrollAreaWidgetContents) self.verticalLayout.addWidget(self.scroll_area) self.message_overlay = QtGui.QGroupBox(Browser) self.message_overlay.setTitle("") self.message_overlay.setObjectName("message_overlay") self.horizontalLayout_3 = QtGui.QHBoxLayout(self.message_overlay) self.horizontalLayout_3.setObjectName("horizontalLayout_3") self.status_message = QtGui.QLabel(self.message_overlay) self.status_message.setLayoutDirection(QtCore.Qt.LeftToRight) self.status_message.setAlignment(QtCore.Qt.AlignCenter) self.status_message.setWordWrap(True) self.status_message.setObjectName("status_message") self.horizontalLayout_3.addWidget(self.status_message) self.verticalLayout.addWidget(self.message_overlay) self.load_overlay = QtGui.QGroupBox(Browser) self.load_overlay.setTitle("") self.load_overlay.setObjectName("load_overlay") self.horizontalLayout = QtGui.QHBoxLayout(self.load_overlay) self.horizontalLayout.setObjectName("horizontalLayout") self.progress_bar = QtGui.QLabel(self.load_overlay) self.progress_bar.setLayoutDirection(QtCore.Qt.LeftToRight) self.progress_bar.setText("") self.progress_bar.setPixmap(QtGui.QPixmap(":/res/progress_bar_1.png")) self.progress_bar.setAlignment(QtCore.Qt.AlignCenter) self.progress_bar.setObjectName("progress_bar") self.horizontalLayout.addWidget(self.progress_bar) self.verticalLayout.addWidget(self.load_overlay) self.retranslateUi(Browser) QtCore.QMetaObject.connectSlotsByName(Browser)
def setupUi(self, Dialog): Dialog.setObjectName("Dialog") Dialog.resize(784, 483) Dialog.setStyleSheet( "#Dialog {\n" "background-image: url(:/tk_framework_qtwidgets.help_screen/bg.png); \n" "}\n" "\n" "") self.horizontalLayout_2 = QtGui.QHBoxLayout(Dialog) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.verticalLayout_3 = QtGui.QVBoxLayout() self.verticalLayout_3.setObjectName("verticalLayout_3") self.label = QtGui.QLabel(Dialog) self.label.setMinimumSize(QtCore.QSize(34, 0)) self.label.setMaximumSize(QtCore.QSize(34, 16777215)) self.label.setText("") self.label.setObjectName("label") self.verticalLayout_3.addWidget(self.label) self.left_arrow = QtGui.QToolButton(Dialog) self.left_arrow.setMinimumSize(QtCore.QSize(34, 34)) self.left_arrow.setFocusPolicy(QtCore.Qt.ClickFocus) self.left_arrow.setStyleSheet( "QToolButton{\n" "background-image: url(:/tk_framework_qtwidgets.help_screen/left_arrow.png);\n" "border: none;\n" "background-color: none;\n" "}\n" "\n" "\n" "QToolButton:hover{\n" "background-image: url(:/tk_framework_qtwidgets.help_screen/left_arrow_hover.png);\n" "}\n" "\n" "QToolButton:Pressed {\n" "background-image: url(:/tk_framework_qtwidgets.help_screen/left_arrow_pressed.png);\n" "}\n" "") self.left_arrow.setText("") self.left_arrow.setAutoRaise(True) self.left_arrow.setObjectName("left_arrow") self.verticalLayout_3.addWidget(self.left_arrow) self.label_2 = QtGui.QLabel(Dialog) self.label_2.setMinimumSize(QtCore.QSize(34, 0)) self.label_2.setMaximumSize(QtCore.QSize(34, 16777215)) self.label_2.setText("") self.label_2.setObjectName("label_2") self.verticalLayout_3.addWidget(self.label_2) self.horizontalLayout_2.addLayout(self.verticalLayout_3) self.verticalLayout_2 = QtGui.QVBoxLayout() self.verticalLayout_2.setObjectName("verticalLayout_2") self.groupBox = QtGui.QGroupBox(Dialog) self.groupBox.setStyleSheet("#groupBox {\n" "background-color: rgba(0,0,0,50);\n" "\n" "}") self.groupBox.setTitle("") self.groupBox.setObjectName("groupBox") self.verticalLayout = QtGui.QVBoxLayout(self.groupBox) self.verticalLayout.setContentsMargins(2, 2, 2, 2) self.verticalLayout.setObjectName("verticalLayout") self.stackedWidget = QtGui.QStackedWidget(self.groupBox) self.stackedWidget.setObjectName("stackedWidget") self.verticalLayout.addWidget(self.stackedWidget) self.verticalLayout_2.addWidget(self.groupBox) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName("horizontalLayout") spacerItem = QtGui.QSpacerItem(248, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) self.horizontalLayout.addItem(spacerItem) self.view_documentation = QtGui.QToolButton(Dialog) self.view_documentation.setObjectName("view_documentation") self.horizontalLayout.addWidget(self.view_documentation) self.close = QtGui.QToolButton(Dialog) self.close.setObjectName("close") self.horizontalLayout.addWidget(self.close) self.verticalLayout_2.addLayout(self.horizontalLayout) self.horizontalLayout_2.addLayout(self.verticalLayout_2) self.verticalLayout_4 = QtGui.QVBoxLayout() self.verticalLayout_4.setObjectName("verticalLayout_4") self.label_3 = QtGui.QLabel(Dialog) self.label_3.setMinimumSize(QtCore.QSize(34, 0)) self.label_3.setMaximumSize(QtCore.QSize(34, 16777215)) self.label_3.setText("") self.label_3.setObjectName("label_3") self.verticalLayout_4.addWidget(self.label_3) self.right_arrow = QtGui.QToolButton(Dialog) self.right_arrow.setMinimumSize(QtCore.QSize(34, 34)) self.right_arrow.setFocusPolicy(QtCore.Qt.ClickFocus) self.right_arrow.setStyleSheet( "QToolButton{\n" "background-image: url(:/tk_framework_qtwidgets.help_screen/right_arrow.png);\n" "border: none;\n" "background-color: none;\n" "}\n" "\n" "\n" "QToolButton:hover{\n" "background-image: url(:/tk_framework_qtwidgets.help_screen/right_arrow_hover.png);\n" "}\n" "\n" "QToolButton:Pressed {\n" "background-image: url(:/tk_framework_qtwidgets.help_screen/right_arrow_pressed.png);\n" "}\n" "") self.right_arrow.setText("") self.right_arrow.setAutoRaise(True) self.right_arrow.setObjectName("right_arrow") self.verticalLayout_4.addWidget(self.right_arrow) self.label_4 = QtGui.QLabel(Dialog) self.label_4.setMinimumSize(QtCore.QSize(34, 0)) self.label_4.setMaximumSize(QtCore.QSize(34, 16777215)) self.label_4.setText("") self.label_4.setObjectName("label_4") self.verticalLayout_4.addWidget(self.label_4) self.horizontalLayout_2.addLayout(self.verticalLayout_4) self.retranslateUi(Dialog) self.stackedWidget.setCurrentIndex(-1) QtCore.QMetaObject.connectSlotsByName(Dialog)
def __init__(self, app): """ main UI for the playblast options NOTE: This currently playblasts directly into the publish folder.. it'd be great to avoid this and do the move of the file on register... """ QtGui.QWidget.__init__(self) ## Setup the main UI debug(app = None, method = 'MainUI', message= 'Building MainUI', verbose = False) debug(app = None, method = 'Main_UI', message = 'INIT ChangeWorkSpace UI', verbose = False) self.app = app print self.app.context.project ## Now start the api tk = sgtk.sgtk_from_path("T:/software/bubblebathbay") debug(app = self.app, method = 'run_app', message = 'API instanced...\n%s' % tk, verbose = False) self.rootFolder = tk.project_path debug(app = self.app, method = 'MainUI', message= 'self.rootFolder: %s' % self.rootFolder, verbose = False) ##### # Build layouts set widget attrs ##### ## Setup the main base layout for the widget self.mainParentLayout = QtGui.QVBoxLayout(self) debug(app = self.app, method = 'MainUI', message = 'self.mainParentLayout built.', verbose = False) self.typesLayout = QtGui.QHBoxLayout(self) debug(app = self.app, method = 'MainUI', message = 'self.typesLayout built.', verbose = False) self.assetsGroupBox = QtGui.QGroupBox() debug(app = self.app, method = 'MainUI', message = 'self.assetsGroupBox built.', verbose = False) self.assetsGroupBox.setFlat(True) self.assetsGroupBox.setTitle('Asset Type | Name:') self.assetsGroupBoxLayout = QtGui.QVBoxLayout(self.assetsGroupBox) ## Create a scroll area for the groupBox to go into. Using a groupbox because it inherits from QWidget and you can only ## Add to the scroll area using widgets. self.assetsScrollMe = QtGui.QScrollArea(self) self.assetsScrollMe.setWidgetResizable(True) self.assetsScrollMe.setMinimumWidth(300) self.assetsScrollMe.setMinimumHeight(500) debug(app = self.app, method = 'MainUI', message = 'self.assetsScrollMe built.', verbose = False) self.shotsGroupBox = QtGui.QGroupBox() debug(app = self.app, method = 'MainUI', message = 'self.shotsGroupBox built.', verbose = False) self.shotsGroupBox.setFlat(True) self.shotsGroupBox.setTitle('Episode | Shots:') self.shotsGroupBoxLayout = QtGui.QVBoxLayout(self.shotsGroupBox) ## Create a scroll area for the groupBox to go into. Using a groupbox because it inherits from QWidget and you can only ## Add to the scroll area using widgets. self.shotsScrollMe = QtGui.QScrollArea(self) self.shotsScrollMe.setWidgetResizable(True) self.shotsScrollMe.setMinimumWidth(300) self.shotsScrollMe.setMinimumHeight(500) debug(app = self.app, method = 'MainUI', message = 'self.shotsScrollMe built.', verbose = False) ## Now build list viewers and models ## ASSETS TREEVIEW self.myAssetListView = QtGui.QTreeView() self.myAssetListView.setColumnWidth(0, 200) self.myAssetListView.setAlternatingRowColors(True) debug(app = self.app, method = 'MainUI', message = 'self.myAssetListView built.', verbose = False) self.assetsmodel = QtGui.QStandardItemModel() self.assetsmodel.setHorizontalHeaderLabels(['Name:']) debug(app = self.app, method = 'MainUI', message = 'self.assetsmodel built.', verbose = False) self.myAssetListView.setModel(self.assetsmodel) debug(app = self.app, method = 'MainUI', message = 'self.assetsmodel set to view.', verbose = False) ## SHOTS TREEVIEW self.myShotListView = QtGui.QTreeView() self.myShotListView.setColumnWidth(0, 200) self.myShotListView.setAlternatingRowColors(True) debug(app = self.app, method = 'MainUI', message = 'self.myAssetListView built.', verbose = False) self.shotmodel = QtGui.QStandardItemModel() self.shotmodel.setHorizontalHeaderLabels(['Name:']) debug(app = self.app, method = 'MainUI', message = 'self.assetsmodel built.', verbose = False) self.myShotListView.setModel(self.shotmodel) debug(app = self.app, method = 'MainUI', message = 'self.assetsmodel set to view.', verbose = False) ## Now build the types assetSteps = ['MDL', 'RIG', 'SRF'] shotSteps = ['Light', 'Anm', 'Blck', 'FX'] self.assetsButtonLayout = QtGui.QHBoxLayout(self) self.mdlButton = QtGui.QPushButton('MDL Context') self.mdlButton.released.connect(partial(self._setAssetWorkspace, 'MDL')) self.rigButton = QtGui.QPushButton('RIG Context') self.rigButton.released.connect(partial(self._setAssetWorkspace, 'RIG')) self.srfButton = QtGui.QPushButton('SRF Context') self.srfButton.released.connect(partial(self._setAssetWorkspace, 'SRF')) self.assetsButtonLayout.addWidget(self.mdlButton) self.assetsButtonLayout.addWidget(self.rigButton) self.assetsButtonLayout.addWidget(self.srfButton) ## Parent the assetlist view self.assetsGroupBoxLayout.addWidget(self.myAssetListView) self.assetsGroupBoxLayout.addLayout(self.assetsButtonLayout) self.shotsGroupBoxLayout.addWidget(self.myShotListView) ## Parent the treeView into the scrollArea self.assetsScrollMe.setWidget(self.assetsGroupBox) self.shotsScrollMe.setWidget(self.shotsGroupBox) debug(app = self.app, method = 'MainUI', message = 'self.assetsScrollMe set widget complete.', verbose = False) ## Now parent the groupboxes to the type hbox layout self.typesLayout.addWidget(self.assetsScrollMe) self.typesLayout.addWidget(self.shotsScrollMe) ## Parent the scrollArea to the main VBoxLayout self.mainParentLayout.addLayout(self.typesLayout) debug(app = self.app, method = 'MainUI', message = 'Populating listview...', verbose = False) self._addItemsToListView() debug(app = self.app, method = 'MainUI', message = 'MainUI built successfully...', verbose = False)