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">
+
-
-
diff --git a/src/SheetMe.Designer/ViewModels/MainViewModel.cs b/src/SheetMe.Designer/ViewModels/MainViewModel.cs
index faf7696..744b31a 100644
--- a/src/SheetMe.Designer/ViewModels/MainViewModel.cs
+++ b/src/SheetMe.Designer/ViewModels/MainViewModel.cs
@@ -206,7 +206,6 @@ internal sealed class MainViewModel : ViewModelBase
public MainViewModel()
{
LoadedCommand = new Command(async (sender, e) => await OnLoadedAsync());
- NewFileCommand = new Command((sender, e) => OnNewFile());
OpenFileCommand = new Command((sender, e) => OnOpenFile());
// Ctrl+S 가 이 커맨드에 걸려 있다. 문서 출처로 갈라야 한다 —
// DB 에서 연 서식에서 Ctrl+S 를 누르면 OS 저장 대화상자가 뜨고 디스크에 XML 이 쓰였다.
@@ -258,9 +257,6 @@ internal sealed class MainViewModel : ViewModelBase
/// 창 로드
public ICustomCommand? LoadedCommand { get; set; }
- /// 새 서식
- public ICustomCommand? NewFileCommand { get; set; }
-
/// 서식 XML 열기
public ICustomCommand? OpenFileCommand { get; set; }
@@ -497,8 +493,7 @@ internal sealed class MainViewModel : ViewModelBase
{
await LoadSheetListAsync();
- // 기동 인자로 서식을 지정했으면 빈 새 문서를 만들지 않는다 — 레거시도 해당 서식만 연다.
- // 열기에 실패하면(디자인 없음/권한 거부/코드 오타) 빈 문서로 폴백해 앱이 빈 껍데기가 되지 않게 한다.
+ // 기동 인자로 서식을 지정했으면 그것만 연다 — 레거시도 그렇다.
if (PendingSheetCode is { Length: > 0 } shtCod)
{
PendingSheetCode = null;
@@ -509,22 +504,22 @@ internal sealed class MainViewModel : ViewModelBase
}
}
- OnNewFile();
- SelectedLeftTabIndex = 0; // 시작 화면은 서식 목록 탭(초기 빈 문서로 레이어 탭 전환되는 것 되돌림)
+ // 아무것도 열지 않은 상태로 둔다. 전에는 빈 새 문서를 만들어 두었는데,
+ // 그건 저장할 수 없는 문서다 — 서식 코드가 없으니 DB 저장이 막히고,
+ // 사용자는 한참 그려 넣은 뒤에야 그 사실을 알게 된다.
+ // 서식은 반드시 목록에서 골라 연다(그래야 코드·권한·기존 디자인이 함께 온다).
+ SelectedLeftTabIndex = 0;
+ StatusText = "서식 목록에서 서식을 골라 여세요.";
}
- private void OnNewFile()
- {
- try
- {
- AttachDocument(new DesignerViewModel(dataBusiness.CreateNew()));
- StatusText = "새 서식 (720×856)";
- }
- catch (Exception ex)
- {
- DialogService.ShowError("새 서식 만들기", ex);
- }
- }
+ ///
+ /// 빈 문서를 붙인다 — 진단 전용이다(--dialog-shots 가 화면을 찍으려면 문서가 필요하다).
+ ///
+ /// UI 에는 '새 서식'이 없다. 코드 없는 문서는 DB 에 저장할 수 없고,
+ /// 그린 뒤에 그것을 알게 되는 것이 이 앱에서 가장 비싼 실수였다.
+ ///
+ internal void AttachBlankForDiagnostics()
+ => AttachDocument(new DesignerViewModel(dataBusiness.CreateNew()));
private void OnOpenFile()
{
diff --git a/src/SheetMe.Designer/Views/MainView.xaml b/src/SheetMe.Designer/Views/MainView.xaml
index 8c8da3b..935e86f 100644
--- a/src/SheetMe.Designer/Views/MainView.xaml
+++ b/src/SheetMe.Designer/Views/MainView.xaml
@@ -25,7 +25,6 @@
처리하며, 여기 올리면 인스펙터·검색 상자 등 TextBox 의 표준 편집 키와 충돌한다.
-->
-
@@ -164,7 +163,6 @@
edit-smoke 직렬화 왕복)이 그 경로를 쓴다. UI 진입점만 없앤 것이다.
-->