mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-21 10:01:27 -07:00
add close confirmation message
This commit is contained in:
parent
ee377d9938
commit
f2f0ec7241
@ -15,6 +15,7 @@
|
||||
d:DataContext="{d:DesignInstance dmodels:BootstrapperEditorWindowViewModel,
|
||||
IsDesignTimeCreatable=True}"
|
||||
Background="{ui:ThemeResource ApplicationBackgroundBrush}"
|
||||
Closing="OnClosing"
|
||||
ExtendsContentIntoTitleBar="True"
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
@ -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"
|
||||
|
@ -9,6 +9,7 @@ using ICSharpCode.AvalonEdit.Highlighting;
|
||||
|
||||
using Bloxstrap.UI.Elements.Base;
|
||||
using Bloxstrap.UI.ViewModels.Editor;
|
||||
using System.Windows;
|
||||
|
||||
namespace Bloxstrap.UI.Elements.Editor
|
||||
{
|
||||
@ -130,7 +131,8 @@ namespace Bloxstrap.UI.Elements.Editor
|
||||
}
|
||||
}
|
||||
|
||||
CompletionWindow? _completionWindow = null;
|
||||
private BootstrapperEditorWindowViewModel _viewModel;
|
||||
private CompletionWindow? _completionWindow = null;
|
||||
|
||||
public BootstrapperEditorWindow(string name)
|
||||
{
|
||||
@ -141,17 +143,18 @@ namespace Bloxstrap.UI.Elements.Editor
|
||||
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();
|
||||
@ -180,13 +183,30 @@ namespace Bloxstrap.UI.Elements.Editor
|
||||
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)
|
||||
|
@ -26,6 +26,8 @@ namespace Bloxstrap.UI.ViewModels.Editor
|
||||
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";
|
||||
@ -61,6 +63,7 @@ namespace Bloxstrap.UI.ViewModels.Editor
|
||||
try
|
||||
{
|
||||
File.WriteAllText(path, Code);
|
||||
CodeChanged = false;
|
||||
ThemeSavedCallback.Invoke(true, "Your theme has been saved!");
|
||||
}
|
||||
catch (Exception ex)
|
||||
|
Loading…
Reference in New Issue
Block a user