Fix scrolling functionality
[WebThing.git] / WebThingPlugin.cs
index 56caa4c..a201b86 100644 (file)
@@ -9,13 +9,36 @@ namespace bytex64.WebThing {
         public WebThingPlugin() {
             string classname = this.GetType().FullName;
 
-            if (Config.PluginOptions.ContainsKey(classname))
+            if (Config.PluginOptions.ContainsKey(classname)) {
                 Options = Config.PluginOptions[classname];
-            else
+            } 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);
     }
 }