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#
on/off 스위치입니다. “설정 안 함” 이라는 중간 상태가 있는 설정을 위해 선택적으로 삼중 상태로 만들 수 있습니다.
{ "type": "checkbox", "name": "draw_overlays", "label": "Draw Overlays", "value": true }
인자:
label (문자열) – 상자 옆에 표시되는 텍스트입니다. 일반 텍스트만 가능합니다(레이블에 리치 텍스트를 받는 다른 컨트롤과 다름).
tristate (불리언, 기본값
false) – 부분적으로 체크된 세 번째 상태를 허용합니다.value – 초기 상태입니다. 이중 상태: 불리언. 삼중 상태:
0(off),1(부분), 또는2(on).
저장: 이중 상태 상자는 불리언, 삼중 상태 상자는 정수 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 하나당 하나씩입니다. values 가 있으면 메뉴는
options[i]를 표시하지만values[i]를 저장합니다 – 그래서 사용자는 “QVGA” 를 보지만 파일은"qvga"를 저장합니다. 항목은 임의의 JSON 유형일 수 있습니다. values 가 없으면 컨트롤은 대신 선택된 항목의 인덱스 를 저장합니다.value – 초기 선택입니다. values 가 있으면 values 중 하나와 같은 항목이고, values 가 없으면 선택할 항목의 인덱스입니다(기본값
0).
저장: values 가 주어지면 일치하는 values 항목(임의 유형)을, 그렇지 않으면 선택된 인덱스(정수)를 저장합니다.
13.1.13.4.2.3. radio#
라디오 버튼 묶음입니다 – combobox 처럼 한 번에 하나의 선택지가 보이지만 전부 펼쳐서 배치됩니다.
{
"type": "radio",
"name": "mode",
"label": "Mode",
"options": ["Idle", "Track", "Record"],
"values": ["idle", "track", "record"],
"value": "idle",
"orientation": "horizontal"
}
인자:
options (문자열 배열) – 항목당 버튼 하나입니다.
values (배열) – 저장할 선택적 값들로, combobox 와 완전히 동일하게 option 하나당 하나씩입니다. 이것이 없으면 컨트롤은 선택된 인덱스 를 저장합니다.
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) – 자릿수를 천 단위 구분 기호로 묶습니다.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) – 천 단위 구분 기호입니다.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#
이름, 비밀번호, 주소 등을 위한 한 줄 텍스트 필드입니다.
{
"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 로 나열하고, 수정되거나 지워질 때까지 저장을 거부합니다. 한 필드에는 둘 중 최대 하나만 사용하세요.
13.1.13.4.2.7.1. 입력 마스크#
mask 는 필드를 문자 단위로 고정합니다: 구분 기호는 사용자를 위해 미리 그려지고, 사용자는 빈칸만 채웁니다. 각 마스크 문자는 하나의 입력 위치를 나타냅니다:
9– 필수 숫자;0– 선택 숫자.A/a– 필수 / 선택 문자(letter).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-]+" 는 단순히 “하나를 포함한다” 가 아니라 처음부터 끝까지 오직 문자, 숫자, 대시만을 의미합니다.
검사는 키를 누를 때마다 실행됩니다. 텍스트가 여전히 완전한 일치로 자라날 수 있는 한 문자는 받아들여지고, 그럴 수 없게 되는 순간 거부되므로, 사용자는 결코 입력으로 유효하지 않은 상태에 도달할 수 없습니다. 필드는 표현식 전체가 일치할 때만 유효한 것으로 간주되며 – 그때 Save 가 허용됩니다 – 그에 이르는 도중의 부분 입력은 그대로 유지되지만 완성될 때까지 Save 를 막습니다.
패턴을 만들고 시험하려면, regex101.com 이 입력하는 대로 각 부분을 설명해 줍니다 – 편집기가 사용하는 구문인 PCRE2 로 flavor 를 설정하세요.