From 15bbd62b0b24b72c717ae91ab45348a2083ad04e Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期五, 10 十月 2025 08:58:18 +0800
Subject: [PATCH] 优化bug;
---
WPFProject/LoadingWindow.xaml.cs | 111 ++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 88 insertions(+), 23 deletions(-)
diff --git a/WPFProject/LoadingWindow.xaml.cs b/WPFProject/LoadingWindow.xaml.cs
index b929c03..4e1ff79 100644
--- a/WPFProject/LoadingWindow.xaml.cs
+++ b/WPFProject/LoadingWindow.xaml.cs
@@ -1,9 +1,11 @@
锘縰sing HMI.Base;
+using HMI.UI.Util;
using Panuon.WPF.UI;
using System;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Documents;
+using System.Windows.Media;
namespace WPFProject
{
@@ -13,12 +15,36 @@
public partial class LoadingWindow : WindowX
{
- private string consoleText = "";
+ private string message = "";
- public string ConsoleText
+ public string Message
{
- get { return consoleText; }
- set { Set(ref consoleText, value); }
+ get { return message; }
+ set { Set(ref message, value); }
+ }
+
+ private bool HasErr = false;
+
+ private bool showConsole = false;
+ public bool ShowConsole
+ {
+ get => showConsole;
+ set
+ {
+ Set(ref showConsole, value);
+ NotifyOfPropertyChange("ConsoleVisiable");
+ NotifyOfPropertyChange("BarVisiable");
+ }
+ }
+
+ public Visibility ConsoleVisiable
+ {
+ get => showConsole ? Visibility.Visible : Visibility.Collapsed;
+ }
+
+ public Visibility BarVisiable
+ {
+ get => showConsole ? Visibility.Collapsed : Visibility.Visible;
}
public LoadingWindow()
@@ -29,55 +55,94 @@
private void Window_Loaded(object sender, RoutedEventArgs e)
{
-
+
}
- private void Loader_LoadMessageAppend(object sender, string e)
+ private void Loader_LoadMessageAppend(object sender, LoadMsg msg)
{
- Add(e);
+ switch (msg.Type)
+ {
+ case LoadMsgType.INIT:
+ total = msg.NumData;
+ Add(msg.Message, null);
+ break;
+ case LoadMsgType.LOADING:
+ HasErr = HasErr || msg.Result == false;
+ if (msg.Result != null)
+ {
+ processBar.Value = ++finished / total * 100;
+ }
+ Add(msg.Message, msg.Result);
+ break;
+ case LoadMsgType.FINISHED:
+ LoadFinished();
+ break;
+ default:
+ break;
+ }
}
private void Button_Click(object sender, RoutedEventArgs e)
{
- PanuonWindow window = new PanuonWindow();
+ this.Closed -= ShutDownWhen_Closed;
window.Show();
this.Close();
}
+ private PanuonWindow window;
+ private double total;
+ private double finished;
+
private void WindowX_ContentRendered(object sender, System.EventArgs e)
{
+ window = new PanuonWindow();
PluginLoader loader = PluginLoader.GetLoader();
loader.LoadMessageAppend += Loader_LoadMessageAppend;
- loader.Loaded += Loader_Loaded;
Task.Run(() =>
{
- loader.LoadMenuAndPlugin(Dispatcher);
+ loader.LoadMenuAndPlugin(window, Dispatcher);
//
});
}
- private void Loader_Loaded(object sender, EventArgs e)
+ private void LoadFinished()
{
- Dispatcher.Invoke(() =>
+ if (!HasErr)
{
Button_Click(null, null);
- });
+ }
+ else
+ {
+ WindowXCaption.SetButtons(this, CaptionButtons.Close);
+ ShowConsole = true;
+ BtnNext.Visibility = Visibility.Visible;
+ MsgBoxHelper.Error(this, "鍔犺浇鍑洪敊锛岃纭");
+ this.Closed += ShutDownWhen_Closed; ;
+ }
}
- public void Add(string text)
+ private void ShutDownWhen_Closed(object sender, EventArgs e)
{
- string t = string.Format("{0:G}", DateTime.Now);
- Run run = new Run();
- run.Text = t + " 淇℃伅锛�" + text;
- //run.Foreground = new Brush();
+ Application.Current.Shutdown();
+ }
- Paragraph paragraph = new Paragraph(run) {
- LineHeight =1
+ public void Add(string text, bool? result)
+ {
+ Message = text;
+ string time = string.Format("{0:G}", DateTime.Now);
+ Run run = new Run();
+ string type = result != false ? "Info" : "Warn";
+ run.Text = $"{time} {type} {text}";
+ run.Foreground = result == null ? Brushes.Black : (result == true ? Brushes.Green : Brushes.Red);
+
+ Paragraph paragraph = new Paragraph(run)
+ {
+ LineHeight = 1
};
- //rtxtLog.Document.Blocks.InsertAfter(); ;
- //鎻掑叆鍒版渶鍓嶉潰
- Console.Document.Blocks.InsertAfter(Console.Document.Blocks.LastBlock, paragraph);
//涔熷彲浠ユ彃鍏ュ埌鏈�鍚庨潰
+ Console.Document.Blocks.InsertAfter(Console.Document.Blocks.LastBlock, paragraph);
+
+ //鎻掑叆鍒版渶鍓嶉潰
//rtxtLog.Document.Blocks.Add(paragraph);
// 婊氬姩鑷虫渶鍚庤
--
Gitblit v1.9.1