UI/UX 전면 재설계 — 단일 창, 백엔드 로그 #4
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
사용자 피드백 #4: 느리고, 조작이 어렵게 느껴지므로, UI/UX를 전면 수정할 필요가 있음. 기존 구조에 로그는 백엔드로 빼고, 프로세스를 클릭할 때마다 새로운 창이 뜨는 것이 아니라 한 화면에서 바로 구동되게끔 적용.
현재 상태
UI_REDESIGN_PLAN.md(commite9cc6bf, 374줄)핵심 변경 계획
main_frame.row=1의CTkTextbox(180회 호출).harness_log_path()표준 백엔드 파일로 이동.vtkmodules.tk.vtkTkRenderWidget또는 PyQt +pyvistaqt.QtInteractor도입. 현재pv.Plotter().show()6개 호출지 모두 통합.의존성
pyproject.tomlextras 추가).pyvistaqt>=0.11.1차 라운드 진행 (commit
5a44c90)사용자 요청: 색감/텍스쳐 위주 — Mastercard 디자인 시스템 적용 + 인트로 비디오 제거.
✅ 완료 (이번 라운드)
Mastercard 팔레트 적용 (50+ hex literal 갱신):
#EB001BMastercard Red — 주 CTA, 에러 status (orange CTA + Bootstrap red 통합).#F79E1BMastercard Yellow — 경고 status (Bootstrap yellow 대체).#22A06BBrand-friendly Green — READY/완료 인디케이터.#1A1A1ANear-black — 다크 모드 페이지/카드 bg, 다크 버튼.#A30013/#1B8454/#000000— hover/active 변종.scanvas_maker.pyline ~33-47 에 팔레트 의도 주석 블록.npx getdesign@latest add mastercard시도는 외부 npm 실행 차단으로 건너뛰고 공개 brand 가이드라인 적용.인트로 비디오 제거:
splash.py삭제 (178 LOC).Design/logo_intro.mp4삭제 (3.7 MB).🟡 잔여 (다음 multi-session 라운드)
CTkToplevel(T1~T12) → 인스펙터 패널 통합.main_frame.row=1CTkTextbox→harness_log_path()백엔드 파일.pv.Plotter().show()→vtkmodules.tk.vtkTkRenderWidget또는pyvistaqt.QtInteractor.messagebox63회 → 인라인 토스트/배너 (위험 4건 askyesno 만 모달 유지).구조 overhaul 은 단일 세션 범위 초과 — 본 이슈 open 유지. UI_REDESIGN_PLAN.md §3 가 다음 라운드 청사진.
UI 2차 라운드 진행 (commit
fc96300)✅ 추가 (이번 라운드)
진행률 인디케이터 (피드백 #4 "느리게 느껴짐" 직접 대응):
self.progress_bar = ctk.CTkProgressBar(self.status_bar, mode="indeterminate", width=180, height=10, progress_color="#FF5F00")— MC overlap orange.start_progress(label)/stop_progress(final_label)메서드로 토글.self.after(0, ...)로 메인 thread 안전.로그 패널 비중 축소:
self.textboxheight120→80. 캔버스 영역 확보.%LOCALAPPDATA%\\S-CANVAS\\scanvas_harness.log+logs/scanvas.log) 명시 — 인라인 로그가 점차 보조 역할로 이전.🟡 잔여 (#4 next round, multi-session)
start_progress/stop_progresswire: capture pipeline / 위성 타일 / TIN densify 호출지에 적용.CTkToplevel통합: T1~T12 → Inspector 패널 (340px) 컬럼.pv.Plotter().show()→vtkmodules.tk.vtkTkRenderWidget또는pyvistaqt.QtInteractor.messagebox63회 → 인라인 토스트.구조 overhaul 은 단일 세션 범위 초과. open 유지.
UI 3차 라운드 — 사용자 명시 요청 핵심 적용 (commit
1fcbf14)사용자 요청: "기존 구조에 지도 아래에 있는 로그는 백엔드로 빼고, 프로세스를 클릭할 때마다 새로운 창이 뜨는 것이 아니라 한 화면에서 바로 구동되게끔 적용".
✅ 1. 인라인 로그 패널 완전 제거
self.textboxCTkTextbox 위젯 제거 (이전 라운드 120→80 축소 → 본 라운드 완전 삭제).main_framerow 0 weight 3→1 (지도 전체 차지), row 1 (로그) 제거, status_bar row 2→1.self.log()동작 변경: 백엔드 logger 만 (logs/scanvas.logRotatingFileHandler 5MB×5). status_bar 의status_text가 짧은 미리보기 (≤80자) 즉시 표시 — 사용자 진행 상황은 보이되 인라인 패널은 사라짐.✅ 2.
harness/inline_panel.py신규 (231 LOC)InlinePanel(ctk.CTkFrame)—ctk.CTkToplevel호환 drop-in 대체. main_frame 안 floating frame 으로 렌더.title/geometry/transient/grab_set/protocol(WM_DELETE_WINDOW)/wait_window/destroy+iconbitmap/wm_*no-op.tk.Misc.wait_window(self)가 Frame 에서도 동작 (widget destruction 대기 메커니즘) —wait_window호출 5곳 (T1/T6/T7/T8/T10) 그대로 유지._z_counter+lift()), main_frame 95% cap, MC Red 타이틀 바 (#EB001B+ ✕ 버튼).✅ 3. 12
CTkToplevel→InlinePanel일괄 치환12 popup 모두 별도 OS 창 없이 main 창 안에서 동작 — 사용자가 ALT-TAB 으로 창 사이 오갈 필요 없음.
검증
python -m py_compile+ AST parse OK (4 modules).ruff check scanvas_maker.py harness/: All checks passed (0 errors).import scanvas_makersmoke test 성공 — InlinePanel 이 진짜 harness 클래스로 로드.self.textboxrefs 0,CTkToplevelrefs 3 (모두 import fallback/주석),InlinePanelrefs 15.🟡 잔여 (open 유지)
pv.Plotter().show()→pyvistaqt.QtInteractor) — PyQt 의존성 추가 필요.messagebox63회 → 인라인 토스트 (위험 4건 askyesno 만 모달).사용자 핵심 요청 2건 ("로그 백엔드로" + "한 화면에서 바로 구동") 모두 코드 반영 + git 기록 완료. 본 이슈는 잔여 항목 때문에 open 유지.