diff --git a/ExamplePlugin/ExamplePlugin.cs b/ExamplePlugin/ExamplePlugin.cs new file mode 100644 index 0000000..5308736 --- /dev/null +++ b/ExamplePlugin/ExamplePlugin.cs @@ -0,0 +1,21 @@ +using System; +using WXPlugin.PluginCore; + +namespace ExamplePlugin +{ + public class ExamplePlugin : IPluginBase + { + public String Name { get; set; } = "Example Plugin"; + public String Description { get; set; } = "This is an example plugin."; + + public void Execute() + { + throw new NotImplementedException(); + } + + public void Initialize() + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/ExamplePlugin/ExamplePlugin.csproj b/ExamplePlugin/ExamplePlugin.csproj new file mode 100644 index 0000000..6bc6089 --- /dev/null +++ b/ExamplePlugin/ExamplePlugin.csproj @@ -0,0 +1,60 @@ + + + + + Debug + AnyCPU + {910F0FC8-B73D-449F-ADD7-C6CA147D9F05} + Library + Properties + ExamplePlugin + ExamplePlugin + v4.8 + 512 + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + {56bfe4e0-0d30-474a-b57b-cf08515ff66e} + WXPlugin + + + + + + diff --git a/WeeXnes.sln b/WeeXnes.sln index 9de16df..5088cf8 100644 --- a/WeeXnes.sln +++ b/WeeXnes.sln @@ -10,6 +10,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Update", "Update\Update.csp EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WXPlugin", "WXPlugin\WXPlugin.csproj", "{56BFE4E0-0D30-474A-B57B-CF08515FF66E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExamplePlugin", "ExamplePlugin\ExamplePlugin.csproj", "{910F0FC8-B73D-449F-ADD7-C6CA147D9F05}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -36,5 +38,9 @@ Global {56BFE4E0-0D30-474A-B57B-CF08515FF66E}.Debug|Any CPU.Build.0 = Debug|Any CPU {56BFE4E0-0D30-474A-B57B-CF08515FF66E}.Release|Any CPU.ActiveCfg = Release|Any CPU {56BFE4E0-0D30-474A-B57B-CF08515FF66E}.Release|Any CPU.Build.0 = Release|Any CPU + {910F0FC8-B73D-449F-ADD7-C6CA147D9F05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {910F0FC8-B73D-449F-ADD7-C6CA147D9F05}.Debug|Any CPU.Build.0 = Debug|Any CPU + {910F0FC8-B73D-449F-ADD7-C6CA147D9F05}.Release|Any CPU.ActiveCfg = Release|Any CPU + {910F0FC8-B73D-449F-ADD7-C6CA147D9F05}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/WeeXnes/App.xaml.cs b/WeeXnes/App.xaml.cs index 5e77bad..d9d2d8f 100644 --- a/WeeXnes/App.xaml.cs +++ b/WeeXnes/App.xaml.cs @@ -51,6 +51,18 @@ namespace WeeXnes LoadSettings(); SaveSettingsHandler.SetupSaveEvents(); LoadFiles(); + LoadPluginManager(); + + } + + private void LoadPluginManager() + { + string pluginsPath = Path.Combine(Environment.CurrentDirectory, "plugins"); + if (!Directory.Exists(pluginsPath)) + Directory.CreateDirectory(pluginsPath); + PluginManager manager = new PluginManager(pluginsPath); + manager.LoadPlugins(); + } private void CheckUpdatedFiles() diff --git a/WeeXnes/Core/PluginManager.cs b/WeeXnes/Core/PluginManager.cs index 089c9a8..7f1a84c 100644 --- a/WeeXnes/Core/PluginManager.cs +++ b/WeeXnes/Core/PluginManager.cs @@ -13,11 +13,15 @@ public class PluginManager public HashSet CurrentPlugins { get; set; } = new HashSet(); public PluginManager(String pluginPath) { + + Console.WriteLine("Plugin Manager Initialized"); Directories.Add(pluginPath); } public void LoadPlugins() { + + Console.WriteLine("Plugin Manager Loading Plugins"); CurrentPlugins = new HashSet(); foreach (var dir in Directories) { @@ -36,6 +40,7 @@ public class PluginManager null, null) as IPluginBase; + Console.WriteLine("Loaded: " + newPlugin.Name); CurrentPlugins.Add(newPlugin); } } diff --git a/WeeXnes/Views/PluginManager/PluginManagerView.xaml b/WeeXnes/Views/PluginManager/PluginManagerView.xaml new file mode 100644 index 0000000..5188ef4 --- /dev/null +++ b/WeeXnes/Views/PluginManager/PluginManagerView.xaml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + diff --git a/WeeXnes/Views/PluginManager/PluginManagerView.xaml.cs b/WeeXnes/Views/PluginManager/PluginManagerView.xaml.cs new file mode 100644 index 0000000..6a6e738 --- /dev/null +++ b/WeeXnes/Views/PluginManager/PluginManagerView.xaml.cs @@ -0,0 +1,13 @@ +using System.Windows.Controls; + + +namespace WeeXnes.Views.PluginManager; + +public partial class PluginManagerView : Page +{ + public PluginManagerView() + { + InitializeComponent(); + + } +} \ No newline at end of file diff --git a/WeeXnes/WeeXnes.csproj b/WeeXnes/WeeXnes.csproj index 1a79ea5..e2f0ef0 100644 --- a/WeeXnes/WeeXnes.csproj +++ b/WeeXnes/WeeXnes.csproj @@ -111,6 +111,9 @@ SaveToKeyManagerView.xaml + + PluginManagerView.xaml + InboxView.xaml @@ -168,6 +171,7 @@ +