using System; using System.Reflection; using System.Collections.Generic; using WebKit; namespace bytex64.WebThing { public class PluginManager { public Dictionary Plugins; private WebThing wt; public PluginManager(WebThing wt) { Plugins = new Dictionary(); this.wt = wt; } public void Load() { foreach (string plugin in Config.Plugins) { LoadPlugin(plugin); } } public void LoadPlugin(string assemblyname) { Assembly a = Assembly.LoadFile(Environment.GetEnvironmentVariable("WEBTHING_HOME") + "/plugins/" + assemblyname + ".dll"); Type[] types = a.GetTypes(); foreach (Type t in types) { if (t.IsSubclassOf(typeof(WebThingPlugin))) { WebThingPlugin p = (WebThingPlugin) a.CreateInstance(t.FullName, false, BindingFlags.ExactBinding, null, null, null, null); p.Init(wt); Plugins[t.FullName] = p; Console.WriteLine("Successfully loaded {0}", t.FullName); } } } public void WebViewSetup(WebView view) { foreach (string key in Plugins.Keys) { Plugins[key].InitWebView(view); } } public void Deinit() { foreach (WebThingPlugin p in Plugins.Values) { p.Deinit(wt); } } } }