Forge
csharpdeeb25a2
1using CascadeIDE.Services;
2
3namespace CascadeIDE.ViewModels;
4
5/// <summary>Персистенция геометрии окон-хостов пресета <c>presentation</c> (ADR 0017).</summary>
6public partial class MainWindowViewModel
7{
8 /// <summary>Сохранённая геометрия <see cref="Views.MfdHostWindow"/> в <c>settings.toml</c> (ADR 0017).</summary>
9 internal bool TryGetSavedMfdHostWindowBounds(
10 out PresentationHostWindowPlacement.PresentationHostWindowBounds bounds)
11 {
12 var x = _settings.MfdHostWindowPixelX;
13 var y = _settings.MfdHostWindowPixelY;
14 var ww = _settings.MfdHostWindowWidth;
15 var wh = _settings.MfdHostWindowHeight;
16 if (x is null || y is null || ww is null || wh is null)
17 {
18 bounds = default;
19 return false;
20 }
21
22 bounds =
23 new PresentationHostWindowPlacement.PresentationHostWindowBounds(x.Value, y.Value, ww.Value, wh.Value);
24 return true;
25 }
26
27 /// <summary>Записать геометрию окна-хоста Mfd и при необходимости сбросить на диск.</summary>
28 internal void PersistMfdHostWindowBounds(int pixelX, int pixelY, double width, double height)
29 {
30 _settings.MfdHostWindowPixelX = pixelX;
31 _settings.MfdHostWindowPixelY = pixelY;
32 _settings.MfdHostWindowWidth = width;
33 _settings.MfdHostWindowHeight = height;
34 SaveSettingsIfChanged();
35 }
36
37 /// <summary>Сохранённая геометрия <see cref="Views.PfdHostWindow"/> в <c>settings.toml</c> (ADR 0017).</summary>
38 internal bool TryGetSavedPfdHostWindowBounds(
39 out PresentationHostWindowPlacement.PresentationHostWindowBounds bounds)
40 {
41 var x = _settings.PfdHostWindowPixelX;
42 var y = _settings.PfdHostWindowPixelY;
43 var ww = _settings.PfdHostWindowWidth;
44 var wh = _settings.PfdHostWindowHeight;
45 if (x is null || y is null || ww is null || wh is null)
46 {
47 bounds = default;
48 return false;
49 }
50
51 bounds =
52 new PresentationHostWindowPlacement.PresentationHostWindowBounds(x.Value, y.Value, ww.Value, wh.Value);
53 return true;
54 }
55
56 /// <summary>Записать геометрию окна-хоста Pfd и при необходимости сбросить на диск.</summary>
57 internal void PersistPfdHostWindowBounds(int pixelX, int pixelY, double width, double height)
58 {
59 _settings.PfdHostWindowPixelX = pixelX;
60 _settings.PfdHostWindowPixelY = pixelY;
61 _settings.PfdHostWindowWidth = width;
62 _settings.PfdHostWindowHeight = height;
63 SaveSettingsIfChanged();
64 }
65
66 /// <summary>Сохранённая геометрия <see cref="Views.PmSplitHostWindow"/> в <c>settings.toml</c> (ADR 0017).</summary>
67 internal bool TryGetSavedPmSplitHostWindowBounds(
68 out PresentationHostWindowPlacement.PresentationHostWindowBounds bounds)
69 {
70 var x = _settings.PmSplitHostWindowPixelX;
71 var y = _settings.PmSplitHostWindowPixelY;
72 var ww = _settings.PmSplitHostWindowWidth;
73 var wh = _settings.PmSplitHostWindowHeight;
74 if (x is null || y is null || ww is null || wh is null)
75 {
76 bounds = default;
77 return false;
78 }
79
80 bounds =
81 new PresentationHostWindowPlacement.PresentationHostWindowBounds(x.Value, y.Value, ww.Value, wh.Value);
82 return true;
83 }
84
85 /// <summary>Записать геометрию окна сплита P+M и при необходимости сбросить на диск.</summary>
86 internal void PersistPmSplitHostWindowBounds(int pixelX, int pixelY, double width, double height)
87 {
88 _settings.PmSplitHostWindowPixelX = pixelX;
89 _settings.PmSplitHostWindowPixelY = pixelY;
90 _settings.PmSplitHostWindowWidth = width;
91 _settings.PmSplitHostWindowHeight = height;
92 SaveSettingsIfChanged();
93 }
94}
95
View only · write via MCP/CIDE