def run(self): log = self.log[0] + "_log.txt" logPath = log.split("/") #fpid = open("c:/Apps/test.txt", 'w') print log f = open(log, 'w') self.process = subprocess.Popen(self.command, shell=True, stdout=subprocess.PIPE) self.task.Pid = self.process.pid model.saveData() time = "" for i in range(100000): arf = self.process.stdout.readline() #self.task.Log = arf #model.saveData() f.write(arf) print arf if arf.find("@exit") != -1: #self.wait() #self.usedBytes.release() self.process.terminate() self.progress = 100 #print "hello" f.close() return if arf.find("Frame") != -1 and arf.find("Frame:") == -1: frame = arf #model.saveData() if arf.find("Time:") != -1: time = arf self.task.Log = unicode(frame + " " + time) model.saveData()
def run(self): log = self.log[0] + "_log.txt" logPath = log.split("/") #fpid = open("c:/Apps/test.txt", 'w') print log f = open(log, 'w') self.process = subprocess.Popen(self.command,shell = True,stdout=subprocess.PIPE) self.task.Pid = self.process.pid model.saveData() time = "" for i in range(100000): arf = self.process.stdout.readline() #self.task.Log = arf #model.saveData() f.write(arf) print arf if arf.find("@exit")!= -1: #self.wait() #self.usedBytes.release() self.process.terminate() self.progress = 100 #print "hello" f.close() return if arf.find("Frame") != -1 and arf.find("Frame:") == -1: frame = arf #model.saveData() if arf.find("Time:") != -1: time = arf self.task.Log = unicode(frame + " " + time) model.saveData()
def login(self,curUserName): newUser = model.User.get_by(Name= unicode(curUserName)) if newUser == None: newUser = model.User(Name= unicode(curUserName)) model.saveData() return newUser
def on_Skip_triggered(self): #if argMe == "Restart Task": #print "hey !" item=self.ui.list.currentItem() item.Task.Status = 100 print "skiping: " + str(item.Task) model.saveData() #model.setup_all() self.refreshMe()
def makeNewSeq(self): seq, ok = QtGui.QInputDialog.getText(self, "QInputDialog.getText()", "Sequence name:", QtGui.QLineEdit.Normal,"") if ok and len(str(seq)) == 2: #self.textLabel.setText(text) print model.Sequence(Name= unicode(string.upper(str(seq)))) self.ui.SequComboBox.addItem(string.upper(str(seq))) model.saveData()
def on_reStart_triggered(self): #if argMe == "Restart Task": #sprint "hey !" item=self.ui.list.currentItem() if item.Task.Status == 600 or item.Task.Status == 100 : item.Task.Status = 101 print "restarting: " + str(item.Task) model.saveData() #model.setup_all() self.refreshMe()
def on_Stop_triggered(self): #if argMe == "Restart Task": #print "hey !" item=self.ui.list.currentItem() if item.Task.Status == 0 or item.Task.Status == 101 : item.Task.Status = 666 print "stopping: " + str(item.Task) model.saveData() self.refreshMe() else: print "task not runing so can't be stopped"
def __init__(self): QtGui.QMainWindow.__init__(self) #super(Main, self).__init__() self.windowList = [] ####### login############################## curUserName = os.getenv('USERNAME') model.setup_all() newUser = model.User.get_by(Name=unicode(curUserName)) if newUser == None: newUser = model.User(Name=unicode(curUserName)) model.saveData() ################################################## self.curProject = "none" self.full = 0 self.toggleMe = 0 # This is always the same self.ui = Ui_MainWindow() self.ui.setupUi(self) self.setWindowTitle('LYPA beta 101 : ' + curUserName) self.GLviewer = GLWidget() self.ui.Dailies.setMainGUI(self) self.ui.Renders.setMainGUI(self) self.ui.Grade.setGL(self.GLviewer) self.ui.Renders.setGL(self.GLviewer) self.ui.GLLayout.addWidget(self.GLviewer) self.ui.tabWidget.setCurrentIndex(0) nukeSS.setStyleSheet(self) screen = QtGui.QDesktopWidget().screenGeometry() sself.resize(screen.width(), screen.height()) size = self.geometry() self.move((screen.width() - size.width()) / 2, (screen.height() - size.height()) / 2) self.ui.TimeLineSlider.setSingleStep(1) self.ui.TimeLineSlider.setTickInterval(1) self.ui.TimeLineSlider.setTickPosition(1) self.curProjectLUT = 2.2 self.connect(self.ui.LUTcomboBox, QtCore.SIGNAL('activated(QString)'), self.onLUTcomboBoxActivated) self.ui.TimeLineSlider.valueChanged.connect( self.GLviewer.setCurrentFrame) self.ui.TimeLineSlider.valueChanged.connect(self.ui.lcdNumber.display) #################################### # init default parameters on openGL viewer self.GLviewer.currentFrameChanged.connect( self.ui.TimeLineSlider.setValue) self.GLviewer.currentFrameChanged.connect(self.ui.lcdNumber.display) self.GLviewer.ExpChanged.connect(self.set_infobarExp) self.GLviewer.colorSampleChanged.connect(self.set_infobarColor) self.ui.actionImport.triggered.connect(self.importFile) self.ui.ExpLabel.setText("Exp: 1.0") self.ui.Renders.setInfo(self.ui.Info)
def on_actionDelete_Task_triggered(self,checked=None): if checked is None: return # First see what task is "current". item=self.ui.list.currentItem() if not item: # None selected, so we don't know what to delete! return # Actually delete the task item.task.delete() model.saveData() # And remove the item. I think that's not pretty. Is it the only way? self.ui.list.takeTopLevelItem(self.ui.list.indexOfTopLevelItem(item))
def start(self): model.saveData() for task in self.newNode.Tasks: print self.newNode.Name if task.Status == 666: print "killing:" + str(task.Pid) subprocess.Popen(["taskkill.exe", "/PID", str(task.Pid) , "/t", "/f"]) elif task.Status <100: self.newNode.Status = 1 else: pass
def __init__(self): QtGui.QMainWindow.__init__(self) #super(Main, self).__init__() self.windowList = [] ####### login############################## curUserName = os.getenv('USERNAME') model.setup_all() newUser = model.User.get_by(Name= unicode(curUserName)) if newUser == None: newUser = model.User(Name= unicode(curUserName)) model.saveData() ################################################## self.curProject = "none" self.full = 0 self.toggleMe = 0 # This is always the same self.ui=Ui_MainWindow() self.ui.setupUi(self) self.setWindowTitle('LYPA beta 101 : ' + curUserName) self.GLviewer = GLWidget() self.ui.Dailies.setMainGUI(self) self.ui.Renders.setMainGUI(self) self.ui.Grade.setGL(self.GLviewer) self.ui.Renders.setGL(self.GLviewer) self.ui.GLLayout.addWidget(self.GLviewer) self.ui.tabWidget.setCurrentIndex(0) nukeSS.setStyleSheet(self) screen = QtGui.QDesktopWidget().screenGeometry() sself.resize(screen.width(),screen.height() ) size = self.geometry() self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2) self.ui.TimeLineSlider.setSingleStep(1) self.ui.TimeLineSlider.setTickInterval(1) self.ui.TimeLineSlider.setTickPosition(1) self.curProjectLUT = 2.2 self.connect(self.ui.LUTcomboBox, QtCore.SIGNAL('activated(QString)'), self.onLUTcomboBoxActivated) self.ui.TimeLineSlider.valueChanged.connect(self.GLviewer.setCurrentFrame) self.ui.TimeLineSlider.valueChanged.connect(self.ui.lcdNumber.display) #################################### # init default parameters on openGL viewer self.GLviewer.currentFrameChanged.connect(self.ui.TimeLineSlider.setValue) self.GLviewer.currentFrameChanged.connect(self.ui.lcdNumber.display) self.GLviewer.ExpChanged.connect(self.set_infobarExp) self.GLviewer.colorSampleChanged.connect(self.set_infobarColor) self.ui.actionImport.triggered.connect(self.importFile) self.ui.ExpLabel.setText("Exp: 1.0") self.ui.Renders.setInfo(self.ui.Info)
def submitDailie(self): #print "hello" item=self.ui.list.currentItem() if len(item.render.Dailie) != 0: print "already was submitted" return now = datetime.datetime.now() nowstr = str(now.day) + "-" + str(now.month) + "-" + str(now.year) + "_" + str(now.hour) + ":" + str(now.minute) + ":" + str(now.second) newDailie = model.Dailie(Name= "D_" + item.render.Name,Comments=u"",status=0) #newDailie.Renders.append(item.render) item.render.Dailie.append(newDailie) self.curProjectFilter.Dailies.append(newDailie) self.mainGui.curProject = self.ProjectFilter model.saveData()
def start(self): model.saveData() for task in self.newNode.Tasks: print self.newNode.Name if task.Status == 666: print "killing:" + str(task.Pid) subprocess.Popen( ["taskkill.exe", "/PID", str(task.Pid), "/t", "/f"]) elif task.Status < 100: self.newNode.Status = 1 else: pass
def on_actionNew_Task_triggered(self,checked=None): if checked is None: return # Create a dummy task task=model.Shot(Name="TL_211_0020",In = "25", Out = "100") self.curSeq.Shots.append(task) self.ui.editor.setEnabled(True) # Create an item reflecting the task item=QtGui.QTreeWidgetItem([task.Name,task.In,task.Out]) item.task=task # Put the item in the task list self.ui.list.addTopLevelItem(item) self.ui.list.setCurrentItem(item) # Save it in the DB model.saveData() # Open it with the editor self.ui.editor.edit(item) for column in range(self.ui.list.columnCount()): self.ui.list.resizeColumnToContents(column)
def __init__(self): QtGui.QMainWindow.__init__(self) #print "yeehhaa" #self.computerName = computerName #self.Node = Node self.timer = QtCore.QTimer() self.timer.timeout.connect(self.start) self.timer.start(8000) self.labelText = "waiting...." #self.app = app self.ui = LYPA_renderNodeUI.Ui_MainWindow() self.ui.setupUi(self) model.setup_all() comp = os.getenv('COMPUTERNAME') self.newNode = model.Node.get_by(Name=unicode(comp)) if self.newNode == None: self.newNode = model.Node(Name=unicode(comp)) model.saveData() self.start()
def DeleteDaily(self): ''' curUserName = os.getenv('USERNAME') item=self.ui.list.currentItem() if item.render.User == curUserName: fn = item.render.Path path = os.path.dirname(fn) self.deleteDir(path,curUserName) curjob = model.Job.get_by(Name=unicode(item.render.Job)) for task in curjob.Tasks: print "delete task: " + task.Name task.delete() print "deleting job: " + curjob.Name curjob.delete() print "deleting render: " + item.render.Name ''' self.currentDaily.delete() model.saveData() self.refreshMe()
def on_actionNew_Task_triggered(self, checked=None): if checked is None: return # Create a dummy task task = model.Shot(Name="TL_211_0020", In="25", Out="100") self.curSeq.Shots.append(task) self.ui.editor.setEnabled(True) # Create an item reflecting the task item = QtGui.QTreeWidgetItem([task.Name, task.In, task.Out]) item.task = task # Put the item in the task list self.ui.list.addTopLevelItem(item) self.ui.list.setCurrentItem(item) # Save it in the DB model.saveData() # Open it with the editor self.ui.editor.edit(item) for column in range(self.ui.list.columnCount()): self.ui.list.resizeColumnToContents(column)
def deleteRender(self): # First see what task is "current". curUserName = os.getenv('USERNAME') item=self.ui.list.currentItem() if item.render.User == curUserName: fn = item.render.Path path = os.path.dirname(fn) self.deleteDir(path,curUserName) curjob = model.Job.get_by(Name=unicode(item.render.Job)) for task in curjob.Tasks: print "delete task: " + task.Name task.delete() print "deleting job: " + curjob.Name curjob.delete() print "deleting render: " + item.render.Name item.render.delete() model.saveData() else: print "This render doesn't belong to you"
def __init__(self): QtGui.QMainWindow.__init__(self) #print "yeehhaa" #self.computerName = computerName #self.Node = Node self.timer = QtCore.QTimer() self.timer.timeout.connect(self.start) self.timer.start(8000) self.labelText = "waiting...." #self.app = app self.ui=LYPA_renderNodeUI.Ui_MainWindow() self.ui.setupUi(self) model.setup_all() comp = os.getenv('COMPUTERNAME') self.newNode = model.Node.get_by(Name= unicode(comp)) if self.newNode == None: self.newNode = model.Node(Name= unicode(comp)) model.saveData() self.start()
def addRender(self,project,shot,first,last,ver,path,RenderScenefile,type,w,h,renderOutput,renderName,jobName,jobType,format,curUserName,Schunk,cmd): print "go2" #jobName = "job_" + renderName + time.strftime('_%d%m%y_%H%M%S') chunk = int(Schunk) curShot = model.Shot.get_by(Name=unicode(shot)) curProj = model.Project.get_by(Name=unicode(project)) now = datetime.datetime.now() newRender = model.Render(Name=renderName,In= int(first),Out= int(last),Path=path,Date = now,version= int(ver),ScenePath=RenderScenefile,Type= type,Width=int(w),Height=int(h),Format=format,Job = jobName,User = curUserName) model.saveData() curShot.Renders.append(newRender) curShot.Seq.Renders.append(newRender) curProj.Renders.append(newRender) model.saveData() newJob = model.Job(Name=jobName,Type = jobType,Status = 101) model.saveData() startFrame = int(first) curChunk = 0 taskDir = renderOutput + "/tasks" for i in range(int(first),int(last),chunk): if curChunk == (int(last) - int(first))/chunk -1 : shortName = "task" + "_" + "%04d" % i taskName = jobName + "_" + "%04d" % i taskFile = taskDir + "/" + taskName + ".txt" newTask = model.Task(Name=taskName,In=startFrame,Out=last,Type =jobType, ShortName = shortName,Status = 101,Command = unicode(RenderScenefile + " -taskFile " + taskFile)) newJob.Tasks.append(newTask) else: shortName = "task" + "_" + "%04d" % i taskName = jobName + "_" + "%04d" % i taskFile = taskDir + "/" + taskName + ".txt" newTask = model.Task(Name=taskName,In=startFrame,Out=startFrame+chunk-1,Type =jobType,ShortName = shortName,Status = 101,Command = unicode(RenderScenefile + " -taskFile " + taskFile)) newJob.Tasks.append(newTask) startFrame += chunk curChunk += 1 model.saveData()
def updateJobStatus(self,task): jobStat = 0 for dtask in task.job.Tasks: if dtask.Status == 100: jobStat +=1 elif dtask.Status == 600: task.job.Status = 600 model.saveData() return else: pass if jobStat == len(task.job.Tasks): task.job.Status = 100 model.saveData() else: task.job.Status = int((100.0 / float(len(task.job.Tasks)))* float(jobStat)) model.saveData() jobStat = 0
def updateJobStatus(self, task): jobStat = 0 for dtask in task.job.Tasks: if dtask.Status == 100: jobStat += 1 elif dtask.Status == 600: task.job.Status = 600 model.saveData() return else: pass if jobStat == len(task.job.Tasks): task.job.Status = 100 model.saveData() else: task.job.Status = int( (100.0 / float(len(task.job.Tasks))) * float(jobStat)) model.saveData() jobStat = 0
def startNode(self): print "checking" model.saveData() stat = 0 n = self.Node n.Status = 0 #print "hey" for task in model.Task.query.all(): #print task.Name #print task.done #if n.Status = if task.Status == 101: self.labelText = "rendering: " + task.Name self.refreshMe() if task.Status == 101: #print task.Type if task.Type == "modo501": for dependingtasks in task.job.Tasks: if dependingtasks.Type == "postRender": dependingtasks.Status = 101 else: pass task.Status = 0 n.Tasks.append(task) model.saveData() self.updateJobStatus(task) reload(modoJob) taskFile = task.Command.split(" -taskFile ") newProcess = modoJob.modo501Job(taskFile[1], task) #newProcess.modoTaskfile = taskFile[1] newProcess.run() #newProcess.process.terminate #self.logIt() #newProcess.killme() n.Status = 1 #task.Pid = newProcess.process.pid # model.saveData() #print task.Pid #newProcess.wait() task.Status = newProcess.progress model.saveData() elif task.Type == "postRender": #print len(task.job.Tasks) for dependingtasks in task.job.Tasks: if dependingtasks.Type != "postRender" and dependingtasks.Status == 100: stat += 1 else: pass if stat == len(task.job.Tasks) - 1: reload(postRenderJob) #print task.job.Name task.Status = 0 #task.Log = "starting" n.Tasks.append(task) model.saveData() self.updateJobStatus(task) try: print task.Command newProcess = postRenderJob.postRender(task.Command) for frame in range(int(task.In), int(task.Out) + 1): log = newProcess.run(frame) task.Log = log #model.saveData() if newProcess.progress == 100: task.Status = int( (100.0 / (float(task.Out) - float(task.In))) * (float(frame) - float(task.In))) model.saveData() thumbnail = postRenderJob.postRender(task.Command) thumbnail.makeThumbnail(int(task.In)) except (RuntimeError, TypeError, NameError, AttributeError, IOError) as strerror: task.Status = 600 model.saveData() print strerror else: stat = 0 elif task.Status == 100: if task.job.Status != 100: self.updateJobStatus(task) else: pass else: #model.saveData() self.labelText = "waiting....." self.refreshMe()
def on_actionUpdate_database_triggered(self,checked=None): print "hello" model.saveData()
def startNode(self): print "checking" model.saveData() stat = 0 n = self.Node n.Status = 0 #print "hey" for task in model.Task.query.all(): #print task.Name #print task.done #if n.Status = if task.Status == 101: self.labelText = "rendering: " + task.Name self.refreshMe() if task.Status == 101: #print task.Type if task.Type == "modo501": for dependingtasks in task.job.Tasks: if dependingtasks.Type == "postRender": dependingtasks.Status = 101 else: pass task.Status = 0 n.Tasks.append(task) model.saveData() self.updateJobStatus(task) reload(modoJob) taskFile = task.Command.split(" -taskFile ") newProcess = modoJob.modo501Job(taskFile[1],task) #newProcess.modoTaskfile = taskFile[1] newProcess.run() #newProcess.process.terminate #self.logIt() #newProcess.killme() n.Status = 1 #task.Pid = newProcess.process.pid # model.saveData() #print task.Pid #newProcess.wait() task.Status = newProcess.progress model.saveData() elif task.Type == "postRender": #print len(task.job.Tasks) for dependingtasks in task.job.Tasks: if dependingtasks.Type != "postRender" and dependingtasks.Status == 100: stat += 1 else: pass if stat == len(task.job.Tasks)-1: reload(postRenderJob) #print task.job.Name task.Status = 0 #task.Log = "starting" n.Tasks.append(task) model.saveData() self.updateJobStatus(task) try: print task.Command newProcess = postRenderJob.postRender(task.Command) for frame in range(int(task.In),int(task.Out) + 1): log = newProcess.run(frame) task.Log = log #model.saveData() if newProcess.progress == 100: task.Status = int((100.0 /(float(task.Out)-float(task.In)))* (float(frame)-float(task.In))) model.saveData() thumbnail = postRenderJob.postRender(task.Command) thumbnail.makeThumbnail(int(task.In)) except (RuntimeError, TypeError, NameError,AttributeError,IOError) as strerror: task.Status = 600 model.saveData() print strerror else: stat =0 elif task.Status == 100: if task.job.Status != 100: self.updateJobStatus(task) else: pass else: #model.saveData() self.labelText = "waiting....." self.refreshMe()
model.saveData() return else: pass if jobStat == len(task.job.Tasks): task.job.Status = 100 model.saveData() else: task.job.Status = int((100.0 / float(len(task.job.Tasks)))* float(jobStat)) model.saveData() jobStat = 0 def refreshMe(self): self.ui.label.setText(self.labelText) if __name__ == "__main__": model.setup_all() comp = os.getenv('COMPUTERNAME') print comp newNode = model.Node.get_by(Name= unicode(comp)) if newNode == None: print "hello" newNode = model.Node(Name= unicode(comp)) model.saveData() print newNode app = QtGui.QApplication(sys.argv) window=RN_window(comp,newNode) window.show() # It's exec_ because exec is a reserved word in Python sys.exit(app.exec_())
def on_actionUpdate_database_triggered(self,checked=None): print "hello" model.saveData()
def addJob(self,name,type,status): newJob = model.Job(Name=jobName,Type = jobType,Status = 101) model.saveData()
def addTask(self,name,shortName,job,In,Out,cmd,Type): print "adding task to " + job curJob = model.Job.get_by(Name=unicode(job)) newTask = model.Task(Name=name,In=In,Out=Out,Type =Type,ShortName = shortName,Status = 101,Command = cmd) curJob.Tasks.append(newTask) model.saveData()
def createProject(self,name,cfg,width,height,ratio,framerate,lut,client): project = model.Project(Name=name,ConfigFile=cfg,Width=width,Height=height,Ratio=ratio,FrameRate=framerate,LUT=lut,Client=client) model.saveData() self.makeProjectdir(name) self.makeGDataDB(name)
return else: pass if jobStat == len(task.job.Tasks): task.job.Status = 100 model.saveData() else: task.job.Status = int( (100.0 / float(len(task.job.Tasks))) * float(jobStat)) model.saveData() jobStat = 0 def refreshMe(self): self.ui.label.setText(self.labelText) if __name__ == "__main__": model.setup_all() comp = os.getenv('COMPUTERNAME') print comp newNode = model.Node.get_by(Name=unicode(comp)) if newNode == None: print "hello" newNode = model.Node(Name=unicode(comp)) model.saveData() print newNode app = QtGui.QApplication(sys.argv) window = RN_window(comp, newNode) window.show() # It's exec_ because exec is a reserved word in Python sys.exit(app.exec_())
def refreshMe(self): currItem=self.ui.list.currentItem() pixmap = self.pixmap icon = QtGui.QIcon(pixmap) currId = self.ui.list.indexOfTopLevelItem(currItem) listExp = [] listcount = 0 for i in range(self.ui.list.topLevelItemCount()): if self.ui.list.topLevelItem(i).isExpanded () == True: itList = [] itList.append(i) listExp.append(itList) for j in range(self.ui.list.topLevelItem(i).childCount()): if self.ui.list.topLevelItem(i).child(j).isExpanded (): listExp[listcount].append(j) listcount += 1 self.ui.list.clear() if self.ProjectFilter == "none": self.ui.list.clear() return else: remember = True pass if self.UserFilter != "all": remember = True renders = model.Render.query.filter_by(Project=self.curProjectFilter) renders = renders.filter_by(User=str(self.UserFilter)) if self.UserFilter == "all": renders = model.Render.query.filter_by(Project=self.curProjectFilter) if self.SeqFilter != "all" and self.ShotFilter == "all": remember = True self.ui.list.clear() #seql = model.Render.query.filter_by(SeqName=self.curSeqFilter) renders = renders.filter_by(SeqName=self.curSeqFilter) if self.SeqFilter != "all" and self.ShotFilter != "all": remember = True self.ui.list.clear() #shotl = model.Render.query.filter_by(ShotName=self.curShotFilter) renders = renders.filter_by(ShotName=self.curShotFilter) if self.SeqFilter == "all" and self.ShotFilter != "all": remember = True self.ui.list.clear() #curSeq = model.Sequence.get_by(Name =str(self.SeqFilter)) renders = renders.filter_by(ShotName=self.curShotFilter) if self.SearchFilter != "": renders = renders.filter(model.Render.Name.contains(self.SearchFilter)) loc = "server" ja = 0 for render in renders.all(): renderStatus = "Offline" a = str(render.Job) fJob = model.Job.get_by(Name= unicode(a)) jobStatus = fJob.Status if jobStatus == 101: renderStatus = "Offline" jobStatusReport = "not started" elif jobStatus >= 0 and jobStatus < 100: renderStatus = "Offline" jobStatusReport = str(jobStatus)+"%" elif jobStatus == 600: renderStatus = "Error" jobStatusReport = "Error" elif jobStatus == 100: renderStatus = "Online" jobStatusReport = "Finished" else: renderStatus = "Offline" jobStatusReport = "Stopped" renderpath = render.Path item=QtGui.QTreeWidgetItem([render.Name,loc,str(render.In),str(render.Out),str(render.version),renderStatus,render.Type,str(render.User),str(render.Date),str(str(render.Width) + "x" + str(render.Height)),renderpath,render.ScenePath]) item.setIcon(0,icon) if renderStatus == "Offline": item.setBackground(5,QtCore.Qt.yellow) item.setForeground(5,QtCore.Qt.black) if renderStatus == "Online": item.setForeground(5,QtCore.Qt.green) if os.path.exists(renderpath): iconPath = os.path.dirname(renderpath) + "/proxy/thumbnail.jpg" pixmap = QtGui.QPixmap(iconPath) icon = QtGui.QIcon(pixmap) item.setIcon(0,icon) item.pixmap = pixmap if renderStatus == "Error": item.setBackground(5,QtCore.Qt.red) item.setForeground(5,QtCore.Qt.black) farmJob = QtGui.QTreeWidgetItem([fJob.Name,"","","","",jobStatusReport,fJob.Type]) farmJob.setForeground(0,QtCore.Qt.darkBlue) for j in range(0,12): farmJob.setBackground(j,QtGui.QColor(70, 72, 76)) farmJob.setForeground(j,QtGui.QColor(160, 165, 170)) farmJob.Job = fJob if jobStatus == 101: farmJob.setBackground(5,QtCore.Qt.yellow) farmJob.setForeground(5,QtCore.Qt.black) elif jobStatus >= 0 and fJob.Status < 100: farmJob.setBackground(5,QtCore.Qt.green) farmJob.setForeground(5,QtCore.Qt.black) elif jobStatus == 600: farmJob.setBackground(5,QtCore.Qt.red) farmJob.setForeground(5,QtCore.Qt.black) frameBuffers = QtGui.QTreeWidgetItem(["channels",""]) frameBuffers.setForeground(0,QtCore.Qt.darkBlue) item.render=render self.ui.list.addTopLevelItem(item) item.addChild(farmJob) item.addChild(frameBuffers) Fcount = 0 Ferror = 0 line = 0 for farmTask in fJob.Tasks: taskItem = QtGui.QTreeWidgetItem([farmTask.ShortName,"",str(farmTask.In),str(farmTask.Out),"",str(farmTask.Status),str(farmTask.Type),str(farmTask.Node),"","",str(farmTask.Log)]) taskItem.Task = farmTask #print str(farmTask.Status) for i in range(0,12): if line == 0: taskItem.setBackground(i,QtGui.QColor(92, 102, 115)) if line == 1: taskItem.setBackground(i,QtGui.QColor(100, 112, 124)) taskItem.setForeground(i,QtGui.QColor(200, 205, 210)) if farmTask.Status == 101: taskItem.setBackground(5,QtCore.Qt.yellow) taskItem.setForeground(5,QtCore.Qt.black) elif farmTask.Status >= 0 and farmTask.Status < 100: taskItem.setBackground(5,QtCore.Qt.green) taskItem.setForeground(5,QtCore.Qt.black) elif farmTask.Status == 666: taskItem.setBackground(5,QtCore.Qt.darkRed) taskItem.setForeground(5,QtCore.Qt.black) elif farmTask.Status == 600: taskItem.setBackground(5,QtCore.Qt.red) taskItem.setForeground(5,QtCore.Qt.black) line = abs(line -1) farmJob.addChild(taskItem) if renderStatus == "Online": header = OpenEXR.InputFile(renderpath).header() channels = header['channels'] for chan in channels.keys(): chanItem = QtGui.QTreeWidgetItem([chan]) frameBuffers.addChild(chanItem) item.header = header else: pass if remember == True: for it in listExp: #print listExp[it] self.ui.list.topLevelItem(it[0]).setExpanded(True) #print len(it) if len(it) == 2: self.ui.list.topLevelItem(it[0]).child(it[1]).setExpanded(True) elif len(it) == 3: self.ui.list.topLevelItem(it[0]).child(it[1]).setExpanded(True) self.ui.list.topLevelItem(it[0]).child(it[2]).setExpanded(True) self.ui.list.setCurrentItem(self.ui.list.topLevelItem(currId)) for column in range(self.ui.list.columnCount()): self.ui.list.resizeColumnToContents(column) model.saveData()