13.1.13.4.1. Kontenery#

Kontenery nie przechowują własnej wartości – porządkują inne kontrolki. Każdy zajmuje pełną szerokość formularza, a kontrolki w nim wymienione są budowane jako osobny formularz. Są dwa: group rysuje opisaną ramkę, a tabs rysuje pasek zakładek.

Wszystkie kontrolki akceptują również wspólne klucze (name, label, tooltip, enabled); zobacz przegląd.

13.1.13.4.1.1. group#

Opisana ramka wokół zestawu kontrolek. Opcjonalnie checkable, co zamienia nagłówek w przełącznik dla wszystkiego, co znajduje się w środku.

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

Argumenty:

  • title (string) – nagłówek wyświetlany na ramce.

  • checkable (boolean, domyślnie false) – gdy true, nagłówek zawiera pole wyboru, które włącza lub wyłącza każdą kontrolkę wewnątrz ramki, a którego własny stan włączony/wyłączony jest zapisywany.

  • value (boolean, domyślnie true) – początkowy stan tego pola wyboru w nagłówku. Ma znaczenie tylko wtedy, gdy checkable ma wartość true.

  • controls (array) – kontrolki wyświetlane wewnątrz ramki.

Zapisuje: wartość boolean (pole wyboru w nagłówku), gdy checkable ma wartość true; zwykła grupa nie zapisuje niczego własnego – tylko kontrolki wewnątrz niej zapisują swoje wartości.

13.1.13.4.1.2. tabs#

Pasek zakładek. Każda zakładka to strona z własną listą kontrolek, więc długi formularz można podzielić na Camera, Network, System i tak dalej.

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

Argumenty:

  • tab_position (string, domyślnie "north") – na której krawędzi znajduje się pasek zakładek: "north", "south", "west" lub "east".

  • tabs (array) – strony zakładek, w kolejności. Każda strona to obiekt z:

    • title (string) – etykieta zakładki.

    • tooltip (string) – tekst podpowiedzi wyświetlany po najechaniu na zakładkę.

    • controls (array) – kontrolki wyświetlane na tej stronie.

Zapisuje: nic własnego; kontrolki na każdej stronie zapisują swoje własne wartości.

13.1.13.4.1.3. Zagnieżdżanie#

Każda kontrolka może znaleźć się wewnątrz dowolnego kontenera, na dowolnej głębokości. group może zawierać tabs, strona zakładki może zawierać ramki group, a grupy mogą zagnieżdżać się w grupach. Każda tablica controls – ta na najwyższym poziomie, grupy i strony zakładki – przyjmuje te same obiekty kontrolek, więc reguły na tych stronach obowiązują tak samo na każdym poziomie.

Zaznaczalny group zagnieżdżony wewnątrz zakładki to częsty układ: zakładka mieści funkcję, pole wyboru grupy włącza lub wyłącza tę funkcję, a kontrolki wewnątrz ją konfigurują.