- add progress to edge, dct and fft plugins
[FaRetSys.git] / IPlugin / RegistryConfig.cs
blob3be9cea5bf96d179fb8bcf681f87817791bcee75
1 using System;
2 using System.IO;
3 using Microsoft.Win32;
5 namespace Eithne
7 internal class RegistryConfig : IConfig
9 static string path = "Software/Eithne/";
11 Config.Callback UpdateHandler;
13 public RegistryConfig(Config.Callback UpdateHandler)
15 this.UpdateHandler = UpdateHandler;
18 private string[] Split(string key)
20 string[] ret = new string[2];
22 ret[0] = Path.GetDirectoryName(path + key);
23 ret[0].Replace("/", "\\");
25 ret[1] = Path.GetFileName(key);
27 return ret;
30 public void Set(string key, string val)
32 string[] r = Split(key);
34 RegistryKey k = Registry.CurrentUser.OpenSubKey(r[0], true);
36 if(k == null)
37 k = Registry.CurrentUser.CreateSubKey(r[0]);
39 k.SetValue(r[1], val);
41 k.Flush();
42 k.Close();
44 UpdateHandler();
47 public void Set(string key, int val)
49 string[] r = Split(key);
51 RegistryKey k = Registry.CurrentUser.OpenSubKey(r[0], true);
53 if(k == null)
54 k = Registry.CurrentUser.CreateSubKey(r[0]);
56 k.SetValue(r[1], val);
58 k.Flush();
59 k.Close();
61 UpdateHandler();
64 public void Set(string key, bool val)
66 string[] r = Split(key);
68 RegistryKey k = Registry.CurrentUser.OpenSubKey(r[0], true);
70 if(k == null)
71 k = Registry.CurrentUser.CreateSubKey(r[0]);
73 if(val)
74 k.SetValue(r[1], 1);
75 else
76 k.SetValue(r[1], 0);
78 k.Flush();
79 k.Close();
81 UpdateHandler();
84 public string Get(string key, string def)
86 string[] r = Split(key);
88 RegistryKey k = Registry.CurrentUser.OpenSubKey(r[0], true);
90 if(k == null)
91 k = Registry.CurrentUser.CreateSubKey(r[0]);
93 string val = (string)k.GetValue(r[1]);
95 if(val == null)
97 k.SetValue(r[1], def);
98 val = def;
101 k.Flush();
102 k.Close();
104 return val;
107 public int Get(string key, int def)
109 string[] r = Split(key);
111 RegistryKey k = Registry.CurrentUser.OpenSubKey(r[0], true);
113 if(k == null)
114 k = Registry.CurrentUser.CreateSubKey(r[0]);
116 object val = k.GetValue(r[1]);
118 if(val == null)
120 k.SetValue(r[1], def);
121 val = def;
124 k.Flush();
125 k.Close();
127 return (int)val;
130 public bool Get(string key, bool def)
132 string[] r = Split(key);
134 RegistryKey k = Registry.CurrentUser.OpenSubKey(r[0], true);
136 if(k == null)
137 k = Registry.CurrentUser.CreateSubKey(r[0]);
139 object val = k.GetValue(r[1]);
141 bool ret;
143 if(val == null)
145 if(def)
146 k.SetValue(r[1], 1);
147 else
148 k.SetValue(r[1], 0);
150 ret = def;
152 else
153 if((int)val == 1)
154 ret = true;
155 else
156 ret = false;
158 k.Flush();
159 k.Close();
161 return ret;