13.1.13.4.2. Waardebesturingselementen#
Dit zijn de besturingselementen die een instelling vasthouden. Elk draagt een value, en Save schrijft de bewerkte value terug in het besturingselement. De onderstaande tabel is de snelle toewijzing van besturingselement naar het JSON-type dat het opslaat; de volgende secties documenteren elke sleutel.
Besturingselement | Slaat op |
|---|---|
checkbox | boolean, of integer |
combobox | de gekozen waarde, of de index ervan |
radio | de gekozen waarde, of de index ervan |
spinbox | integer |
doublespinbox | getal (drijvende komma) |
slider | integer |
lineedit | string |
Alle waardebesturingselementen accepteren ook de algemene sleutels (name, label, tooltip, enabled); zie het overzicht. Het label wordt naast het besturingselement getoond (op het vakje zelf bij een checkbox).
13.1.13.4.2.1. checkbox#
Een aan/uit-schakelaar. Optioneel drie standen, voor instellingen met een “niet-ingesteld” middenstand.
{ "type": "checkbox", "name": "draw_overlays", "label": "Draw Overlays", "value": true }
Argumenten:
label (string) – de tekst die naast het vak wordt getoond. Alleen platte tekst (anders dan bij de overige besturingselementen, waarvan de labels rich text aannemen).
tristate (boolean, standaard
false) – sta een derde, gedeeltelijk aangevinkte stand toe.value – de begintoestand. Twee standen: een boolean. Drie standen:
0(uit),1(gedeeltelijk), of2(aan).
Slaat op: een boolean voor een vak met twee standen; een integer 0, 1 of 2 voor een vak met drie standen.
13.1.13.4.2.2. combobox#
Een vervolgkeuzemenu met keuzes.
{
"type": "combobox",
"name": "resolution",
"label": "Resolution",
"options": ["QQVGA", "QVGA", "VGA"],
"values": ["qqvga", "qvga", "vga"],
"value": "qvga"
}
Argumenten:
options (array van strings) – de items die in het menu worden getoond.
values (array) – een optionele parallelle array van de op te slaan waarden, één per option. Met values toont het menu
options[i]maar slaat hetvalues[i]op – dus de gebruiker ziet “QVGA” terwijl het bestand"qvga"opslaat. De items kunnen elk JSON-type zijn. Zonder values slaat het besturingselement in plaats daarvan de index van het geselecteerde item op.value – de beginselectie. Met values, het item dat gelijk is aan een van de values. Zonder values, de index van het te selecteren item (standaard
0).
Slaat op: het overeenkomende values-item (elk type) wanneer values is opgegeven; anders de geselecteerde index (integer).
13.1.13.4.2.3. radio#
Een reeks keuzerondjes – één keuze tegelijk zichtbaar, zoals een combobox maar volledig uitgevouwen weergegeven.
{
"type": "radio",
"name": "mode",
"label": "Mode",
"options": ["Idle", "Track", "Record"],
"values": ["idle", "track", "record"],
"value": "idle",
"orientation": "horizontal"
}
Argumenten:
options (array van strings) – één knop per item.
values (array) – de optionele op te slaan waarden, één per option, precies zoals bij combobox. Zonder deze slaat het besturingselement de geselecteerde index op.
value – de beginselectie, vergeleken met values of gebruikt als index, zoals bij combobox.
orientation (string, standaard
"vertical") –"horizontal"om de knoppen in een rij te plaatsen, anders een kolom.
Slaat op: het overeenkomende values-item (elk type), of de geselecteerde index.
13.1.13.4.2.4. spinbox#
Een getalvak voor gehele getallen, met omhoog/omlaag-pijlen.
{
"type": "spinbox",
"name": "server_port",
"label": "Port",
"value": 8080,
"min": 0,
"max": 65535,
"group_separator": true
}
Argumenten:
value (integer, standaard
0) – het beginnummer.min (integer, standaard
0of value, welke kleiner is) – de laagst toegestane waarde.max (integer, standaard
100of value, welke groter is) – de hoogst toegestane waarde.step (integer, standaard
1) – de stapgrootte omhoog/omlaag.prefix (string) – tekst die vóór het getal wordt getoond, bijv.
"0x".suffix (string) – tekst die na het getal wordt getoond, bijv. een eenheid zoals
" px".base (integer, standaard
10) – het weergavegrondtal; stel in op16om het getal in hex te tonen en te bewerken.group_separator (boolean, standaard
false) – groepeer de cijfers met scheidingstekens voor duizendtallen.special_value_text (string) – tekst die in plaats van het getal wordt getoond wanneer het op min staat, bijv. “Off” tonen bij
0.
Slaat op: een integer.
13.1.13.4.2.5. doublespinbox#
Een getalvak voor decimalen.
{
"type": "doublespinbox",
"name": "sensitivity",
"label": "Sensitivity",
"value": 50.0,
"min": 0,
"max": 100,
"step": 0.5,
"decimals": 1,
"suffix": " %"
}
Argumenten:
value (number, standaard
0) – het beginnummer.min (number, standaard
0of value, welke kleiner is) – de laagst toegestane waarde.max (number, standaard
100of value, welke groter is) – de hoogst toegestane waarde.decimals (integer, standaard
2) – hoeveel cijfers na de komma worden getoond.step (number, standaard
1.0) – de stapgrootte omhoog/omlaag.prefix (string) – tekst die vóór het getal wordt getoond, bijv.
"max ".suffix (string) – tekst die na het getal wordt getoond, bijv. een eenheid zoals
" %".group_separator (boolean, standaard
false) – scheidingstekens voor duizendtallen.special_value_text (string) – tekst die wordt getoond wanneer het getal op min staat.
Slaat op: een number (drijvende komma).
13.1.13.4.2.6. slider#
Een horizontale schuifregelaar met een live numerieke uitlezing ernaast.
{
"type": "slider",
"name": "brightness",
"label": "Brightness",
"value": 50,
"min": 0,
"max": 100,
"step": 1,
"suffix": " %",
"ticks": 25
}
Argumenten:
value (integer, standaard
0) – de beginpositie.min (integer, standaard
0of value, welke kleiner is) – het lage uiteinde van de baan.max (integer, standaard
100of value, welke groter is) – het hoge uiteinde van de baan.step (integer, standaard
1) – de stapgrootte voor toetsenbord en slepen; sleepbewegingen klikken vast op het dichtstbijzijnde veelvoud.prefix (string) – tekst die vóór de numerieke uitlezing naast de slider wordt getoond, bijv.
"x".suffix (string) – tekst die na de uitlezing wordt getoond, bijv.
" %".ticks (integer) – de afstand tussen de schaalstreepjes die onder de baan worden getekend.
Slaat op: een integer.
13.1.13.4.2.7. lineedit#
Een tekstveld met één regel, voor namen, wachtwoorden, adressen en dergelijke.
{
"type": "lineedit",
"name": "hostname",
"label": "Hostname",
"value": "openmv-cam",
"placeholder": "letters, digits, dashes",
"regex": "[A-Za-z0-9-]+",
"clear_button": true
}
Argumenten:
value (string, standaard
"") – de begintekst.placeholder (string) – grijze hinttekst die wordt getoond terwijl het veld leeg is.
max_length (integer) – het maximum aantal tekens dat het veld accepteert.
mask (string) – een invoermasker dat de opmaak van wat kan worden getypt vastlegt, bijv.
"000.000.000.000;_"voor een IPv4-adres. Zie Input masks hieronder.regex (string) – een reguliere expressie waaraan de hele invoer moet voldoen. Zie Regular expressions hieronder.
clear_button (boolean, standaard
false) – toon een kleine wisknop binnen het veld.password (boolean, standaard
false) – verberg de tekst als puntjes en voeg een oogknop toe om die te tonen.
Slaat op: een string.
Een mask en een regex beperken beide wat het veld accepteert, vanuit tegengestelde invalshoeken – een masker legt de opmaak van de tekst vast, een regex beperkt de inhoud ervan. Een veld met een van beide is het enige besturingselement dat een Save kan blokkeren: als de tekst onvolledig is of niet overeenkomt, vermeldt de editor het veld op zijn label en weigert het op te slaan totdat het is gecorrigeerd of gewist. Gebruik hoogstens een van de twee op een veld.
13.1.13.4.2.7.1. Input masks#
Een mask legt het veld teken voor teken vast: scheidingstekens worden voor de gebruiker ingetekend, die alleen de lege plekken invult. Elk maskerteken staat voor één invoerpositie:
9– een verplicht cijfer;0– een optioneel cijfer.A/a– een verplichte / optionele letter.N/n– een verplichte / optionele letter of cijfer.X/x– een verplicht / optioneel teken van welke soort dan ook.H/h– een verplicht / optioneel hexadecimaal cijfer.>/<– zet de volgende letters om in hoofdletters / kleine letters;!stopt de omzetting.
Elk ander teken – de . in 000.000.000.000, een - in een serienummer – is een letterlijk scheidingsteken: het wordt automatisch geplaatst en overgeslagen terwijl de gebruiker typt. Om een maskerteken als letterlijk teken te gebruiken, zet je er een backslash voor.
Een ; tegen het einde stelt de tijdelijke aanduiding in die voor niet-ingevulde posities wordt getoond: "000.000.000.000;_" toont een leeg veld als ___.___.___.___. Laat je die weg, dan zijn de lege plekken spaties. Zolang een verplichte positie nog leeg is, is de invoer onvolledig, wat Save blokkeert.
13.1.13.4.2.7.2. Regular expressions#
Een regex controleert inhoud in plaats van opmaak, en past beter wanneer de regel “deze tekens, dit patroon” is in plaats van een vast veld. De hele invoer moet overeenkomen – de expressie is aan beide uiteinden verankerd, dus "[A-Za-z0-9-]+" betekent alleen letters, cijfers en streepjes van begin tot eind, niet slechts “bevat er een”.
De controle wordt bij elke toetsaanslag uitgevoerd. Een teken wordt geaccepteerd zolang de tekst nog kan uitgroeien tot een volledige overeenkomst, en geweigerd zodra dat niet meer kan, zodat de gebruiker zich nooit naar iets ongeldigs kan typen. Het veld telt als geldig – en Save is toegestaan – pas zodra de hele expressie overeenkomt; een gedeeltelijke invoer op weg daarnaartoe blijft staan maar blokkeert Save totdat die volledig is.
Om een patroon op te bouwen en te testen, legt regex101.com elk onderdeel uit terwijl je typt – stel de smaak in op PCRE2, de syntaxis die de editor gebruikt.