From 3ef1937902d7050d802a023338546bfa707dcbe8 Mon Sep 17 00:00:00 2001 From: Msystech Date: Wed, 19 Aug 2026 09:27:58 +0900 Subject: [PATCH] =?UTF-8?q?'=EC=83=88=20=EC=84=9C=EC=8B=9D'=EC=9D=84=20?= =?UTF-8?q?=EC=97=86=EC=95=A4=EB=8B=A4=20=E2=80=94=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=97=86=EB=8A=94=20=EB=AC=B8=EC=84=9C=EB=8A=94=20=EA=B7=B8?= =?UTF-8?q?=EB=A6=B0=20=EB=92=A4=EC=97=90=20=EC=A0=80=EC=9E=A5=EC=9D=B4=20?= =?UTF-8?q?=EB=A7=89=ED=9E=8C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 서식은 항상 목록에서 골라 연다는 결정. ## 없앤 진입점 넷 - 파일 메뉴 '새 서식(N)' - Ctrl+N - 탭 흐름 옆 '+' 버튼(DesignerTheme.xaml) - 빈 화면의 '새 서식' 버튼 시작 시 빈 문서를 만들던 것도 없앴다. 그게 실제 이유다 — 코드 없는 문서는 DB 에 저장할 수 없고(FormId 가 "NewSheet"), 사용자는 한참 그려 넣은 뒤에야 그 사실을 알게 된다. 만들 수 있게 두는 것 자체가 함정이었다. 이제 기동 인자에 서식 코드가 없으면 아무것도 열지 않고 서식 목록 탭을 띄운다. 빈 화면 안내도 '서식 목록에서 열기' 하나로 줄였다(F4 · Ctrl+O 병기). CreateNew 와 파일 저장·열기 코드는 남긴다 — 접속 없이 도는 진단이 그 경로를 쓴다. UI 진입점만 없앤 것이고, 이는 'DB에서 열기' 창을 지울 때와 같은 방식이다. NewFileCommand 를 쓰던 --dialog-shots 는 AttachBlankForDiagnostics 로 바꿨다 (이름에 '진단 전용'을 박아 UI 에서 다시 부르지 못하게 했다). ## 없애자마자 드러난 것 문서가 아예 없는 상태가 기본이 되니 속성 패널에 정렬 바와 간격값이 그대로 남아 있었다. CurrentDesigner.Inspector 가 null 이면 안쪽 Visibility 바인딩이 전부 실패하고, WPF 는 실패한 바인딩을 기본값(Visible)으로 떨군다 — Collapsed 가 아니다. 선택이 없다는 안내와 정렬 바가 동시에 떠 있었다. 열린 서식이 없으면 인스펙터를 접는다. 그리고 이 회귀는 값으로 잡히지 않으므로 시각 게이트에 대조군을 넣었다 — 00-main-default(문서 있음 → 인스펙터 보임) 대 00d-main-empty(문서 없음 → 접힘). 대조군 없이 빈 화면만 찍으면 "원래 그랬던 것"과 구분되지 않는다. ## 게이트 - dotnet test 323/323 - --edit-smoke 실패 0 - --dialog-shots FAIL 0 (00d-main-empty 추가) - --db-render P062 md5 8d683835f5d81e7bb41c79071d6bf954 불변 Co-Authored-By: Claude Opus 5 --- .../Diagnostics/DialogShots.cs | 13 +++++-- .../Themes/DesignerTheme.xaml | 9 ++--- .../ViewModels/MainViewModel.cs | 35 ++++++++----------- src/SheetMe.Designer/Views/MainView.xaml | 17 ++++++--- 4 files changed, 43 insertions(+), 31 deletions(-) diff --git a/src/SheetMe.Designer/Diagnostics/DialogShots.cs b/src/SheetMe.Designer/Diagnostics/DialogShots.cs index ccaf171..22f255c 100644 --- a/src/SheetMe.Designer/Diagnostics/DialogShots.cs +++ b/src/SheetMe.Designer/Diagnostics/DialogShots.cs @@ -130,6 +130,12 @@ public static class DialogShots // 'DB에서 열기' 대화상자를 지웠다. 그 자리를 좌측 서식 목록 샷이 대신한다 — // 안 그러면 서식명 잘림을 잡을 자리가 게이트에서 통째로 사라진다. ("01-sheet-list", () => NewMainShell(1440, 920, leftTab: 0, sheets: SampleSheets())), + // 문서 없는 시작 화면 — '새 서식'을 없앤 뒤로는 이것이 기본 상태다. + // 여기가 대조군이다: 00-main-default 는 문서가 있어 인스펙터가 보여야 하고, + // 이 샷은 없어서 접혀야 한다. 접히지 않으면 DataContext 가 null 인 채로 + // 안쪽 Visibility 바인딩이 전부 실패해 정렬 바·간격값이 남는다(WPF 는 실패를 Visible 로 떨군다). + ("00d-main-empty", () => NewMainShell(1440, 920, leftTab: 0, + sheets: SampleSheets(), withDocument: false)), ("02-sheet-history", () => new Views.SheetHistoryDialogView("S999", "표본 서식", SampleVersions())), ("03-query-editor", () => NewQueryEditor(designer, "SELECT ChtNum, PatNam FROM P_PatMst\nWHERE ChtNum = <>")), @@ -226,7 +232,7 @@ public static class DialogShots /// 빈 껍데기를 찍으면 잘림을 볼 수 없다. /// private static Window NewMainShell(double width, double height, int leftTab = 1, - List? sheets = null) + List? sheets = null, bool withDocument = true) { var window = new Views.MainView { @@ -240,7 +246,10 @@ public static class DialogShots { return window; } - shell.NewFileCommand?.Execute(null); + if (withDocument) + { + shell.AttachBlankForDiagnostics(); + } shell.SelectedLeftTabIndex = leftTab; // 진단 모드는 Loaded 커맨드를 안 돌리므로 목록이 비어 있다 — // 빈 목록을 찍으면 서식명 잘림을 볼 수 없다. 표본을 직접 넣는다. diff --git a/src/SheetMe.Designer/Themes/DesignerTheme.xaml b/src/SheetMe.Designer/Themes/DesignerTheme.xaml index cc6cb1a..386df64 100644 --- a/src/SheetMe.Designer/Themes/DesignerTheme.xaml +++ b/src/SheetMe.Designer/Themes/DesignerTheme.xaml @@ -647,11 +647,12 @@ BorderBrush="{DynamicResource B.Line}" BorderThickness="0,0,0,1" Padding="8,5,8,0"> + - -