From 40014e6e41f1ec017a07b7a620b3c700807d0519 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期日, 23 三月 2025 13:51:00 +0800
Subject: [PATCH] 新增DOControl
---
WPFProject/LoadingWindow.xaml.cs | 146 +++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 131 insertions(+), 15 deletions(-)
diff --git a/WPFProject/LoadingWindow.xaml.cs b/WPFProject/LoadingWindow.xaml.cs
index 6a857bb..e0c4fc1 100644
--- a/WPFProject/LoadingWindow.xaml.cs
+++ b/WPFProject/LoadingWindow.xaml.cs
@@ -1,40 +1,156 @@
-锘縰sing System.Threading.Tasks;
+锘縰sing HMI.Base;
+using HMI.Core.Api;
+using HMI.UI.Util;
+using Panuon.WPF.UI;
+using System;
+using System.Threading.Tasks;
using System.Windows;
-using HMI.Base;
+using System.Windows.Documents;
+using System.Windows.Media;
namespace WPFProject
{
/// <summary>
/// LoadingWindow.xaml 鐨勪氦浜掗�昏緫
/// </summary>
- public partial class LoadingWindow : Window
+ public partial class LoadingWindow : WindowX
{
+
+ private string message = "";
+
+ public string Message
+ {
+ 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()
{
+ DataContext = this;
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
- PluginLoader loader = PluginLoader.GetLoader();
- loader.LoadMessageAppend += Loader_LoadMessageAppend;
- loader.LoadMenuAndPlugin();
- Button_Click(null,null);
+
+ }
+ private void Loader_LoadMessageAppend(object sender, LoadMsg msg)
+ {
+ 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 Loader_LoadMessageAppend(object sender, string e)
- {
- Dispatcher.BeginInvoke(() =>
- {
- Console.Text = Console.Text+$"{e}\r\n";
- });
- }
private void Button_Click(object sender, RoutedEventArgs e)
{
- PanuonWindow window = new PanuonWindow();
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;
+ Task.Run(() =>
+ {
+ loader.LoadMenuAndPlugin(window, Dispatcher);
+ //
+ });
+ }
+
+ private void LoadFinished()
+ {
+ if (!HasErr)
+ {
+ Button_Click(null, null);
+ }
+ else
+ {
+ WindowXCaption.SetButtons(this, CaptionButtons.Close);
+ ShowConsole = true;
+ BtnNext.Visibility = Visibility.Visible;
+ MsgBoxHelper.Error(this, "鍔犺浇鍑洪敊锛岃纭");
+ }
+ }
+
+ 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
+ };
+ //涔熷彲浠ユ彃鍏ュ埌鏈�鍚庨潰
+ Console.Document.Blocks.InsertAfter(Console.Document.Blocks.LastBlock, paragraph);
+
+ //鎻掑叆鍒版渶鍓嶉潰
+ //rtxtLog.Document.Blocks.Add(paragraph);
+
+ // 婊氬姩鑷虫渶鍚庤
+ //rtxtLog.ScrollToEnd();
+ //Console.ScrollToHome();
+ Console.ScrollToEnd();
+ // 鍒犻櫎
+ //if (Console.Document.Blocks.Count > 10000)
+ //{
+ // for (int i = 1000; i < Console.Document.Blocks.Count; i++)
+ // {
+ // _ = Console.Document.Blocks.Remove(Console.Document.Blocks.FirstBlock);
+ // }
+ //}
+
+ }
}
}
--
Gitblit v1.9.1