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) – lorsquetrue, 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 vauttrue.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.