13.1.13.4.2. 値コントロール#
これらは設定を保持するコントロールです。各コントロールは value を持ち、Save は編集された value をコントロールに書き戻します。以下の表は、コントロールから、それが保存する JSON 型への簡易対応表です。続くセクションで各キーを説明します。
コントロール | 保存内容 |
|---|---|
checkbox | 真偽値、または整数 |
combobox | 選択された値、またはそのインデックス |
radio | 選択された値、またはそのインデックス |
spinbox | 整数 |
doublespinbox | 数値(浮動小数点) |
slider | 整数 |
lineedit | 文字列 |
すべての値コントロールは共通のキー( name 、 label 、 tooltip 、 enabled )も受け付けます。 概要 を参照してください。 label はコントロールの横に表示されます( checkbox の場合はボックス自体に表示されます)。
13.1.13.4.2.1. checkbox#
オン/オフのスイッチです。「未設定」という中間状態を持つ設定のために、オプションで3状態にできます。
{ "type": "checkbox", "name": "draw_overlays", "label": "Draw Overlays", "value": true }
引数:
label(文字列)-- ボックスの横に表示されるテキストです。プレーンテキストのみです(ラベルにリッチテキストを使える他のコントロールとは異なります)。
tristate(真偽値、デフォルト
false)-- 3番目の、部分的にチェックされた状態を許可します。value -- 初期状態です。2状態:真偽値。3状態:
\ 0(オフ)、\ 1(部分)、\ 2(オン)。
保存内容:2状態ボックスの場合は 真偽値、3状態ボックスの場合は 整数 0、1、2。
13.1.13.4.2.2. combobox#
選択肢のドロップダウンメニューです。
{
"type": "combobox",
"name": "resolution",
"label": "Resolution",
"options": ["QQVGA", "QVGA", "VGA"],
"values": ["qqvga", "qvga", "vga"],
"value": "qvga"
}
引数:
options(文字列の配列)-- メニューに表示される項目です。
values*(配列)-- 保存する値を *option ごとに1つずつ並べた、オプションの並列配列です。values があると、メニューは
options[i]を表示しますがvalues[i]を保存します -- つまりユーザーには「QVGA」が見え、ファイルには"qvga"が保存されます。エントリは任意の JSON 型にできます。values がない場合、コントロールは代わりに選択された項目の インデックス を保存します。value -- 初期選択です。values がある場合は values のいずれかに等しいエントリ。values がない場合は選択する項目のインデックス(デフォルト
0)。
保存内容:values が指定されている場合は一致する values エントリ(任意の型)、それ以外の場合は選択された インデックス(整数)。
13.1.13.4.2.3. radio#
ラジオボタンのセットです -- 一度に1つの選択肢だけが見える点は combobox と同じですが、すべてが展開して配置されます。
{
"type": "radio",
"name": "mode",
"label": "Mode",
"options": ["Idle", "Track", "Record"],
"values": ["idle", "track", "record"],
"value": "idle",
"orientation": "horizontal"
}
引数:
options(文字列の配列)-- エントリごとに1つのボタンです。
values*(配列)-- 保存する値を *option ごとに1つずつ指定するオプションで、combobox とまったく同じです。これがない場合、コントロールは選択された インデックス を保存します。
value -- 初期選択で、combobox と同様に values と照合されるか、インデックスとして使われます。
orientation(文字列、デフォルト
"vertical")--"horizontal"にするとボタンを横一列に配置し、それ以外の場合は縦一列に配置します。
保存内容:一致する values エントリ(任意の型)、または選択された インデックス。
13.1.13.4.2.4. spinbox#
上下矢印の付いた、整数用の数値ボックスです。
{
"type": "spinbox",
"name": "server_port",
"label": "Port",
"value": 8080,
"min": 0,
"max": 65535,
"group_separator": true
}
引数:
value(整数、デフォルト
0)-- 初期の数値です。min*(整数、デフォルトは ``0`` または *value のうち小さい方)-- 許可される最小値です。
max*(整数、デフォルトは ``100`` または *value のうち大きい方)-- 許可される最大値です。
step(整数、デフォルト
1)-- 上下の増減量です。prefix(文字列)-- 数値の前に表示されるテキストです。例:
"0x"。suffix(文字列)-- 数値の後に表示されるテキストです。例:
" px"のような単位。base(整数、デフォルト
10)-- 表示する基数です。\ 16に設定すると数値を16進数で表示・編集します。group_separator(真偽値、デフォルト
false)-- 桁を3桁区切りの区切り記号でグループ化します。special_value_text*(文字列)-- 数値が *min にあるとき、その数値の代わりに表示するテキストです。例:
0のときに「Off」を表示します。
保存内容:整数。
13.1.13.4.2.5. doublespinbox#
小数用の数値ボックスです。
{
"type": "doublespinbox",
"name": "sensitivity",
"label": "Sensitivity",
"value": 50.0,
"min": 0,
"max": 100,
"step": 0.5,
"decimals": 1,
"suffix": " %"
}
引数:
value(数値、デフォルト
0)-- 初期の数値です。min*(数値、デフォルトは ``0`` または *value のうち小さい方)-- 許可される最小値です。
max*(数値、デフォルトは ``100`` または *value のうち大きい方)-- 許可される最大値です。
decimals(整数、デフォルト
2)-- 小数点以下に表示する桁数です。step(数値、デフォルト
1.0)-- 上下の増減量です。prefix(文字列)-- 数値の前に表示されるテキストです。例:
"max "。suffix(文字列)-- 数値の後に表示されるテキストです。例:
" %"のような単位。group_separator(真偽値、デフォルト
false)-- 3桁区切りの区切り記号です。special_value_text*(文字列)-- 数値が *min にあるときに表示するテキストです。
保存内容:数値(浮動小数点)。
13.1.13.4.2.6. slider#
横に数値がリアルタイム表示される水平スライダーです。
{
"type": "slider",
"name": "brightness",
"label": "Brightness",
"value": 50,
"min": 0,
"max": 100,
"step": 1,
"suffix": " %",
"ticks": 25
}
引数:
value(整数、デフォルト
0)-- 初期位置です。min*(整数、デフォルトは ``0`` または *value のうち小さい方)-- トラックの下端です。
max*(整数、デフォルトは ``100`` または *value のうち大きい方)-- トラックの上端です。
step(整数、デフォルト
1)-- キーボードおよびドラッグの増減量です。ドラッグは最も近い倍数にスナップします。prefix(文字列)-- スライダー横の数値表示の前に表示されるテキストです。例:
"x"。suffix(文字列)-- 数値表示の後に表示されるテキストです。例:
" %"。ticks(整数)-- トラックの下に描画される目盛りの間隔です。
保存内容:整数。
13.1.13.4.2.7. lineedit#
名前、パスワード、アドレスなどのための1行テキストフィールドです。
{
"type": "lineedit",
"name": "hostname",
"label": "Hostname",
"value": "openmv-cam",
"placeholder": "letters, digits, dashes",
"regex": "[A-Za-z0-9-]+",
"clear_button": true
}
引数:
value(文字列、デフォルト
"")-- 初期テキストです。placeholder(文字列)-- フィールドが空のときに表示される灰色のヒントテキストです。
max_length(整数)-- フィールドが受け付ける最大文字数です。
mask(文字列)-- 入力できる内容のレイアウトを固定する入力マスクです。例:IPv4 アドレス用の
"000.000.000.000;_"。下記の Input masks を参照してください。regex(文字列)-- 入力全体が一致しなければならない正規表現です。下記の Regular expressions を参照してください。
clear_button(真偽値、デフォルト
false)-- フィールド内に小さなクリアボタンを表示します。password(真偽値、デフォルト
false)-- テキストをドットで隠し、それを表示する目のボタンを追加します。
保存内容:文字列。
mask と regex はどちらもフィールドが受け付ける内容を制限しますが、逆の側面からアプローチします -- マスクはテキストの レイアウト を固定し、正規表現はその 内容 を制約します。いずれかを持つフィールドは、Save をブロックできる唯一のコントロールです:テキストが不完全または一致しない場合、エディタはそのフィールドを label で列挙し、修正またはクリアされるまで保存を拒否します。1つのフィールドには2つのうち最大でも片方だけを使ってください。
13.1.13.4.2.7.1. 入力マスク#
mask はフィールドを1文字ずつ固定します:区切り記号はあらかじめ描画されており、ユーザーは空欄を埋めるだけです。各マスク文字は1つの入力位置を表します:
9-- 必須の数字。0-- 省略可能な数字。A/a-- 必須 / 省略可能な文字(英字)。N/n-- 必須 / 省略可能な英字または数字。X/x-- 必須 / 省略可能な任意の種類の文字。H/h-- 必須 / 省略可能な16進数字。>/<-- 続く文字を大文字 / 小文字にします。!で変換を停止します。
それ以外の文字 -- 000.000.000.000 の中の .、シリアル番号の中の - -- はリテラルの区切り記号です:自動的に配置され、ユーザーが入力する際にはスキップされます。マスク文字をリテラルとして使うには、その前にバックスラッシュを付けてください。
末尾付近の ; は、未入力の位置に表示するプレースホルダーを設定します:"000.000.000.000;_" は空のフィールドを ___.___.___.___ として表示します。これを省略すると、空欄はスペースになります。必須 の位置がまだ空である間は入力が不完全であり、Save がブロックされます。
13.1.13.4.2.7.2. 正規表現#
regex はレイアウトではなく内容をチェックし、規則が固定フィールドではなく「これらの文字、このパターン」である場合に適しています。入力全体が一致しなければなりません -- 式は両端でアンカーされるため、"[A-Za-z0-9-]+" は最初から最後まで英字、数字、ダッシュ のみ を意味し、単に「1つ含む」という意味ではありません。
チェックはキー入力のたびに実行されます。テキストが完全な一致へと成長し得る限り、その文字は受け入れられ、そうでなくなった瞬間に拒否されます。そのため、ユーザーが入力によって無効な状態に到達することは決してありません。フィールドが有効とみなされ -- そして Save が許可される -- のは、式全体が一致したときだけです。そこに至る途中の部分的な入力はそのまま残りますが、完成するまで Save をブロックします。
パターンを作成・テストするには、regex101.com が入力に応じて各部分を説明してくれます -- そのフレーバーを、エディタが使用する構文である PCRE2 に設定してください。