Skip to content
Toptimus-47Public

About

Pil-GI Markup Language

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

PGML Editor

PGML (PilGi Markup Language) 명세를 기반으로 작성된 문서를 실시간으로 편집하고 렌더링하는 전용 데스크톱 에디터입니다. 웹뷰(WebView)에 의존하지 않고 Rust와 Slint 네이티브 UI를 활용하여 가볍고 빠르며, 하이브리드 WYSIWYG 편집 경험을 제공합니다.


🛠 Tech Stack

  • Core/Backend: Rust (Edition 2024)
  • UI Framework: Slint (v1.17.1)
  • PDF Generation: printpdf (v0.10.0)
  • Asynchronous Runtime: tokio
  • Testing: mockall, rstest

🏗 Architecture & Core Features

1. 하이브리드 WYSIWYG (Line-based Hybrid WYSIWYG)

  • 포커스 제어: 편집 중인 활성 라인에만 텍스트 입력창(TextInput)을 띄우고, 비활성 라인은 파싱된 서식이 적용된 Text 렌더러로 노출합니다.
  • 키보드 탐색 가로채기: Slint의 key-pressed 이벤트 가로채기를 통해 위/아래 방향키 이동, 엔터 키에 의한 라인 분할(Split), 백스페이스에 의한 라인 병합(Merge) 등 원활한 문서 탐색 및 편집을 지원합니다.

2. 순수 Native UI 기반 렌더링

  • 웹 기반(Tauri 등) 렌더러로 전환하지 않고 Slint 자체 컴포넌트(Native UI)만을 사용하여 리소스 점유율을 최소화합니다.
  • HTML 태그 충돌 등의 파싱 제약을 극복하기 위해 자체적인 4원화 분기 처리 등 커스텀 렌더러 아키텍처를 운용합니다.

3. 선언적 PDF 내보내기

  • printpdf v0.10.0의 오퍼레이션(Op) 기반 선언적 문서 생성 API를 도입하여, 다중 페이지 처리와 외부 한글 TrueType 폰트 연동이 완벽하게 지원되는 PDF 출력 파이프라인을 구축했습니다.

🎨 UI / UX 디자인 테마

Biophilic Minimalism (자연친화적 미니멀리즘) 가이드를 따릅니다.

  • 색상 팔레트: Pastel Sky Blue, Calm Green 등의 편안한 색감을 주로 사용합니다.
  • 그림자 (Elevation): 어두운 회색조 섀도를 배제하고 rgba(163, 204, 163, 0.15) 같은 파스텔 톤 섀도를 사용하여 투명하고 가벼운 깊이감을 줍니다.
  • 여백 (Spacing): space-md (16px), space-lg (24px), space-xl (32px) 단계로 넉넉한 공간감을 확보하여 시각적 피로도를 낮춥니다.

📚 프로젝트 문서 (Documents)

프로젝트에 대한 세부 명세 및 SDLC(소프트웨어 개발 생명주기)에 따른 모든 문서는 Documents/ 디렉토리 하위에서 관리됩니다.

  • SDLC 1단계: 기획 및 백로그 (01_planning.md)
  • SDLC 2단계: 환경 및 툴체인 (02_environment.md)
  • SDLC 3단계: 아키텍처 및 디자인 (03_architecture.md)
  • SDLC 4단계: 구현 및 실행 (04_execution.md)
  • SDLC 5단계: 품질 보증 및 테스트 (05_qa.md)
  • SDLC 6단계: 빌드 및 배포 (06_deployment.md)

참고: PGML 마크업 언어 자체에 대한 스펙(문법) 문서는 Documents/PGML_Specification.md를 확인하세요.

About

Pil-GI Markup Language

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages