21 Commits
Author SHA1 Message Date
BlubbFish 469477210e [NF] v1.0.6 Add a function to overwrite a complete ini file 2017-12-22 22:05:00 +00:00
BlubbFish 44c0adc8db [BF] v1.3.4.0 Fixing Json Names
[NF] v1.2.2.0 Mqtt can now get and set values
2017-12-19 20:18:30 +00:00
BlubbFish ecb7e2bb6b [BF] v.1.3.3 fixing polling once bug 2017-12-19 17:33:31 +00:00
BlubbFish 8ae22ff701 [BF] v1.3.1.0 Forgot some settings, now configuration setting also works again 2017-12-18 16:02:18 +00:00
BlubbFish 7c81c5391f [NF] Tiny fix for mqtt 2017-12-17 21:53:16 +00:00
BlubbFish 04725ea161 [NF] v1.3.0.0 Adding Status Polling and Mqtt (not compelete)
[NF] Able to force loading modules, so dependencys are ok
[NF] Cleanup because its now easyer to implement Zway
2017-12-17 20:09:28 +00:00
BlubbFish 931af38cb9 [BF] Catch Exception on shutdown 2017-12-17 20:00:13 +00:00
BlubbFish 23a80e51f0 [BF] v.1.2.1.1 Next try to emulate F4G Events 2017-12-09 12:33:15 +00:00
BlubbFish 664a5049af [NF] v1.1.2 Now complete Emulation of F4G Node
[NF] Possibility to attach internal cron events
2017-12-08 19:30:29 +00:00
BlubbFish 5669dd5ac3 [NF] Filter topics if usefull 2017-12-05 23:22:33 +00:00
BlubbFish 3d459543d1 [NF] Now possible to emulate F4G 2017-12-05 23:10:52 +00:00
BlubbFish df5b97b130 2017-12-03 22:18:29 +00:00
BlubbFish 89f50800ce [NF] Zway-Bot Module eingefügt 2017-12-02 18:04:43 +00:00
BlubbFish df97abf0e0 [BF] Fixing Bug with Cronjon (stupid bug) 2017-12-01 16:14:26 +00:00
BlubbFish 9d21634765 [NF] First Release of Zway-Bot 2017-11-25 11:14:04 +00:00
BlubbFish 901eefe701 [NF] Aufgeräumt 2017-10-02 16:26:38 +00:00
BlubbFish dc09218157 [NF] Ein bisschen Aufgeräumt 2017-09-26 19:39:02 +00:00
BlubbFish 8b611dfcec [NF] Kleine Verbesserung im INIReader 2017-09-26 17:55:51 +00:00
BlubbFish ad2d41dde0 [NF] Inireader vereinfachungen 2017-09-24 20:33:46 +00:00
BlubbFish 4a91406d4f [NF] Nun können Sektionen auch umlaute benutzen 2017-08-09 22:38:14 +00:00
BlubbFish f9216f7bc9 [NF] Gibt nun bei ini-Dateien ganze Bereiche zurück 2017-08-09 15:45:42 +00:00
4 changed files with 84 additions and 26 deletions
+78 -21
View File
@@ -10,7 +10,7 @@ namespace BlubbFish.Utils
{
public class InIReader : IDisposable
{
private Dictionary<String, Dictionary<String, String>> cont;
private Dictionary<String, Dictionary<String, String>> inifile;
private FileSystemWatcher k = new FileSystemWatcher(Directory.GetCurrentDirectory(), "*.ini");
private String filename;
@@ -23,6 +23,11 @@ namespace BlubbFish.Utils
LoadFile();
}
/// <summary>
/// Gibt eine InIReader-Instanz zu einer Datei zurück
/// </summary>
/// <param name="filename">Dateiname</param>
/// <returns></returns>
public static InIReader GetInstance(String filename)
{
if (!instances.Keys.Contains(filename)) {
@@ -38,7 +43,7 @@ namespace BlubbFish.Utils
private void LoadFile()
{
this.cont = new Dictionary<String, Dictionary<String, String>>();
this.inifile = new Dictionary<String, Dictionary<String, String>>();
StreamReader file = new StreamReader(this.filename);
List<String> buf = new List<String>();
String fline = "";
@@ -52,10 +57,10 @@ namespace BlubbFish.Utils
Dictionary<String, String> sub = new Dictionary<String, String>();
String cap = "";
foreach (String line in buf) {
Match match = Regex.Match(line, @"^\[[a-zA-Z0-9\-_ ]+\]\w*$", RegexOptions.IgnoreCase);
Match match = Regex.Match(line, @"^\[[a-zA-ZäöüÄÖÜ0-9\-_ ]+\]\w*$", RegexOptions.IgnoreCase);
if (match.Success) {
if (sub.Count != 0 && cap != "") {
this.cont.Add(cap, sub);
this.inifile.Add(cap, sub);
}
cap = line;
sub = new Dictionary<String, String>();
@@ -68,45 +73,97 @@ namespace BlubbFish.Utils
}
}
if (sub.Count != 0 && cap != "") {
this.cont.Add(cap, sub);
this.inifile.Add(cap, sub);
}
}
public List<String> GetSections()
/// <summary>
/// Gibt eine Liste an Sektionen zurück
/// </summary>
/// <param name="withBrackets">Default = true; false, wenn die Liste ohne Klammern sein soll.</param>
/// <returns></returns>
public List<String> GetSections(Boolean withBrackets = true)
{
return this.cont.Keys.ToList<String>();
if(withBrackets) {
return this.inifile.Keys.ToList();
} else {
List<String> ret = new List<String>();
foreach (String item in this.inifile.Keys) {
ret.Add(item.Substring(1, item.Length - 2));
}
return ret;
}
}
/// <summary>
/// Überschreibt eine InI-Datei mit der Kompletten neuen Configuration
/// </summary>
/// <param name="config">Neue Konfiguration</param>
public void SetSections(Dictionary<String, Dictionary<String, String>> config) {
this.inifile.Clear();
foreach (KeyValuePair<String, Dictionary<String, String>> item in config) {
String key = item.Key;
if(!key.StartsWith("[")) {
key = "[" + key + "]";
}
if (Regex.Match(key, @"^\[[a-zA-ZäöüÄÖÜ0-9\-_ ]+\]\w*$", RegexOptions.IgnoreCase).Success) {
this.inifile.Add(key, item.Value);
}
}
this.Changed();
}
public Dictionary<String, String> GetSection(String section) {
if(this.inifile.Keys.Contains(section)) {
return this.inifile[section];
}
if(this.inifile.Keys.Contains("["+section+"]")) {
return this.inifile["[" + section + "]"];
}
return new Dictionary<String, String>();
}
/// <summary>
/// Gibt einen einzelnen Wert zurück
/// </summary>
/// <param name="section">Name der Sektion</param>
/// <param name="key">Name des Wertes</param>
/// <returns></returns>
public String GetValue(String section, String key)
{
if (!section.StartsWith("[")) {
section = "[" + section + "]";
}
if (this.cont.Keys.Contains(section)) {
if (this.cont[section].Keys.Contains(key)) {
return this.cont[section][key];
if (this.inifile.Keys.Contains(section)) {
if (this.inifile[section].Keys.Contains(key)) {
return this.inifile[section][key];
}
}
return null;
}
/// <summary>
/// Setzt einen Wert in einer Sektion
/// </summary>
/// <param name="section">Name der Sektion</param>
/// <param name="key">Name des Wertes</param>
/// <param name="value">Wert</param>
public void SetValue(String section, String key, String value)
{
if (!section.StartsWith("[")) {
section = "[" + section + "]";
}
if (this.cont.Keys.Contains(section)) {
if (this.cont[section].Keys.Contains(key)) {
this.cont[section][key] = value;
if (this.inifile.Keys.Contains(section)) {
if (this.inifile[section].Keys.Contains(key)) {
this.inifile[section][key] = value;
} else {
this.cont[section].Add(key, value);
this.inifile[section].Add(key, value);
}
} else {
Dictionary<String, String> sub = new Dictionary<String, String> {
{ key, value }
};
this.cont.Add(section, sub);
this.inifile.Add(section, sub);
}
this.Changed();
}
@@ -125,7 +182,7 @@ namespace BlubbFish.Utils
file.BaseStream.SetLength(0);
file.BaseStream.Flush();
file.BaseStream.Seek(0, SeekOrigin.Begin);
foreach (KeyValuePair<String, Dictionary<String, String>> cap in this.cont) {
foreach (KeyValuePair<String, Dictionary<String, String>> cap in this.inifile) {
file.WriteLine(cap.Key);
foreach (KeyValuePair<String, String> sub in cap.Value) {
file.WriteLine(sub.Key + "=" + sub.Value);
@@ -146,10 +203,10 @@ namespace BlubbFish.Utils
if (!name.StartsWith("[")) {
name = "[" + name + "]";
}
if (this.cont.Keys.Contains(name)) {
if (this.inifile.Keys.Contains(name)) {
return false;
}
this.cont.Add(name, new Dictionary<String, String>());
this.inifile.Add(name, new Dictionary<String, String>());
this.Changed();
return true;
}
@@ -164,10 +221,10 @@ namespace BlubbFish.Utils
if (!name.StartsWith("[")) {
name = "[" + name + "]";
}
if (!this.cont.Keys.Contains(name)) {
if (!this.inifile.Keys.Contains(name)) {
return false;
}
this.cont.Remove(name);
this.inifile.Remove(name);
this.Changed();
return false;
}
+3 -3
View File
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Utils")]
[assembly: AssemblyCopyright("Copyright © 2014 - 24.04.2017")]
[assembly: AssemblyCopyright("Copyright © 2014 - 22.12.2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.4.1")]
[assembly: AssemblyFileVersion("1.0.4.1")]
[assembly: AssemblyVersion("1.0.6.0")]
[assembly: AssemblyFileVersion("1.0.6.0")]
+3 -2
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -9,8 +9,9 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>BlubbFish.Utils</RootNamespace>
<AssemblyName>Utils</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Binary file not shown.