using System; using System.Collections.Generic; using WebKit; namespace bytex64.WebThing { public abstract class WebThingPlugin { protected Dictionary Options; public WebThingPlugin() { string classname = this.GetType().FullName; if (Config.PluginOptions.ContainsKey(classname)) { Options = Config.PluginOptions[classname]; } else { Options = new Dictionary(); Config.PluginOptions[classname] = Options; } } // Convenience function to easily save plugin configuration protected void SaveConfig() { if (Config.ConfigPathOut == null) return; string plugin_name = this.GetType().FullName; Config.SaveFile(plugin_name, String.Format("{0}/{1}.conf", Config.ConfigPathOut, plugin_name)); } // Plugin life cycle public virtual void Init(WebThing wt) {} public virtual void Deinit(WebThing wt) {} // WebView life cycle public virtual void InitWebView(WebView wv) {} public virtual void DeinitWebView(WebView wv) {} } // An interface implemented by plugins that handle search queries // (a search query is anything that doesn't look like a URI) public interface ISearchPlugin { // Convert a search query into a URI. If this plugin cannot // handle the search, it should return null. string SearchTransform(string search); } }