13.1.13.4.1. Container#

Container halten keinen eigenen Wert – sie ordnen andere Steuerelemente an. Jeder erstreckt sich über die gesamte Breite des Formulars, und die darin aufgeführten Steuerelemente werden als eigenes Formular aufgebaut. Es gibt zwei: group zeichnet einen beschrifteten Kasten, und tabs zeichnet eine Registerkartenleiste.

Alle Steuerelemente akzeptieren zudem die allgemeinen Schlüssel (name, label, tooltip, enabled); siehe die Übersicht.

13.1.13.4.1.1. group#

Ein beschrifteter Kasten um eine Gruppe von Steuerelementen. Optional checkable, wodurch die Überschrift zu einem Schalter für alles darin wird.

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

Argumente:

  • title (string) – die auf dem Kasten angezeigte Überschrift.

  • checkable (boolean, Standard false) – wenn true, trägt die Überschrift ein Kontrollkästchen, das jedes Steuerelement innerhalb des Kastens aktiviert oder deaktiviert und dessen eigener Ein-/Aus-Zustand gespeichert wird.

  • value (boolean, Standard true) – der Anfangszustand dieses Überschrift-Kontrollkästchens. Nur sinnvoll, wenn checkable true ist.

  • controls (array) – die im Kasten angezeigten Steuerelemente.

Speichert: einen boolean (das Überschrift-Kontrollkästchen), wenn checkable true ist; eine einfache Gruppe speichert nichts Eigenes – nur die Steuerelemente darin speichern ihre Werte.

13.1.13.4.1.2. tabs#

Eine Registerkartenleiste. Jede Registerkarte ist eine Seite mit einer eigenen Liste von Steuerelementen, sodass ein langes Formular auf Camera, Network, System usw. aufgeteilt werden kann.

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

Argumente:

  • tab_position (string, Standard "north") – an welchem Rand die Registerkartenleiste sitzt: "north", "south", "west" oder "east".

  • tabs (array) – die Registerkartenseiten, in Reihenfolge. Jede Seite ist ein Objekt mit:

    • title (string) – die Beschriftung der Registerkarte.

    • tooltip (string) – Hover-Text für die Registerkarte.

    • controls (array) – die auf dieser Seite angezeigten Steuerelemente.

Speichert: nichts Eigenes; die Steuerelemente auf jeder Seite speichern ihre eigenen Werte.

13.1.13.4.1.3. Verschachtelung#

Jedes Steuerelement kann in jeden Container eingefügt werden, in beliebiger Tiefe. Eine group kann ein tabs enthalten, eine Registerkartenseite kann group-Kästen enthalten, Gruppen können in Gruppen verschachtelt werden. Jedes controls-Array – das der obersten Ebene, das einer Gruppe und das einer Registerkartenseite – nimmt dieselben Steuerelement-Objekte auf, sodass die Regeln auf diesen Seiten auf jeder Ebene gleich gelten.

Eine aktivierbare group, die in einer Registerkarte verschachtelt ist, ist eine gängige Anordnung: die Registerkarte enthält eine Funktion, das Kontrollkästchen der Gruppe schaltet die Funktion ein oder aus, und die Steuerelemente darin konfigurieren sie.