13.1.13.4.2. Controale de valoare#
Acestea sunt controalele care dețin o setare. Fiecare poartă o value, iar Save scrie value-ul editat înapoi în control. Tabelul de mai jos este harta rapidă de la control la tipul JSON pe care îl stochează; secțiunile care urmează documentează fiecare cheie.
Control | Salvează |
|---|---|
checkbox | boolean sau întreg |
combobox | valoarea aleasă sau indexul acesteia |
radio | valoarea aleasă sau indexul acesteia |
spinbox | întreg |
doublespinbox | număr (virgulă mobilă) |
slider | întreg |
lineedit | string |
Toate controalele de valoare acceptă și cheile comune (name, label, tooltip, enabled); consultați prezentarea generală. label este afișat lângă control (pe caseta însăși în cazul unui checkbox).
13.1.13.4.2.1. checkbox#
Un comutator pornit/oprit. Opțional cu trei stări, pentru setări care au o stare intermediară „nesetată”.
{ "type": "checkbox", "name": "draw_overlays", "label": "Draw Overlays", "value": true }
Argumente:
label (string) – textul afișat lângă casetă. Doar text simplu (spre deosebire de celelalte controale, ale căror etichete preiau text îmbogățit).
tristate (boolean, implicit
false) – permite o a treia stare, parțial bifată.value – starea inițială. Cu două stări: un boolean. Tristate:
0(oprit),1(parțial) sau2(pornit).
Salvează: un boolean pentru o casetă cu două stări; un întreg 0, 1 sau 2 pentru o casetă tristate.
13.1.13.4.2.2. combobox#
Un meniu derulant de opțiuni.
{
"type": "combobox",
"name": "resolution",
"label": "Resolution",
"options": ["QQVGA", "QVGA", "VGA"],
"values": ["qqvga", "qvga", "vga"],
"value": "qvga"
}
Argumente:
options (array de string-uri) – elementele afișate în meniu.
values (array) – un tablou paralel opțional al valorilor de salvat, câte una per option. Cu values, meniul afișează
options[i]dar salveazăvalues[i]– astfel utilizatorul vede „QVGA” în timp ce fișierul stochează"qvga". Intrările pot fi de orice tip JSON. Fără values, controlul salvează în schimb indexul elementului selectat.value – selecția inițială. Cu values, intrarea egală cu una dintre values. Fără values, indexul elementului de selectat (implicit
0).
Salvează: intrarea values corespunzătoare (orice tip) când este dat values; altfel indexul selectat (întreg).
13.1.13.4.2.3. radio#
Un set de butoane radio – o singură opțiune vizibilă la un moment dat, ca un combobox dar dispus în întregime.
{
"type": "radio",
"name": "mode",
"label": "Mode",
"options": ["Idle", "Track", "Record"],
"values": ["idle", "track", "record"],
"value": "idle",
"orientation": "horizontal"
}
Argumente:
options (array de string-uri) – câte un buton per intrare.
values (array) – valorile opționale de salvat, câte una per option, exact ca pentru combobox. Fără el, controlul salvează indexul selectat.
value – selecția inițială, potrivită cu values sau folosită ca index, ca pentru combobox.
orientation (string, implicit
"vertical") –"horizontal"pentru a dispune butoanele pe un rând, altfel pe o coloană.
Salvează: intrarea values corespunzătoare (orice tip) sau indexul selectat.
13.1.13.4.2.4. spinbox#
O casetă numerică pentru numere întregi, cu săgeți sus/jos.
{
"type": "spinbox",
"name": "server_port",
"label": "Port",
"value": 8080,
"min": 0,
"max": 65535,
"group_separator": true
}
Argumente:
value (întreg, implicit
0) – numărul inițial.min (întreg, implicit
0sau value, oricare este mai mic) – cea mai mică valoare permisă.max (întreg, implicit
100sau value, oricare este mai mare) – cea mai mare valoare permisă.step (întreg, implicit
1) – incrementul sus/jos.prefix (string) – text afișat înaintea numărului, de exemplu
"0x".suffix (string) – text afișat după număr, de exemplu o unitate precum
" px".base (întreg, implicit
10) – baza de afișare; setați la16pentru a afișa și edita numărul în hexazecimal.group_separator (boolean, implicit
false) – grupează cifrele cu separatori de mii.special_value_text (string) – text de afișat în locul numărului când acesta se află la min, de exemplu afișarea lui „Off” la
0.
Salvează: un întreg.
13.1.13.4.2.5. doublespinbox#
O casetă numerică pentru zecimale.
{
"type": "doublespinbox",
"name": "sensitivity",
"label": "Sensitivity",
"value": 50.0,
"min": 0,
"max": 100,
"step": 0.5,
"decimals": 1,
"suffix": " %"
}
Argumente:
value (număr, implicit
0) – numărul inițial.min (număr, implicit
0sau value, oricare este mai mic) – cea mai mică valoare permisă.max (număr, implicit
100sau value, oricare este mai mare) – cea mai mare valoare permisă.decimals (întreg, implicit
2) – câte cifre să se afișeze după virgula zecimală.step (număr, implicit
1.0) – incrementul sus/jos.prefix (string) – text afișat înaintea numărului, de exemplu
"max ".suffix (string) – text afișat după număr, de exemplu o unitate precum
" %".group_separator (boolean, implicit
false) – separatori de mii.special_value_text (string) – text de afișat când numărul se află la min.
Salvează: un număr (virgulă mobilă).
13.1.13.4.2.6. slider#
Un glisor orizontal cu o citire numerică în timp real alături.
{
"type": "slider",
"name": "brightness",
"label": "Brightness",
"value": 50,
"min": 0,
"max": 100,
"step": 1,
"suffix": " %",
"ticks": 25
}
Argumente:
value (întreg, implicit
0) – poziția inițială.min (întreg, implicit
0sau value, oricare este mai mic) – capătul de jos al șinei.max (întreg, implicit
100sau value, oricare este mai mare) – capătul de sus al șinei.step (întreg, implicit
1) – incrementul de la tastatură și prin tragere; tragerile se fixează la cel mai apropiat multiplu.prefix (string) – text afișat înaintea citirii numerice de lângă glisor, de exemplu
"x".suffix (string) – text afișat după citire, de exemplu
" %".ticks (întreg) – distanța dintre marcajele desenate sub șină.
Salvează: un întreg.
13.1.13.4.2.7. lineedit#
Un câmp de text pe o singură linie, pentru nume, parole, adrese și altele asemenea.
{
"type": "lineedit",
"name": "hostname",
"label": "Hostname",
"value": "openmv-cam",
"placeholder": "letters, digits, dashes",
"regex": "[A-Za-z0-9-]+",
"clear_button": true
}
Argumente:
value (string, implicit
"") – textul inițial.placeholder (string) – text indicativ gri afișat cât timp câmpul este gol.
max_length (întreg) – numărul maxim de caractere pe care le va accepta câmpul.
mask (string) – o mască de intrare care fixează aranjamentul a ceea ce poate fi tastat, de exemplu
"000.000.000.000;_"pentru o adresă IPv4. Consultați Input masks mai jos.regex (string) – o expresie regulată cu care trebuie să se potrivească întreaga intrare. Consultați Regular expressions mai jos.
clear_button (boolean, implicit
false) – afișează un mic buton de ștergere în interiorul câmpului.password (boolean, implicit
false) – ascunde textul sub formă de puncte și adaugă un buton în formă de ochi pentru a-l dezvălui.
Salvează: un string.
Atât o mask, cât și un regex restrâng ceea ce va accepta câmpul, din unghiuri opuse – o mască fixează aranjamentul textului, o expresie regulată îi restrânge conținutul. Un câmp cu oricare dintre ele este singurul control care poate bloca un Save: dacă textul său este incomplet sau nu se potrivește, editorul enumeră câmpul după label-ul său și refuză să salveze până când este corectat sau golit. Folosiți cel mult una dintre cele două pe un câmp.
13.1.13.4.2.7.1. Măști de intrare#
O mask fixează câmpul caracter cu caracter: separatorii sunt desenați pentru utilizator, care completează doar spațiile libere. Fiecare caracter al măștii reprezintă o poziție de intrare:
9– o cifră obligatorie;0– o cifră opțională.A/a– o literă obligatorie / opțională.N/n– o literă sau cifră obligatorie / opțională.X/x– un caracter obligatoriu / opțional de orice fel.H/h– o cifră hexazecimală obligatorie / opțională.>/<– transformă în majuscule / minuscule literele care urmează;!oprește conversia.
Orice alt caracter – . din 000.000.000.000, un - dintr-un număr de serie – este un separator literal: este plasat automat și sărit pe măsură ce utilizatorul tastează. Pentru a folosi un caracter de mască în mod literal, puneți o bară oblică inversă în fața lui.
Un ; aproape de sfârșit setează substituentul afișat pentru pozițiile necompletate: "000.000.000.000;_" afișează un câmp gol ca ___.___.___.___. Lăsați-l deoparte și spațiile libere devin spații. Cât timp orice poziție required este încă goală, intrarea este incompletă, ceea ce blochează Save.
13.1.13.4.2.7.2. Expresii regulate#
Un regex verifică conținutul mai degrabă decât aranjamentul și este mai potrivit când regula este „aceste caractere, acest tipar” în loc de un câmp fix. Întreaga intrare trebuie să se potrivească – expresia este ancorată la ambele capete, așa că "[A-Za-z0-9-]+" înseamnă doar litere, cifre și liniuțe de la început până la sfârșit, nu doar „conține una”.
Verificarea rulează la fiecare apăsare de tastă. Un caracter este acceptat atât timp cât textul ar mai putea crește într-o potrivire completă și respins în momentul în care nu ar mai putea, astfel încât utilizatorul nu poate niciodată tasta ceva nevalid. Câmpul contează ca valid – iar Save este permis – doar după ce întreaga expresie se potrivește; o intrare parțială pe drumul spre acel punct rămâne la locul ei, dar blochează Save până este completă.
Pentru a construi și testa un tipar, regex101.com explică fiecare parte pe măsură ce tastați – setați varianta sa la PCRE2, sintaxa pe care o folosește editorul.