Beispiel #1
0
def create():        
    cmdjob = SimpleSubmit('Submit Transcoder', hasRange=False, canChunk=False, help='Cluster based transcoder using blender.', postDialog=postDialog, category="2D")

    # Project Information
    cmdjob.add_optionGroup('Transcoder')
    Transcoder.addTranscodeWidgetToDlg(cmdjob)

    # Additional properties to set
    cmdjob.properties['flagsstring'] = 'disable_windows_job_object'  # Needs to be disabled for Windows
    
    # Set some default job options
    cmdjob.package.setdefault('shell', '/bin/bash')
    
    return [cmdjob]
Beispiel #2
0
def create():
    cmdjob = SimpleSubmit(
        'Submit After Effects',
        hasRange=False,
        canChunk=False,
        help='After Effects rendering with progress and more.',
        category="2D",
        controlChanged=controlChanged,
        preDialog=preDialog,
        postDialog=postDialog,
        install=install)

    # Initialize the AE Data Class
    cmdjob.ctrl = SubmitAfterEffectsClasses.Controller(logging)

    # Project Information
    cmdjob.add_optionGroup('Info')
    cmdjob.add_option('projectPath',
                      'file',
                      'Project Name',
                      label='Project File',
                      mode='open',
                      required=True,
                      editable=True)
    cmdjob.add_option('rqIndex',
                      'choice',
                      'RQ Item index and comp name.',
                      label='RQ Item',
                      required=True,
                      editable=True)
    cmdjob.add_option('outputs',
                      'choice',
                      'Output Paths.',
                      label='Outputs',
                      required=True,
                      editable=False,
                      multi=True,
                      choices=['None'])

    # Required
    cmdjob.add_optionGroup('Required', collapsed=False)
    cmdjob.add_option('notes',
                      'string',
                      'Notes about render',
                      label='Notes',
                      required=True,
                      lines=3,
                      default=' ')
    cmdjob.add_option('email',
                      'string',
                      'Notification Email Address(s)',
                      label='Email',
                      required=True,
                      lines=1)

    # Advanced
    cmdjob.add_optionGroup('Advanced', collapsed=False)
    cmdjob.add_option('multProcs',
                      'bool',
                      'Use Multiple Processors',
                      label='Multiple Processors',
                      required=False,
                      default=False)

    # Additional properties to set
    cmdjob.properties[
        'flagsstring'] = 'disable_windows_job_object'  # Needs to be disabled for Windows

    # Set some default job options
    cmdjob.properties['groups'] = 'AfterEffects'
    cmdjob.properties['cluster'] = '/Animation'
    cmdjob.properties['hostorder'] = '+host.memory.avail'
    cmdjob.properties[
        'reservations'] = 'host.processors=1+'  # Reserve all cpus for the one job
    cmdjob.properties['retrysubjob'] = 3
    cmdjob.properties['retrywork'] = 3
    cmdjob.package.setdefault('shell', '/bin/bash')

    return [cmdjob]
Beispiel #3
0
def create():        
    cmdjob = SimpleSubmit('Submit After Effects', hasRange=False, canChunk=False, help='After Effects rendering with progress and more.', category="2D", controlChanged=controlChanged, preDialog=preDialog, postDialog=postDialog, install=install)

    # Initialize the AE Data Class
    cmdjob.ctrl = SubmitAfterEffectsClasses.Controller(logging)

    # Project Information
    cmdjob.add_optionGroup('Info')
    cmdjob.add_option( 'projectPath', 'file' , 'Project Name', label='Project File',
                        mode='open', required=True, editable=True)
    cmdjob.add_option( 'rqIndex', 'choice', 'RQ Item index and comp name.', label='RQ Item',
                        required=True, editable=True)
    cmdjob.add_option( 'outputs', 'choice', 'Output Paths.', label='Outputs',
                        required=True, editable=False, multi=True, choices=['None'])
    
    # Required
    cmdjob.add_optionGroup('Required', collapsed=False)
    cmdjob.add_option( 'notes', 'string', 'Notes about render', label='Notes',
                        required=True, lines=3, default=' ')
    cmdjob.add_option( 'email', 'string', 'Notification Email Address(s)', label='Email',
                        required=True, lines=1)

    # Advanced
    cmdjob.add_optionGroup('Advanced', collapsed=False)
    cmdjob.add_option( 'multProcs', 'bool', 'Use Multiple Processors', label='Multiple Processors',
                        required=False, default=False)

    # Additional properties to set
    cmdjob.properties['flagsstring'] = 'disable_windows_job_object'  # Needs to be disabled for Windows
    
    # Set some default job options
    cmdjob.properties['groups'] = 'AfterEffects'
    cmdjob.properties['cluster'] = '/Animation'
    cmdjob.properties['hostorder'] = '+host.memory.avail'
    cmdjob.properties['reservations'] = 'host.processors=1+' # Reserve all cpus for the one job
    cmdjob.properties['retrysubjob'] = 3
    cmdjob.properties['retrywork'] = 3
    cmdjob.package.setdefault('shell', '/bin/bash')
    
    return [cmdjob]
Beispiel #4
0
def create():
    cmdjob = SimpleSubmit('Submit Maya',
                          hasRange=True,
                          canChunk=False,
                          help='Front-end submission to Maya jobtype',
                          category="3D",
                          preDialog=preDialog,
                          postDialog=postDialog,
                          postSubmit=postSubmit,
                          controlChanged=controlChanged,
                          install=install)

    cmdjob.add_optionGroup('Required')
    cmdjob.add_option('scenefile',
                      'file',
                      'Path to Maya scene (required)',
                      label='Scene',
                      mode='open',
                      required=True)
    cmdjob.add_option('project',
                      'dir',
                      'Path to Maya project directory',
                      label='Project',
                      mode='open',
                      required=True)

    # Elevate
    # Add quicker access to notes and email
    cmdjob.add_optionGroup('General')
    cmdjob.add_option('notes',
                      'string',
                      'Notes about render',
                      label='Notes',
                      required=True,
                      lines=3,
                      default=' ')
    cmdjob.add_option('email',
                      'string',
                      'Notification Email Address(s)',
                      label='Email',
                      required=True,
                      lines=1)

    cmdjob.add_optionGroup('Cameras/Layers/Lights')
    cmdjob.add_option('cameras',
                      'string',
                      "List of cameras to render (space-separated)",
                      label='Cameras',
                      multi=True,
                      multiDelimiter=' ')
    cmdjob.add_option('layers',
                      'string',
                      "List of layers to render (space-separated)",
                      label='Layers',
                      multi=True,
                      multiDelimiter=' ')
    cmdjob.add_option('defaultRenderGlobals.enableDefaultLight',
                      'choice',
                      '',
                      label='EnableDefaultLight',
                      choices=['', '0', '1'])

    cmdjob.add_optionGroup('Renderer')
    cmdjob.add_option('defaultRenderGlobals.currentRenderer',
                      'string',
                      'Renderer Override',
                      label='Renderer',
                      default='mentalRay')
    cmdjob.add_option('renderThreads',
                      'int',
                      'Number of threads that ' +
                      'each subjob should use. Set to -1 to sync with ' +
                      'host.processors, 0 to use all cores on the worker',
                      label='Render Threads',
                      min=-1,
                      max=16,
                      default=-1)
    cmdjob.add_option(
        'ignoreRenderTimeErrors',
        'bool',
        'Ignore Render-time Errors: ignore error messages that are generated during render-time that would otherwise cause frame failure',
        label='Ignore Errors')
    # commenting out the "batchmode" option-- batch renders should now be
    # submitted from simpleCmd "Maya BatchRender"
    #     cmdjob.add_option( 'batchmode', 'bool', "Set for batch mode (restart Maya with every frame and the render command)", label='Batch Mode')
    cmdjob.add_option(
        'mentalray_satellite',
        'choice',
        'Note: only meaningful for layers rendered with mental ray',
        label='m-ray Satellite',
        choices=["None", "Unlimited (8 CPUs)", "Complete (2 CPUs)"],
        default="None")
    cmdjob.add_option(
        'mayaExecutable',
        'file',
        'Specify path to the maya executable file (mayabatch.exe for Windows), if you want to override the auto-detected default. (optional)',
        label='Maya Executable',
        mode='open',
        default='/usr/local/maya')

    cmdjob.add_optionGroup('Image File Output')
    cmdjob.add_option('renderDirectory',
                      'dir',
                      'Path to Maya output render directory',
                      label='Render dir',
                      mode='save')
    cmdjob.add_option('defaultRenderGlobals.imageFilePrefix',
                      'string',
                      'Image file name prefix override',
                      label='File Name Prefix')
    cmdjob.add_option(
        'frameExt',
        'choice',
        '',
        choices=['', '3', '4', '5', '6', '7'],
        label='Frame/Anim Ext',
        choiceLabels={
            #'1': 'name',        # for single frame
            #'2': 'name.ext',    # for single frame
            '3': 'name.#.ext',
            '4': 'name.ext.#',
            '5': 'name.#',
            '6': 'name#.ext',
            '7': 'name_#.ext',
            #'8': 'namec',       # for multi-frame animation sequences
            #'9': 'namec.ext',   # for multi-frame animation sequences
        })

    # Image Formats
    outputFormats = {
        '0': 'GIF',
        '1': 'SI',
        '2': 'RLA',
        '3': 'Tiff',
        '4': 'Tif16',
        '5': 'SGI',
        '6': 'Alias',
        '7': 'IFF',
        '8': 'JPEG',
        '9': 'EPS',
        '10': 'IFF16',
        '11': 'Cineon',
        '12': 'Quantel PAL',
        '13': 'SGI16',
        '19': 'TARGA',
        '20': 'BMP',
        #'21':'SGIMV',
        #'22':'QT',
        #'23':'AVI',
        '30': 'MACPAINT',
        '31': 'PSD',
        '32': 'PNG',
        '33': 'QUICKDRAW',
        '34': 'QTIMAGE',
        '35': 'DDS',
        '36': 'PSD Layered',
        #'50':'IMFplugin',
        #'51':'Custom',
        '60': 'SWF',
        '61': 'AI',
        '62': 'SVG',
        '63': 'SWFT',
    }
    # REVISIT: Commented out since not all image formats are usable by all renderers.
    #          Uncomment this section if that is not an issue.
    #          NOTE: The format types like OpenEXR all use custom (51).
    # sort keys numerically (if using python 2.4 or above can use sorted() to simplify)
    ##outputFormatSortedKeys = [int(i) for i in outputFormats.keys()]
    ##outputFormatSortedKeys.sort()
    ##outputFormatSortedKeys = [str(i) for i in outputFormatSortedKeys]
    ##cmdjob.add_option( 'defaultRenderGlobals.imageFormat', 'choice', 'output image format', label='Image Format', choices=['']+outputFormatSortedKeys, choiceLabels=dict([(k, '%s (%s)'%(v,k)) for k,v in outputFormats.iteritems()]))

    cmdjob.add_option(
        'defaultRenderGlobals.extensionPadding',
        'string',
        'Number of digits for frame number, e.g. 4 means name.XXXX.ext',
        label='Frame Padding',
        min=1,
        max=5)
    # NOTE: defaultRenderGlobals.modifyExtension set in postDialog callback
    #cmdjob.add_option( 'defaultRenderGlobals.modifyExtension'        , 'choice',
    #                  ('Should start and by output image filename extension modifiers be used?\n'
    #                  ' (false-> use the current frame value as the filename extension, true->use '
    #                  'startExtension + ((currentFrame-startFrame)/byFrame) * byExtension value as the filename extension).'),
    #                  choices=['', '0', '1'], label='Renumber Extension')
    cmdjob.add_option('defaultRenderGlobals.startExtension',
                      'string',
                      'The starting output image filename extension value.',
                      label='Renumber StartFrame')
    cmdjob.add_option(
        'defaultRenderGlobals.byExtension',
        'string',
        "The output image filename extension step ('by' or increment) value. ",
        label='Renumber ByFrame')
    cmdjob.add_option(
        'defaultRenderGlobals.outFormatExt',
        'string',
        "File extension name override. The string added at the end of the file name",
        label='File extension')
    # Handled in postDialog call
    #cmdjob.add_option( 'defaultRenderGlobals.animation'        , 'choice', '', choices=['', '0', '1'])
    #cmdjob.add_option( 'defaultRenderGlobals.periodInExt'      , 'choice', '', choices=['', '0', '1', '2'])
    #cmdjob.add_option( 'defaultRenderGlobals.putFrameBeforeExt', 'choice', '', choices=['', '0', '1'])
    #cmdjob.add_option( 'defaultRenderGlobals.outFormatControl', 'choice', '', choices=['', '0', '2'])

    cmdjob.add_optionGroup('Image Size')
    cmdjob.add_option('defaultResolution.width',
                      'string',
                      "Image width",
                      label='Image Width (pixels)')
    cmdjob.add_option('defaultResolution.height',
                      'string',
                      "Image height",
                      label='Image Height (pixels)')
    cmdjob.add_option('defaultResolution.aspectLock',
                      'choice',
                      '',
                      label='Maintain Aspect ratio',
                      choices=['', '0', '1'])
    cmdjob.add_option('defaultResolution.lockDeviceAspectRatio',
                      'choice',
                      '',
                      label='Maintain ratio',
                      choices=['', '0', '1'],
                      choiceLabels={
                          '0': 'Pixel Aspect',
                          '1': 'Device Aspect'
                      })
    cmdjob.add_option('defaultResolution.dotsPerInch',
                      'string',
                      'Resolution (Pixels/Inch)',
                      label='Pixels/Inch')
    cmdjob.add_option('defaultResolution.deviceAspectRatio',
                      'string',
                      '',
                      label='Device Aspect Ratio')
    cmdjob.add_option('defaultResolution.pixelAspect',
                      'string',
                      '',
                      label='Pixel Aspect Ratio')

    # Scripts
    cmdjob.add_optionGroup('MEL Scripts')
    cmdjob.add_option(
        'defaultRenderGlobals.preMel',
        'string',
        'The mel string to be executed before a scene is rendered',
        label='preRenderMel')
    cmdjob.add_option(
        'defaultRenderGlobals.postMel',
        'string',
        'The mel string to be executed after a scene is rendered',
        label='postRenderMel')
    cmdjob.add_option(
        'defaultRenderGlobals.preRenderLayerMel',
        'string',
        'The mel string to be executed before a render layer is rendered',
        label='preRenderLayerMel')
    cmdjob.add_option(
        'defaultRenderGlobals.postRenderLayerMel',
        'string',
        'The mel string to be executed after a render layer is rendered',
        label='postRenderLayerMel')
    cmdjob.add_option(
        'defaultRenderGlobals.preRenderMel',
        'string',
        'The mel string to be executed before a frame is rendered',
        label='preRenderFrameMel')
    cmdjob.add_option(
        'defaultRenderGlobals.postRenderMel',
        'string',
        'The mel string to be executed after a frame is rendered',
        label='postRenderFrameMel')
    # TODO: preFrame, postFrame

    cmdjob.properties['cpus'] = 10

    return [cmdjob]
Beispiel #5
0
def create():        
    cmdjob = SimpleSubmit('Submit Maya', hasRange=True, canChunk=False, help='Front-end submission to Maya jobtype', category="3D", preDialog=preDialog, postDialog=postDialog,
                            postSubmit=postSubmit, controlChanged=controlChanged, install=install)

    cmdjob.add_optionGroup('Required')
    cmdjob.add_option( 'scenefile', 'file', 'Path to Maya scene (required)', label='Scene', mode='open', required=True)
    cmdjob.add_option( 'project', 'dir', 'Path to Maya project directory', label='Project', mode='open', required=True)

    # Elevate
    # Add quicker access to notes and email    
    cmdjob.add_optionGroup('General')
    cmdjob.add_option( 'notes', 'string', 'Notes about render', label='Notes',
                        required=True, lines=3, default=' ')
    cmdjob.add_option( 'email', 'string', 'Notification Email Address(s)', label='Email',
                        required=True, lines=1)

    cmdjob.add_optionGroup('Cameras/Layers/Lights')
    cmdjob.add_option( 'cameras', 'string', "List of cameras to render (space-separated)", label='Cameras', multi=True, multiDelimiter=' ') 
    cmdjob.add_option( 'layers', 'string', "List of layers to render (space-separated)", label='Layers', multi=True, multiDelimiter=' ')
    cmdjob.add_option( 'defaultRenderGlobals.enableDefaultLight', 'choice', '', label='EnableDefaultLight', choices=['', '0', '1'])
    
    cmdjob.add_optionGroup('Renderer')
    cmdjob.add_option('defaultRenderGlobals.currentRenderer' , 'string',
                      'Renderer Override', label='Renderer',
                      default='mentalRay')
    cmdjob.add_option('renderThreads', 'int', 'Number of threads that ' +
                      'each subjob should use. Set to -1 to sync with ' +
                      'host.processors, 0 to use all cores on the worker',
                      label='Render Threads', min=-1, max=16, default=-1)
    cmdjob.add_option( 'ignoreRenderTimeErrors' , 'bool', 'Ignore Render-time Errors: ignore error messages that are generated during render-time that would otherwise cause frame failure', label='Ignore Errors')
# commenting out the "batchmode" option-- batch renders should now be
# submitted from simpleCmd "Maya BatchRender"
#     cmdjob.add_option( 'batchmode', 'bool', "Set for batch mode (restart Maya with every frame and the render command)", label='Batch Mode') 
    cmdjob.add_option( 'mentalray_satellite' , 'choice', 'Note: only meaningful for layers rendered with mental ray', label='m-ray Satellite', choices=["None", "Unlimited (8 CPUs)", "Complete (2 CPUs)"], default="None")
    cmdjob.add_option( 'mayaExecutable', 'file', 'Specify path to the maya executable file (mayabatch.exe for Windows), if you want to override the auto-detected default. (optional)', label='Maya Executable', mode='open',
                        default='/usr/local/maya')

    cmdjob.add_optionGroup('Image File Output')
    cmdjob.add_option('renderDirectory', 'dir', 'Path to Maya output render directory', label='Render dir', mode='save')
    cmdjob.add_option('defaultRenderGlobals.imageFilePrefix' , 'string', 'Image file name prefix override', label='File Name Prefix')
    cmdjob.add_option('frameExt', 'choice', '', choices=['', '3', '4', '5', '6', '7'], label='Frame/Anim Ext',
                      choiceLabels={
                                    #'1': 'name',        # for single frame
                                    #'2': 'name.ext',    # for single frame
                                    '3': 'name.#.ext',
                                    '4': 'name.ext.#',
                                    '5': 'name.#',
                                    '6': 'name#.ext',
                                    '7': 'name_#.ext',
                                    #'8': 'namec',       # for multi-frame animation sequences
                                    #'9': 'namec.ext',   # for multi-frame animation sequences
                                    })
    
    # Image Formats
    outputFormats = {
        '0':'GIF',
        '1':'SI',
        '2':'RLA',
        '3':'Tiff',
        '4':'Tif16',
        '5':'SGI',
        '6':'Alias',
        '7':'IFF',
        '8':'JPEG',
        '9':'EPS',
        '10':'IFF16',
        '11':'Cineon',
        '12':'Quantel PAL',
        '13':'SGI16',
        '19':'TARGA',
        '20':'BMP',
        #'21':'SGIMV',
        #'22':'QT',
        #'23':'AVI',
        '30':'MACPAINT',
        '31':'PSD',
        '32':'PNG',
        '33':'QUICKDRAW',
        '34':'QTIMAGE',
        '35':'DDS',
        '36':'PSD Layered',
        #'50':'IMFplugin',
        #'51':'Custom',
        '60':'SWF',
        '61':'AI',
        '62':'SVG',
        '63':'SWFT',
    }
    # REVISIT: Commented out since not all image formats are usable by all renderers.
    #          Uncomment this section if that is not an issue.
    #          NOTE: The format types like OpenEXR all use custom (51).
    # sort keys numerically (if using python 2.4 or above can use sorted() to simplify)
    ##outputFormatSortedKeys = [int(i) for i in outputFormats.keys()]
    ##outputFormatSortedKeys.sort()
    ##outputFormatSortedKeys = [str(i) for i in outputFormatSortedKeys]
    ##cmdjob.add_option( 'defaultRenderGlobals.imageFormat', 'choice', 'output image format', label='Image Format', choices=['']+outputFormatSortedKeys, choiceLabels=dict([(k, '%s (%s)'%(v,k)) for k,v in outputFormats.iteritems()]))

    cmdjob.add_option( 'defaultRenderGlobals.extensionPadding' , 'string', 'Number of digits for frame number, e.g. 4 means name.XXXX.ext', label='Frame Padding', min=1, max=5)
    # NOTE: defaultRenderGlobals.modifyExtension set in postDialog callback
    #cmdjob.add_option( 'defaultRenderGlobals.modifyExtension'        , 'choice',
    #                  ('Should start and by output image filename extension modifiers be used?\n'
    #                  ' (false-> use the current frame value as the filename extension, true->use '
    #                  'startExtension + ((currentFrame-startFrame)/byFrame) * byExtension value as the filename extension).'),
    #                  choices=['', '0', '1'], label='Renumber Extension')
    cmdjob.add_option( 'defaultRenderGlobals.startExtension', 'string', 'The starting output image filename extension value.', label='Renumber StartFrame')
    cmdjob.add_option( 'defaultRenderGlobals.byExtension'   , 'string', "The output image filename extension step ('by' or increment) value. ", label='Renumber ByFrame')
    cmdjob.add_option( 'defaultRenderGlobals.outFormatExt', 'string',
                      "File extension name override. The string added at the end of the file name",
                      label='File extension') 
    # Handled in postDialog call
    #cmdjob.add_option( 'defaultRenderGlobals.animation'        , 'choice', '', choices=['', '0', '1'])
    #cmdjob.add_option( 'defaultRenderGlobals.periodInExt'      , 'choice', '', choices=['', '0', '1', '2'])
    #cmdjob.add_option( 'defaultRenderGlobals.putFrameBeforeExt', 'choice', '', choices=['', '0', '1'])
    #cmdjob.add_option( 'defaultRenderGlobals.outFormatControl', 'choice', '', choices=['', '0', '2'])

    cmdjob.add_optionGroup('Image Size')
    cmdjob.add_option( 'defaultResolution.width', 'string' , "Image width" , label='Image Width (pixels)') 
    cmdjob.add_option( 'defaultResolution.height', 'string', "Image height", label='Image Height (pixels)') 
    cmdjob.add_option( 'defaultResolution.aspectLock'      , 'choice', ''  , label='Maintain Aspect ratio', choices=['', '0', '1'])
    cmdjob.add_option( 'defaultResolution.lockDeviceAspectRatio', 'choice', '', label='Maintain ratio', choices=['', '0', '1'], choiceLabels={'0':'Pixel Aspect', '1':'Device Aspect'})
    cmdjob.add_option( 'defaultResolution.dotsPerInch'      , 'string', 'Resolution (Pixels/Inch)', label='Pixels/Inch')
    cmdjob.add_option( 'defaultResolution.deviceAspectRatio', 'string', '', label='Device Aspect Ratio')
    cmdjob.add_option( 'defaultResolution.pixelAspect'      , 'string', '', label='Pixel Aspect Ratio')
    
    # Scripts
    cmdjob.add_optionGroup('MEL Scripts')
    cmdjob.add_option( 'defaultRenderGlobals.preMel'             , 'string', 'The mel string to be executed before a scene is rendered', label='preRenderMel')
    cmdjob.add_option( 'defaultRenderGlobals.postMel'            , 'string', 'The mel string to be executed after a scene is rendered', label='postRenderMel')
    cmdjob.add_option( 'defaultRenderGlobals.preRenderLayerMel'  , 'string', 'The mel string to be executed before a render layer is rendered', label='preRenderLayerMel')
    cmdjob.add_option( 'defaultRenderGlobals.postRenderLayerMel' , 'string', 'The mel string to be executed after a render layer is rendered', label='postRenderLayerMel')
    cmdjob.add_option( 'defaultRenderGlobals.preRenderMel'       , 'string', 'The mel string to be executed before a frame is rendered', label='preRenderFrameMel')
    cmdjob.add_option( 'defaultRenderGlobals.postRenderMel'      , 'string', 'The mel string to be executed after a frame is rendered', label='postRenderFrameMel')
    # TODO: preFrame, postFrame
    
    cmdjob.properties['cpus'] = 10
    
    return [cmdjob]
Beispiel #6
0
def create():
    cmdjob = SimpleSubmit(
        'Submit After Effects v2',
        hasRange=False,
        canChunk=False,
        help='After Effects rendering with progress and more.',
        category="2D",
        preDialog=preDialog,
        postDialog=postDialog,
        controlChanged=controlChanged)

    # Project Information
    cmdjob.add_optionGroup('Main')
    cmdjob.add_option(
        'aeProject',
        'file',
        label=
        '\nProject Path\n\n\n\nRender Queue\nItems\n\n\n\nSelected Item\'s\nOutputs\n',
        required=True,
        editable=True,
        widget=AESubmitWidget.AEProjectWidget)

    # Required
    cmdjob.add_optionGroup('Required')
    cmdjob.add_option('notes',
                      'string',
                      'Notes about render',
                      label='Notes',
                      required=True,
                      lines=3,
                      default=' ')
    cmdjob.add_option('email',
                      'string',
                      'Notification Email Address(s)',
                      label='Email',
                      editable=True,
                      required=True,
                      multi=False,
                      choices=[])

    # Transcoder
    # cmdjob.add_optionGroup('Transcoder', collapsed=False)
    # Transcoder.addTranscodeWidgetToDlg(cmdjob)

    # Advanced
    cmdjob.add_optionGroup('Advanced')
    cmdjob.add_option('quality',
                      'choice',
                      label="Quality",
                      required=True,
                      editable=True,
                      choices=["High", "Medium", "Low"])
    cmdjob.add_option('complexity',
                      'choice',
                      label="Complexity",
                      required=True,
                      editable=True,
                      choices=["Complex", "Normal", "Simple"],
                      default="Normal")
    # cmdjob.add_option( 'scripts', 'choice', label="Scripts", required=False, editable=True, widget=aeScriptsWidget)
    # cmdjob.add_option( 'multProcs', 'bool', 'Use Multiple Processors', label='Multiple Processors', required=False, default=False)
    # cmdjob.add_option( 'chunkSize', 'int', 'Chunk size for agenda.', label='Frames Per Task', default=10, required=True)

    # Additional properties to set
    cmdjob.properties[
        'flagsstring'] = 'disable_windows_job_object'  # Needs to be disabled for Windows

    return [cmdjob]