94 lines
2.5 KiB
C#
94 lines
2.5 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Diagnostics;
|
|
using Microsoft.UI;
|
|
using Microsoft.UI.Xaml;
|
|
using Microsoft.UI.Xaml.Controls;
|
|
using Microsoft.UI.Xaml.Input;
|
|
using RustTools.muqing;
|
|
using WinRT.Interop;
|
|
namespace RustTools.Editor;
|
|
/// <summary>
|
|
/// 编辑器主窗口
|
|
/// </summary>
|
|
public sealed partial class EditorWin : WindowEx
|
|
{
|
|
public static ObservableCollection<TabViewItem> TabViewList = new();
|
|
//目录列表
|
|
public ObservableCollection<FileItem> DataSource = new();
|
|
|
|
/// <summary>
|
|
/// 编辑器主窗口
|
|
/// 传入路径
|
|
/// </summary>
|
|
/// <param name="path"></param>
|
|
public EditorWin(string path)
|
|
{
|
|
InitializeComponent();
|
|
gj.SetBackTheme(this);
|
|
ExtendsContentIntoTitleBar = true;
|
|
var frame = App.AppTitlebar as FrameworkElement;
|
|
if (frame != null)
|
|
{
|
|
gj.UpdateTitleBar(this, frame.ActualTheme);
|
|
page.RequestedTheme = frame.ActualTheme;
|
|
}
|
|
//Debug.WriteLine(path);
|
|
var directoryInfo = new DirectoryInfo(path);
|
|
Title = directoryInfo.Name;
|
|
TitleText.Text = directoryInfo.Name;
|
|
DataSource = EditorLoad.GetData(directoryInfo.FullName);
|
|
treeView.ItemsSource = DataSource;
|
|
Closed += EditorWin_Closed;
|
|
tabview.TabItemsSource = TabViewList;
|
|
|
|
}
|
|
|
|
|
|
|
|
//用户有没有保存
|
|
private bool IsSave = true;
|
|
private ContentDialog? ClosedDialog = null;
|
|
private async void EditorWin_Closed(object sender, WindowEventArgs e)
|
|
{
|
|
if (IsSave == false)
|
|
{
|
|
// 防止窗口关闭
|
|
e.Handled = true;
|
|
}
|
|
if (ClosedDialog != null)
|
|
{
|
|
return;
|
|
}
|
|
// 显示一个对话框,告知用户窗口不能关闭
|
|
ClosedDialog = new ContentDialog
|
|
{
|
|
XamlRoot = page.XamlRoot,
|
|
Title = "警告",
|
|
Content = "你还有未保存的文件在编译器中。",
|
|
PrimaryButtonText = "保存关闭",
|
|
PrimaryButtonStyle = Application.Current.Resources["AccentButtonStyle"] as Style,
|
|
SecondaryButtonText = "直接关闭",
|
|
CloseButtonText = "取消"
|
|
};
|
|
var result = await ClosedDialog.ShowAsync();
|
|
if (result == ContentDialogResult.Primary)
|
|
{
|
|
IsSave = true;
|
|
Application.Current.Exit();
|
|
return;
|
|
}
|
|
else if (result == ContentDialogResult.Secondary)
|
|
{
|
|
|
|
IsSave = true;
|
|
Application.Current.Exit();
|
|
return;
|
|
}
|
|
ClosedDialog = null;
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|