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) – wanneer true, 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 checkable true is.

  • 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.