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.valuedef 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 supportinstead of using multiline you can also add:
.addTextParameter("Example Text","First Line\nSecond Line")self.parameter.value #returns a stringself.parameter.value = "Example" #set parameterText

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 stringself.parameter.value = "Example" #set parameterInteger
Add a parameter of the type int
.addIntParameter("ParameterLabel", DefaultValue, MinValue, MaxValue)
self.parameter = self.yourContainer.addIntParameter("Example Int", 587, 1, 65535)This parameter supports suffixes. See here.
self.parameter.value #returns a float
# do int(parameter.value) if you need a intself.parameter.value = int(123) #set parameterFloat
Add a parameter of the type float
.addFloatParameter("ParameterLabel", DefaultValue, MinValue, MaxValue)
self.parameter = self.yourContainer.addFloatParameter("Example Float", 0, 0, 100)This parameter supports suffixes. See here.
self.parameter.value #returns a floatself.parameter.value = 123.456 #set parameterBool
Add a parameter of the type bool
.addBoolParameter("ParameterLabel", DefaultValue)
self.parameter = self.yourContainer.addBoolParameter("Bool", False)self.parameter.value #returns a boolself.parameter.value = True #set parameterEnum / 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")An enum entry within Grid owns a name/key as well as a value/data.
If the entries are generated within the function ".addEnumParameter()" the value/date will be the index.
Additional enum functions
self.parameter.value #returns the index of the actual enum entryself.someParameter.getData() #returns the data/value of the actual enum entryself.someParameter.getKey() #returns the key/name of the actual enum entryself.parameter.getLabel(index) #returns the key/name of the index defined entryself.someParameter.clearOptions() #remove all entries from the enum self.someParameter.addOption("Name", Value) #add a new entryself.someParameter.removeOption("Name") #remove a specific entry using the key/nameself.parameter.value = 3 #set the enum to index 3Point / Vector2
Add a parameter of the type point / vector2
.addPointParameter("ParameterLabel")
self.parameter = self.yourContainer.addPointParameter("Point")This parameter supports suffixes. See here.
self.parameter.value #returns a float array with two entries [0.0, 1.1]self.parameter.value = [123.123, 456.456] #set parameterVector
Add a parameter of the type vector3
.addVectorParameter("ParameterLabel")
self.parameter = self.yourContainer.addVectorParameter("Vector")This parameter supports suffixes. See here.
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 parameterIP

Add a parameter formatted correctly for IP-addresses
.addIPParameter("ParameterLabel", AvailableAdressesOnly)
self.parameter = self.yourContainer.addIPParameter("IP", True)If True -> show all available local adapter If False -> IP can be defined manually and the list is "helping" only.
self.parameter.value #returns a string formated like: "123.456.789.0"self.parameter.value = "192.168.1.123" #set parameterColor
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-FFself.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 1File
Add a parameter which supports a file explorer search
.addFileParameter("ParameterLabel","preDefinedPath")
self.parameter = self.yourContainer.addFileParameter("File","")self.parameter.value #returns the linked fileTrigger / 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 valueAppend 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
A json import is needed:
import jsonThis should only be used to "fill" the tree initial. Please don´t use this to update a single child parameter.
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
}
]
This are the minimum json values needed for a single based json array element.
{
"name": "",
"extra": "",
"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