diff --git a/KitX Dashboard/Helper.cs b/KitX Dashboard/Helper.cs index fcd24ec0..90f9de98 100644 --- a/KitX Dashboard/Helper.cs +++ b/KitX Dashboard/Helper.cs @@ -3,9 +3,8 @@ using BasicHelper.LiteLogger; using FluentAvalonia.UI.Media; using KitX_Dashboard.Data; -using LiteDB; +using KitX_Dashboard.Models; using System; -using System.Diagnostics; using System.IO; using System.Text.Json; using System.Threading; @@ -18,11 +17,6 @@ namespace KitX_Dashboard { public static class Helper { - /// - /// 配置路径 - /// - public readonly static string ConfigPath = Path.GetFullPath(GlobalInfo.ConfigPath); - /// /// 启动时检查 /// @@ -34,20 +28,6 @@ public static void StartUpCheck() #endregion - #region 初始化 LiteDB - - string DataBaseWorkBase = Path.GetFullPath(Data.GlobalInfo.DataBasePath); - - if (!Directory.Exists(DataBaseWorkBase)) - { - Directory.CreateDirectory(DataBaseWorkBase); - LiteDatabase pluginsDB = new($"{DataBaseWorkBase}/plugins.db"); - pluginsDB.Rebuild(); - pluginsDB.Dispose(); - } - - #endregion - #region 初始化 LiteLogger InitLiteLogger(Program.LocalLogger); @@ -60,14 +40,6 @@ public static void StartUpCheck() #endregion - #region 初始化一般信息 - - //Program.LocalVersion = BasicHelper.Util.Version.Parse( - - //); - - #endregion - #region 初始化 WebServer Program.LocalWebServer = new(); @@ -77,16 +49,15 @@ public static void StartUpCheck() #region 初始化事件 - Models.EventHandlers.ConfigSettingsChanged += () => + EventHandlers.ConfigSettingsChanged += () => { - SaveInfo(); + SolidColorBrush? accent = Application.Current + .Resources["ThemePrimaryAccent"] as SolidColorBrush; + Program.GlobalConfig.App.ThemeColor = new Color2(accent.Color).ToHexString(); + SaveConfig(); }; - #endregion - - #region 初始化必要线程 - - + EventHandlers.PluginsListChanged += () => SavePluginsListConfig(); #endregion } @@ -96,8 +67,6 @@ public static void StartUpCheck() /// public static void SaveConfig() { - string ConfigFilePath = Path.GetFullPath($"{ConfigPath}/config.json"); - JsonSerializerOptions options = new() { WriteIndented = true, @@ -106,21 +75,45 @@ public static void SaveConfig() new Thread(() => { - - BasicHelper.IO.FileHelper.WriteIn(ConfigFilePath, + BasicHelper.IO.FileHelper.WriteIn(Path.GetFullPath(GlobalInfo.ConfigFilePath), JsonSerializer.Serialize(Program.GlobalConfig, options)); }).Start(); } + /// + /// 保存插件列表配置 + /// + public static void SavePluginsListConfig() + { + JsonSerializerOptions options = new() + { + WriteIndented = true, + IncludeFields = true, + }; + + new Thread(() => + { + BasicHelper.IO.FileHelper.WriteIn(Path.GetFullPath(GlobalInfo.PluginsListConfigFilePath), + JsonSerializer.Serialize(Program.PluginsList, options)); + }).Start(); + } + /// /// 读取配置 /// public static void LoadConfig() { - string ConfigFilePath = Path.GetFullPath($"{ConfigPath}/config.json"); - Program.GlobalConfig = JsonSerializer.Deserialize( - BasicHelper.IO.FileHelper.ReadAll(ConfigFilePath)); + BasicHelper.IO.FileHelper.ReadAll(Path.GetFullPath(GlobalInfo.ConfigFilePath))); + } + + /// + /// 读取插件列表配置 + /// + public static void LoadPluginsListConfig() + { + Program.PluginsList = JsonSerializer.Deserialize( + BasicHelper.IO.FileHelper.ReadAll(Path.GetFullPath(GlobalInfo.PluginsListConfigFilePath))); } /// @@ -128,13 +121,13 @@ public static void LoadConfig() /// public static void InitConfig() { - if (!File.Exists($"{ConfigPath}/config.json")) - { - if (!Directory.Exists(ConfigPath)) - Directory.CreateDirectory(ConfigPath); - SaveConfig(); - } + if (!Directory.Exists(Path.GetFullPath(GlobalInfo.ConfigPath))) + _ = Directory.CreateDirectory(Path.GetFullPath(GlobalInfo.ConfigPath)); + if (!File.Exists(Path.GetFullPath(GlobalInfo.ConfigFilePath))) SaveConfig(); else LoadConfig(); + if (!File.Exists(Path.GetFullPath(GlobalInfo.PluginsListConfigFilePath))) + SavePluginsListConfig(); + else SavePluginsListConfig(); } /// @@ -142,10 +135,8 @@ public static void InitConfig() /// public static void SaveInfo() { - var accent = Application.Current.Resources["ThemePrimaryAccent"] as SolidColorBrush; - Program.GlobalConfig.App.ThemeColor = new Color2(accent.Color).ToHexString(); - SaveConfig(); + SavePluginsListConfig(); } /// @@ -203,16 +194,6 @@ public static void InitEnvironment() /// .kxp Path public static void ImportPlugin(string kxpPath) { - string? workbasef = Process.GetCurrentProcess().MainModule.FileName; - string? workbase = string.Empty; - if (workbasef == null) - throw new Exception("Can not get path of \"KitX Dashboard.exe\""); - else - { - workbase = Path.GetDirectoryName(workbasef); - if (workbase == null) - throw new Exception("Can not get path of \"KitX\""); - } if (!File.Exists(kxpPath)) { Console.WriteLine($"No this file: {kxpPath}"); @@ -220,7 +201,7 @@ public static void ImportPlugin(string kxpPath) } else { - + Services.PluginsManager.ImportPlugin(new string[] { kxpPath }); } } } diff --git a/KitX Dashboard/Languages/en-us.axaml b/KitX Dashboard/Languages/en-us.axaml index f64c4187..be20afaf 100644 --- a/KitX Dashboard/Languages/en-us.axaml +++ b/KitX Dashboard/Languages/en-us.axaml @@ -78,6 +78,14 @@ No Plugin in Repository. + Search local network + Plugins Installed. + + + Launch + Details + Remove + Remove and Delete No other devices in network. diff --git a/KitX Dashboard/Languages/ja-jp.axaml b/KitX Dashboard/Languages/ja-jp.axaml index 3f664866..8bcf4f50 100644 --- a/KitX Dashboard/Languages/ja-jp.axaml +++ b/KitX Dashboard/Languages/ja-jp.axaml @@ -78,6 +78,14 @@ リポジトリにプラグインがありません + LANで検索 + インストールされたプラグイン + + + 起動 + 詳細 + 削除する + 削除して破壊する ネットワーク上に他のデバイスがない diff --git a/KitX Dashboard/Languages/zh-cn.axaml b/KitX Dashboard/Languages/zh-cn.axaml index 0d6611cf..5a782194 100644 --- a/KitX Dashboard/Languages/zh-cn.axaml +++ b/KitX Dashboard/Languages/zh-cn.axaml @@ -78,6 +78,14 @@ 仓库中没有插件呢~ + 在局域网中搜索 + 个插件已安装 + + + 启动 + 详细信息 + 移除 + 移除并删除 网络中没有其它设备 diff --git a/KitX Dashboard/Languages/zh-cnt.axaml b/KitX Dashboard/Languages/zh-cnt.axaml index 2678d661..b56910fa 100644 --- a/KitX Dashboard/Languages/zh-cnt.axaml +++ b/KitX Dashboard/Languages/zh-cnt.axaml @@ -78,6 +78,14 @@ 無插件在倉庫中 + 在局域網路中尋找 + 個插件已經安裝到本機 + + + 啓動 + 詳細信息 + 移除 + 移除并刪除 網路中空無一物 diff --git a/KitX Dashboard/Program.cs b/KitX Dashboard/Program.cs index 80325bb3..e8e6a91f 100644 --- a/KitX Dashboard/Program.cs +++ b/KitX Dashboard/Program.cs @@ -23,6 +23,8 @@ internal class Program internal static ObservableCollection DeviceCards = new(); + internal static PluginsList PluginsList = new(); + /// /// , Ӧó; չ summary 鿴 /// @@ -35,6 +37,15 @@ internal class Program [STAThread] public static void Main(string[] args) { + + #region Ҫijʼ + + EventHandlers.Init(); + + #endregion + + #region + try { for (int i = 0; i < args.Length; i++) @@ -59,20 +70,18 @@ public static void Main(string[] args) catch (Exception e) { Console.WriteLine(e.Message); - Environment.Exit(1); + Environment.Exit(ErrorCodes.StartUpArgumentsError); } + #endregion + + #region + try { if (File.Exists(Path.GetFullPath("./dump.log"))) File.Delete(Path.GetFullPath("./dump.log")); - #region Ҫijʼ - - EventHandlers.Init(); - - #endregion - #region ִʱ Helper.StartUpCheck(); @@ -106,6 +115,8 @@ public static void Main(string[] args) sw.Close(); fs.Close(); } + + #endregion } /// diff --git a/KitX Dashboard/Services/PluginsManager.cs b/KitX Dashboard/Services/PluginsManager.cs index 2c0c388e..03eb7e61 100644 --- a/KitX Dashboard/Services/PluginsManager.cs +++ b/KitX Dashboard/Services/PluginsManager.cs @@ -1,12 +1,17 @@ using Avalonia.Threading; using KitX.Web.Rules; using KitX_Dashboard.Data; +using KitX_Dashboard.Models; using KitX_Dashboard.Views.Pages.Controls; +using LiteDB; +using System; using System.Collections.Generic; +using System.IO; using System.Net; -using System.Text.Json; +using JsonSerializer = System.Text.Json.JsonSerializer; #pragma warning disable CS8605 // 取消装箱可能为 null 的值。 +#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。 namespace KitX_Dashboard.Services { @@ -115,9 +120,79 @@ internal static void Disconnect(IPEndPoint endPoint) { pluginsToRemove.Enqueue(endPoint); } + + /// + /// 导入插件 + /// + /// .kxp files list + internal static void ImportPlugin(string[] kxpfiles, bool inGraphic = false) + { + string? workbasef = Environment.ProcessPath; + string? workbase; + if (workbasef == null) + throw new Exception("Can not get path of \"KitX Dashboard.exe\""); + else + { + workbase = Path.GetDirectoryName(workbasef); + if (workbase == null) + throw new Exception("Can not get path of \"KitX\""); + } + using LiteDatabase pgdb = new(Path.GetFullPath( + $"{GlobalInfo.DataBasePath}\\{GlobalInfo.PluginsDataBaseFile}" + )); + var pgs = pgdb.GetCollection("Plugins"); + string releaseDir = Path.GetFullPath($"{workbase}/{GlobalInfo.KXPTempReleasePath}"); + foreach (var item in kxpfiles) + { + try + { + if (Directory.Exists(releaseDir)) + Directory.Delete(releaseDir, true); + _ = Directory.CreateDirectory(releaseDir); + + KitX.KXP.Helper.Decoder decoder = new(item); + Tuple rst = decoder.Decode(releaseDir); + Directory.Delete(releaseDir, true); + LoaderStruct loaderStruct = JsonSerializer.Deserialize(rst.Item1); + PluginStruct pluginStruct = JsonSerializer.Deserialize(rst.Item2); + Config? config = null; + if (inGraphic) config = Program.GlobalConfig; + else config = JsonSerializer.Deserialize(File.ReadAllText( + Path.GetFullPath($"{GlobalInfo.ConfigPath}config.json") + )); + if (config == null) + { + Console.WriteLine($"No config file found!"); + if (!inGraphic) Environment.Exit(ErrorCodes.ConfigFileDidntExists); + } + string pluginsavedir = config?.App.LocalPluginsFileDirectory; + string thisplugindir = $"{pluginsavedir}/" + + $"{pluginStruct.PublisherName}_{pluginStruct.AuthorName}/" + + $"{pluginStruct.Name}/" + + $"{pluginStruct.Version}"; + if (Directory.Exists(thisplugindir)) + Directory.Delete(thisplugindir, true); + _ = Directory.CreateDirectory(thisplugindir); + _ = decoder.Decode(thisplugindir); + + pgs.Insert(new Plugin() + { + PluginDetails = pluginStruct, + RequiredLoaderStruct = loaderStruct, + MacAddressOfInstalledDevice = new() + }); + } + catch (Exception e) + { + Console.WriteLine($"Processing {item} occurs error: {e.Message}"); + if (inGraphic) throw; // 如果是图形界面调用, 则再次抛出便于给出图形化提示 + } + } + } } } +#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。 #pragma warning restore CS8605 // 取消装箱可能为 null 的值。 // _----_ diff --git a/KitX File Format Helper/KitX.KXP.Helper/Decoder.cs b/KitX File Format Helper/KitX.KXP.Helper/Decoder.cs index 648553dd..1bcb47a3 100644 --- a/KitX File Format Helper/KitX.KXP.Helper/Decoder.cs +++ b/KitX File Format Helper/KitX.KXP.Helper/Decoder.cs @@ -40,7 +40,7 @@ internal struct FileMapItem public Tuple Decode(string releaseFolder) { if (!Directory.Exists(releaseFolder)) - Directory.CreateDirectory(releaseFolder); + _ = Directory.CreateDirectory(releaseFolder); byte[] hash = new byte[16]; // 哈希部分 diff --git a/KitX Installer/Installer for Windows/KitX Installer for Windows in .NET Framework/MainForm.cs b/KitX Installer/Installer for Windows/KitX Installer for Windows in .NET Framework/MainForm.cs index 5a1c61ff..d1e9e3b2 100644 --- a/KitX Installer/Installer for Windows/KitX Installer for Windows in .NET Framework/MainForm.cs +++ b/KitX Installer/Installer for Windows/KitX Installer for Windows in .NET Framework/MainForm.cs @@ -383,7 +383,8 @@ private void InstallProcess() try { - Process.Start("cmd.exe", $"/C cd /d {stfolder} && runas.exe /TrustLevel:0x20000 \"{targetPath}\""); + Process.Start("cmd.exe", $"/C cd /d {stfolder} && runas.exe /TrustLevel:0x20000 " + + $"\"{targetPath}\""); //Process.Start("explorer.exe", targetPath); diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/Controller.cs b/KitX Official Plugins/TestPlugin.WPF.Winform/Controller.cs new file mode 100644 index 00000000..3c77dd70 --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/Controller.cs @@ -0,0 +1,29 @@ +using KitX.Contract.CSharp; + +namespace TestPlugin.WPF.Winform +{ + public class Controller : IController + { + private readonly MainWindow mainwin; + + public Controller(MainWindow mainwin) + { + this.mainwin = mainwin; + } + + public void End() + { + mainwin.Close(); + } + + public void Pause() + { + mainwin.Hide(); + } + + public void Start() + { + mainwin.Show(); + } + } +} diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/MainWindow.xaml b/KitX Official Plugins/TestPlugin.WPF.Winform/MainWindow.xaml new file mode 100644 index 00000000..f647dc02 --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/MainWindow.xaml @@ -0,0 +1,13 @@ + + + + + diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/MainWindow.xaml.cs b/KitX Official Plugins/TestPlugin.WPF.Winform/MainWindow.xaml.cs new file mode 100644 index 00000000..32d4808f --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/MainWindow.xaml.cs @@ -0,0 +1,118 @@ +using KitX.Contract.CSharp; +using System; +using System.Windows; + +namespace TestPlugin.WPF.Winform +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window, IIdentityInterface + { + private readonly Controller controller; + + public MainWindow() + { + InitializeComponent(); + controller = new Controller(this); + + Closed += (sender, e) => Environment.Exit(0); + } + + /// + /// 获取插件名称 + /// + /// 插件名称 + public string GetName() => "插件名称"; + + /// + /// 获取插件版本 + /// + /// 插件版本 + public string GetVersion() => "插件版本"; + + /// + /// 获取显示名称 + /// + /// 显示名称 + public string GetDisplayName() => "显示名称"; + + /// + /// 获取作者名称 + /// + /// 作者名称 + public string GetAuthorName() => "作者名称"; + + /// + /// 获取发行者名称 + /// + /// 发行者名称 + public string GetPublisherName() => "发行者名称"; + + /// + /// 获取作者链接 + /// + /// 作者链接 + public string GetAuthorLink() => "作者链接"; + + /// + /// 获取发行者链接 + /// + /// 发行者链接 + public string GetPublisherLink() => "发行者链接"; + + /// + /// 获取简单描述 + /// + /// 简单描述 + public string GetSimpleDescription() => "简单描述"; + + /// + /// 获取复杂描述 + /// + /// 复杂描述 + public string GetComplexDescription() => "复杂描述"; + + /// + /// 获取 MarkDown 语法的完整介绍 + /// + /// 完整介绍 + public string GetTotalDescriptionInMarkdown() => "完整介绍"; + + /// + /// 获取 Base64 编码的图标 + /// + /// Base64 编码的图标 + public string GetIconInBase64() => "图标"; + + /// + /// 获取发行日期 + /// + /// 发行日期 + public DateTime GetPublishDate() => DateTime.Now; + + /// + /// 获取最近更新日期 + /// + /// 最近更新日期 + public DateTime GetLastUpdateDate() => DateTime.Now; + + /// + /// 获取控制器 + /// + /// 控制器 + public IController GetController() => controller; + + /// + /// 指示是否是市场版本 + /// + /// 是否是市场版本 + public bool IsMarketVersion() => false; + + /// + /// 获取市场版本插件协议 + /// + /// 市场版本插件协议 + public IMarketPluginContract GetMarketPluginContract() => null; + } +} \ No newline at end of file diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/AssemblyInfo.cs b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..2de47688 --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/AssemblyInfo.cs @@ -0,0 +1,55 @@ +using System.Reflection; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Windows; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("TestPlugin.WPF.Winform")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("TestPlugin.WPF.Winform")] +[assembly: AssemblyCopyright("Copyright © 2022")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +//若要开始生成可本地化的应用程序,请设置 +//.csproj 文件中的 CultureYouAreCodingWith +//例如,如果您在源文件中使用的是美国英语, +//使用的是美国英语,请将 设置为 en-US。 然后取消 +//对以下 NeutralResourceLanguage 特性的注释。 更新 +//以下行中的“en-US”以匹配项目文件中的 UICulture 设置。 + +//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] + + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //主题特定资源词典所处位置 + //(未在页面中找到资源时使用, + //或应用程序资源字典中找到时使用) + ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 + //(未在页面中找到资源时使用, + //、应用程序或任何主题专用资源字典中找到时使用) +)] + + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 +//通过使用 "*",如下所示: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Resources.Designer.cs b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Resources.Designer.cs new file mode 100644 index 00000000..9c203b88 --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本: 4.0.30319.42000 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace TestPlugin.WPF.Winform.Properties +{ + + + /// + /// 强类型资源类,用于查找本地化字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// 返回此类使用的缓存 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TestPlugin.WPF.Winform.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Resources.resx b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Settings.Designer.cs b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Settings.Designer.cs new file mode 100644 index 00000000..b3f2ea3e --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace TestPlugin.WPF.Winform.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Settings.settings b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Settings.settings new file mode 100644 index 00000000..033d7a5e --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/TestPlugin.WPF.Winform.csproj b/KitX Official Plugins/TestPlugin.WPF.Winform/TestPlugin.WPF.Winform.csproj new file mode 100644 index 00000000..701e9acb --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/TestPlugin.WPF.Winform.csproj @@ -0,0 +1,96 @@ + + + + + Debug + AnyCPU + {B4BD67EE-8B90-408C-A0A9-D8F9B3265835} + Library + TestPlugin.WPF.Winform + TestPlugin.WPF.Winform + v4.8 + 512 + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 4 + true + true + + + AnyCPU + true + full + false + ..\..\KitX Build\Plugins\TestPlugin.WPF.Framework\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + ..\..\packages\KitX.Contract.CSharp.22.4.6242.1132\lib\net40\KitX.Contract.CSharp.dll + + + + + + + + + + + + 4.0 + + + + + + + + MSBuild:Compile + Designer + + + + MainWindow.xaml + Code + + + + + Code + + + True + True + Resources.resx + + + True + Settings.settings + True + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + + \ No newline at end of file diff --git a/KitX Official Plugins/TestPlugin.WPF.Winform/packages.config b/KitX Official Plugins/TestPlugin.WPF.Winform/packages.config new file mode 100644 index 00000000..b681ea5a --- /dev/null +++ b/KitX Official Plugins/TestPlugin.WPF.Winform/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/KitX Rules/KitX.Web.Rules/PluginStruct.cs b/KitX Rules/KitX.Web.Rules/PluginStruct.cs index bff03dc2..c6c90f7c 100644 --- a/KitX Rules/KitX.Web.Rules/PluginStruct.cs +++ b/KitX Rules/KitX.Web.Rules/PluginStruct.cs @@ -39,5 +39,7 @@ public struct PluginStruct public Dictionary Tags { get; set; } public Function Functions { get; set; } + + public string RootStartupFileName { get; set; } } }