Add plugin deinitialization, configuration saving
[WebThing.git] / WebThingPlugin.cs
index 56caa4c..6f23e9d 100644 (file)
@@ -9,13 +9,28 @@ 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) {}
     }
 }