Пример #1
0
 def loadCmd(self):
     paths = []
     for node in nuke.allNodes("Read"):
         file = os.path.basename(node["file"].getValue())
         dir = os.path.dirname(node["file"].getValue())
         first = node['first'].value()
         last = node['last'].value()
         if first == last:
             frameRange = []
         else :
             frameRange = range(node['first'].value(), node['last'].value()+1)
         paths.append([os.path.join(dir, file), frameRange, node.name()])
     self.loadThread = LoadWorker()
     self.loadThread.start(paths)
     self.loadThread.fileSignal.connect(self.addTableData)
Пример #2
0
class SubmissionWindow(QtGui.QWidget, Ui_SubmissionWidget):
    
    def __init__(self, parent = None):
        super(SubmissionWindow, self).__init__(parent)
        self.setupUi(self)
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
        
        self.submitPushButton.clicked.connect(self.submitCmd)
        self.resetPushButton.clicked.connect(self.resetCmd)
        self.removePushButton.clicked.connect(self.removeCmd)
        self.lrPushButton.clicked.connect(partial(self.departmentListCmd, ['lr', 'cp']))
        self.fxPushButton.clicked.connect(partial(self.departmentListCmd, ['ef']))
        
        self.resetCmd()
        
    def popup(self, pos):
        headerView = self.tableView.horizontalHeader()
        column = headerView.logicalIndexAt(pos)
        if column == 4:
            menu = QtGui.QMenu()
            leftAction = menu.addAction("Left")
            rightAction = menu.addAction("Right")
            normalAction = menu.addAction("Normal")
            action = menu.exec_(self.mapToGlobal(pos))
            if action == leftAction:
                self.setOptions(QtCore.QVariant('Left'))
            elif action == rightAction:
                self.setOptions(QtCore.QVariant('Right'))
            elif action == normalAction:
                self.setOptions(QtCore.QVariant('Normal'))
            else:
                pass
            
    
    def setOptions(self, value):
        model = self.tableView.model()
        rowCount = model.rowCount()
        for row in range(rowCount):
            index= model.index(row, 4)
            model.setData(index, value)
    
    def departmentListCmd(self, department):

        model = self.tableView.model()
        data = model.getData()
        newdata = []
        for subdata in data:
            filename = os.path.basename(subdata[2])
            process = fun.getDepartmentInfo(filename)
            if process in department:
                newdata.append(subdata)
        
        newmodel = TableModel(self.headerLabels, newdata)
        
        self.tableView.setModel(newmodel)
               
    def removeCmd(self):
        model = self.tableView.model()
        selected = self.tableView.selectedIndexes()
        rows = list(set([sel.row() for sel in selected]))
        rows.sort(reverse=True)
        for row in rows:
            model.removeRow(row)
        
    def resetCmd(self):
        self.initTableView()
        self.loadCmd()
                
    def initTableView(self):
        self.headerLabels = [u'状态', u'节点', u'名称', u'帧数', u'选项', u'进度']
        self.options = [QtCore.QVariant('Normal'), QtCore.QVariant('Left'), QtCore.QVariant('Right')]
        tabledata = []
        contentModel = TableModel(self.headerLabels, tabledata)
        self.tableView.setModel(contentModel)
        
        pbd = ProgressBarDelegate(self.tableView)
        self.tableView.setItemDelegateForColumn(5, pbd)
        cbd = ComboBoxDelegate(self.options, self.tableView)
        self.tableView.setItemDelegateForColumn(4, cbd)
        
        headerView = self.tableView.horizontalHeader()
        headerView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        headerView.customContextMenuRequested.connect(self.popup)
    
    def addTableData(self, data):
        model = self.tableView.model()
        rowCount = model.rowCount()
        model.insertRows(rowCount, data)
              
    def submitCmd(self):
        '''
        submit images from sw. to production path
        '''
        model = self.tableView.model()
        row = model.rowCount()
        column = model.columnCount() 
        indexLst = [model.index(i,5) for i in range(row)]
        threads = [SubmitWorker() for i in range(row)]
        for i in range(row):
            index = indexLst[i]
            subThread = threads[i]
            subThread.progressSignal.connect(partial(model.setData, index))
            subThread.start(model.getData()[i])
            subThread.finishSignal.connect(partial(self.setFlagCmd, index))
        
    def setFlagCmd(self, index, int):
        model = index.model()
        row = index.row()
        column = 0
        flagIndex = model.index(row, 0)
        if int == 100:
            model.setData(flagIndex, 2)
        else :
            model.setData(flagIndex, 1)
        
    def loadCmd(self):
        paths = []
        for node in nuke.allNodes("Read"):
            file = os.path.basename(node["file"].getValue())
            dir = os.path.dirname(node["file"].getValue())
            first = node['first'].value()
            last = node['last'].value()
            if first == last:
                frameRange = []
            else :
                frameRange = range(node['first'].value(), node['last'].value()+1)
            paths.append([os.path.join(dir, file), frameRange, node.name()])
        self.loadThread = LoadWorker()
        self.loadThread.start(paths)
        self.loadThread.fileSignal.connect(self.addTableData)