/WebThingPlugin.cs
using System;
using System.Collections.Generic;
using WebKit;
namespace bytex64.WebThing {
public abstract class WebThingPlugin {
protected Dictionary<string,string> Options;
public WebThingPlugin() {
string classname = this.GetType().FullName;
if (Config.PluginOptions.ContainsKey(classname)) {
Options = Config.PluginOptions[classname];
} else {
Options = new Dictionary<string,string>();
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);
}
}