Files
HYUNJUNGLEE 1fcbf14ed8
All checks were successful
CI / Ruff + Test (Py3.11 + Py3.13) (3.11) (push) Successful in 22s
CI / Ruff + Test (Py3.11 + Py3.13) (3.13) (push) Successful in 22s
feat(ui): #4 핵심 — 인라인 로그 제거 + InlinePanel 12 popup 인라인화
사용자 명시 요청 (#4 잔여 핵심):
"기존 구조에 지도 아래에 있는 로그는 백엔드로 빼고, 프로세스를 클릭할 때마다
새로운 창이 뜨는 것이 아니라 한 화면에서 바로 구동되게끔 적용".

1. 인라인 로그 패널 완전 제거:
- self.textbox CTkTextbox 위젯 제거 (이전 라운드 80px 축소 → 본 라운드 완전 삭제).
- main_frame layout: row 0 weight 3→1 (지도 전체 차지), row 1 (로그) 제거,
  status_bar row 2→1.
- self.log() 동작 변경: textbox.insert 대신 백엔드 logger.info (logs/scanvas.log
  RotatingFileHandler 5MB×5). status_text 가 짧은 미리보기 (≤80자) 즉시 표시.
- 효과: 메인 캔버스 영역 ~25% 확대 + GUI 메인 thread 부담 감소.

2. harness/inline_panel.py 신규 (231 LOC):
- InlinePanel: ctk.CTkToplevel 호환 인라인 오버레이 (CTkFrame 상속).
- API 호환: title/geometry/transient/grab_set/protocol/wait_window/destroy +
  iconbitmap/wm_* no-op.
- 핵심 트릭: tk.Misc.wait_window(self) 가 Frame 에서도 동작 (widget destruction
  대기) — wait_window 호출 5곳 (T1/T6/T7/T8/T10) 그대로 유지 가능.
- 다중 패널 z-order (_z_counter + lift), main_frame 95% cap, MC Red 타이틀 바.

3. 12 ctk.CTkToplevel → InlinePanel 일괄 치환:
- T1 (DXF 레이어), T2 (구조물 빌드), T3 (빌드 진행), T6 (상세도면), T7 (치수),
  T8 (계획선 고도), T9 (TIN core), T10 (렌더 옵션), T11 (Blender 결과),
  T12 (AI 렌더 결과) — 10 main popups.
- T4 (렌더 sub-옵션), T5 (VLM 결과) — T3 자식 popups.
- 2 replace_all 패턴: ctk.CTkToplevel(self) → InlinePanel(self),
  ctk.CTkToplevel(win) → InlinePanel(win).
- 결과: 12 popups 모두 main 창 안 floating frame 으로 렌더, 별도 OS 창 안 뜸.
  사용자가 ALT-TAB 으로 창 사이 오갈 필요 없음.

검증:
- py_compile + AST OK (scanvas_maker, perf, crash_logger, inline_panel 4개).
- ruff check All checks passed (0 errors).
- import smoke test: scanvas_maker import 성공, InlinePanel 가 진짜 harness 클래스로 로드.
- self.textbox 잔존 refs: 0. CTkToplevel refs: 3 (모두 import fallback/주석).
  InlinePanel refs: 15 (12 호출지 + import).

잔여 (#4 next round, multi-session):
- InlinePanel 실 GUI 워크플로 검증 (사용자 도면 로드 후 T1~T12 한 번씩).
- VTK 임베딩 (pv.Plotter().show() 6곳 → pyvistaqt.QtInteractor).
- messagebox 63회 → 인라인 토스트.
- Inspector 패널 영구 컬럼 (3-column 레이아웃).
- 메인 thread 블로킹 작업 worker thread 분리.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 17:33:45 +09:00
..