UI Parameters

It´s possible to create parameters within your extension which are exposed and direct available within Grid.

General

A parameter which should be visible within the inspector needs to be defined within the afterInit function.

A parameter need to be "linked" to a tab/container similar like this:

def afterInit(self):
    self.objectContainer.addFloatParameter("Example Float", 0, 0, 100)

For more details see here.


Access / Use parameter values

parameterName.value
def afterInit(self):
    self.parameter = self.objectContainer.addFloatParameter("Example", 0, 0, 100)
    
def someReadFunction(self):
    floatValue = self.parameter.value

def someSetFunction(self):
    self.parameter.value = 1.234

def onParameterFeedback(self, parameter):
    if parameter == self.parameter:
        print(self.parameter.value)

Parameter types

String

Add a parameter of the type string

.addStringParameter("ParameterLabel", "DefaultValue")

self.parameter = self.yourContainer.addStringParameter("Example String", "string")

A parameter of the type string is also supporting multilines

self.parameter.setParam("multiline", True) #Enable multiline support

self.parameter.value #returns a string
self.parameter.value = "Example" #set parameter

Text

Add a parameter of the type text

.addTextParameter("ParameterLabel", "DefaultValue")

self.parameter = self.yourContainer.addTextParameter("Example Text", "text\ntext\n")
self.parameter.value #returns a string
self.parameter.value = "Example" #set parameter

Integer

Add a parameter of the type int

.addIntParameter("ParameterLabel", DefaultValue, MinValue, MaxValue)

self.parameter = self.yourContainer.addIntParameter("Example Int", 587, 1, 65535)

self.parameter.value #returns a float
# do int(parameter.value) if you need a int
self.parameter.value = int(123) #set parameter

Float

Add a parameter of the type float

.addFloatParameter("ParameterLabel", DefaultValue, MinValue, MaxValue)

self.parameter = self.yourContainer.addFloatParameter("Example Float", 0, 0, 100)

self.parameter.value #returns a float
self.parameter.value = 123.456 #set parameter

Bool

Add a parameter of the type bool

.addBoolParameter("ParameterLabel", DefaultValue)

self.parameter = self.yourContainer.addBoolParameter("Bool", False)

self.parameter.value #returns a bool
self.parameter.value = True #set parameter

Enum / Dropdown

Add a parameter of the type enum.

Empty Enum

.addEnumParameter("ParameterLabel", defaultIndex, "")

self.parameter = self.yourContainer.addEnumParameter("Enum", 0, "")

Enum with predefined entires

.addEnumParameter("ParameterLabel", defaultIndex, "SemikolonSeparatedEntriesAsString")

self.parameter = self.yourContainer.addEnumParameter("Enum", 0, "First;Second;Third")

Additional enum functions

self.parameter.value #returns the index of the actual enum entry
self.someParameter.getData() #returns the data/value of the actual enum entry
self.someParameter.getKey() #returns the key/name of the actual enum entry
self.parameter.getLabel(index) #returns the key/name of the index defined entry
self.someParameter.clearOptions() #remove all entries from the enum 
self.someParameter.addOption("Name", Value) #add a new entry

The value is a var and can hold different parameter types like: Int, Float, String, etc.

.addOption("Enum", 1234)

.addOption("Enum", 12.34)

.addOption("Enum", "OneTwo")

self.someParameter.removeOption("Name") #remove a specific entry using the key/name
self.parameter.value = 3 #set the enum to index 3

Point / Vector2

Add a parameter of the type point / vector2

.addPointParameter("ParameterLabel")

self.parameter = self.yourContainer.addPointParameter("Point")

self.parameter.value #returns a float array with two entries [0.0, 1.1]
self.parameter.value = [123.123, 456.456] #set parameter

Vector

Add a parameter of the type vector3

.addVectorParameter("ParameterLabel")

self.parameter = self.yourContainer.addVectorParameter("Vector")

self.parameter.value #returns a float array with three entries [0.0, 1.1, 2.2]
self.parameter.value = [123.123, 456.456, 789.789] #set parameter

IP

Add a parameter formatted correctly for IP-addresses

.addIPParameter("ParameterLabel", AvailableAdressesOnly)

self.parameter = self.yourContainer.addIPParameter("IP", True)

self.parameter.value #returns a string formated like: "123.456.789.0"
self.parameter.value = "192.168.1.123" #set parameter

U can use .isValidIP() to check the given IP address. Return True or False.

self.parameter.isValidIP()

Color

Add a color parameter

.addColorParameter("ParameterLabel")

self.parameter = self.yourContainer.addColorParameter("Color")

self.parameter.value #returns color as string Hex based (AARRGGBB)
# AA = Alpha 00-FF
# RR = Red 00-FF
# GG = Green 00-FF
# BB = Blue 00-FF
self.parameter.value = "00000000" #set to Black and Alpha to 0
self.parameter.value = "FF000000" #set to Black and Alpha to 1
self.parameter.value = "FFFF0000" #set to Red and Alpha to 1
self.parameter.value = "FF00FF00" #set to Green and Alpha to 1
self.parameter.value = "FF0000FF" #set to Blue and Alpha to 1

File

Add a parameter which supports a file explorer search

.addFileParameter("ParameterLabel","preDefinedPath")

self.parameter = self.yourContainer.addFileParameter("File","")

self.parameter.value #returns the linked file

Trigger / Button

Add a trigger button parameter

.addTrigger("ParameterLabel")

self.trigger = self.yourContainer.addTrigger("Trigger Button")

def onParameterFeedback(self, parameter):
    if parameter == self.trigger:
        doSomething()

Data

Add a data parameter to handle json formated data

.addDataParameter("ParameterLabel")

self.parameter = self.yourContainer.addDataParameter("Data")

Access value from child parameter:

self.parameter.value["Example"]["name"].value #returns "John"
self.parameter.value.getSubPath("Example/name").value #returns "John"

Set / Write value of a child parameter

self.parameter.value["Example"]["name"].value = "Example" #set value
self.parameter.value.getSubPath("Example/name").value = "Example" #set value

Append a new child

newChild = sp.ValueTree("new child name")
newChild.value = 3
self.parameter.value.appendChild(newChild)
anotherChild = sp.ValueTree("example")
anotherChild.value = "example"
self.parameter.value["new child name"].appendChild(anotherChild)

Set complete parameter from json

self.parameter.setTreeValueWithJson("Example", json.dumps(
    {
        "name":"John",
        "age":30,
        "car":""
    }))
    
# adds the given json into the data parameter 

DataTarget

Adds a customizable data parameter which can be filled with json arrays.

.addDataTargetParameter("ParameterLabel", "", "")

def afterInit(self):
    self.parameter = self.yourContainer.addDataTargetParameter("Data Target", "", "")
    self.parameter.setGetTargetFunction(self.getData)

def getData(self):
    return [
                {
                    "name": "One",
                    "extra": "1",
                    "inspectable" : self.cc
                },
                {
                    "name": "Two",
                    "extra": "2",
                    "inspectable" : self.cc
                }
            ]
self.parameter.value #returns the string value from "extra"
self.parameter.getLabel() #returns the string value from "name"

Object Target

Adds a target parameter which can be linked to objects

.addTargetParameter("ParameterLabel", True, "")

self.parameter = self.yourContainer.addTargetParameter("Target", True, "")

Parameter Target

Adds a target parameter which can be linked to objects

.addTargetParameter("ParameterLabel", False, "")

self.parameter = self.yourContainer.addTargetParameter("Target", False, "")

Last updated