def __main__(): global scriptDialog global settings scriptDialog = DeadlineScriptDialog() selectedJobs = MonitorUtils.GetSelectedJobs() totalJobCount = len(selectedJobs) jobCount = 0 for job in selectedJobs: if job.JobPlugin == "3dsmax": jobCount += 1 if totalJobCount != jobCount: scriptDialog.ShowMessageBox("One or more selected jobs is NOT a 3dsMax job. Only 3dsMax jobs are supported.", "Error") return scriptDialog.AllowResizingDialog(True) scriptDialog.SetSize(600, 100) scriptDialog.SetTitle("Add MAXScript(s) to 3dsMax Job") scriptDialog.AddGrid() scriptDialog.AddControlToGrid("PreLoadScriptLabel", "LabelControl", "Run Pre-Load Script", 0, 0, "Run a MAXScript specified in the file browser field BEFORE the 3ds Max scene is loaded for rendering by the Slave.", False) scriptDialog.AddSelectionControlToGrid("PreLoadScriptBox", "FileBrowserControl", "", "MAXScript File (*.ms)", 0, 1, colSpan=2) scriptDialog.AddControlToGrid("PostLoadScriptLabel", "LabelControl", "Run Post-Load Script", 1, 0, "Run a MAXScript specified in the file browser field AFTER the 3ds Max scene is loaded for rendering by the Slave.", False) scriptDialog.AddSelectionControlToGrid("PostLoadScriptBox", "FileBrowserControl", "", "MAXScript File (*.ms)", 1, 1, colSpan=2) scriptDialog.AddControlToGrid("PreFrameScriptLabel", "LabelControl", "Run Pre-Frame Script", 2, 0, "Run a MAXScript specified in the file browser field BEFORE the Slave renders a frame.", False) scriptDialog.AddSelectionControlToGrid("PreFrameScriptBox", "FileBrowserControl", "", "MAXScript File (*.ms)", 2, 1, colSpan=2) scriptDialog.AddControlToGrid("PostFrameScriptLabel", "LabelControl", "Run Post-Frame Script", 3, 0, "Run a MAXScript specified in the file browser field AFTER the Slave renders a frame.", False) scriptDialog.AddSelectionControlToGrid("PostFrameScriptBox", "FileBrowserControl", "", "MAXScript File (*.ms)", 3, 1, colSpan=2) scriptDialog.EndGrid() scriptDialog.AddGrid() scriptDialog.AddHorizontalSpacerToGrid("HSpacer1", 0, 0) applyButton = scriptDialog.AddControlToGrid("ApplyButton", "ButtonControl", "Apply", 0, 1, expand=False) applyButton.ValueModified.connect(ApplyButtonPressed) closeButton = scriptDialog.AddControlToGrid("CloseButton", "ButtonControl", "Close", 0, 2, expand=False) closeButton.ValueModified.connect(CloseButtonPressed) scriptDialog.EndGrid() settings = ("PreLoadScriptBox", "PostLoadScriptBox", "PreFrameScriptBox", "PostFrameScriptBox") scriptDialog.LoadSettings(GetSettingsFilename(), settings) scriptDialog.EnabledStickySaving(settings, GetSettingsFilename()) scriptDialog.ShowDialog(True)
def __main__(): global scriptDialog maximumPriority = RepositoryUtils.GetMaximumPriority() scriptDialog = DeadlineScriptDialog() scriptDialog.SetSize(350, 100) scriptDialog.AllowResizingDialog(True) scriptDialog.SetTitle("Set/Offset Priority of Selected Jobs") scriptDialog.AddGrid() scriptDialog.AddControlToGrid("AbsLabel", "LabelControl", "Absolute Priority:", 0, 0, "The absolute priority for the job.", False) scriptDialog.AddRangeControlToGrid("AbsBox", "RangeControl", 0, 0, maximumPriority, 0, 1, 0, 1) absButton = scriptDialog.AddControlToGrid("AbsButton", "ButtonControl", "Apply", 0, 2, expand=False) absButton.ValueModified.connect(AbsButtonPressed) scriptDialog.AddControlToGrid("OffsetLabel", "LabelControl", "Priority Offset:", 1, 0, "The priority offset.", False) scriptDialog.AddRangeControlToGrid("OffsetBox", "RangeControl", 0, -maximumPriority, maximumPriority, 0, 1, 1, 1) offsetButton = scriptDialog.AddControlToGrid("OffsetButton", "ButtonControl", "Apply", 1, 2, expand=False) offsetButton.ValueModified.connect(OffsetButtonPressed) closeButton = scriptDialog.AddControlToGrid("CloseButton", "ButtonControl", "Close", 2, 2, expand=False) closeButton.ValueModified.connect(CloseButtonPressed) scriptDialog.EndGrid() scriptDialog.ShowDialog(False)
def __main__(): global scriptDialog scriptDialog = DeadlineScriptDialog() selectedJobs = MonitorUtils.GetSelectedJobs() if len(selectedJobs) > 1: scriptDialog.ShowMessageBox( "Only one DBR job can be selected at a time.", "Multiple Jobs Selected" ) return job = selectedJobs[0] if Job.JobPlugin not in ( "VraySpawner", "VraySwarm", "3dsmax", "3dsCmd", "CoronaDR", "Modo" ): scriptDialog.ShowMessageBox( "Only DBR based jobs should use this script.", "Error" ) return if str( job.JobStatus ) not in ( "Suspended", "Failed", "Completed", "Unknown" ): scriptDialog.ShowMessageBox( "Only active DBR jobs can be modified.", "Error" ) return if job.JobPlugin in ( "3dsmax", "3dsCmd", "Modo" ): vrayDBRJob = bool( job.GetJobPluginInfoKeyValue( "VRayDBRJob" ) ) vrayRtDBRJob = bool( job.GetJobPluginInfoKeyValue( "VRayRtDBRJob" ) ) mentalRayDBRJob = bool( job.GetJobPluginInfoKeyValue( "MentalRayDBRJob" ) ) modoDBRJob = bool( job.GetJobPluginInfoKeyValue( "ModoDBRJob" ) ) if not ( vrayDBRJob or vrayRtDBRJob or mentalRayDBRJob or modoDBRJob ): scriptDialog.ShowMessageBox( "Only DBR off-load based 3dsmax/3dsCmd/Modo jobs should use this script.", "Error" ) return tasks = RepositoryUtils.GetJobTasks( job, True ) activeTasksCount = 0 for task in tasks: if IsTaskStatusActive( task.TaskStatus ): activeTasksCount += 1 scriptDialog.AllowResizingDialog( False ) scriptDialog.SetTitle( "Dynamic DBR Control" ) scriptDialog.AddGrid() scriptDialog.AddControlToGrid( "MaxServersLabel", "LabelControl", "Active Servers:", 0, 0 , "This is the maximum number of active Deadline Slaves to be reserved to assist in computing this DBR job.", False ) scriptDialog.AddRangeControlToGrid( "MaxServersBox", "RangeControl", activeTasksCount, 0, 100, 0, 1, 0, 1 ) applyButton = scriptDialog.AddControlToGrid( "ApplyButton", "ButtonControl", "Apply", 0, 2, expand=False ) applyButton.ValueModified.connect(ApplyButtonPressed) closeButton = scriptDialog.AddControlToGrid( "CloseButton", "ButtonControl", "Close", 0, 3, expand=False ) closeButton.ValueModified.connect(CloseButtonPressed) scriptDialog.EndGrid() scriptDialog.ShowDialog( True )
def __main__(): global scriptDialog scriptDialog = DeadlineScriptDialog() scriptDialog.SetSize(450, 68) scriptDialog.AllowResizingDialog(False) scriptDialog.SetTitle("Start/Stop Service (For Windows Only)") scriptDialog.AddGrid() scriptDialog.AddControlToGrid( "NameLabel", "LabelControl", "Service Name", 0, 0, "The name of the Windows Service to start or stop.", False) scriptDialog.AddControlToGrid("NameBox", "TextControl", "", 0, 1) scriptDialog.EndGrid() scriptDialog.AddGrid() scriptDialog.AddHorizontalSpacerToGrid("DummyLabel1", 0, 0) startButton = scriptDialog.AddControlToGrid("StartButton", "ButtonControl", "Start", 0, 1, expand=False) startButton.ValueModified.connect(StartButtonPressed) stopButton = scriptDialog.AddControlToGrid("StopButton", "ButtonControl", "Stop", 0, 2, expand=False) stopButton.ValueModified.connect(StopButtonPressed) closeButton = scriptDialog.AddControlToGrid("CloseButton", "ButtonControl", "Close", 0, 3, expand=False) closeButton.ValueModified.connect(CloseButtonPressed) scriptDialog.EndGrid() scriptDialog.ShowDialog(True)
def __main__(): global scriptDialog scriptDialog = DeadlineScriptDialog() scriptDialog.AllowResizingDialog(False) scriptDialog.SetTitle("Timeouts") scriptDialog.AddGrid() scriptDialog.AddSelectionControlToGrid( "EnableTimeoutsJobScriptsBox", "CheckBoxControl", False, "Enable Timeouts For Pre/Post Job Scripts", 0, 0, "If checked, then the timeouts for this job will also affect its pre/post job scripts, if any are defined." ) scriptDialog.AddSelectionControlToGrid( "UseFrameTimeoutsBox", "CheckBoxControl", False, "Use Frame Timeouts", 1, 0, "If enabled, timeouts will be calculated based on frames instead of by tasks. The timeouts entered for tasks will be used for each frame in that task." ) applyButton = scriptDialog.AddControlToGrid("ApplyButton", "ButtonControl", "Apply", 1, 2, expand=False) applyButton.ValueModified.connect(ApplyButtonPressed) closeButton = scriptDialog.AddControlToGrid("CloseButton", "ButtonControl", "Close", 2, 2, expand=False) closeButton.ValueModified.connect(CloseButtonPressed) scriptDialog.EndGrid() scriptDialog.ShowDialog(False)
def __main__(): global vrimgScriptDialog global scriptPath global vrimgFilenames vrimgScriptDialog = DeadlineScriptDialog() vrimgScriptDialog.SetIcon( os.path.join( RepositoryUtils.GetRootDirectory("plugins/Vrimg2Exr"), "Vrimg2Exr.ico" ) ) selectedJobs = MonitorUtils.GetSelectedJobs() if len(selectedJobs) > 1: vrimgScriptDialog.ShowMessageBox( "Only one job can be selected at a time.", "Multiple Jobs Selected" ) return scriptPath = Path.Combine( RepositoryUtils.GetRootDirectory("scripts/Submission"), "Vrimg2ExrSubmission.py" ) scriptPath = PathUtils.ToPlatformIndependentPath( scriptPath ) job = selectedJobs[0] outputFilenameCount = len(job.JobOutputFileNames) if outputFilenameCount == 0: vrimgScriptDialog.ShowMessageBox( "Job does not contain any output filename(s).", "Missing Output" ) return for i in range( 0, outputFilenameCount ): outputFilename = Path.Combine( job.JobOutputDirectories[i], job.JobOutputFileNames[i]) outputFilename = FrameUtils.ReplacePaddingWithFrameNumber( outputFilename, job.JobFramesList[0] ) if outputFilename.lower().endswith( ".vrimg" ): vrimgFilenames.append( outputFilename ) vrimgFilenameCount = len( vrimgFilenames ) if vrimgFilenameCount > 1: dialogWidth = 600 vrimgScriptDialog.AllowResizingDialog( False ) #vrimgScriptDialog.SetSize( dialogWidth, (vrimgFilenameCount * 32) + 100 ) vrimgScriptDialog.SetTitle( "Submit Vrimg2Exr Job To Deadline" ) vrimgScriptDialog.AddGrid() vrimgScriptDialog.AddControlToGrid( "Label", "LabelControl", "Please select the vrming images to convert to exr.", 0, 0 ) for i in range( 0, vrimgFilenameCount ): outputFilename = vrimgFilenames[ i ] outputFilename = RepositoryUtils.CheckPathMapping( outputFilename, False ) outputFilename = PathUtils.ToPlatformIndependentPath( outputFilename ) vrimgScriptDialog.AddSelectionControlToGrid( str(i), "CheckBoxControl", (i==0), Path.GetFileName( outputFilename ), i+1, 0 ) vrimgScriptDialog.EndGrid() vrimgScriptDialog.AddGrid() vrimgScriptDialog.AddHorizontalSpacerToGrid( "DummyLabel1", 0, 0 ) submitButton = vrimgScriptDialog.AddControlToGrid( "SubmitButton", "ButtonControl", "Submit", 0, 1, expand=False ) submitButton.ValueModified.connect(SubmitButtonPressed) closeButton = vrimgScriptDialog.AddControlToGrid( "CloseButton", "ButtonControl", "Close", 0, 2, expand=False ) closeButton.ValueModified.connect(CloseButtonPressed) vrimgScriptDialog.EndGrid() vrimgScriptDialog.ShowDialog( True ) elif vrimgFilenameCount == 1: outputFilename = vrimgFilenames[ 0 ] outputFilename = RepositoryUtils.CheckPathMapping( outputFilename, False ) outputFilename = PathUtils.ToPlatformIndependentPath( outputFilename ) ClientUtils.ExecuteScript( scriptPath, outputFilename ) else: ClientUtils.ExecuteScript( scriptPath, "" )
def __main__(): global scriptDialog global settings scriptDialog = DeadlineScriptDialog() scriptDialog.AllowResizingDialog(False) scriptDialog.SetTitle("IPMI - Remote Command") # Check at least 1 Pulse machine has been defined in Deadline pulseNames = RepositoryUtils.GetPulseNames(True) if len(pulseNames) == 0: scriptDialog.ShowMessageBox( "At least 1 Pulse server must exist in Deadline for this script to function correctly!", "Error") return pulseNames = list(pulseNames) scriptDialog.AddGrid() scriptDialog.AddControlToGrid( "IPMILabel0", "LabelControl", "Select valid Pulse to execute IPMI command via:", 0, 0, "Select which Pulse to execute IPMI command.", False) PulseSelected = scriptDialog.AddComboControlToGrid( "PulseName", "ComboControl", "", pulseNames, 0, 1, "List of Pulse Servers registered in Deadline.", False) PulseSelected.ValueModified.connect(PulseSelectionChanged) scriptDialog.AddControlToGrid("IPMILabel1", "LabelControl", "IPMI Command to execute:", 1, 0, "Select which IPMI command to execute.", False) CommandSelected = scriptDialog.AddComboControlToGrid( "Command", "ComboControl", "power on", ("power on", "soft power off", "power off", "power reset"), 1, 1, "List of IPMI Commands.", False) CommandSelected.ValueModified.connect(CommandSelectionChanged) scriptDialog.EndGrid() scriptDialog.AddGrid() scriptDialog.AddHorizontalSpacerToGrid("DummyLabel0", 0, 0) executeButton = scriptDialog.AddControlToGrid("ExecuteButton", "ButtonControl", "Execute", 0, 1, expand=False) executeButton.ValueModified.connect(ExecuteButtonPressed) closeButton = scriptDialog.AddControlToGrid("CloseButton", "ButtonControl", "Close", 0, 2, expand=False) closeButton.ValueModified.connect(CloseButtonPressed) scriptDialog.EndGrid() settings = ("PulseName", "Command") scriptDialog.LoadSettings(GetSettingsFilename(), settings) scriptDialog.EnabledStickySaving(settings, GetSettingsFilename()) scriptDialog.Shown.connect(InitializeDialog) scriptDialog.ShowDialog(True)
def __main__(): global rvioScriptDialog global scriptPath rvioScriptDialog = DeadlineScriptDialog() rvioScriptDialog.SetIcon( Path.Combine(RepositoryUtils.GetRootDirectory("plugins/RVIO"), "RVIO.ico")) selectedJobs = MonitorUtils.GetSelectedJobs() if len(selectedJobs) > 1: rvioScriptDialog.ShowMessageBox( "Only one job can be selected at a time.", "Multiple Jobs Selected") return scriptPath = Path.Combine( RepositoryUtils.GetRootDirectory("scripts/Submission"), "RVIOSubmission.py") scriptPath = PathUtils.ToPlatformIndependentPath(scriptPath) job = selectedJobs[0] outputFilenameCount = len(job.JobOutputFileNames) if outputFilenameCount == 0: rvioScriptDialog.ShowMessageBox( "Job does not contain any output filename(s).", "Missing Output") return versionId = "" if outputFilenameCount > 0: versionId = job.GetJobExtraInfoKeyValue("VersionId") if versionId != "": lines = [] lines.append("VersionId=%s" % versionId) if job.GetJobExtraInfoKeyValue("EntityId") != "": lines.append("EntityId=%s" % job.GetJobExtraInfoKeyValue("EntityId")) if job.GetJobExtraInfoKeyValue("EntityType") != "": lines.append("EntityType=%s" % job.GetJobExtraInfoKeyValue("EntityType")) if job.GetJobExtraInfoKeyValue("ProjectId") != "": lines.append("ProjectId=%s" % job.GetJobExtraInfoKeyValue("ProjectId")) if job.GetJobExtraInfoKeyValue("TaskId") != "": lines.append("TaskId=%s" % job.GetJobExtraInfoKeyValue("TaskId")) if job.JobExtraInfo0 != "": lines.append("TaskName=%s" % job.JobExtraInfo0) elif job.GetJobExtraInfoKeyValue("TaskName") != "": lines.append("TaskName=%s" % job.GetJobExtraInfoKeyValue("TaskName")) if job.JobExtraInfo1 != "": lines.append("ProjectName=%s" % job.JobExtraInfo1) elif job.GetJobExtraInfoKeyValue("ProjectName") != "": lines.append("ProjectName=%s" % job.GetJobExtraInfoKeyValue("ProjectName")) if job.JobExtraInfo2 != "": lines.append("EntityName=%s" % job.JobExtraInfo2) elif job.GetJobExtraInfoKeyValue("EntityName") != "": lines.append("EntityName=%s" % job.GetJobExtraInfoKeyValue("EntityName")) if job.JobExtraInfo3 != "": lines.append("VersionName=%s" % job.JobExtraInfo3) elif job.GetJobExtraInfoKeyValue("VersionName") != "": lines.append("VersionName=%s" % job.GetJobExtraInfoKeyValue("VersionName")) if job.JobExtraInfo4 != "": lines.append("Description=%s" % job.JobExtraInfo4) elif job.GetJobExtraInfoKeyValue("Description") != "": lines.append("Description=%s" % job.GetJobExtraInfoKeyValue("Description")) if job.JobExtraInfo5 != "": lines.append("UserName=%s" % job.JobExtraInfo5) elif job.GetJobExtraInfoKeyValue("UserName") != "": lines.append("UserName=%s" % job.GetJobExtraInfoKeyValue("UserName")) shotgunSettingsPath = Path.Combine( ClientUtils.GetUsersSettingsDirectory(), "RVIOSettingsShotgun.ini") File.WriteAllLines(shotgunSettingsPath, tuple(lines)) if outputFilenameCount > 1: rvioScriptDialog.AllowResizingDialog(False) rvioScriptDialog.SetTitle("Submit RVIO Quicktime Job To Deadline") rvioScriptDialog.AddGrid() rvioScriptDialog.AddControlToGrid( "Label", "LabelControl", "Please select the output images to create a QuickTime MOV using RVIO", 0, 0) for i in range(0, outputFilenameCount): outputFilename = Path.Combine(job.JobOutputDirectories[i], job.JobOutputFileNames[i]) outputFilename = FrameUtils.ReplacePaddingWithFrameNumber( outputFilename, job.JobFramesList[0]) outputFilename = RepositoryUtils.CheckPathMapping( outputFilename, False) outputFilename = PathUtils.ToPlatformIndependentPath( outputFilename) rvioScriptDialog.AddSelectionControlToGrid( str(i), "CheckBoxControl", (i == 0), Path.GetFileName(outputFilename), i + 1, 0) rvioScriptDialog.EndGrid() rvioScriptDialog.AddGrid() rvioScriptDialog.AddHorizontalSpacerToGrid("DummyLabel1", 0, 0) submitButton = rvioScriptDialog.AddControlToGrid("SubmitButton", "ButtonControl", "Submit", 0, 1, expand=False) submitButton.ValueModified.connect(SubmitButtonPressed) closeButton = rvioScriptDialog.AddControlToGrid("CloseButton", "ButtonControl", "Close", 0, 2, expand=False) closeButton.ValueModified.connect(CloseButtonPressed) rvioScriptDialog.EndGrid() rvioScriptDialog.ShowDialog(True) else: outputFilename = Path.Combine(job.JobOutputDirectories[0], job.JobOutputFileNames[0]) outputFilename = FrameUtils.ReplacePaddingWithFrameNumber( outputFilename, job.JobFramesList[0]) outputFilename = RepositoryUtils.CheckPathMapping( outputFilename, False) outputFilename = PathUtils.ToPlatformIndependentPath(outputFilename) arguments = [ outputFilename, ] if versionId != "": arguments.append("EnableShotgun") ClientUtils.ExecuteScript(scriptPath, arguments)
def __main__(): global djvScriptDialog global scriptPath djvScriptDialog = DeadlineScriptDialog() djvScriptDialog.SetIcon( Path.Combine( RepositoryUtils.GetRootDirectory("plugins/DJV"), "DJV.ico" ) ) selectedJobs = MonitorUtils.GetSelectedJobs() if len(selectedJobs) > 1: djvScriptDialog.ShowMessageBox( "Only one job can be selected at a time.", "Multiple Jobs Selected" ) return scriptPath = Path.Combine( RepositoryUtils.GetRootDirectory("scripts/Submission"), "DJVSubmission.py" ) scriptPath = PathUtils.ToPlatformIndependentPath( scriptPath ) job = selectedJobs[0] outputFilenameCount = len(job.JobOutputFileNames) if outputFilenameCount == 0: djvScriptDialog.ShowMessageBox( "Job does not contain any output filename(s).", "Missing Output" ) return versionId = "" if outputFilenameCount > 0: versionId = job.GetJobExtraInfoKeyValue( "VersionId" ) if versionId != "": lines = [] lines.append( "VersionId=%s" % versionId ) if job.GetJobExtraInfoKeyValue( "EntityId" ) != "": lines.append( "EntityId=%s" % job.GetJobExtraInfoKeyValue( "EntityId" ) ) if job.GetJobExtraInfoKeyValue( "EntityType" ) != "": lines.append( "EntityType=%s" % job.GetJobExtraInfoKeyValue( "EntityType" ) ) if job.GetJobExtraInfoKeyValue( "ProjectId" ) != "": lines.append( "ProjectId=%s" % job.GetJobExtraInfoKeyValue( "ProjectId" ) ) if job.GetJobExtraInfoKeyValue( "TaskId" ) != "": lines.append( "TaskId=%s" % job.GetJobExtraInfoKeyValue( "TaskId" ) ) if job.JobExtraInfo0 != "": lines.append( "TaskName=%s" % job.JobExtraInfo0 ) elif job.GetJobExtraInfoKeyValue( "TaskName" ) != "": lines.append( "TaskName=%s" % job.GetJobExtraInfoKeyValue( "TaskName" ) ) if job.JobExtraInfo1 != "": lines.append( "ProjectName=%s" % job.JobExtraInfo1 ) elif job.GetJobExtraInfoKeyValue( "ProjectName" ) != "": lines.append( "ProjectName=%s" % job.GetJobExtraInfoKeyValue( "ProjectName" ) ) if job.JobExtraInfo2 != "": lines.append( "EntityName=%s" % job.JobExtraInfo2 ) elif job.GetJobExtraInfoKeyValue( "EntityName" ) != "": lines.append( "EntityName=%s" % job.GetJobExtraInfoKeyValue( "EntityName" ) ) if job.JobExtraInfo3 != "": lines.append( "VersionName=%s" % job.JobExtraInfo3 ) elif job.GetJobExtraInfoKeyValue( "VersionName" ) != "": lines.append( "VersionName=%s" % job.GetJobExtraInfoKeyValue( "VersionName" ) ) if job.JobExtraInfo4 != "": lines.append( "Description=%s" % job.JobExtraInfo4 ) elif job.GetJobExtraInfoKeyValue( "Description" ) != "": lines.append( "Description=%s" % job.GetJobExtraInfoKeyValue( "Description" ) ) if job.JobExtraInfo5 != "": lines.append( "UserName=%s" % job.JobExtraInfo5 ) elif job.GetJobExtraInfoKeyValue( "UserName" ) != "": lines.append( "UserName=%s" % job.GetJobExtraInfoKeyValue( "UserName" ) ) shotgunSettingsPath = Path.Combine( ClientUtils.GetUsersSettingsDirectory(), "DJVSettingsShotgun.ini" ) File.WriteAllLines( shotgunSettingsPath, tuple(lines) ) if outputFilenameCount > 1: djvScriptDialog.AllowResizingDialog( False ) djvScriptDialog.SetTitle( "Submit DJV QuickTime Job To Deadline" ) djvScriptDialog.AddGrid() djvScriptDialog.AddControlToGrid( "Label", "LabelControl", "Please select the output images to create a QuickTime MOV using DJV", 0, 0 ) for i in range( 0, outputFilenameCount ): outputFilename = Path.Combine( job.JobOutputDirectories[i], job.JobOutputFileNames[i]) outputFilename = FrameUtils.ReplacePaddingWithFrameNumber( outputFilename, job.JobFramesList[0] ) outputFilename = RepositoryUtils.CheckPathMapping( outputFilename, False ) outputFilename = PathUtils.ToPlatformIndependentPath( outputFilename ) djvScriptDialog.AddSelectionControlToGrid( str(i), "CheckBoxControl", (i==0), Path.GetFileName( outputFilename ), i+1, 0 ) djvScriptDialog.EndGrid() djvScriptDialog.AddGrid() djvScriptDialog.AddHorizontalSpacerToGrid( "DummyLabel1", 0, 0 ) submitButton = djvScriptDialog.AddControlToGrid( "SubmitButton", "ButtonControl", "Submit", 0, 1, expand=False ) submitButton.ValueModified.connect(SubmitButtonPressed) closeButton = djvScriptDialog.AddControlToGrid( "CloseButton", "ButtonControl", "Close", 0, 2, expand=False ) closeButton.ValueModified.connect(CloseButtonPressed) djvScriptDialog.EndGrid() djvScriptDialog.ShowDialog( True ) else: JobName = job.JobName JobID = job.JobId FramesList = job.JobFrames # Unable to handle nth Frame based FramesList at the moment, until Deadline.Scripting API Function improved in a future release of Deadline (~v5.1?) FrameRange = FramesList.split( "-" ) FrameRange = FramesList.split( "," ) # Throw Error if the Frame List is not in the form "0-100" if len(FrameRange) >= 4: djvScriptDialog.ShowMessageBox( "DJV presently does not support handling nth Frame based render input sequences.", "Error!" ) CloseDJVDialog() return startFrame = FrameRange[0] # get first item in list endFrame = FrameRange[-1] # get last item in list, no matter how long it is FramesList = startFrame + "-" + endFrame outputFilename = Path.Combine( job.JobOutputDirectories[0], job.JobOutputFileNames[0]) outputFilename = FrameUtils.ReplacePaddingWithFrameNumber( outputFilename, job.JobFramesList[0] ) outputFilename = RepositoryUtils.CheckPathMapping( outputFilename, False ) outputFilename = PathUtils.ToPlatformIndependentPath( outputFilename ) InputImages = outputFilename.replace( "\\", "/" ) OutputMovie = "" if outputFilename and len(outputFilename) > 0: imgDirectory = Path.GetDirectoryName( outputFilename ) if imgDirectory != None: imgFilename = Path.GetFileNameWithoutExtension( outputFilename ) # Job Script hard-wired to QuickTime MOV until above Deadline.Scripting API Function improved to handle nth frame based render output sequences. Deadline (~v5.1?) OutputMovie = ( imgDirectory.replace( "\\", "/" ) + "/" + imgFilename + ".mov" ) arguments = [ InputImages, OutputMovie, JobID, JobName, FramesList ] if versionId != "": arguments.append( "EnableShotgun" ) ClientUtils.ExecuteScript( scriptPath, arguments )