From ba6207f52db76ab47cd6534de0cf1712674ff179 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 13 三月 2025 09:00:46 +0800
Subject: [PATCH] 完善国际化语言;
---
HMI.Base/PluginLoader.cs | 73 ++++++++++++++++++++++++++++++------
1 files changed, 61 insertions(+), 12 deletions(-)
diff --git a/HMI.Base/PluginLoader.cs b/HMI.Base/PluginLoader.cs
index fc082bd..eef52ba 100644
--- a/HMI.Base/PluginLoader.cs
+++ b/HMI.Base/PluginLoader.cs
@@ -8,15 +8,27 @@
using System.IO;
using System.Reflection;
using System.Threading;
-using System.Threading.Tasks;
using System.Windows;
-using System.Windows.Media.Imaging;
using System.Windows.Threading;
namespace HMI.Base
{
+ public enum LoadMsgType
+ {
+ INIT, LOADING, FINISHED
+ }
+
+ public class LoadMsg
+ {
+ public string Message { get; set; }
+ public bool? Result { get; set; }
+ public LoadMsgType Type { get; set; }
+ public int NumData { get; set; }
+ }
+
public class PluginLoader
{
+ private static ILog log = LogManager.GetLogger("PluginLoader");
private static string PluginFolder = PathHelper.PluginFolder();
public bool Completed { get; private set; } = false;
@@ -25,8 +37,7 @@
public List<PluginInfo> Plugins { get; private set; }
public static PluginLoader Instance { get; private set; }
- public event EventHandler<string> LoadMessageAppend;
- public event EventHandler Loaded;
+ public event EventHandler<LoadMsg> LoadMessageAppend;
private PluginLoader()
{
@@ -48,13 +59,20 @@
{
Plugins = new List<PluginInfo>();
Menus = LoadTreeMenu(dispatcher);
- Loaded?.Invoke(this, null);
+ dispatcher.Invoke(() =>
+ {
+ LoadMessageAppend?.Invoke(this, new LoadMsg { Type = LoadMsgType.FINISHED });
+ });
}
}
private void LoadChildrenMenu(PluginInfo menu, Dispatcher dispatcher)
{
- LoadMessageAppend?.Invoke(this, $"姝e湪鍔犺浇{menu.Name}鑿滃崟...");
+ LoadMessageAppend?.Invoke(this, new LoadMsg
+ {
+ Type = LoadMsgType.LOADING,
+ Message = $"姝e湪鍔犺浇{menu.Name}鑿滃崟..."
+ });
try
{
Application.Current.Dispatcher.Invoke(() =>
@@ -89,7 +107,13 @@
}
catch (Exception ex)
{
- LoadMessageAppend?.Invoke(this, $"{ex.Message} {ex.StackTrace}");
+ LoadMessageAppend?.Invoke(this,
+ new LoadMsg
+ {
+ Type = LoadMsgType.LOADING,
+ Result = false,
+ Message = $"{ex.Message} {ex.StackTrace}"
+ });
}
}
@@ -98,13 +122,19 @@
foreach (var menu in Plugins)
{
CountdownEvent c = new CountdownEvent(1);
- Thread.Sleep(10);
+ Thread.Sleep(100);
Application.Current.Dispatcher.Invoke(new Action(() =>
{
try
{
- LoadMessageAppend?.Invoke(this, $"姝e湪鍔犺浇{menu.Name}鑿滃崟...");
+ LoadMessageAppend?.Invoke(this,
+ new LoadMsg
+ {
+ Type = LoadMsgType.LOADING,
+ Message = this.lang("App.IsLoadingMenu", menu.Name)
+ }
+ );
if (!string.IsNullOrEmpty(menu.DllPath))
{
string dllPath = Path.Combine(PluginFolder, menu.DllPath);
@@ -134,11 +164,23 @@
}
}
}
- LoadMessageAppend?.Invoke(this, $"鍔犺浇瀹�");
+ LoadMessageAppend?.Invoke(this,
+ new LoadMsg
+ {
+ Type = LoadMsgType.LOADING,
+ Result = true,
+ Message = this.lang("App.MenuLoadSuccess", menu.Name),
+ });
}
catch (Exception ex)
{
- LoadMessageAppend?.Invoke(this, $"{ex.Message} {ex.StackTrace}");
+ log.Error("Load Plugin Failed.", ex);
+ LoadMessageAppend?.Invoke(this, new LoadMsg
+ {
+ Type = LoadMsgType.LOADING,
+ Result = false,
+ Message = this.lang("App.MenuLoadFailed", menu.Name, ex.Message, ex.StackTrace)
+ });
}
finally
{
@@ -165,9 +207,16 @@
DataTable dt = sqliteHelper.GetDataTable(sql);
if (dt != null)
{
- //LoadMessageAppend?.Invoke(this, $"鍏辨湁{dt.Rows.Count}鏉¤彍鍗曞緟鍔犺浇...");
Application.Current.Dispatcher.Invoke(() =>
{
+ LoadMessageAppend?.Invoke(this,
+ new LoadMsg
+ {
+ Type = LoadMsgType.INIT,
+ NumData = dt.Rows.Count,
+ Message = this.lang("App.MenuCount", dt.Rows.Count),
+ });
+
foreach (DataRow dr in dt.Rows)
{
string path = Path.Combine(PathHelper.IconFolder, dr["iconPath"].ToString());
--
Gitblit v1.9.1