Like the menu and panel plugin types, the submission plugins are written in Python 3. Each submission plugin is executed directly by the plugin system so, so for example, you can use Python to automate the building of parameters, pre-fill default values, or adapt to changes the user makes.
At last count Qube! UI ships with 33 submission plugins that you can find in the plugins/submission
directory under the application directory (or under QubeUI\bin
on Windows). Looking through the submission dialogs for each type in the UI and then reading the corresponding section of it's plugin file is a good way to quickly find how to do what you need in a particular situation.
Table of Contents |
---|
Creating a new submission type plugin
The best place to start when creating a new submission plugin is to copy an existing one that's closest to what you intend to make. For the purposes of this documentation we'll start from scratch and create a new plugin for making proxy images using imagemagick.
The process is as follows:
- Add the submission type.
- Add a new page for the input path field.
- Add parameters.
- Override defaults for fields in the Qube Basics page.
- Set the command template.
...
Code Block | ||
---|---|---|
| ||
# Create a new submission type add_submission_type('Make proxy', short_name='Make Proxy', type="makeProxy", has_range=False, can_batch=False, thread_control='all', prototype="cmdline", group="Pipeline") |
Check the documentation for add_submission_type()
for information on the command's arguments.
Argument | Type | Default | Comment |
---|---|---|---|
type | string | The type identifier for this submission plugin. The type identifier is used, among other reasons, to determine a job's submission type which allows the UI to open the correct submission dialog upon job resubmission. | |
prototype | string | cmdline | The Qube! submission prototype. |
short_name | string | An alternative, shorter name for the submission plugin type, used when UI space is tight. | |
has_range | boolean | False | Whether the plugin should display range related fields in the Qube Basics page. |
thread_control | string | An empty string or "false" hides the Threads per instance and Instances use all cores fields from the Qube Basics page. Any other value that is not "all" will hide the Instances use all cores field only. | |
can_pad_frames | boolean | False | A value of True will include a Frame Padding field in the Qube Basics page. |
can_batch | boolean | False | Allows generation of partitions or chunks in the submitted job. |
pre_show_validate | Python function | on_pre_show_validate | This Python function is called before pre_dialog and should return a boolean that determines whether the submission dialog should be shown. |
pre_dialog | Python function | on_pre_dialog | This Python function is called immediately before the submission dialog is shown. |
post_dialog | Python function | on_post_dialog | This Python function is called after the job is created and the submission dialog is closed but before submission. |
post_submit | Python function | on_post_submit | This Python function is called after the job is submitted. |
install | Python function | install | This Python function is called when selecting the corresponding menu item in the File->Install App UI menu. |
2. Add a new page for the input path field
Use pages to group related fields together. We add pages by calling add_page()
with a single argument, the page's name.
...
The command template works in the same way, where the parameter names act as the keys to the dictionary. In our example command template we make a new directory and then run magick
to resize the images.
Submission Plugin Functions
add_submission_type
Create a new submission plugin. Each plugin should have exactly one call to add_submission_type()
.
Argument | Type | Default | Comment |
---|---|---|---|
type | string | The type identifier for this submission plugin. The type identifier is used, among other reasons, to determine a job's submission type which allows the UI to open the correct submission dialog upon job resubmission. | |
prototype | string | cmdline | The Qube! submission prototype. |
short_name | string | An alternative, shorter name for the submission plugin type, used when UI space is tight. | |
has_range | boolean | False | Whether the plugin should display range related fields in the Qube Basics page. |
thread_control | string | An empty string or "false" hides the Threads per instance and Instances use all cores fields from the Qube Basics page. Any other value that is not "all" will hide the Instances use all cores field only. | |
can_pad_frames | boolean | False | A value of True will include a Frame Padding field in the Qube Basics page. |
can_batch | boolean | False | Allows generation of partitions or chunks in the submitted job. |
pre_show_validate | Python function | on_pre_show_validate | This Python function is called before pre_dialog and should return a boolean that determines whether the submission dialog should be shown. |
pre_dialog | Python function | on_pre_dialog | This Python function is called immediately before the submission dialog is shown. |
post_dialog | Python function | on_post_dialog | This Python function is called after the job is created and the submission dialog is closed but before submission. |
post_submit | Python function | on_post_submit | This Python function is called after the job is submitted. |
install | Python function | install | This Python function is called when selecting the corresponding menu item in the File->Install App UI menu. |
add_page
Add a new page to the submission dialog and make it current. New fields are added to the current page.
Argument | Python Type | Default | Comment |
---|---|---|---|
name | str | The name of the page. |
add_field
Add a parameter to the current page.
Supported Parameter types
Common arguments
Argument | Python Type | Default | Comment |
---|---|---|---|
name | str | The name of the parameter is used both as the label next to the parameter in the submission dialog and to refer to it elsewhere in the plugin. The name argument is required. | |
type | str | string | The type of parameter, can be one of (bool, int, float, string, text, path, filename, list, combo, combo_file, combo_path, table, datetime, selectorString). |
required | bool | False | Whether the parameter must be set with a valid value before submission. |
destination | str | Where to store the value in the job, for example package.mayaExecutable . | |
arg | str | The command line argument associated with the parameter. | |
default | Parameter type specific | A pre-filled value. | |
enabled | bool | True | Whether the value is editable or grayed out. |
quote | bool | False | Whether the value of the parameter should be surrounded by double quotes. |
set_on_resubmit | bool | True | When resubmitting a job the parameter's value is set to that of the value of the job being resubmitted. |
separator | str | , | When a parameter has several values such as list selections this string is used as the separator. |
arg_value_separator | str | [a single space] | The string used to separate the parameter's arg with its value. For example if the command line argument needs to be in the form myArg=myValue the arg_value_separator should be = . |
suppress_path_conversion | N/A | N/A | If this argument is set then the value (if it's a path or filename parameter) will not be surrounded by QB_CONVERT_PATH(). |
on_change | Python function taking 0 arguments | The given function is called whenever the value of this parameter or any parameters in it's watch_list change. | |
watch_list | list of str | A list of references to other parameters in this plugin. The page name and parameter names are separated by two colons, for example ["Qube Basics::Threads per instance", "Qube Basics::Instances use all cores"]. |
string
A simple single line text field.
Argument | Python Type | Default | Comment |
---|---|---|---|
editable | bool | True | Whether the user can change the value of the parameter. |
text
A multi line text field.
bool
A checkbox.
Argument | Python Type | Default | Comment |
---|---|---|---|
bool_map_true | str | True | The string value used for the parameter's value when the checkbox is checked. For example you can set this to things like on , 1 , yes , etc. |
bool_map_false | str | False | The string value used for the parameter's value when the checkbox is unchecked. For example you can set this to things like off , 0 , no , etc. |
int
A integer spinbox.
Argument | Python Type | Default | Comment |
---|---|---|---|
min | int | -2147483648 | The minimum value for the spinbox. |
max | int | 2147483647 | The maximum value for the spinbox. |
float
A floating point spinbox.
Argument | Python Type | Default | Comment |
---|---|---|---|
min | float | -1.79769e+308 | The minimum value for the spinbox. |
max | float | 1.79769e+308 | The maximum value for the spinbox. |
combo
A drop down menu, allows for a single selection from a list of items.
Argument | Python Type | Default | Comment |
---|---|---|---|
items | list of str | The list of available choices in the combo. | |
editable | bool | False | If True, the user can type in a custom value. If False, the user can only choose from the given items. |
path
A single line text field with a browse button that opens a file dialog to select a directory path.
Argument | Python Type | Default | Comment |
---|---|---|---|
use_native_separators | bool | False | If True, the path will use platform specific directory separators, ie / on Linux and macOS, \ on Windows. |
combo_path
The same as the path parameter type but also allows for selection of paths from a combo
.
Argument | Python Type | Default | Comment |
---|---|---|---|
use_native_separators | bool | False | If True, the path will use platform specific directory separators, ie / on Linux and macOS, \ on Windows. If False / is used on all platforms. |
items | list of str | A list of paths to show in the combo. |
filename
A single line text field with a browse button that opens a file dialog to select a file path.
Argument | Python Type | Default | Comment |
---|---|---|---|
use_native_separators | bool | False | If True, the path will use platform specific directory separators, ie / on Linux and macOS, \ on Windows. If False / is used on all platforms. |
combo_file
The same as the filename parameter type but also allows for selection of file paths from a combo
.
Argument | Python Type | Default | Comment |
---|---|---|---|
use_native_separators | bool | False | If True, the path will use platform specific directory separators, ie / on Linux and macOS, \ on Windows. If False / is used on all platforms. |
items | list of str | A list of paths to show in the combo. |
list
A list box where the user can select either a single or multiple values.
Argument | Python Type | Default | Comment |
---|---|---|---|
items | list of str | The items to display in the list. | |
multi_select | bool | True | Whether the user can select multiple items in the list, or just one. |
table
A table of values of given dimensions that the user can enter values.
Argument | Python Type | Default | Comment |
---|---|---|---|
dimension | (int, int) | (0, 2) | The initial number of rows and columns in the table. |
datetime
A date and time selection parameter.
selectorString
A selectorString
parameter uses a Python function to generate a list of strings, take this example from the Worker Selection
page (found in python/99_qube_parameters.py
in the standard plugin path on your system).
...
Argument | Python Type | Default | Comment |
---|---|---|---|
opttype | str | If the opttype is radio the selectorString will use radio buttons instead of checkboxes, meaning that only a single value can be selected. | |
selector | Python function taking 0 arguments and returning a list of str | A Python function that returns the list of items to use in the selector. |
set_field
Set the value of an existing field.
Argument | Python Type | Default | Comment |
---|---|---|---|
page | str | The page where the field is located. | |
name | str | The name of the field to set. | |
value | Field type specific | The value to set the field to. |
set_command_template
Set the command template for Qube! jobs submitted with this submission type.
Argument | Python Type | Default | Comment |
---|---|---|---|
template | str | The command template to use for jobs submitted using this submission type. |