OOP confuses me and I couldn’t come up with a clean working solution. Based on the python threading docs I came up with a kludge that gives feedback in the console and lets the user continue working. (I got rid of the progress bar)
[code]’’’
test job script
‘’’
from System.IO import *
from System.Text import *
from Deadline.Scripting import *
from DeadlineUI.Controls.Scripting.DeadlineScriptDialog import DeadlineScriptDialog
from datetime import date
import os
import shutil
import ConfigParser
import time
import threading
########################################################################
Globals
########################################################################
scriptDialog = None
settings = None
progressBarControl = None
########################################################################
Threads To do core logic and interface update
########################################################################
class workThread ( threading.Thread):
def init(self, threadID, name ):
threading.Thread.init(self)
self.threadID = threadID
self.name = name
def run(self):
global scriptDialog
print "Starting " + self.name
SubmitJobs()
print "Exiting " + self.name
########################################################################
Main Function Called By Deadline
########################################################################
def main():
global scriptDialog
global settings
global progressBarControl
dialogWidth = 300
dialogHeight = 265
labelWidth = 100
tabHeight = 600
padding = 24
smallControlWidth = dialogWidth-labelWidth-padding
fullControlWidth = dialogWidth-labelWidth-padding
scriptDialog = DeadlineScriptDialog()
scriptDialog.SetSize( dialogWidth+padding, dialogHeight )
scriptDialog.SetTitle( 'Test Script' )
# Submit and Cancel buttons
scriptDialog.AddRow()
cancelButton = scriptDialog.AddControl( 'CancelButton', 'ButtonControl', 'Cancel', 100, -1 )
cancelButton.ValueModified.connect(CancelButtonPressed)
submitButton = scriptDialog.AddControl( 'SubmitButton', 'ButtonControl', 'Submit', 100, -1)
submitButton.ValueModified.connect(SubmitButtonPressed)
scriptDialog.EndRow()
scriptDialog.ShowDialog( True )
########################################################################
Helper Functions
########################################################################
def SubmitJobs ():
submitResultsString = ‘’
# Get list of jobs
jobs = JobUtils.GetSelectedJobs()
numJobs = len( jobs )
# Iterate through selected jobs
for i in range( 0, numJobs ):
job = jobs [i]
outputDirectories = job.JobOutputDirectories
outputFilenames = job.JobOutputFileNames
# Iterate thrugh renders in job
for j in range ( 0, len (outputDirectories) ):
# simulate job sumbmission
time.sleep(2)
# Update progress Bar
progress = int (100.0/numJobs)
progress = (i+1)*progress
if progress > 100:
progress = 100
print ("Perecent of jobs submitted: " + str(progress) + "\n" )
########################################################################
Button Functions
########################################################################
def CancelButtonPressed( *args ):
global scriptDialog
scriptDialog.CloseDialog()
def SubmitButtonPressed( *args ):
global scriptDialog
workerThread = workThread (1, "workThread")
workerThread.start()
scriptDialog.CloseDialog()
scriptDialog.ShowMessageBox ( "Full submission results are in console and your jobs will start appearing soon", 'Results of Submission' )[/code]