13.1.13.4.1. Conteneurs#

Les conteneurs ne portent pas de valeur propre – ils organisent d’autres contrôles. Chacun occupe toute la largeur du formulaire, et les contrôles qui y figurent sont construits comme un formulaire à part entière. Il en existe deux : group dessine un cadre avec libellé, et tabs dessine une barre d’onglets.

Tous les contrôles acceptent également les clés communes (name, label, tooltip, enabled) ; voir la vue d’ensemble.

13.1.13.4.1.1. group#

Un cadre avec libellé entourant un ensemble de contrôles. Éventuellement checkable, ce qui transforme l’en-tête en interrupteur pour tout ce qu’il contient.

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

Arguments :

  • title (string) – l’en-tête affiché sur le cadre.

  • checkable (boolean, par défaut false) – lorsque true, l’en-tête porte une case à cocher qui active ou désactive tous les contrôles du cadre, et dont l’état marche/arrêt est lui-même enregistré.

  • value (boolean, par défaut true) – l’état initial de cette case à cocher de l’en-tête. N’a de sens que lorsque checkable vaut true.

  • controls (array) – les contrôles affichés à l’intérieur du cadre.

Enregistre : un booléen (la case à cocher de l’en-tête) lorsque checkable vaut true ; un group ordinaire n’enregistre rien qui lui soit propre – seuls les contrôles qu’il contient enregistrent leurs valeurs.

13.1.13.4.1.2. tabs#

Une barre d’onglets. Chaque onglet est une page avec sa propre liste de contrôles, de sorte qu’un formulaire long peut être réparti entre Camera, Network, System, etc.

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

Arguments :

  • tab_position (string, par défaut "north") – sur quel bord se place la barre d’onglets : "north", "south", "west" ou "east".

  • tabs (array) – les pages d’onglets, dans l’ordre. Chaque page est un objet comportant :

    • title (string) – le libellé de l’onglet.

    • tooltip (string) – le texte au survol de l’onglet.

    • controls (array) – les contrôles affichés sur cette page.

Enregistre : rien qui lui soit propre ; les contrôles de chaque page enregistrent leurs propres valeurs.

13.1.13.4.1.3. Imbrication#

N’importe quel contrôle peut être placé dans n’importe quel conteneur, à n’importe quelle profondeur. Un group peut contenir un tabs, une page d’onglet peut contenir des cadres group, et des groupes peuvent s’imbriquer dans des groupes. Chaque tableau controls – celui de niveau supérieur, celui d’un group et celui d’une page d’onglet – accepte les mêmes objets de contrôle, de sorte que les règles de ces pages s’appliquent de la même façon à tous les niveaux.

Un group checkable imbriqué dans un onglet est une organisation courante : l’onglet regroupe une fonctionnalité, la case à cocher du groupe l’active ou la désactive, et les contrôles qu’il contient la configurent.