Skip to content

Commit

Permalink
add close confirmation message
Browse files Browse the repository at this point in the history
  • Loading branch information
bluepilledgreat committed Jan 23, 2025
1 parent ee377d9 commit f2f0ec7
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 12 deletions.
4 changes: 2 additions & 2 deletions Bloxstrap/UI/Elements/Editor/BootstrapperEditorWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
d:DataContext="{d:DesignInstance dmodels:BootstrapperEditorWindowViewModel,
IsDesignTimeCreatable=True}"
Background="{ui:ThemeResource ApplicationBackgroundBrush}"
Closing="OnClosing"
ExtendsContentIntoTitleBar="True"
mc:Ignorable="d">
<Grid>
Expand All @@ -40,8 +41,7 @@
Margin="10,10,10,0"
ShowLineNumbers="True"
Style="{StaticResource NewTextEditor}"
SyntaxHighlighting="XML"
TextChanged="OnCodeChanged" />
SyntaxHighlighting="XML" />

<ui:Button
Grid.Row="2"
Expand Down
40 changes: 30 additions & 10 deletions Bloxstrap/UI/Elements/Editor/BootstrapperEditorWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

using Bloxstrap.UI.Elements.Base;
using Bloxstrap.UI.ViewModels.Editor;
using System.Windows;

namespace Bloxstrap.UI.Elements.Editor
{
Expand Down Expand Up @@ -130,7 +131,8 @@ private static void PopulateElementInfo()
}
}

CompletionWindow? _completionWindow = null;
private BootstrapperEditorWindowViewModel _viewModel;
private CompletionWindow? _completionWindow = null;

public BootstrapperEditorWindow(string name)
{
Expand All @@ -141,17 +143,18 @@ public BootstrapperEditorWindow(string name)
string themeContents = File.ReadAllText(Path.Combine(directory, "Theme.xml"));
themeContents = ToCRLF(themeContents); // make sure the theme is in CRLF. a function expects CRLF.

var viewModel = new BootstrapperEditorWindowViewModel();
viewModel.ThemeSavedCallback = ThemeSavedCallback;
viewModel.Directory = directory;
viewModel.Name = name;
viewModel.Title = $"Editing \"{name}\"";
viewModel.Code = themeContents;
_viewModel = new BootstrapperEditorWindowViewModel();
_viewModel.ThemeSavedCallback = ThemeSavedCallback;
_viewModel.Directory = directory;
_viewModel.Name = name;
_viewModel.Title = $"Editing \"{name}\"";
_viewModel.Code = themeContents;

DataContext = viewModel;
DataContext = _viewModel;
InitializeComponent();

UIXML.Text = viewModel.Code;
UIXML.Text = _viewModel.Code;
UIXML.TextChanged += OnCodeChanged;
UIXML.TextArea.TextEntered += OnTextAreaTextEntered;

LoadHighlightingTheme();
Expand Down Expand Up @@ -180,13 +183,30 @@ private static string ToCRLF(string text)
return text.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", "\r\n");
}

private void OnCodeChanged(object sender, EventArgs e)
private void OnCodeChanged(object? sender, EventArgs e)
{
BootstrapperEditorWindowViewModel viewModel = (BootstrapperEditorWindowViewModel)DataContext;
viewModel.Code = UIXML.Text;
viewModel.CodeChanged = true;
viewModel.OnPropertyChanged(nameof(viewModel.Code));
}

private void OnClosing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (!_viewModel.CodeChanged)
return;

var result = Frontend.ShowMessageBox($"Save changes to {_viewModel.Name}?", MessageBoxImage.Information, MessageBoxButton.YesNoCancel);
if (result == MessageBoxResult.Cancel)
{
e.Cancel = true;
}
else if (result == MessageBoxResult.Yes)
{
_viewModel.SaveCommand.Execute(null);
}
}

private void OnTextAreaTextEntered(object sender, TextCompositionEventArgs e)
{
switch (e.Text)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ public class BootstrapperEditorWindowViewModel : NotifyPropertyChangedViewModel
public string Title { get; set; } = "Editing \"Custom Theme\"";
public string Code { get; set; } = "";

public bool CodeChanged { get; set; } = false;

private void Preview()
{
const string LOG_IDENT = "BootstrapperEditorWindowViewModel::Preview";
Expand Down Expand Up @@ -61,6 +63,7 @@ private void Save()
try
{
File.WriteAllText(path, Code);
CodeChanged = false;
ThemeSavedCallback.Invoke(true, "Your theme has been saved!");
}
catch (Exception ex)
Expand Down

0 comments on commit f2f0ec7

Please sign in to comment.