示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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())
示例#5
0
    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)
示例#7
0
    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)
示例#8
0
    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)
示例#9
0
    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()
示例#10
0
    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)
示例#11
0
    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)
示例#12
0
    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())
示例#13
0
    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)
示例#14
0
	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()
示例#15
0
    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)
示例#16
0
	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))
示例#17
0
    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)
示例#18
0
    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)
示例#19
0
    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)