13.1.13.4.1. Contenitori#

I contenitori non contengono un valore proprio – organizzano altri controlli. Ciascuno occupa l’intera larghezza del modulo e i controlli elencati al suo interno vengono costruiti come un modulo a sé stante. Ce ne sono due: group disegna un riquadro con etichetta e tabs disegna una barra di schede.

Tutti i controlli accettano anche le chiavi comuni (name, label, tooltip, enabled); vedere la panoramica.

13.1.13.4.1.1. group#

Un riquadro con etichetta attorno a un insieme di controlli. Facoltativamente checkable, il che trasforma l’intestazione in un interruttore per tutto ciò che contiene.

{
  "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 }
  ]
}

Argomenti:

  • title (string) – l’intestazione mostrata sul riquadro.

  • checkable (boolean, predefinito false) – quando true, l’intestazione presenta una casella di spunta che abilita o disabilita ogni controllo all’interno del riquadro, e il cui stato acceso/spento viene salvato.

  • value (boolean, predefinito true) – lo stato iniziale di quella casella di spunta dell’intestazione. Significativo solo quando checkable è true.

  • controls (array) – i controlli mostrati all’interno del riquadro.

Salva: un boolean (la casella di spunta dell’intestazione) quando checkable è true; un gruppo semplice non salva nulla di proprio – solo i controlli al suo interno salvano i loro valori.

13.1.13.4.1.2. tabs#

Una barra di schede. Ogni scheda è una pagina con il proprio elenco di controlli, così che un modulo lungo possa essere suddiviso tra Camera, Network, System e così via.

{
  "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" }
      ]
    }
  ]
}

Argomenti:

  • tab_position (string, predefinito "north") – su quale bordo si trova la barra delle schede: "north", "south", "west" o "east".

  • tabs (array) – le pagine delle schede, in ordine. Ogni pagina è un oggetto con:

    • title (string) – l’etichetta della scheda.

    • tooltip (string) – il testo mostrato al passaggio del mouse sulla scheda.

    • controls (array) – i controlli mostrati su quella pagina.

Salva: nulla di proprio; i controlli di ciascuna pagina salvano i propri valori.

13.1.13.4.1.3. Annidamento#

Qualsiasi controllo può essere inserito in qualsiasi contenitore, a qualsiasi profondità. Un group può contenere un tabs, una pagina di scheda può contenere riquadri group, i gruppi possono annidarsi all’interno di altri gruppi. Ogni array controls – quello di livello superiore, quello di un gruppo e quello di una pagina di scheda – accetta gli stessi oggetti di controllo, quindi le regole di queste pagine valgono allo stesso modo a ogni livello.

Un group selezionabile annidato all’interno di una scheda è una disposizione comune: la scheda contiene una funzionalità, la casella di spunta del gruppo la attiva o disattiva e i controlli al suo interno la configurano.