13.1.13.4.2. 値コントロール#

これらは設定を保持するコントロールです。各コントロールは value を持ち、Save は編集された value をコントロールに書き戻します。以下の表は、コントロールから、それが保存する JSON 型への簡易対応表です。続くセクションで各キーを説明します。

コントロール

保存内容

checkbox

真偽値、または整数 0/1/2

combobox

選択された値、またはそのインデックス

radio

選択された値、またはそのインデックス

spinbox

整数

doublespinbox

数値(浮動小数点)

slider

整数

lineedit

文字列

すべての値コントロールは共通のキー( namelabeltooltipenabled )も受け付けます。 概要 を参照してください。 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状態ボックスの場合は 整数 012

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)-- テキストをドットで隠し、それを表示する目のボタンを追加します。

保存内容:文字列

maskregex はどちらもフィールドが受け付ける内容を制限しますが、逆の側面からアプローチします -- マスクはテキストの レイアウト を固定し、正規表現はその 内容 を制約します。いずれかを持つフィールドは、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 に設定してください。