13.1.13.4.1. Kontainer#

Kontainer tidak menyimpan nilainya sendiri -- kontainer mengatur kontrol lain. Masing-masing membentang selebar penuh formulir, dan kontrol yang tercantum di dalamnya dibangun sebagai formulir tersendiri. Ada dua: group menggambar kotak berlabel, dan tabs menggambar strip tab.

Semua kontrol juga menerima kunci umum (name, label, tooltip, enabled); lihat ikhtisar.

13.1.13.4.1.1. group#

Kotak berlabel di sekeliling sekumpulan kontrol. Secara opsional checkable, yang mengubah judul menjadi sakelar untuk semua yang ada di dalamnya.

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

Argumen:

  • title (string) -- judul yang ditampilkan pada kotak.

  • checkable (boolean, default false) -- saat true, judul membawa checkbox yang mengaktifkan atau menonaktifkan setiap kontrol di dalam kotak, dan status on/off-nya sendiri disimpan.

  • value (boolean, default true) -- status awal dari checkbox judul tersebut. Hanya bermakna saat checkable bernilai true.

  • controls (array) -- kontrol yang ditampilkan di dalam kotak.

Menyimpan: sebuah boolean (checkbox judul) saat checkable bernilai true; group biasa tidak menyimpan apa pun miliknya sendiri -- hanya kontrol di dalamnya yang menyimpan nilainya.

13.1.13.4.1.2. tabs#

Sebuah strip tab. Setiap tab adalah halaman dengan daftar kontrolnya sendiri, sehingga formulir yang panjang dapat dibagi ke Camera, Network, System, dan seterusnya.

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

Argumen:

  • tab_position (string, default "north") -- pada tepi mana bilah tab berada: "north", "south", "west", atau "east".

  • tabs (array) -- halaman-halaman tab, secara berurutan. Setiap halaman adalah objek dengan:

    • title (string) -- label tab.

    • tooltip (string) -- teks hover untuk tab.

    • controls (array) -- kontrol yang ditampilkan pada halaman tersebut.

Menyimpan: tidak ada miliknya sendiri; kontrol pada setiap halaman menyimpan nilainya masing-masing.

13.1.13.4.1.3. Penyarangan#

Kontrol apa pun dapat ditempatkan di dalam kontainer apa pun, hingga kedalaman berapa pun. Sebuah group dapat berisi tabs, halaman tab dapat berisi kotak group, group dapat disarangkan di dalam group. Setiap array controls -- yang tingkat atas, milik group, dan milik halaman tab -- menerima objek kontrol yang sama, sehingga aturan pada halaman ini berlaku sama di setiap tingkat.

Sebuah group yang checkable disarangkan di dalam tab merupakan susunan yang umum: tab menampung sebuah fitur, checkbox group mengaktifkan atau menonaktifkan fitur tersebut, dan kontrol di dalamnya mengonfigurasinya.