From c1c3772a11b1f3fbad8846cc714120771d85fa53 Mon Sep 17 00:00:00 2001
From: alielie <alielie@git.com>
Date: 星期四, 12 六月 2025 20:10:59 +0800
Subject: [PATCH] 新增SeqEditor
---
HMI.Base/PluginLoader.cs | 51 +++++++++++++++++++++++++++++----------------------
1 files changed, 29 insertions(+), 22 deletions(-)
diff --git a/HMI.Base/PluginLoader.cs b/HMI.Base/PluginLoader.cs
index cf98bd3..e63503a 100644
--- a/HMI.Base/PluginLoader.cs
+++ b/HMI.Base/PluginLoader.cs
@@ -62,6 +62,7 @@
}
private IPluginContainer pluginContainer;
+
public void LoadMenuAndPlugin(IPluginContainer container, Dispatcher dispatcher)
{
pluginContainer = container;
@@ -76,6 +77,7 @@
});
}
}
+
private void LoadChildrenMenu()
{
foreach (var menu in Plugins)
@@ -97,31 +99,36 @@
{
string dllPath = Path.Combine(PluginFolder, menu.DllPath);
Assembly ass = Assembly.LoadFrom(dllPath);
+ var tss = ass.GetTypes();
Type ClassType = ass.GetType(menu.ClassName);
object Instance = Activator.CreateInstance(ClassType);
menu.Content = Instance;
if (Instance is IPlugin plugin)
{
- plugin.SetLogger(LogManager.GetLogger(menu.Code));
- string configFolder = Path.Combine(PathHelper.ConfigFolder, menu.Code);
- if (!Directory.Exists(configFolder))
+ }
+ else
+ {
+ plugin = new PluginPackage(Instance);
+ }
+ plugin.SetLogger(LogManager.GetLogger(menu.Code));
+ string configFolder = Path.Combine(PathHelper.ConfigFolder, menu.Code);
+ if (!Directory.Exists(configFolder))
+ {
+ Directory.CreateDirectory(configFolder);
+ }
+ plugin.SetBaseFolder(configFolder);
+ plugin.InitFinish();
+ pluginContainer.OnCloseEvent += plugin.OnClose;
+ pluginContainer.DoCloseEvent += plugin.DoClose;
+ Type SettingType = ass.GetType($"{menu.ClassName}_Setting");
+ if (SettingType != null)
+ {
+ object SettingInstance = Activator.CreateInstance(SettingType);
+ if (SettingInstance is IFolderOwner fo)
{
- Directory.CreateDirectory(configFolder);
+ fo.SetBaseFolder(configFolder);
}
- plugin.SetBaseFolder(configFolder);
- plugin.InitFinish();
- pluginContainer.OnCloseEvent += plugin.OnClose;
- pluginContainer.DoCloseEvent += plugin.DoClose;
- Type SettingType = ass.GetType($"{menu.ClassName}_Setting");
- if (SettingType != null)
- {
- object SettingInstance = Activator.CreateInstance(SettingType);
- if (SettingInstance is IFolderOwner fo)
- {
- fo.SetBaseFolder(configFolder);
- }
- menu.SettingControl = SettingInstance;
- }
+ menu.SettingControl = SettingInstance;
}
}
LoadMessageAppend?.Invoke(this,
@@ -134,7 +141,7 @@
}
catch (Exception ex)
{
- log.Error("Load Plugin Failed.", ex);
+ log.Error($"Load Plugin [{menu.Name}] Failed.", ex);
LoadMessageAppend?.Invoke(this, new LoadMsg
{
Type = LoadMsgType.LOADING,
@@ -159,10 +166,10 @@
try
{
UserInfo user = UserInfo.User;
- string sql = $@"SELECT m.* FROM menu AS m INNER JOIN role_menu_rel AS rrel ON m.code = rrel.menuCode
+ string sql = $@"SELECT DISTINCT m.* FROM menu AS m INNER JOIN role_menu_rel AS rrel ON m.code = rrel.menuCode
INNER JOIN role AS r ON rrel.roleCode = r.code
INNER JOIN user_role_rel AS urel ON r.code = urel.roleCode
-AND urel.username = '{user.Username}' ORDER BY m.level, m.id;";
+AND urel.username = '{user.Username}' ORDER BY m.level,m.sort, m.id;";
DataTable dt = sqliteHelper.GetDataTable(sql);
if (dt != null)
@@ -184,6 +191,7 @@
{
Code = dr["code"].ToString(),
Name = dr["name"].ToString(),
+ Type = dr["type"].ToString(),
ParentCode = dr["parentCode"].ToString(),
DllPath = dr["dllPath"].ToString(),
ClassName = dr["className"].ToString(),
@@ -211,6 +219,5 @@
}
return data;
}
-
}
}
--
Gitblit v1.9.1