Building Toolkits¶
Multiple custom nodes can be combined into toolkits to allow for simplified repeat usage and sharing.
Toolkits are defined primarily by the config.json
file stored in their root directory. This contains the toolkit parameters, list of global variables and list of nodes. The code for each node is stored in an individual file with the filename matching the classname of the node.
Toolkit Parameters¶
The first component of the config file is the toolkit parameters. Currently, this is just the name of the toolkit and the location of the toolkits documentation relative to the root directory.
{
"name" : "Example",
"docs" : "./docs",
Global Variables¶
Toolkits can be set to automatically include global variables that are required by their nodes. These globals have their name, attribute type and input method fixed but with the value being editable by the user.
Each global variable has 5 parameters:
Parameter | Description |
---|---|
file | File containing global variable widget relative to the toolkit root folder |
class | Class of global variable widget |
toolkit | name of the toolkit holding the widget class |
type | Attribute type of the global variable |
value | Default value |
properties | Properties of the widget (For custom widgets only) |
const | Enables or disables constant value during pipeline runtime |
To use the pre-made global variable widgets, set the file to extensions.globalWidgets
, the toolkit to wario
, and the class to one of the below:
Widget Name | Description |
---|---|
GlobalTextbox | Single line text input box |
GlobalSpinbox | Int spinbox |
GlobalDoubleSpinbox | Double spinbox |
GlobalCheckbox | Checkbox |
GlobalFileSelect | Input textbox with button that opens file dialog |
GlobalFolderSelect | Input textbox with button that opens directory dialog |
GlobalListInput | Table that allows for a list of data to be input |
NOTE: Custom global widgets are currently incompatable with toolkits due to how the current globals system loads the widgets. This will be fixed in a later update.
An example global variable is shown below:
{
"global_variables": {
"Output Folder" : {
"file" : "extensions.globalWidgets",
"class" : "GlobalFolderSelect",
"toolkit" : "wario",
"type" : "String",
"value" : "./",
"properties" : {},
"const" : false
}
}
Nodes¶
The final component of the toolkit is the list of nodes it contains. This is the most complex part of the config file, with each node containing 3 components, the core parameters, the attributes and the settings
Node Parameters¶
These parameters tell WARIO how to render the node and give details on the location of the node’s code
Parameter | Description |
---|---|
file | The location of the file containing the node's code, relative to the toolkit root directory |
category | The category that the node will be listed under in the right-click new node menu |
Node Attributes¶
Attributes allow for connections to be made between nodes, so long as the attribute types match.
Parameter | Description |
---|---|
connection | Sets the connection type of the attribute. Valid options are "input" or "output |
type | The attribute type. Only attributes with matching types can be connected |
preset | OPTIONAL - Sets the attribute's visual style. Options are given in ./nodz/config.json |
Node Settings¶
The settings parameter contains the file and class of the settings window that is used by the node. This allows for multiple nodes to share settings windows code
Parameter | Description |
---|---|
settingsFile | Path to the settings file relative to the toolkit's root directory |
settingsClass | Name of the class in the settings file that contains the settings window |
Example Node¶
{
"node_types": {
"Example Node" : {
"file" : "exampleNode.py",
"category" : "Examples",
"attributes" : {
"Input Attribute" : {
"connection" : "input",
"type" : "string"
},
"Output Attribute" : {
"connection" : "output",
"type" : "string"
}
},
"settings" : {
"settingsFile" : "exampleNode",
"settingsClass" : "ExampleNodeSettings"
}
}
}
Example Config File¶
Combining these parameters gives us the combined config.json file shown here:
{
"name" : "Example",
"docs" : "./docs",
"global_variables": {
"Output Folder" : {
"file" : "extensions.globalWidgets",
"class" : "GlobalFolderSelect",
"toolkit" : "wario",
"type" : "String",
"value" : "./",
"properties" : {},
"const" : false
}
},
"node_types": {
"Example Node" : {
"file" : "exampleNode.py",
"category" : "Examples",
"attributes" : {
"Input Attribute" : {
"connection" : "input",
"type" : "string"
},
"Output Attribute" : {
"connection" : "output",
"type" : "string"
}
},
"settings" : {
"settingsFile" : "exampleNode",
"settingsClass" : "ExampleNodeSettings"
}
}
}
}
Documenting Toolkits¶
Toolkits should come with documentation in HTML format, stored within the toolkit’s directory. This documentation is accessable as a tab in the WARIO editor’s help window when the toolkit is activated.
It is recommended to use tools such as Read The Docs that can host documentation created with libraries like sphinx or mkdocs stored within a github repository. This allows for the creation of synchronized online and offline documentation, as seen with the WARIO editor.