diff --git a/Progrart/Pages/ProgrartEditorPage.axaml b/Progrart/Pages/ProgrartEditorPage.axaml
index fb60a54..4eef6a7 100644
--- a/Progrart/Pages/ProgrartEditorPage.axaml
+++ b/Progrart/Pages/ProgrartEditorPage.axaml
@@ -18,11 +18,19 @@
+
+
+
+
+
-
+
-
+
+
+
+
@@ -51,20 +59,20 @@
-
+
-
+
-
+
-
+
-
+
diff --git a/Progrart/Pages/ProgrartEditorPage.axaml.cs b/Progrart/Pages/ProgrartEditorPage.axaml.cs
index 3a31758..b7a2e53 100644
--- a/Progrart/Pages/ProgrartEditorPage.axaml.cs
+++ b/Progrart/Pages/ProgrartEditorPage.axaml.cs
@@ -23,10 +23,13 @@ public partial class ProgrartEditorPage : UserControl, ITabPage, IEditorPage
TabButton? btn = null;
Bitmap? image;
string lastSave = "";
+ LayoutDirection direction = LayoutDirection.Vertical;
+ LayoutMode mode = LayoutMode.Splitted;
public ProgrartEditorPage()
{
InitializeComponent();
CodeEditor.onSaveCmd = Save;
+ ApplyLayout();
}
public void BindButton(TabButton button)
@@ -194,4 +197,135 @@ public partial class ProgrartEditorPage : UserControl, ITabPage, IEditorPage
{
}
+
+ private void LayoutButtonV_IsCheckedChanged(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ if (LayoutButtonV.IsChecked == true)
+ {
+
+ direction = LayoutDirection.Vertical;
+ ApplyLayout();
+ }
+ }
+
+ private void LayoutButtonH_IsCheckedChanged(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ if (LayoutButtonH.IsChecked == true)
+ {
+
+ direction = LayoutDirection.Horizontal;
+ ApplyLayout();
+ }
+ }
+
+ private void LayoutSplited_IsCheckedChanged(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ if (LayoutSplited?.IsChecked == true)
+ {
+ mode = LayoutMode.Splitted;
+ ApplyLayout();
+ }
+ }
+
+ private void LayoutCodeOnly_IsCheckedChanged(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ if (LayoutCodeOnly.IsChecked == true)
+ {
+ mode = LayoutMode.Code;
+ ApplyLayout();
+ }
+ }
+
+ private void LayoutImageOnly_IsCheckedChanged(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ if (LayoutImageOnly.IsChecked == true)
+ {
+ mode = LayoutMode.Image;
+ ApplyLayout();
+ }
+ }
+ public void ApplyLayout()
+ {
+ switch (mode)
+ {
+ case LayoutMode.Splitted:
+ CodeEditor.IsVisible = true;
+ PreviewHolder.IsVisible = true;
+ if (direction == LayoutDirection.Vertical)
+ {
+ Grid.SetColumn(Splitter, 1);
+ Grid.SetRow(Splitter, 0);
+ Grid.SetRowSpan(Splitter, 3);
+ Grid.SetColumnSpan(Splitter, 1);
+
+ Grid.SetRow(CodeEditor, 0);
+ Grid.SetColumn(CodeEditor, 0);
+ Grid.SetRowSpan(CodeEditor, 3);
+ Grid.SetColumnSpan(CodeEditor, 1);
+
+ Grid.SetColumn(PreviewHolder, 2);
+ Grid.SetRow(PreviewHolder, 0);
+ Grid.SetRowSpan(PreviewHolder, 3);
+ Grid.SetColumnSpan(PreviewHolder, 1);
+ VerticalSplitterVisualElement.IsVisible = true;
+ HorizontalSplitterVisualElement.IsVisible = false;
+ }
+ else
+ {
+ Grid.SetColumn(Splitter, 0);
+ Grid.SetRow(Splitter, 1);
+ Grid.SetRowSpan(Splitter, 1);
+ Grid.SetColumnSpan(Splitter, 3);
+
+ Grid.SetRow(CodeEditor, 0);
+ Grid.SetColumn(CodeEditor, 0);
+ Grid.SetRowSpan(CodeEditor, 1);
+ Grid.SetColumnSpan(CodeEditor, 3);
+
+ Grid.SetRow(PreviewHolder, 2);
+ Grid.SetColumn(PreviewHolder, 0);
+ Grid.SetRowSpan(PreviewHolder, 1);
+ Grid.SetColumnSpan(PreviewHolder, 3);
+ VerticalSplitterVisualElement.IsVisible = false;
+ HorizontalSplitterVisualElement.IsVisible = true;
+ }
+ break;
+ case LayoutMode.Code:
+ CodeEditor.IsVisible = true;
+ PreviewHolder.IsVisible = false;
+ Grid.SetRow(CodeEditor, 0);
+ Grid.SetRow(PreviewHolder, 0);
+ Grid.SetColumn(CodeEditor, 0);
+ Grid.SetColumn(PreviewHolder, 0);
+ Grid.SetRowSpan(CodeEditor, 3);
+ Grid.SetRowSpan(PreviewHolder, 3);
+ Grid.SetColumnSpan(CodeEditor, 3);
+ Grid.SetColumnSpan(PreviewHolder, 3);
+ VerticalSplitterVisualElement.IsVisible = false;
+ HorizontalSplitterVisualElement.IsVisible = false;
+ break;
+ case LayoutMode.Image:
+ CodeEditor.IsVisible = false;
+ PreviewHolder.IsVisible = true;
+ Grid.SetRow(CodeEditor, 0);
+ Grid.SetRow(PreviewHolder, 0);
+ Grid.SetColumn(CodeEditor, 0);
+ Grid.SetColumn(PreviewHolder, 0);
+ Grid.SetRowSpan(CodeEditor, 3);
+ Grid.SetRowSpan(PreviewHolder, 3);
+ Grid.SetColumnSpan(CodeEditor, 3);
+ Grid.SetColumnSpan(PreviewHolder, 3);
+ VerticalSplitterVisualElement.IsVisible = false;
+ HorizontalSplitterVisualElement.IsVisible = false;
+ break;
+ }
+ }
+ enum LayoutDirection
+ {
+ Vertical, Horizontal
+ }
+ enum LayoutMode
+ {
+ Splitted, Code, Image
+ }
}
\ No newline at end of file