Workspace - 문서 및 워크스페이스 관리
워크스페이스는 ImEDA 메인 윈도우의 핵심 관리자입니다. DLL 모듈 로딩, 문서 생명주기, 위젯 도킹, 탭바 등 전체 레이아웃과 상태를 관리합니다.
c_workspace - 메인 워크스페이스
워크스페이스 레이아웃
+-------------------------------------------------------------+
| wxRibbonBar (ribbon_dll) |
+-----------+---------------------------------+---------------+
| Left | Document Area | Right |
| Panel | +---------------------------+ | Panel |
| Widgets | | c_page_tab_bar | | Widgets |
| | +---------------------------+ | |
| -Project | | c_cadframe_document | | -Inspector |
| -FileMgr | | (active document view) | | -Navigator |
+-----------+---------------------------------+---------------+
| Bottom Panel (Console, Messages) |
+-------------------------------------------------------------+
DLL 모듈 로딩
시작 시 모든 DLL을 순차 로딩. common_dll이 가장 먼저.
위젯 관리
도킹 가능한 위젯들의 등록, 배치, 가시성 상태 관리.
폰트 관리
loadFontSize()로 appconf.json에서 fontSize/fontScale 로드.
이벤트 디스패치
imengine 이벤트를 onEngineEvent()로 수신.
c_document_manager - 문서 생명주기
열린 문서들의 생성, 열기, 저장, 닫기 등 전체 생명주기를 관리합니다.
문서 생명주기
Open/New --> c_document_factory --> c_cadframe_document --> imengine
(확장자 판별) (프레임 생성) (데이터 로딩)
| 상태 | 설명 | 트리거 |
|---|---|---|
| Clean | 저장된 상태 | 파일 저장 완료 |
| Modified | 변경사항 있음 (*) | EVT_SET_MODIFIED |
| New | 새 문서 | 새 문서 생성 |
| ReadOnly | 읽기 전용 | 레거시 파일 |
c_document_factory - 확장자 기반 문서 생성
| 구분 | ImEDA | 레거시 | ContentType |
|---|---|---|---|
| 회로도 | .imsch | .sch, .csisch | SchDocument (0) |
| 심볼 | .imepd | .epd | EpdDocument (1) |
| 심볼 라이브러리 | .imslib | .slib | SlibDocument (2) |
| 풋프린트 | .imfp | .fp | FpDocument (3) |
| PCB | .impcb | .pcb | PcbDocument (4) |
| 프로젝트 | .imprj | - | - |
| 스니펫 | .imsnip | .csipet | - |
확장자 정의:
imapp/src/common_dll/document_types.h. 레거시는 읽기 전용.c_page_tab_bar - 문서 탭바
탭 표시
파일명, 수정 상태(*), 문서 아이콘.
컨텍스트 메뉴
닫기, 경로 복사, 탐색기에서 열기.
드래그 & 드롭
탭 순서 변경, 외부 파일 드롭.
c_docking_manager - 위젯 도킹
| 영역 | 위치 | 기본 위젯 |
|---|---|---|
| Left | 좌측 | Project, FileMgr, LibMgr |
| Right | 우측 | Inspector, Navigator |
| Bottom | 하단 | Console, Search, Messages |