13.1.13.4.1. Containers#
Containers houden zelf geen waarde vast – ze ordenen andere besturingselementen. Elke container beslaat de volledige breedte van het formulier, en de besturingselementen die erin zijn opgenomen worden als een eigen formulier opgebouwd. Er zijn er twee: group tekent een omkaderd vak met label, en tabs tekent een tabbladstrook.
Alle besturingselementen accepteren ook de algemene sleutels (name, label, tooltip, enabled); zie het overzicht.
13.1.13.4.1.1. group#
Een omkaderd vak met label rond een reeks besturingselementen. Optioneel checkable, waardoor de kop een schakelaar wordt voor alles wat erin zit.
{
"type": "group",
"title": "Wi-Fi",
"checkable": true,
"name": "wifi_enabled",
"value": true,
"controls": [
{ "type": "lineedit", "name": "ssid", "label": "SSID" },
{ "type": "lineedit", "name": "password", "label": "Password", "password": true }
]
}
Argumenten:
title (string) – de kop die op het vak wordt getoond.
checkable (boolean, standaard
false) – wanneertrue, draagt de kop een selectievakje dat elk besturingselement in het vak in- of uitschakelt, en waarvan de eigen aan/uit-status wordt opgeslagen.value (boolean, standaard
true) – de begintoestand van dat selectievakje in de kop. Alleen zinvol wanneer checkabletrueis.controls (array) – de besturingselementen die in het vak worden getoond.
Slaat op: een boolean (het selectievakje in de kop) wanneer checkable true is; een gewone group slaat zelf niets op – alleen de besturingselementen erin slaan hun waarden op.
13.1.13.4.1.2. tabs#
Een tabbladstrook. Elk tabblad is een pagina met zijn eigen lijst van besturingselementen, zodat een lang formulier kan worden verdeeld over Camera, Network, System, enzovoort.
{
"type": "tabs",
"tab_position": "north",
"tabs": [
{
"title": "Camera",
"tooltip": "Sensor settings",
"controls": [
{ "type": "slider", "name": "gain", "label": "Gain" }
]
},
{
"title": "Network",
"controls": [
{ "type": "lineedit", "name": "hostname", "label": "Hostname" }
]
}
]
}
Argumenten:
tab_position (string, standaard
"north") – aan welke rand de tabbladbalk zit:"north","south","west"of"east".tabs (array) – de tabbladpagina’s, op volgorde. Elke pagina is een object met:
title (string) – het label van het tabblad.
tooltip (string) – zwevende tekst voor het tabblad.
controls (array) – de besturingselementen die op die pagina worden getoond.
Slaat op: zelf niets; de besturingselementen op elke pagina slaan hun eigen waarden op.
13.1.13.4.1.3. Nesting#
Elk besturingselement kan in elke container worden geplaatst, tot elke diepte. Een group kan een tabs bevatten, een tabbladpagina kan group-vakken bevatten, en groups kunnen binnen groups worden genest. Elke controls-array – die op het hoogste niveau, die van een group, en die van een tabbladpagina – neemt dezelfde besturingselement-objecten, dus de regels op deze pagina’s gelden op elk niveau hetzelfde.
Een aanvinkbare group genest binnen een tabblad is een veelvoorkomende opzet: het tabblad bevat een functie, het selectievakje van de group schakelt de functie in of uit, en de besturingselementen erin configureren die.