From ebc10240d941fc454572559a31d35cb796be9254 Mon Sep 17 00:00:00 2001 From: paket17 Date: Tue, 13 Aug 2024 23:17:04 +0400 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=D0=B0=D1=81=D0=B8=D0=BD=D1=85?= =?UTF-8?q?=D1=80=D0=BE=D0=BD=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=D1=81=20=D0=BC=D0=B5=D0=BD=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Добавлен статус "Update" на время выполнения операций Асинхронно запускается: Сменить проект, Создать проект, Запуск инстанса, Остановка инстанса Кнопки на время выполнение операций блокируются StartAsyncHandlers запускается асинхронно Добавлены иконки в выпадающее меню --- RXInstanceManager/App.cs | 17 +++ RXInstanceManager/App.xaml | 3 +- RXInstanceManager/Constants.cs | 1 + .../Entities/Controllers/Instances.cs | 18 ++- RXInstanceManager/MainWindow.xaml | 12 +- RXInstanceManager/MainWindow.xaml.cs | 104 ++++++++++++------ RXInstanceManager/MainWindowAsyncHandlers.cs | 7 +- RXInstanceManager/MainWindowHandlers.cs | 43 +++++++- RXInstanceManager/RXInstanceManager.csproj | 1 + 9 files changed, 152 insertions(+), 54 deletions(-) create mode 100644 RXInstanceManager/App.cs diff --git a/RXInstanceManager/App.cs b/RXInstanceManager/App.cs new file mode 100644 index 0000000..1f28df3 --- /dev/null +++ b/RXInstanceManager/App.cs @@ -0,0 +1,17 @@ +using System; +using System.Windows; + +namespace RXInstanceManager +{ + public partial class App : Application + { + protected async override void OnStartup(StartupEventArgs e) + { + base.OnStartup(e); + var mainWindow = new MainWindow(); + MainWindow = mainWindow; + MainWindow.Show(); + await mainWindow.StartAsyncHandlers(); + } + } +} \ No newline at end of file diff --git a/RXInstanceManager/App.xaml b/RXInstanceManager/App.xaml index 4bfccaa..ae40125 100644 --- a/RXInstanceManager/App.xaml +++ b/RXInstanceManager/App.xaml @@ -1,8 +1,7 @@  + xmlns:local="clr-namespace:RXInstanceManager"> diff --git a/RXInstanceManager/Constants.cs b/RXInstanceManager/Constants.cs index fd8cbed..818b62b 100644 --- a/RXInstanceManager/Constants.cs +++ b/RXInstanceManager/Constants.cs @@ -17,6 +17,7 @@ public static class InstanceStatus public const string Stopped = "Stopped"; public const string NeedInstall = "NeedInstall"; public const string NotInstalled = "Not installed"; + public const string Update = "Update"; } public static class EditEmptyValue diff --git a/RXInstanceManager/Entities/Controllers/Instances.cs b/RXInstanceManager/Entities/Controllers/Instances.cs index ee784b4..dfb5477 100644 --- a/RXInstanceManager/Entities/Controllers/Instances.cs +++ b/RXInstanceManager/Entities/Controllers/Instances.cs @@ -33,6 +33,7 @@ public static void Add(string instancePath) { if (!Instances.instancesFolders.Where(i => i == instancePath).Any()) { + Instances.instances.Add(new Instance(instancePath)); Instances.instancesFolders.Add(instancePath); UpdateYaml(); } @@ -40,16 +41,21 @@ public static void Add(string instancePath) public static List Get() { - Instances.instances = new List(); - foreach (var folder in Instances.instancesFolders) - Instances.instances.Add(new Instance(folder)); - return Instances.instances; + if (instances == null) + { + instances = new List(); + foreach (var folder in instancesFolders) + instances.Add(new Instance(folder)); + } + + return instances; } public static void Delete(Instance instance) { - var idx = Instances.instancesFolders.FindIndex(i => i == instance.InstancePath); - Instances.instancesFolders.RemoveAt(idx); + var index = Instances.instancesFolders.FindIndex(i => i == instance.InstancePath); + Instances.instances.RemoveAt(index); + Instances.instancesFolders.RemoveAt(index); UpdateYaml(); } diff --git a/RXInstanceManager/MainWindow.xaml b/RXInstanceManager/MainWindow.xaml index df853b1..5f6cdaa 100644 --- a/RXInstanceManager/MainWindow.xaml +++ b/RXInstanceManager/MainWindow.xaml @@ -37,8 +37,8 @@