13.1.13.4.2. 값 컨트롤#

이들은 설정을 담는 컨트롤입니다. 각각 value 를 지니며, Save 는 편집된 value 를 컨트롤에 다시 기록합니다. 아래 표는 컨트롤과 그것이 저장하는 JSON 유형을 빠르게 대응시킨 것이며, 이어지는 절에서 모든 키를 문서화합니다.

컨트롤

저장

checkbox

불리언, 또는 정수 0/1/2

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) – 텍스트를 점으로 숨기고 이를 드러내는 눈 모양 버튼을 추가합니다.

저장: 문자열 을 저장합니다.

maskregex 는 둘 다 필드가 받아들이는 내용을 제한하지만 서로 반대 관점에서 그렇게 합니다 – 마스크는 텍스트의 배치 를 고정하고, 정규식은 그 내용 을 제약합니다. 둘 중 하나라도 가진 필드는 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 를 설정하세요.