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, .csischSchDocument (0)
심볼.imepd.epdEpdDocument (1)
심볼 라이브러리.imslib.slibSlibDocument (2)
풋프린트.imfp.fpFpDocument (3)
PCB.impcb.pcbPcbDocument (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