13.1.13.4.2. Kontrol nilai#

Ini adalah kontrol yang menyimpan sebuah pengaturan. Masing-masing membawa value, dan Save menulis value yang telah diedit kembali ke dalam kontrol. Tabel di bawah ini adalah peta ringkas dari kontrol ke tipe JSON yang disimpannya; bagian-bagian berikutnya mendokumentasikan setiap kunci.

Kontrol

Menyimpan

checkbox

boolean, atau integer 0/1/2

combobox

nilai yang dipilih, atau indeksnya

radio

nilai yang dipilih, atau indeksnya

spinbox

integer

doublespinbox

angka (floating point)

slider

integer

lineedit

string

Semua kontrol nilai juga menerima kunci umum (name, label, tooltip, enabled); lihat ikhtisar. label ditampilkan di samping kontrol (pada kotaknya sendiri untuk checkbox).

13.1.13.4.2.1. checkbox#

Sebuah sakelar on/off. Secara opsional tiga-status, untuk pengaturan yang memiliki bagian tengah "tak disetel".

{ "type": "checkbox", "name": "draw_overlays", "label": "Draw Overlays", "value": true }

Argumen:

  • label (string) -- teks yang ditampilkan di sebelah kotak. Hanya teks biasa (tidak seperti kontrol lain, yang label-nya menerima teks kaya).

  • tristate (boolean, default false) -- mengizinkan status ketiga yang tercentang sebagian.

  • value -- status awal. Dua-status: sebuah boolean. Tristate: 0 (off), 1 (sebagian), atau 2 (on).

Menyimpan: sebuah boolean untuk kotak dua-status; sebuah integer 0, 1, atau 2 untuk kotak tristate.

13.1.13.4.2.2. combobox#

Menu dropdown berisi pilihan.

{
  "type": "combobox",
  "name": "resolution",
  "label": "Resolution",
  "options": ["QQVGA", "QVGA", "VGA"],
  "values": ["qqvga", "qvga", "vga"],
  "value": "qvga"
}

Argumen:

  • options (array string) -- item yang ditampilkan dalam menu.

  • values (array) -- array paralel opsional berisi nilai yang akan disimpan, satu per option. Dengan values, menu menampilkan options[i] tetapi menyimpan values[i] -- sehingga pengguna melihat "QVGA" sementara file menyimpan "qvga". Entri-entrinya dapat berupa tipe JSON apa pun. Tanpa values, kontrol malah menyimpan indeks item yang dipilih.

  • value -- pilihan awal. Dengan values, entri yang sama dengan salah satu values. Tanpa values, indeks item yang akan dipilih (default 0).

Menyimpan: entri values yang cocok (tipe apa pun) saat values diberikan; jika tidak, indeks yang dipilih (integer).

13.1.13.4.2.3. radio#

Sekumpulan tombol radio -- satu pilihan terlihat pada satu waktu, seperti combobox tetapi ditata secara penuh.

{
  "type": "radio",
  "name": "mode",
  "label": "Mode",
  "options": ["Idle", "Track", "Record"],
  "values": ["idle", "track", "record"],
  "value": "idle",
  "orientation": "horizontal"
}

Argumen:

  • options (array string) -- satu tombol per entri.

  • values (array) -- nilai opsional yang akan disimpan, satu per option, persis seperti untuk combobox. Tanpanya, kontrol menyimpan indeks yang dipilih.

  • value -- pilihan awal, dicocokkan terhadap values atau digunakan sebagai indeks, seperti untuk combobox.

  • orientation (string, default "vertical") -- "horizontal" untuk menata tombol dalam satu baris, jika tidak dalam satu kolom.

Menyimpan: entri values yang cocok (tipe apa pun), atau indeks yang dipilih.

13.1.13.4.2.4. spinbox#

Kotak angka untuk integer, dengan panah naik/turun.

{
  "type": "spinbox",
  "name": "server_port",
  "label": "Port",
  "value": 8080,
  "min": 0,
  "max": 65535,
  "group_separator": true
}

Argumen:

  • value (integer, default 0) -- angka awal.

  • min (integer, default 0 atau value, mana yang lebih kecil) -- nilai terendah yang diizinkan.

  • max (integer, default 100 atau value, mana yang lebih besar) -- nilai tertinggi yang diizinkan.

  • step (integer, default 1) -- penambahan naik/turun.

  • prefix (string) -- teks yang ditampilkan sebelum angka, mis. "0x".

  • suffix (string) -- teks yang ditampilkan setelah angka, mis. satuan seperti " px".

  • base (integer, default 10) -- basis tampilan; atur ke 16 untuk menampilkan dan mengedit angka dalam heksa.

  • group_separator (boolean, default false) -- mengelompokkan digit dengan pemisah ribuan.

  • special_value_text (string) -- teks yang ditampilkan menggantikan angka saat berada di min, mis. menampilkan "Off" pada 0.

Menyimpan: sebuah integer.

13.1.13.4.2.5. doublespinbox#

Kotak angka untuk desimal.

{
  "type": "doublespinbox",
  "name": "sensitivity",
  "label": "Sensitivity",
  "value": 50.0,
  "min": 0,
  "max": 100,
  "step": 0.5,
  "decimals": 1,
  "suffix": " %"
}

Argumen:

  • value (number, default 0) -- angka awal.

  • min (number, default 0 atau value, mana yang lebih kecil) -- nilai terendah yang diizinkan.

  • max (number, default 100 atau value, mana yang lebih besar) -- nilai tertinggi yang diizinkan.

  • decimals (integer, default 2) -- berapa banyak digit yang ditampilkan setelah titik desimal.

  • step (number, default 1.0) -- penambahan naik/turun.

  • prefix (string) -- teks yang ditampilkan sebelum angka, mis. "max ".

  • suffix (string) -- teks yang ditampilkan setelah angka, mis. satuan seperti " %".

  • group_separator (boolean, default false) -- pemisah ribuan.

  • special_value_text (string) -- teks yang ditampilkan saat angka berada di min.

Menyimpan: sebuah angka (floating point).

13.1.13.4.2.6. slider#

Slider horizontal dengan pembacaan numerik langsung di sampingnya.

{
  "type": "slider",
  "name": "brightness",
  "label": "Brightness",
  "value": 50,
  "min": 0,
  "max": 100,
  "step": 1,
  "suffix": " %",
  "ticks": 25
}

Argumen:

  • value (integer, default 0) -- posisi awal.

  • min (integer, default 0 atau value, mana yang lebih kecil) -- ujung bawah lintasan.

  • max (integer, default 100 atau value, mana yang lebih besar) -- ujung atas lintasan.

  • step (integer, default 1) -- penambahan keyboard dan seret; seretan mengunci ke kelipatan terdekat.

  • prefix (string) -- teks yang ditampilkan sebelum pembacaan numerik di samping slider, mis. "x".

  • suffix (string) -- teks yang ditampilkan setelah pembacaan, mis. " %".

  • ticks (integer) -- jarak antar tanda centang yang digambar di bawah lintasan.

Menyimpan: sebuah integer.

13.1.13.4.2.7. lineedit#

Kolom teks satu baris, untuk nama, kata sandi, alamat, dan sejenisnya.

{
  "type": "lineedit",
  "name": "hostname",
  "label": "Hostname",
  "value": "openmv-cam",
  "placeholder": "letters, digits, dashes",
  "regex": "[A-Za-z0-9-]+",
  "clear_button": true
}

Argumen:

  • value (string, default "") -- teks awal.

  • placeholder (string) -- teks petunjuk abu-abu yang ditampilkan selama kolom kosong.

  • max_length (integer) -- jumlah karakter terbanyak yang akan diterima kolom.

  • mask (string) -- input mask yang menetapkan tata letak dari apa yang dapat diketik, mis. "000.000.000.000;_" untuk alamat IPv4. Lihat Input masks di bawah.

  • regex (string) -- ekspresi reguler yang harus dicocokkan oleh seluruh entri. Lihat Regular expressions di bawah.

  • clear_button (boolean, default false) -- menampilkan tombol hapus kecil di dalam kolom.

  • password (boolean, default false) -- menyembunyikan teks sebagai titik-titik dan menambahkan tombol mata untuk menampilkannya.

Menyimpan: sebuah string.

mask dan regex keduanya membatasi apa yang akan diterima kolom, dari sudut yang berlawanan -- mask menetapkan tata letak teks, regex membatasi isi-nya. Kolom dengan salah satu dari keduanya adalah satu-satunya kontrol yang dapat memblokir Save: jika teksnya tidak lengkap atau tidak cocok, editor mencantumkan kolom berdasarkan label-nya dan menolak menyimpan sampai diperbaiki atau dikosongkan. Gunakan paling banyak satu dari keduanya pada sebuah kolom.

13.1.13.4.2.7.1. Input mask#

Sebuah mask menetapkan kolom karakter demi karakter: pemisah digambarkan untuk pengguna, yang hanya mengisi bagian kosong. Setiap karakter mask mewakili satu posisi masukan:

  • 9 -- digit yang wajib; 0 -- digit yang opsional.

  • A / a -- huruf yang wajib / opsional.

  • N / n -- huruf atau digit yang wajib / opsional.

  • X / x -- karakter apa pun yang wajib / opsional.

  • H / h -- digit heksadesimal yang wajib / opsional.

  • > / < -- mengubah huruf berikutnya menjadi huruf besar / huruf kecil; ! menghentikan konversi.

Karakter lain apa pun -- . dalam 000.000.000.000, sebuah - dalam nomor seri -- adalah pemisah literal: ia ditempatkan secara otomatis dan dilewati saat pengguna mengetik. Untuk menggunakan karakter mask sebagai literal, letakkan garis miring terbalik di depannya.

Sebuah ; di dekat akhir menetapkan placeholder yang ditampilkan untuk posisi yang belum terisi: "000.000.000.000;_" menampilkan kolom kosong sebagai ___.___.___.___. Biarkan tanpa itu dan bagian kosong berupa spasi. Selama posisi required mana pun masih kosong, entri tidak lengkap, yang memblokir Save.

13.1.13.4.2.7.2. Ekspresi reguler#

Sebuah regex memeriksa isi alih-alih tata letak, dan lebih cocok saat aturannya adalah "karakter-karakter ini, pola ini" alih-alih kolom yang tetap. Seluruh entri harus cocok -- ekspresi dijangkarkan di kedua ujung, sehingga "[A-Za-z0-9-]+" berarti hanya huruf, digit, dan tanda hubung dari awal hingga akhir, bukan sekadar "mengandung satu".

Pemeriksaan berjalan pada setiap penekanan tombol. Sebuah karakter diterima selama teks masih dapat tumbuh menjadi kecocokan penuh, dan ditolak begitu tidak dapat lagi, sehingga pengguna tidak akan pernah dapat mengetik menuju sesuatu yang tidak valid. Kolom dianggap valid -- dan Save diizinkan -- hanya setelah seluruh ekspresi cocok; entri parsial dalam perjalanan menuju ke sana tetap ada tetapi memblokir Save sampai lengkap.

Untuk membangun dan menguji sebuah pola, regex101.com menjelaskan setiap bagian saat Anda mengetik -- atur flavor-nya ke PCRE2, sintaks yang digunakan editor.