LVRS Storyboard Frame

components/control/CodeEditor.svx

Path: components/control/CodeEditor.svx

Last modified:

CodeEditor

위치: qml/components/control/input/CodeEditor.qml

CodeEditor는 코드 입력을 위해 특화된 스니펫 지향 편집기입니다 ( PlainText + NoWrap ).

목적

  • 코드 입력을 단축값 기본값으로 결정적으로 유지하십시오.
  • 선택적 스니펫 헤더 메타데이터를 제공하십시오.
  • 대용량 콘텐츠에서도 안정적인 부품 높이를 유지하십시오.

API

핵심 편집:

  • text, placeholderText, readOnly
  • cursorPosition, selectionStart, selectionEnd
  • selectByMouse, persistentSelection, overwriteMode

스니펫 헤더:

  • snippetTitle
  • snippetLanguage
  • showSnippetHeader

레이아웃:

  • fieldMinHeight, editorHeight, resolvedEditorHeight
  • headerHeight, headerSpacing, topInset
  • showScrollBar, autoFocusOnPress

신호/방법:

  • textEdited(text)
  • submitted(text)
  • forceEditorFocus(), insertText(value), clear(), undo(), redo(), submit()

사용법

import LVRS 1.0 as LV

LV.CodeEditor {
    snippetTitle: "main.cpp"
    snippetLanguage: "C++"
    text: "int main() { return 0; }"
}

동작 원리

  • 계약에 따라 TextEdit.NoWrap와 일반 텍스트 형식을 사용합니다.
  • Monospace 글꼴 기본값은 플랫폼 인식입니다 (Menlo on macOS, 그 외에는 Monospace).
  • 임베디드 InputMethodGuard 및 WheelScrollGuard는 텍스트 무결성과 중첩 스크롤 안전성을 제공합니다.

고급 예제: 읽기 전용 스니펫 보기

import LVRS 1.0 as LV

LV.CodeEditor {
    snippetTitle: "Build Command"
    snippetLanguage: "bash"
    readOnly: true
    text: "cmake -S . -B build && cmake --build build"
}

문제 해결

수평 스크롤이 일관되지 않은 것처럼 느껴진다면, 부모 스크롤 컨테이너가 WheelScrollGuard에 의해 보호되는지 확인하십시오.

레시피: 검증이 포함된 제어된 제출

import LVRS 1.0 as LV

LV.CodeEditor {
    id: editor
    snippetTitle: "policy.json"

    onSubmitted: function(text) {
        try {
            JSON.parse(text)
            savePolicy(text)
        } catch (e) {
            console.warn("invalid json")
        }
    }
}

운영 팁

감사성을 위해, CodeEditor 제출을 주변 뷰 모델의 명시적 버전 메타데이터와 결합하십시오.