From a283fe7c9e76a03735dbfa3d17f8f4a34cfea8e8 Mon Sep 17 00:00:00 2001 From: chylex <contact@chylex.com> Date: Mon, 29 Jul 2024 17:02:09 +0200 Subject: [PATCH] Reformat code --- AppCalc/App.cs | 366 +++++++++--------- AppCalc/Operators.cs | 44 +-- AppConv/App.cs | 70 ++-- AppConv/General/DecimalUnitConverterBase.cs | 178 ++++----- AppConv/General/DecimalUnitConverterSimple.cs | 84 ++-- AppConv/General/IUnitType.cs | 8 +- AppConv/Units/Angle.cs | 37 +- AppConv/Units/Area.cs | 89 +++-- AppConv/Units/Length.cs | 121 +++--- AppConv/Units/Radix.cs | 198 +++++----- AppConv/Units/Storage.cs | 38 +- AppConv/Units/Temperature.cs | 156 ++++---- AppConv/Units/Volume.cs | 46 ++- AppConv/Units/Weight.cs | 36 +- AppConv/Utils/RadixConversion.cs | 116 +++--- AppConv/Utils/SI.cs | 142 +++---- AppMeme/App.cs | 38 +- AppWindows/App.cs | 36 +- AppWindows/Handlers/HandlerApps.cs | 89 +++-- AppWindows/Handlers/HandlerProcesses.cs | 70 ++-- AppWindows/IHandler.cs | 10 +- Base/Command.cs | 56 ++- Base/CommandEventArgs.cs | 14 +- Base/CommandException.cs | 10 +- Base/IApp.cs | 12 +- Base/MatchConfidence.cs | 14 +- Base/Utils/RegexUtils.cs | 36 +- Query/Controls/QueryHistoryLog.cs | 67 ++-- Query/Controls/QueryTextBox.cs | 246 ++++++------ Query/Core/CommandHistory.cs | 42 +- Query/Core/CommandProcessor.cs | 98 ++--- Query/Core/KeyboardHook.cs | 94 ++--- Query/MainForm.cs | 218 +++++------ Query/MainForm.resx | 174 ++++----- Query/Program.cs | 18 +- 35 files changed, 1529 insertions(+), 1542 deletions(-) diff --git a/AppCalc/App.cs b/AppCalc/App.cs index f51d0cc..5f77983 100644 --- a/AppCalc/App.cs +++ b/AppCalc/App.cs @@ -6,230 +6,236 @@ using System.Text; using System.Text.RegularExpressions; using Base; -namespace AppCalc{ - public sealed class App : IApp{ - private static readonly Regex RegexValidCharacters = new Regex(@"^[\s\d\.\-+*/%^]+$", RegexOptions.Compiled); - private static readonly Regex RegexTokenSeparator = new Regex(@"((?<!\d)-?(((\d+)?\.\d+(\.\.\.)?)|\d+))|[^\d\s]", RegexOptions.ExplicitCapture | RegexOptions.Compiled); - private static readonly Regex RegexRecurringDecimal = new Regex(@"\b(?:(\d+?\.\d{0,}?)(\d+?)\2+|([\d+?\.]*))\b", RegexOptions.Compiled); +namespace AppCalc { + public sealed class App : IApp { + private static readonly Regex RegexValidCharacters = new Regex(@"^[\s\d\.\-+*/%^]+$", RegexOptions.Compiled); + private static readonly Regex RegexTokenSeparator = new Regex(@"((?<!\d)-?(((\d+)?\.\d+(\.\.\.)?)|\d+))|[^\d\s]", RegexOptions.ExplicitCapture | RegexOptions.Compiled); + private static readonly Regex RegexRecurringDecimal = new Regex(@"\b(?:(\d+?\.\d{0,}?)(\d+?)\2+|([\d+?\.]*))\b", RegexOptions.Compiled); - private static readonly char[] SplitSpace = { ' ' }; + private static readonly char[] SplitSpace = { ' ' }; - public string[] RecognizedNames => new string[]{ - "calc", - "calculate", - "calculator" - }; - - public MatchConfidence GetConfidence(Command cmd){ - return RegexValidCharacters.IsMatch(cmd.Text) ? MatchConfidence.Possible : MatchConfidence.None; - } + public string[] RecognizedNames => new string[] { + "calc", + "calculate", + "calculator" + }; - string IApp.ProcessCommand(Command cmd){ - return ParseAndProcessExpression(cmd.Text); - } + public MatchConfidence GetConfidence(Command cmd) { + return RegexValidCharacters.IsMatch(cmd.Text) ? MatchConfidence.Possible : MatchConfidence.None; + } - private static string ParseAndProcessExpression(string text){ - // text = RegexBalancedParentheses.Replace(text, match => " "+ParseAndProcessExpression(match.Groups[1].Value)+" "); // parens are handled as apps + string IApp.ProcessCommand(Command cmd) { + return ParseAndProcessExpression(cmd.Text); + } - string expression = RegexTokenSeparator.Replace(text, match => " "+match.Value+" "); - string[] tokens = expression.Split(SplitSpace, StringSplitOptions.RemoveEmptyEntries); + private static string ParseAndProcessExpression(string text) { + // text = RegexBalancedParentheses.Replace(text, match => " "+ParseAndProcessExpression(match.Groups[1].Value)+" "); // parens are handled as apps - decimal result = ProcessExpression(tokens); + string expression = RegexTokenSeparator.Replace(text, match => " " + match.Value + " "); + string[] tokens = expression.Split(SplitSpace, StringSplitOptions.RemoveEmptyEntries); - if (Math.Abs(result-decimal.Round(result)) < 0.0000000000000000000000000010M){ - return decimal.Round(result).ToString(CultureInfo.InvariantCulture); - } + decimal result = ProcessExpression(tokens); - string res = result.ToString(CultureInfo.InvariantCulture); - bool hasDecimalPoint = decimal.Round(result) != result; + if (Math.Abs(result - decimal.Round(result)) < 0.0000000000000000000000000010M) { + return decimal.Round(result).ToString(CultureInfo.InvariantCulture); + } - if (res.Length == 30 && hasDecimalPoint && res.IndexOf('.') < 15){ // Length 30 uses all available bytes - res = res.Substring(0, res.Length-1); + string res = result.ToString(CultureInfo.InvariantCulture); + bool hasDecimalPoint = decimal.Round(result) != result; - Match match = RegexRecurringDecimal.Match(res); + if (res.Length == 30 && hasDecimalPoint && res.IndexOf('.') < 15) { // Length 30 uses all available bytes + res = res.Substring(0, res.Length - 1); - if (match.Groups[2].Success){ - string repeating = match.Groups[2].Value; + Match match = RegexRecurringDecimal.Match(res); - StringBuilder build = new StringBuilder(34); - build.Append(match.Groups[1].Value); + if (match.Groups[2].Success) { + string repeating = match.Groups[2].Value; - do{ - build.Append(repeating); - }while(build.Length+repeating.Length <= res.Length); + StringBuilder build = new StringBuilder(34); + build.Append(match.Groups[1].Value); - return build.Append(repeating.Substring(0, 1+build.Length-res.Length)).Append("...").ToString(); - } - } - else if (hasDecimalPoint){ - res = res.TrimEnd('0'); - } + do { + build.Append(repeating); + } while (build.Length + repeating.Length <= res.Length); - return res; - } + return build.Append(repeating.Substring(0, 1 + build.Length - res.Length)).Append("...").ToString(); + } + } + else if (hasDecimalPoint) { + res = res.TrimEnd('0'); + } - private static decimal ProcessExpression(string[] tokens){ - bool isPostfix; + return res; + } - if (tokens.Length < 3){ - isPostfix = false; - } - else{ - try{ - ParseNumberToken(tokens[0]); - }catch(CommandException){ - throw new CommandException("Prefix notation is not supported."); - } + private static decimal ProcessExpression(string[] tokens) { + bool isPostfix; - try{ - ParseNumberToken(tokens[1]); - isPostfix = true; - }catch(CommandException){ - isPostfix = false; - } - } + if (tokens.Length < 3) { + isPostfix = false; + } + else { + try { + ParseNumberToken(tokens[0]); + } catch (CommandException) { + throw new CommandException("Prefix notation is not supported."); + } - if (isPostfix){ - return ProcessPostfixExpression(tokens); - } - else{ - return ProcessPostfixExpression(ConvertInfixToPostfix(tokens)); - } - } + try { + ParseNumberToken(tokens[1]); + isPostfix = true; + } catch (CommandException) { + isPostfix = false; + } + } - private static IEnumerable<string> ConvertInfixToPostfix(IEnumerable<string> tokens){ - Stack<string> operators = new Stack<string>(); + if (isPostfix) { + return ProcessPostfixExpression(tokens); + } + else { + return ProcessPostfixExpression(ConvertInfixToPostfix(tokens)); + } + } - foreach(string token in tokens){ - if (Operators.With2Operands.Contains(token)){ - int currentPrecedence = Operators.GetPrecedence(token); - bool currentRightAssociative = Operators.IsRightAssociative(token); + private static IEnumerable<string> ConvertInfixToPostfix(IEnumerable<string> tokens) { + Stack<string> operators = new Stack<string>(); - while(operators.Count > 0){ - int topPrecedence = Operators.GetPrecedence(operators.Peek()); + foreach (string token in tokens) { + if (Operators.With2Operands.Contains(token)) { + int currentPrecedence = Operators.GetPrecedence(token); + bool currentRightAssociative = Operators.IsRightAssociative(token); - if ((currentRightAssociative && currentPrecedence < topPrecedence) || (!currentRightAssociative && currentPrecedence <= topPrecedence)){ - yield return operators.Pop(); - } - else{ - break; - } - } + while (operators.Count > 0) { + int topPrecedence = Operators.GetPrecedence(operators.Peek()); - operators.Push(token); - } - else{ - yield return ParseNumberToken(token).ToString(CultureInfo.InvariantCulture); - } - } + if ((currentRightAssociative && currentPrecedence < topPrecedence) || (!currentRightAssociative && currentPrecedence <= topPrecedence)) { + yield return operators.Pop(); + } + else { + break; + } + } - while(operators.Count > 0){ - yield return operators.Pop(); - } - } + operators.Push(token); + } + else { + yield return ParseNumberToken(token).ToString(CultureInfo.InvariantCulture); + } + } - private static decimal ProcessPostfixExpression(IEnumerable<string> tokens){ - Stack<decimal> stack = new Stack<decimal>(); + while (operators.Count > 0) { + yield return operators.Pop(); + } + } - foreach(string token in tokens){ - decimal operand1, operand2; + private static decimal ProcessPostfixExpression(IEnumerable<string> tokens) { + Stack<decimal> stack = new Stack<decimal>(); - if (token == "-" && stack.Count == 1){ - operand2 = stack.Pop(); - operand1 = 0M; - } - else if (Operators.With2Operands.Contains(token)){ - if (stack.Count < 2){ - throw new CommandException("Incorrect syntax, not enough numbers in stack."); - } + foreach (string token in tokens) { + decimal operand1, operand2; - operand2 = stack.Pop(); - operand1 = stack.Pop(); - } - else{ - operand1 = operand2 = 0M; - } + if (token == "-" && stack.Count == 1) { + operand2 = stack.Pop(); + operand1 = 0M; + } + else if (Operators.With2Operands.Contains(token)) { + if (stack.Count < 2) { + throw new CommandException("Incorrect syntax, not enough numbers in stack."); + } - switch(token){ - case "+": stack.Push(operand1+operand2); break; - case "-": stack.Push(operand1-operand2); break; - case "*": stack.Push(operand1*operand2); break; - - case "/": - if (operand2 == 0M){ - throw new CommandException("Cannot divide by zero."); - } + operand2 = stack.Pop(); + operand1 = stack.Pop(); + } + else { + operand1 = operand2 = 0M; + } - stack.Push(operand1/operand2); - break; + switch (token) { + case "+": + stack.Push(operand1 + operand2); + break; + case "-": + stack.Push(operand1 - operand2); + break; + case "*": + stack.Push(operand1 * operand2); + break; - case "%": - if (operand2 == 0M){ - throw new CommandException("Cannot divide by zero."); - } + case "/": + if (operand2 == 0M) { + throw new CommandException("Cannot divide by zero."); + } - stack.Push(operand1%operand2); - break; + stack.Push(operand1 / operand2); + break; - case "^": - if (operand1 == 0M && operand2 == 0M){ - throw new CommandException("Cannot evaluate 0 to the power of 0."); - } - else if (operand1 < 0M && Math.Abs(operand2) < 1M){ - throw new CommandException("Cannot evaluate a root of a negative number."); - } + case "%": + if (operand2 == 0M) { + throw new CommandException("Cannot divide by zero."); + } - try{ - stack.Push((decimal)Math.Pow((double)operand1, (double)operand2)); - }catch(OverflowException ex){ - throw new CommandException("Number overflow.", ex); - } + stack.Push(operand1 % operand2); + break; - break; + case "^": + if (operand1 == 0M && operand2 == 0M) { + throw new CommandException("Cannot evaluate 0 to the power of 0."); + } + else if (operand1 < 0M && Math.Abs(operand2) < 1M) { + throw new CommandException("Cannot evaluate a root of a negative number."); + } - default: - stack.Push(ParseNumberToken(token)); - break; - } - } + try { + stack.Push((decimal) Math.Pow((double) operand1, (double) operand2)); + } catch (OverflowException ex) { + throw new CommandException("Number overflow.", ex); + } - if (stack.Count != 1){ - throw new CommandException("Incorrect syntax, too many numbers in stack."); - } + break; - return stack.Pop(); - } + default: + stack.Push(ParseNumberToken(token)); + break; + } + } - private static decimal ParseNumberToken(string token){ - string str = token; + if (stack.Count != 1) { + throw new CommandException("Incorrect syntax, too many numbers in stack."); + } - if (str.StartsWith("-.")){ - str = "-0"+str.Substring(1); - } - else if (str[0] == '.'){ - str = "0"+str; - } + return stack.Pop(); + } - if (str.EndsWith("...")){ - string truncated = str.Substring(0, str.Length-3); + private static decimal ParseNumberToken(string token) { + string str = token; - if (truncated.IndexOf('.') != -1){ - str = truncated; - } - } + if (str.StartsWith("-.")) { + str = "-0" + str.Substring(1); + } + else if (str[0] == '.') { + str = "0" + str; + } - decimal value; + if (str.EndsWith("...")) { + string truncated = str.Substring(0, str.Length - 3); - if (decimal.TryParse(str, NumberStyles.Float, CultureInfo.InvariantCulture, out value)){ - if (value.ToString(CultureInfo.InvariantCulture) != str){ - throw new CommandException("Provided number is outside of decimal range: "+token); - } + if (truncated.IndexOf('.') != -1) { + str = truncated; + } + } - return value; - } - else{ - throw new CommandException("Invalid token, expected a number: "+token); - } - } - } + decimal value; + + if (decimal.TryParse(str, NumberStyles.Float, CultureInfo.InvariantCulture, out value)) { + if (value.ToString(CultureInfo.InvariantCulture) != str) { + throw new CommandException("Provided number is outside of decimal range: " + token); + } + + return value; + } + else { + throw new CommandException("Invalid token, expected a number: " + token); + } + } + } } diff --git a/AppCalc/Operators.cs b/AppCalc/Operators.cs index 2bb7b38..9627583 100644 --- a/AppCalc/Operators.cs +++ b/AppCalc/Operators.cs @@ -1,28 +1,28 @@ -namespace AppCalc{ - internal static class Operators{ - internal static readonly string[] With2Operands = { "+", "-", "*", "/", "%", "^" }; +namespace AppCalc { + static class Operators { + internal static readonly string[] With2Operands = { "+", "-", "*", "/", "%", "^" }; - internal static int GetPrecedence(string token){ - switch(token){ - case "^": - return 4; + internal static int GetPrecedence(string token) { + switch (token) { + case "^": + return 4; - case "*": - case "/": - case "%": - return 3; + case "*": + case "/": + case "%": + return 3; - case "+": - case "-": - return 2; + case "+": + case "-": + return 2; - default: - return 1; - } - } + default: + return 1; + } + } - internal static bool IsRightAssociative(string token){ - return token == "^"; - } - } + internal static bool IsRightAssociative(string token) { + return token == "^"; + } + } } diff --git a/AppConv/App.cs b/AppConv/App.cs index cbc6523..7ea09ad 100644 --- a/AppConv/App.cs +++ b/AppConv/App.cs @@ -4,46 +4,46 @@ using AppConv.General; using AppConv.Units; using Base; -namespace AppConv{ - public sealed class App : IApp{ - private static readonly IUnitType[] Processors = { - new Temperature(), - new Weight(), - new Length(), - new Area(), - new Volume(), - new Angle(), - new Storage(), - new Radix() - }; +namespace AppConv { + public sealed class App : IApp { + private static readonly IUnitType[] Processors = { + new Temperature(), + new Weight(), + new Length(), + new Area(), + new Volume(), + new Angle(), + new Storage(), + new Radix() + }; - public string[] RecognizedNames => new string[]{ - "conv", - "convert" - }; - - public MatchConfidence GetConfidence(Command cmd){ - return cmd.Text.IndexOf(" to ", StringComparison.InvariantCultureIgnoreCase) != -1 ? MatchConfidence.Possible : MatchConfidence.None; - } + public string[] RecognizedNames => new string[] { + "conv", + "convert" + }; - public string ProcessCommand(Command cmd){ - string[] data = cmd.Text.Split(new string[]{ " to " }, 2, StringSplitOptions.None); + public MatchConfidence GetConfidence(Command cmd) { + return cmd.Text.IndexOf(" to ", StringComparison.InvariantCultureIgnoreCase) != -1 ? MatchConfidence.Possible : MatchConfidence.None; + } - string src = data[0].Trim(); - string dst = data[1].Trim(); + public string ProcessCommand(Command cmd) { + string[] data = cmd.Text.Split(new string[] { " to " }, 2, StringSplitOptions.None); - if (src.Length == 0 || dst.Length == 0){ - throw new CommandException("Unrecognized conversion app syntax."); - } + string src = data[0].Trim(); + string dst = data[1].Trim(); - string result = string.Empty; - IUnitType used = Processors.FirstOrDefault(processor => processor.TryProcess(src, dst, out result)); + if (src.Length == 0 || dst.Length == 0) { + throw new CommandException("Unrecognized conversion app syntax."); + } - if (used == null){ - throw new CommandException("Could not recognize conversion units."); - } + string result = string.Empty; + IUnitType used = Processors.FirstOrDefault(processor => processor.TryProcess(src, dst, out result)); - return result; - } - } + if (used == null) { + throw new CommandException("Could not recognize conversion units."); + } + + return result; + } + } } diff --git a/AppConv/General/DecimalUnitConverterBase.cs b/AppConv/General/DecimalUnitConverterBase.cs index fa40fb7..ab4db43 100644 --- a/AppConv/General/DecimalUnitConverterBase.cs +++ b/AppConv/General/DecimalUnitConverterBase.cs @@ -3,124 +3,112 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; -namespace AppConv.General{ - internal abstract class DecimalUnitConverterBase<T> : IUnitType where T : struct{ - internal sealed class DecimalFuncMap : Dictionary<T, Func<decimal, decimal>>{ - public DecimalFuncMap(){} - public DecimalFuncMap(int capacity) : base(capacity){} - } +namespace AppConv.General { + abstract class DecimalUnitConverterBase<T> : IUnitType where T : struct { + internal sealed class DecimalFuncMap : Dictionary<T, Func<decimal, decimal>> { + public DecimalFuncMap() {} + public DecimalFuncMap(int capacity) : base(capacity) {} + } - internal sealed class NameMap : Dictionary<string, T>{ - public NameMap(){} - public NameMap(int capacity) : base(capacity){} - } + internal sealed class NameMap : Dictionary<string, T> { + public NameMap() {} + public NameMap(int capacity) : base(capacity) {} + } - protected abstract NameMap Names { get; } - protected abstract DecimalFuncMap ConvertTo { get; } - protected abstract DecimalFuncMap ConvertFrom { get; } + protected abstract NameMap Names { get; } + protected abstract DecimalFuncMap ConvertTo { get; } + protected abstract DecimalFuncMap ConvertFrom { get; } - protected virtual int Precision{ - get{ - return 0; - } - } + protected virtual int Precision => 0; - protected virtual bool CaseCheck{ - get{ - return false; - } - } + protected virtual bool CaseCheck => false; - protected virtual NumberStyles NumberStyle{ - get{ - return NumberStyles.Float & ~NumberStyles.AllowLeadingSign; - } - } + protected virtual NumberStyles NumberStyle => NumberStyles.Float & ~NumberStyles.AllowLeadingSign; - protected virtual string ProcessSrc(string src){ - return src; - } + protected virtual string ProcessSrc(string src) { + return src; + } - protected virtual string ProcessDst(string dst){ - return dst; - } + protected virtual string ProcessDst(string dst) { + return dst; + } - protected abstract bool IsValueInvalid(T value); + protected abstract bool IsValueInvalid(T value); - protected virtual decimal Convert(decimal value, T from, T to){ - return ConvertFrom[to](ConvertTo[from](value)); - } + protected virtual decimal Convert(decimal value, T from, T to) { + return ConvertFrom[to](ConvertTo[from](value)); + } - protected virtual string Format(decimal value){ - if (Precision > 0){ - decimal truncated = decimal.Truncate(value); + protected virtual string Format(decimal value) { + if (Precision > 0) { + decimal truncated = decimal.Truncate(value); - if (value == truncated){ - return truncated.ToString(CultureInfo.InvariantCulture); - } - } + if (value == truncated) { + return truncated.ToString(CultureInfo.InvariantCulture); + } + } - int decimalPlaces = Precision; + int decimalPlaces = Precision; - if (Math.Abs(value) < 1M){ - double fractionalPart = (double)Math.Abs(value%1M); - int fractionalZeroCount = -(int)Math.Ceiling(Math.Log(fractionalPart, 10D)); + if (Math.Abs(value) < 1M) { + double fractionalPart = (double) Math.Abs(value % 1M); + int fractionalZeroCount = -(int) Math.Ceiling(Math.Log(fractionalPart, 10D)); - decimalPlaces = Math.Min(28, fractionalZeroCount+Precision); - } + decimalPlaces = Math.Min(28, fractionalZeroCount + Precision); + } - string result = decimal.Round(value, decimalPlaces, MidpointRounding.ToEven).ToString(CultureInfo.InvariantCulture); + string result = decimal.Round(value, decimalPlaces, MidpointRounding.ToEven).ToString(CultureInfo.InvariantCulture); - if (decimalPlaces > 0){ - result = result.TrimEnd('0').TrimEnd('.'); - } + if (decimalPlaces > 0) { + result = result.TrimEnd('0').TrimEnd('.'); + } - return result; - } - - public bool TryProcess(string src, string dst, out string result){ - src = ProcessSrc(src); - dst = ProcessDst(dst); + return result; + } - KeyValuePair<string, T>[] pairs = new KeyValuePair<string, T>[2]; + public bool TryProcess(string src, string dst, out string result) { + src = ProcessSrc(src); + dst = ProcessDst(dst); - for(int index = 0; index < 2; index++){ - string str = index == 0 ? src : dst; + var pairs = new KeyValuePair<string, T>[2]; - if (CaseCheck){ - List<KeyValuePair<string, T>> list = Names.Where(kvp => str.EndsWith(kvp.Key, StringComparison.InvariantCultureIgnoreCase) && (str.Length == kvp.Key.Length || !char.IsLetter(str[str.Length-kvp.Key.Length-1]))).ToList(); + for (int index = 0; index < 2; index++) { + string str = index == 0 ? src : dst; - if (list.Count == 1){ - pairs[index] = list[0]; - } - else{ - pairs[index] = list.FirstOrDefault(kvp => str.EndsWith(kvp.Key, StringComparison.InvariantCulture)); - } - } - else{ - pairs[index] = Names.FirstOrDefault(kvp => str.EndsWith(kvp.Key, StringComparison.InvariantCultureIgnoreCase) && (str.Length == kvp.Key.Length || !char.IsLetter(str[str.Length-kvp.Key.Length-1]))); - } + if (CaseCheck) { + List<KeyValuePair<string, T>> list = Names.Where(kvp => str.EndsWith(kvp.Key, StringComparison.InvariantCultureIgnoreCase) && (str.Length == kvp.Key.Length || !char.IsLetter(str[str.Length - kvp.Key.Length - 1]))).ToList(); - if (IsValueInvalid(pairs[index].Value)){ - result = string.Empty; - return false; - } + if (list.Count == 1) { + pairs[index] = list[0]; + } + else { + pairs[index] = list.FirstOrDefault(kvp => str.EndsWith(kvp.Key, StringComparison.InvariantCulture)); + } + } + else { + pairs[index] = Names.FirstOrDefault(kvp => str.EndsWith(kvp.Key, StringComparison.InvariantCultureIgnoreCase) && (str.Length == kvp.Key.Length || !char.IsLetter(str[str.Length - kvp.Key.Length - 1]))); + } - if (index == 0){ - src = src.Substring(0, src.Length-pairs[index].Key.Length).TrimEnd(); - } - } + if (IsValueInvalid(pairs[index].Value)) { + result = string.Empty; + return false; + } - decimal value; + if (index == 0) { + src = src.Substring(0, src.Length - pairs[index].Key.Length).TrimEnd(); + } + } - if (decimal.TryParse(src, NumberStyle, CultureInfo.InvariantCulture, out value)){ - result = Format(Convert(value, pairs[0].Value, pairs[1].Value)); - return true; - } - else{ - result = string.Empty; - return false; - } - } - } + decimal value; + + if (decimal.TryParse(src, NumberStyle, CultureInfo.InvariantCulture, out value)) { + result = Format(Convert(value, pairs[0].Value, pairs[1].Value)); + return true; + } + else { + result = string.Empty; + return false; + } + } + } } diff --git a/AppConv/General/DecimalUnitConverterSimple.cs b/AppConv/General/DecimalUnitConverterSimple.cs index 4e14561..7404d44 100644 --- a/AppConv/General/DecimalUnitConverterSimple.cs +++ b/AppConv/General/DecimalUnitConverterSimple.cs @@ -1,66 +1,46 @@ using System; -namespace AppConv.General{ - internal abstract class DecimalUnitConverterSimple<T> : DecimalUnitConverterBase<T> where T : struct{ - // ReSharper disable once StaticMemberInGenericType - private static readonly Func<decimal, decimal> FuncNoChange = val => val; +namespace AppConv.General { + abstract class DecimalUnitConverterSimple<T> : DecimalUnitConverterBase<T> where T : struct { + // ReSharper disable once StaticMemberInGenericType + private static readonly Func<decimal, decimal> FuncNoChange = val => val; - private readonly NameMap UnitNames = new NameMap(); - private readonly DecimalFuncMap MapFrom = new DecimalFuncMap(); - private readonly DecimalFuncMap MapTo = new DecimalFuncMap(); + private readonly NameMap UnitNames = new NameMap(); + private readonly DecimalFuncMap MapFrom = new DecimalFuncMap(); + private readonly DecimalFuncMap MapTo = new DecimalFuncMap(); - private int invalidUnitObject = -1; - - protected sealed override NameMap Names{ - get{ - return UnitNames; - } - } + private int invalidUnitObject = -1; - protected sealed override DecimalFuncMap ConvertFrom{ - get{ - return MapFrom; - } - } + protected sealed override NameMap Names => UnitNames; - protected sealed override DecimalFuncMap ConvertTo{ - get{ - return MapTo; - } - } + protected sealed override DecimalFuncMap ConvertFrom => MapFrom; - protected override int Precision{ - get{ - return 3; - } - } + protected sealed override DecimalFuncMap ConvertTo => MapTo; - protected override bool CaseCheck{ - get{ - return true; - } - } + protected override int Precision => 3; - protected void AddUnit(T unitObject, params string[] names){ - foreach(string name in names){ - UnitNames.Add(name, unitObject); - } + protected override bool CaseCheck => true; - ConvertFrom.Add(unitObject, FuncNoChange); - ConvertTo.Add(unitObject, FuncNoChange); - } + protected void AddUnit(T unitObject, params string[] names) { + foreach (string name in names) { + UnitNames.Add(name, unitObject); + } - protected void SetUnitFactor(T unitObject, decimal factor){ - ConvertFrom[unitObject] = val => val*factor; - ConvertTo[unitObject] = val => val/factor; - } + ConvertFrom.Add(unitObject, FuncNoChange); + ConvertTo.Add(unitObject, FuncNoChange); + } - protected void SetInvalidUnitObject(T unitObject){ - this.invalidUnitObject = (int)(object)unitObject; - } + protected void SetUnitFactor(T unitObject, decimal factor) { + ConvertFrom[unitObject] = val => val * factor; + ConvertTo[unitObject] = val => val / factor; + } - protected sealed override bool IsValueInvalid(T value){ - return (int)(object)value == invalidUnitObject; - } - } + protected void SetInvalidUnitObject(T unitObject) { + invalidUnitObject = (int) (object) unitObject; + } + + protected sealed override bool IsValueInvalid(T value) { + return (int) (object) value == invalidUnitObject; + } + } } diff --git a/AppConv/General/IUnitType.cs b/AppConv/General/IUnitType.cs index 9dcf3f7..2a9f6d5 100644 --- a/AppConv/General/IUnitType.cs +++ b/AppConv/General/IUnitType.cs @@ -1,5 +1,5 @@ -namespace AppConv.General{ - internal interface IUnitType{ - bool TryProcess(string src, string dst, out string result); - } +namespace AppConv.General { + interface IUnitType { + bool TryProcess(string src, string dst, out string result); + } } diff --git a/AppConv/Units/Angle.cs b/AppConv/Units/Angle.cs index 2d949ab..754ae97 100644 --- a/AppConv/Units/Angle.cs +++ b/AppConv/Units/Angle.cs @@ -2,28 +2,27 @@ using AppConv.General; namespace AppConv.Units { - internal class Angle : DecimalUnitConverterSimple<Angle.Units>{ - internal enum Units{ - Invalid = 0, Degree, Radian, Gradian - } + class Angle : DecimalUnitConverterSimple<Angle.Units> { + internal enum Units { + Invalid = 0, + Degree, + Radian, + Gradian + } - protected override int Precision{ - get{ - return 4; - } - } + protected override int Precision => 4; - public Angle(){ - AddUnit(Units.Degree, "deg", "degree", "degrees", "arc degree", "arc degrees", "arcdegree", "arcdegrees", "°"); - AddUnit(Units.Radian, "rad", "radian", "radians"); - AddUnit(Units.Gradian, "grad", "grade", "gon", "gradian", "gradians"); + public Angle() { + AddUnit(Units.Degree, "deg", "degree", "degrees", "arc degree", "arc degrees", "arcdegree", "arcdegrees", "°"); + AddUnit(Units.Radian, "rad", "radian", "radians"); + AddUnit(Units.Gradian, "grad", "grade", "gon", "gradian", "gradians"); - SetUnitFactor(Units.Radian, (decimal)Math.PI/180M); - SetUnitFactor(Units.Gradian, 10M/9M); + SetUnitFactor(Units.Radian, (decimal) Math.PI / 180M); + SetUnitFactor(Units.Gradian, 10M / 9M); - SetInvalidUnitObject(Units.Invalid); - } + SetInvalidUnitObject(Units.Invalid); + } - // TODO convert degree notation 15°24'9" - } + // TODO convert degree notation 15°24'9" + } } diff --git a/AppConv/Units/Area.cs b/AppConv/Units/Area.cs index 4e4efc8..6129157 100644 --- a/AppConv/Units/Area.cs +++ b/AppConv/Units/Area.cs @@ -1,43 +1,58 @@ using AppConv.General; -namespace AppConv.Units{ - internal class Area : DecimalUnitConverterSimple<Area.Units>{ - internal enum Units{ - Invalid = 0, SquareMM, SquareCM, SquareDM, SquareM, SquareKM, SquareMile, SquareYard, SquareFoot, SquareInch, Acre, Centiare, Deciare, Are, Decare, Hectare - } +namespace AppConv.Units { + class Area : DecimalUnitConverterSimple<Area.Units> { + internal enum Units { + Invalid = 0, + SquareMM, + SquareCM, + SquareDM, + SquareM, + SquareKM, + SquareMile, + SquareYard, + SquareFoot, + SquareInch, + Acre, + Centiare, + Deciare, + Are, + Decare, + Hectare + } - public Area(){ - AddUnit(Units.SquareMM, "mm2", "square mm", "square millimeter", "square millimeters", "square millimetre", "square millimetres"); - AddUnit(Units.SquareCM, "cm2", "square cm", "square centimeter", "square centimeters", "square centimetre", "square centimetres"); - AddUnit(Units.SquareDM, "dm2", "square dm", "square decimeter", "square decimeters", "square decimetre", "square decimetres"); - AddUnit(Units.SquareM, "m2", "square m", "square meter", "square meters", "square metre", "square metres"); - AddUnit(Units.SquareKM, "km2", "square km", "square kilometer", "square kilometers", "square kilometre", "square kilometres"); - AddUnit(Units.SquareMile, "mi2", "sq mi", "sq mile", "sq miles", "square mi", "square mile", "square miles"); - AddUnit(Units.SquareYard, "yd2", "sq yd", "sq yard", "sq yards", "square yd", "square yard", "square yards"); - AddUnit(Units.SquareFoot, "ft2", "sq ft", "sq foot", "sq feet", "square ft", "square foot", "square feet"); - AddUnit(Units.SquareInch, "in2", "sq in", "sq inch", "sq inches", "square in", "square inch", "square inches"); - AddUnit(Units.Acre, "ac", "acre", "acres"); - AddUnit(Units.Centiare, "ca", "centiare", "centiares"); - AddUnit(Units.Deciare, "da", "deciare", "deciares"); // da is not canon but w/e - AddUnit(Units.Are, "a", "are", "ares"); - AddUnit(Units.Decare, "daa", "decare", "decares"); - AddUnit(Units.Hectare, "ha", "hectare", "hectares"); + public Area() { + AddUnit(Units.SquareMM, "mm2", "square mm", "square millimeter", "square millimeters", "square millimetre", "square millimetres"); + AddUnit(Units.SquareCM, "cm2", "square cm", "square centimeter", "square centimeters", "square centimetre", "square centimetres"); + AddUnit(Units.SquareDM, "dm2", "square dm", "square decimeter", "square decimeters", "square decimetre", "square decimetres"); + AddUnit(Units.SquareM, "m2", "square m", "square meter", "square meters", "square metre", "square metres"); + AddUnit(Units.SquareKM, "km2", "square km", "square kilometer", "square kilometers", "square kilometre", "square kilometres"); + AddUnit(Units.SquareMile, "mi2", "sq mi", "sq mile", "sq miles", "square mi", "square mile", "square miles"); + AddUnit(Units.SquareYard, "yd2", "sq yd", "sq yard", "sq yards", "square yd", "square yard", "square yards"); + AddUnit(Units.SquareFoot, "ft2", "sq ft", "sq foot", "sq feet", "square ft", "square foot", "square feet"); + AddUnit(Units.SquareInch, "in2", "sq in", "sq inch", "sq inches", "square in", "square inch", "square inches"); + AddUnit(Units.Acre, "ac", "acre", "acres"); + AddUnit(Units.Centiare, "ca", "centiare", "centiares"); + AddUnit(Units.Deciare, "da", "deciare", "deciares"); // da is not canon but w/e + AddUnit(Units.Are, "a", "are", "ares"); + AddUnit(Units.Decare, "daa", "decare", "decares"); + AddUnit(Units.Hectare, "ha", "hectare", "hectares"); - SetUnitFactor(Units.SquareMM, 1E+6M); - SetUnitFactor(Units.SquareCM, 1E+4M); - SetUnitFactor(Units.SquareDM, 1E+2M); - SetUnitFactor(Units.SquareKM, 1E-6M); - SetUnitFactor(Units.SquareMile, 3.8610215854245E-7M); - SetUnitFactor(Units.SquareYard, 1.1959900463011M); - SetUnitFactor(Units.SquareFoot, 10.76391041671M); - SetUnitFactor(Units.SquareInch, 1550.0031000062M); - SetUnitFactor(Units.Acre, 2.4710538146717E-4M); - SetUnitFactor(Units.Deciare, 1E-1M); - SetUnitFactor(Units.Are, 1E-2M); - SetUnitFactor(Units.Decare, 1E-3M); - SetUnitFactor(Units.Hectare, 1E-4M); + SetUnitFactor(Units.SquareMM, 1E+6M); + SetUnitFactor(Units.SquareCM, 1E+4M); + SetUnitFactor(Units.SquareDM, 1E+2M); + SetUnitFactor(Units.SquareKM, 1E-6M); + SetUnitFactor(Units.SquareMile, 3.8610215854245E-7M); + SetUnitFactor(Units.SquareYard, 1.1959900463011M); + SetUnitFactor(Units.SquareFoot, 10.76391041671M); + SetUnitFactor(Units.SquareInch, 1550.0031000062M); + SetUnitFactor(Units.Acre, 2.4710538146717E-4M); + SetUnitFactor(Units.Deciare, 1E-1M); + SetUnitFactor(Units.Are, 1E-2M); + SetUnitFactor(Units.Decare, 1E-3M); + SetUnitFactor(Units.Hectare, 1E-4M); - SetInvalidUnitObject(Units.Invalid); - } - } + SetInvalidUnitObject(Units.Invalid); + } + } } diff --git a/AppConv/Units/Length.cs b/AppConv/Units/Length.cs index f307e53..922987b 100644 --- a/AppConv/Units/Length.cs +++ b/AppConv/Units/Length.cs @@ -4,81 +4,86 @@ using System.Linq; using AppConv.General; using AppConv.Utils; -namespace AppConv.Units{ - internal class Length : DecimalUnitConverterSimple<Length.Units>{ - internal enum Units{ - Invalid = 0, Meter, Inch, Foot, Yard, Mile - } +namespace AppConv.Units { + class Length : DecimalUnitConverterSimple<Length.Units> { + internal enum Units { + Invalid = 0, + Meter, + Inch, + Foot, + Yard, + Mile + } - private static readonly string[] NamesInch = { "in", "inch", "inches", "\"", "''" }; - private static readonly string[] NamesFoot = { "ft", "foot", "feet", "'" }; + private static readonly string[] NamesInch = { "in", "inch", "inches", "\"", "''" }; + private static readonly string[] NamesFoot = { "ft", "foot", "feet", "'" }; - public Length(){ - AddUnit(Units.Meter, "m", "meter", "metre", "meters", "metres"); - AddUnit(Units.Inch, NamesInch); - AddUnit(Units.Foot, NamesFoot); - AddUnit(Units.Yard, "yd", "yard", "yards"); - AddUnit(Units.Mile, "mi", "mile", "miles"); + public Length() { + AddUnit(Units.Meter, "m", "meter", "metre", "meters", "metres"); + AddUnit(Units.Inch, NamesInch); + AddUnit(Units.Foot, NamesFoot); + AddUnit(Units.Yard, "yd", "yard", "yards"); + AddUnit(Units.Mile, "mi", "mile", "miles"); - SetUnitFactor(Units.Inch, 39.37007874M); - SetUnitFactor(Units.Foot, 3.280839895M); - SetUnitFactor(Units.Yard, 1.093613298M); - SetUnitFactor(Units.Mile, 0.0006213711922M); + SetUnitFactor(Units.Inch, 39.37007874M); + SetUnitFactor(Units.Foot, 3.280839895M); + SetUnitFactor(Units.Yard, 1.093613298M); + SetUnitFactor(Units.Mile, 0.0006213711922M); - SetInvalidUnitObject(Units.Invalid); + SetInvalidUnitObject(Units.Invalid); - SI.AddSupport(typeof(Units), Units.Meter, new []{ "m" }, new []{ "meter", "metre", "meters", "metres" }, ConvertFrom, ConvertTo, Names); - } + SI.AddSupport(typeof(Units), Units.Meter, new [] { "m" }, new [] { "meter", "metre", "meters", "metres" }, ConvertFrom, ConvertTo, Names); + } - protected override string ProcessSrc(string src){ - string updatedStr = src; + protected override string ProcessSrc(string src) { + string updatedStr = src; - updatedStr = updatedStr.Replace("&", " "); - updatedStr = updatedStr.Replace(",", " "); + updatedStr = updatedStr.Replace("&", " "); + updatedStr = updatedStr.Replace(",", " "); - string inchName = NamesInch.FirstOrDefault(name => src.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1); + string inchName = NamesInch.FirstOrDefault(name => src.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1); - if (inchName == null){ - return src; - } + if (inchName == null) { + return src; + } - int inchIndex = src.IndexOf(inchName, StringComparison.OrdinalIgnoreCase); - updatedStr = updatedStr.Remove(inchIndex, inchName.Length).Insert(inchIndex, new string(' ', inchName.Length)); + int inchIndex = src.IndexOf(inchName, StringComparison.OrdinalIgnoreCase); + updatedStr = updatedStr.Remove(inchIndex, inchName.Length).Insert(inchIndex, new string(' ', inchName.Length)); - string footName = NamesFoot.FirstOrDefault(name => updatedStr.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1); + string footName = NamesFoot.FirstOrDefault(name => updatedStr.IndexOf(name, StringComparison.OrdinalIgnoreCase) != -1); - if (footName == null){ - return src; - } + if (footName == null) { + return src; + } - int footIndex = updatedStr.IndexOf(footName, StringComparison.OrdinalIgnoreCase); - updatedStr = updatedStr.Remove(footIndex, footName.Length).Insert(footIndex, new string(' ', footName.Length)); + int footIndex = updatedStr.IndexOf(footName, StringComparison.OrdinalIgnoreCase); + updatedStr = updatedStr.Remove(footIndex, footName.Length).Insert(footIndex, new string(' ', footName.Length)); - string[] tokens = updatedStr.Split(new char[]{ ' ' }, StringSplitOptions.RemoveEmptyEntries); - decimal[] numbers = new decimal[2]; - int numberIndex = 0; + string[] tokens = updatedStr.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + decimal[] numbers = new decimal[2]; + int numberIndex = 0; - foreach(string token in tokens){ - decimal number; + foreach (string token in tokens) { + decimal number; - if (decimal.TryParse(token.Trim(), NumberStyle, CultureInfo.InvariantCulture, out number)){ - if (numberIndex < numbers.Length){ - numbers[numberIndex++] = number; - } - else{ - return src; - } - } - } + if (decimal.TryParse(token.Trim(), NumberStyle, CultureInfo.InvariantCulture, out number)) { + if (numberIndex < numbers.Length) { + numbers[numberIndex++] = number; + } + else { + return src; + } + } + } - if (numberIndex != numbers.Length){ - return src; - } + if (numberIndex != numbers.Length) { + return src; + } - decimal srcFeet = numbers[footIndex < inchIndex ? 0 : 1]; - decimal srcInches = numbers[inchIndex < footIndex ? 0 : 1]; + decimal srcFeet = numbers[footIndex < inchIndex ? 0 : 1]; + decimal srcInches = numbers[inchIndex < footIndex ? 0 : 1]; - return srcInches+srcFeet*12M+" in"; - } - } + return srcInches + srcFeet * 12M + " in"; + } + } } diff --git a/AppConv/Units/Radix.cs b/AppConv/Units/Radix.cs index 7fca362..550fb61 100644 --- a/AppConv/Units/Radix.cs +++ b/AppConv/Units/Radix.cs @@ -5,120 +5,120 @@ using AppConv.General; using AppConv.Utils; using Base; -namespace AppConv.Units{ - internal class Radix : IUnitType{ - private static readonly Dictionary<string, int> RadixDescriptions = new Dictionary<string, int>{ - { "UNARY", 1 }, - { "BINARY", 2 }, - { "BIN", 2 }, - { "TERNARY", 3 }, - { "QUATERNARY", 4 }, - { "QUINARY", 5 }, - { "SENARY", 6 }, - { "OCTAL", 8 }, - { "OCT", 8 }, - { "DECIMAL", 10 }, - { "DEC", 10 }, - { "UNDECIMAL", 11 }, - { "DUODECIMAL", 12 }, - { "DOZENAL", 12 }, - { "TRIDECIMAL", 13 }, - { "TETRADECIMAL", 14 }, - { "PENTADECIMAL", 15 }, - { "HEXADECIMAL", 16 }, - { "HEX", 16 } - }; +namespace AppConv.Units { + class Radix : IUnitType { + private static readonly Dictionary<string, int> RadixDescriptions = new Dictionary<string, int> { + { "UNARY", 1 }, + { "BINARY", 2 }, + { "BIN", 2 }, + { "TERNARY", 3 }, + { "QUATERNARY", 4 }, + { "QUINARY", 5 }, + { "SENARY", 6 }, + { "OCTAL", 8 }, + { "OCT", 8 }, + { "DECIMAL", 10 }, + { "DEC", 10 }, + { "UNDECIMAL", 11 }, + { "DUODECIMAL", 12 }, + { "DOZENAL", 12 }, + { "TRIDECIMAL", 13 }, + { "TETRADECIMAL", 14 }, + { "PENTADECIMAL", 15 }, + { "HEXADECIMAL", 16 }, + { "HEX", 16 } + }; - static Radix(){ - for(int baseNumber = 1; baseNumber <= 16; baseNumber++){ - RadixDescriptions.Add("RADIX "+baseNumber, baseNumber); - RadixDescriptions.Add("BASE "+baseNumber, baseNumber); - } - } + static Radix() { + for (int baseNumber = 1; baseNumber <= 16; baseNumber++) { + RadixDescriptions.Add("RADIX " + baseNumber, baseNumber); + RadixDescriptions.Add("BASE " + baseNumber, baseNumber); + } + } - public bool TryProcess(string src, string dst, out string result){ - int targetBase; + public bool TryProcess(string src, string dst, out string result) { + int targetBase; - if (!RadixDescriptions.TryGetValue(dst.ToUpperInvariant(), out targetBase)){ - result = string.Empty; - return false; - } + if (!RadixDescriptions.TryGetValue(dst.ToUpperInvariant(), out targetBase)) { + result = string.Empty; + return false; + } - string contents; - int sourceBase; + string contents; + int sourceBase; - if (!ParseSrc(src, out contents, out sourceBase)){ - result = string.Empty; - return false; - } + if (!ParseSrc(src, out contents, out sourceBase)) { + result = string.Empty; + return false; + } - if (contents[0] == '-'){ - throw new CommandException("Negative numbers are not supported."); - } - else if (!RadixConversion.IsBaseValid(sourceBase) || !RadixConversion.IsBaseValid(targetBase)){ - throw new CommandException("Only bases between 1 and 16 allowed."); - } - else if (!RadixConversion.IsNumberValid(contents, sourceBase)){ - throw new CommandException("The input is not a valid base "+sourceBase+" number: "+contents); - } + if (contents[0] == '-') { + throw new CommandException("Negative numbers are not supported."); + } + else if (!RadixConversion.IsBaseValid(sourceBase) || !RadixConversion.IsBaseValid(targetBase)) { + throw new CommandException("Only bases between 1 and 16 allowed."); + } + else if (!RadixConversion.IsNumberValid(contents, sourceBase)) { + throw new CommandException("The input is not a valid base " + sourceBase + " number: " + contents); + } - if (sourceBase == targetBase){ - result = src; - return true; - } + if (sourceBase == targetBase) { + result = src; + return true; + } - try{ - result = RadixConversion.Do(contents, sourceBase, targetBase); - }catch(OverflowException){ - throw new CommandException("The number has overflown."); - } + try { + result = RadixConversion.Do(contents, sourceBase, targetBase); + } catch (OverflowException) { + throw new CommandException("The number has overflown."); + } - return true; - } + return true; + } - private static bool ParseSrc(string src, out string sourceContent, out int sourceBase){ - if (src.All(chr => chr >= '0' && chr <= '9')){ - sourceContent = src; - sourceBase = 10; - return true; - } + private static bool ParseSrc(string src, out string sourceContent, out int sourceBase) { + if (src.All(chr => chr >= '0' && chr <= '9')) { + sourceContent = src; + sourceBase = 10; + return true; + } - string upper = src.ToUpperInvariant(); + string upper = src.ToUpperInvariant(); - if (upper.StartsWith("0X")){ - sourceContent = upper.Substring(2); - sourceBase = 16; - return true; - } + if (upper.StartsWith("0X")) { + sourceContent = upper.Substring(2); + sourceBase = 16; + return true; + } - if (upper.StartsWith("0B")){ - sourceContent = upper.Substring(2); - sourceBase = 2; - return true; - } + if (upper.StartsWith("0B")) { + sourceContent = upper.Substring(2); + sourceBase = 2; + return true; + } - int fromIndex = src.IndexOf("FROM", StringComparison.InvariantCultureIgnoreCase); + int fromIndex = src.IndexOf("FROM", StringComparison.InvariantCultureIgnoreCase); - if (fromIndex != -1){ - src = src.Remove(fromIndex, 4); - } + if (fromIndex != -1) { + src = src.Remove(fromIndex, 4); + } - foreach(KeyValuePair<string, int> kvp in RadixDescriptions){ - if (src.StartsWith(kvp.Key, StringComparison.InvariantCultureIgnoreCase)){ - sourceContent = src.Substring(kvp.Key.Length).Trim(); - sourceBase = kvp.Value; - return true; - } - else if (src.EndsWith(kvp.Key, StringComparison.InvariantCultureIgnoreCase)){ - sourceContent = src.Substring(0, src.Length-kvp.Key.Length).Trim(); - sourceBase = kvp.Value; - return true; - } - } + foreach (KeyValuePair<string, int> kvp in RadixDescriptions) { + if (src.StartsWith(kvp.Key, StringComparison.InvariantCultureIgnoreCase)) { + sourceContent = src.Substring(kvp.Key.Length).Trim(); + sourceBase = kvp.Value; + return true; + } + else if (src.EndsWith(kvp.Key, StringComparison.InvariantCultureIgnoreCase)) { + sourceContent = src.Substring(0, src.Length - kvp.Key.Length).Trim(); + sourceBase = kvp.Value; + return true; + } + } - sourceContent = string.Empty; - sourceBase = 0; - return false; - } - } + sourceContent = string.Empty; + sourceBase = 0; + return false; + } + } } diff --git a/AppConv/Units/Storage.cs b/AppConv/Units/Storage.cs index 3addcdc..7dfb6b0 100644 --- a/AppConv/Units/Storage.cs +++ b/AppConv/Units/Storage.cs @@ -3,27 +3,29 @@ using AppConv.General; using AppConv.Utils; namespace AppConv.Units { - internal class Storage : DecimalUnitConverterSimple<Storage.Units>{ - internal enum Units{ - Invalid = 0, Byte, Bit - } + class Storage : DecimalUnitConverterSimple<Storage.Units> { + internal enum Units { + Invalid = 0, + Byte, + Bit + } - public Storage(){ - AddUnit(Units.Byte, "B", "byte", "bytes"); - AddUnit(Units.Bit, "b", "bit", "bits"); + public Storage() { + AddUnit(Units.Byte, "B", "byte", "bytes"); + AddUnit(Units.Bit, "b", "bit", "bits"); - SetUnitFactor(Units.Bit, 8M); + SetUnitFactor(Units.Bit, 8M); - SetInvalidUnitObject(Units.Invalid); + SetInvalidUnitObject(Units.Invalid); - SI.ExtededProperties bitConversionProperties = new SI.ExtededProperties{ - FactorPredicate = factor => factor > 0 && factor%3 == 0, - FromFunctionGenerator = exponent => () => (decimal)Math.Pow(1024, -(int)(exponent/3)), - ToFunctionGenerator = exponent => () => (decimal)Math.Pow(1024, (int)(exponent/3)) - }; + var bitConversionProperties = new SI.ExtededProperties { + FactorPredicate = factor => factor > 0 && factor % 3 == 0, + FromFunctionGenerator = exponent => () => (decimal) Math.Pow(1024, -(int) (exponent / 3)), + ToFunctionGenerator = exponent => () => (decimal) Math.Pow(1024, (int) (exponent / 3)) + }; - SI.AddSupportCustom(typeof(Units), Units.Byte, new []{ "B" }, new []{ "byte", "bytes" }, ConvertFrom, ConvertTo, Names, bitConversionProperties); - SI.AddSupportCustom(typeof(Units), Units.Bit, new []{ "b" }, new []{ "bit", "bits" }, ConvertFrom, ConvertTo, Names, bitConversionProperties); - } - } + SI.AddSupportCustom(typeof(Units), Units.Byte, new [] { "B" }, new [] { "byte", "bytes" }, ConvertFrom, ConvertTo, Names, bitConversionProperties); + SI.AddSupportCustom(typeof(Units), Units.Bit, new [] { "b" }, new [] { "bit", "bits" }, ConvertFrom, ConvertTo, Names, bitConversionProperties); + } + } } diff --git a/AppConv/Units/Temperature.cs b/AppConv/Units/Temperature.cs index d7d7a97..90f8d21 100644 --- a/AppConv/Units/Temperature.cs +++ b/AppConv/Units/Temperature.cs @@ -3,100 +3,88 @@ using System.Text.RegularExpressions; using AppConv.General; using Base.Utils; -namespace AppConv.Units{ - internal class Temperature : DecimalUnitConverterBase<Temperature.Units>{ - internal enum Units{ - Invalid = 0, Celsius, Kelvin, Fahrenheit, Rankine, Delisle, Newton, Reaumur, Romer - } +namespace AppConv.Units { + class Temperature : DecimalUnitConverterBase<Temperature.Units> { + internal enum Units { + Invalid = 0, + Celsius, + Kelvin, + Fahrenheit, + Rankine, + Delisle, + Newton, + Reaumur, + Romer + } - private static readonly NameMap UnitNames = new NameMap(21){ - { "C", Units.Celsius }, - { "Celsius", Units.Celsius }, - { "K", Units.Kelvin }, - { "Kelvin", Units.Kelvin }, - { "F", Units.Fahrenheit }, - { "Fahrenheit", Units.Fahrenheit }, - { "R", Units.Rankine }, - { "Ra", Units.Rankine }, - { "Rankine", Units.Rankine }, - { "De", Units.Delisle }, - { "Delisle", Units.Delisle }, - { "N", Units.Newton }, - { "Newton", Units.Newton }, - { "Re", Units.Reaumur }, - { "Ré", Units.Reaumur }, - { "Reaumur", Units.Reaumur }, - { "Réaumur", Units.Reaumur }, - { "Ro", Units.Romer }, - { "Rø", Units.Romer }, - { "Romer", Units.Romer }, - { "Rømer", Units.Romer } - }; + private static readonly NameMap UnitNames = new NameMap(21) { + { "C", Units.Celsius }, + { "Celsius", Units.Celsius }, + { "K", Units.Kelvin }, + { "Kelvin", Units.Kelvin }, + { "F", Units.Fahrenheit }, + { "Fahrenheit", Units.Fahrenheit }, + { "R", Units.Rankine }, + { "Ra", Units.Rankine }, + { "Rankine", Units.Rankine }, + { "De", Units.Delisle }, + { "Delisle", Units.Delisle }, + { "N", Units.Newton }, + { "Newton", Units.Newton }, + { "Re", Units.Reaumur }, + { "Ré", Units.Reaumur }, + { "Reaumur", Units.Reaumur }, + { "Réaumur", Units.Reaumur }, + { "Ro", Units.Romer }, + { "Rø", Units.Romer }, + { "Romer", Units.Romer }, + { "Rømer", Units.Romer } + }; - private static readonly DecimalFuncMap FromCelsius = new DecimalFuncMap(8){ - { Units.Celsius, val => val }, - { Units.Kelvin, val => val+273.15M }, - { Units.Fahrenheit, val => val*1.8M+32M }, - { Units.Rankine, val => (val+273.15M)*1.8M }, - { Units.Delisle, val => (100M-val)*1.5M }, - { Units.Newton, val => val*0.33M }, - { Units.Reaumur, val => val*0.8M }, - { Units.Romer, val => val*0.525M+7.5M } - }; + private static readonly DecimalFuncMap FromCelsius = new DecimalFuncMap(8) { + { Units.Celsius, val => val }, + { Units.Kelvin, val => val + 273.15M }, + { Units.Fahrenheit, val => val * 1.8M + 32M }, + { Units.Rankine, val => (val + 273.15M) * 1.8M }, + { Units.Delisle, val => (100M - val) * 1.5M }, + { Units.Newton, val => val * 0.33M }, + { Units.Reaumur, val => val * 0.8M }, + { Units.Romer, val => val * 0.525M + 7.5M } + }; - private static readonly DecimalFuncMap ToCelsius = new DecimalFuncMap(8){ - { Units.Celsius, val => val }, - { Units.Kelvin, val => val-273.15M }, - { Units.Fahrenheit, val => (val-32M)*5M/9M }, - { Units.Rankine, val => (val-491.67M)*5M/9M }, - { Units.Delisle, val => 100M-val*2M/3M }, - { Units.Newton, val => val*100M/33M }, - { Units.Reaumur, val => val*1.25M }, - { Units.Romer, val => (val-7.5M)*40M/21M } - }; + private static readonly DecimalFuncMap ToCelsius = new DecimalFuncMap(8) { + { Units.Celsius, val => val }, + { Units.Kelvin, val => val - 273.15M }, + { Units.Fahrenheit, val => (val - 32M) * 5M / 9M }, + { Units.Rankine, val => (val - 491.67M) * 5M / 9M }, + { Units.Delisle, val => 100M - val * 2M / 3M }, + { Units.Newton, val => val * 100M / 33M }, + { Units.Reaumur, val => val * 1.25M }, + { Units.Romer, val => (val - 7.5M) * 40M / 21M } + }; - private static readonly Regex RegexCleanup = new Regex("deg(?:rees?)?|°", RegexUtils.Text); + private static readonly Regex RegexCleanup = new Regex("deg(?:rees?)?|°", RegexUtils.Text); - protected override NameMap Names{ - get{ - return UnitNames; - } - } + protected override NameMap Names => UnitNames; - protected override DecimalFuncMap ConvertFrom{ - get{ - return FromCelsius; - } - } + protected override DecimalFuncMap ConvertFrom => FromCelsius; - protected override DecimalFuncMap ConvertTo{ - get{ - return ToCelsius; - } - } + protected override DecimalFuncMap ConvertTo => ToCelsius; - protected override int Precision{ - get{ - return 2; - } - } + protected override int Precision => 2; - protected override NumberStyles NumberStyle{ - get{ - return NumberStyles.Float; - } - } + protected override NumberStyles NumberStyle => NumberStyles.Float; - protected override string ProcessSrc(string src){ - return RegexCleanup.Replace(src, ""); - } + protected override string ProcessSrc(string src) { + return RegexCleanup.Replace(src, ""); + } - protected override string ProcessDst(string dst){ - return RegexCleanup.Replace(dst, ""); - } + protected override string ProcessDst(string dst) { + return RegexCleanup.Replace(dst, ""); + } - protected override bool IsValueInvalid(Units value){ - return value == Units.Invalid; - } - } + protected override bool IsValueInvalid(Units value) { + return value == Units.Invalid; + } + } } diff --git a/AppConv/Units/Volume.cs b/AppConv/Units/Volume.cs index 154b11f..06ad7d6 100644 --- a/AppConv/Units/Volume.cs +++ b/AppConv/Units/Volume.cs @@ -1,28 +1,34 @@ using AppConv.General; using AppConv.Utils; -namespace AppConv.Units{ - internal class Volume : DecimalUnitConverterSimple<Volume.Units>{ - internal enum Units{ - Invalid = 0, Liter, CubicMM, CubicCM, CubicDM, CubicM, CubicKM - } +namespace AppConv.Units { + class Volume : DecimalUnitConverterSimple<Volume.Units> { + internal enum Units { + Invalid = 0, + Liter, + CubicMM, + CubicCM, + CubicDM, + CubicM, + CubicKM + } - public Volume(){ - AddUnit(Units.Liter, "l", "liter", "liters", "litre", "litres"); - AddUnit(Units.CubicMM, "mm3", "cubic mm", "cubic millimeter", "cubic millimeters", "cubic millimetre", "cubic millimetres"); - AddUnit(Units.CubicCM, "cm3", "cubic cm", "cubic centimeter", "cubic centimeters", "cubic centimetre", "cubic centimetres"); - AddUnit(Units.CubicDM, "dm3", "cubic dm", "cubic decimeter", "cubic decimeters", "cubic decimetre", "cubic decimetres"); - AddUnit(Units.CubicM, "m3", "cubic m", "cubic meter", "cubic meters", "cubic metre", "cubic metres"); - AddUnit(Units.CubicKM, "km3", "cubic km", "cubic kilometer", "cubic kilometers", "cubic kilometre", "cubic kilometres"); + public Volume() { + AddUnit(Units.Liter, "l", "liter", "liters", "litre", "litres"); + AddUnit(Units.CubicMM, "mm3", "cubic mm", "cubic millimeter", "cubic millimeters", "cubic millimetre", "cubic millimetres"); + AddUnit(Units.CubicCM, "cm3", "cubic cm", "cubic centimeter", "cubic centimeters", "cubic centimetre", "cubic centimetres"); + AddUnit(Units.CubicDM, "dm3", "cubic dm", "cubic decimeter", "cubic decimeters", "cubic decimetre", "cubic decimetres"); + AddUnit(Units.CubicM, "m3", "cubic m", "cubic meter", "cubic meters", "cubic metre", "cubic metres"); + AddUnit(Units.CubicKM, "km3", "cubic km", "cubic kilometer", "cubic kilometers", "cubic kilometre", "cubic kilometres"); - SetUnitFactor(Units.CubicMM, 1000000M); - SetUnitFactor(Units.CubicCM, 1000M); - SetUnitFactor(Units.CubicM, 0.001M); - SetUnitFactor(Units.CubicKM, 1E-12M); + SetUnitFactor(Units.CubicMM, 1000000M); + SetUnitFactor(Units.CubicCM, 1000M); + SetUnitFactor(Units.CubicM, 0.001M); + SetUnitFactor(Units.CubicKM, 1E-12M); - SetInvalidUnitObject(Units.Invalid); + SetInvalidUnitObject(Units.Invalid); - SI.AddSupport(typeof(Units), Units.Liter, new []{ "l" }, new []{ "liter", "litre", "liters", "litres" }, ConvertFrom, ConvertTo, Names); - } - } + SI.AddSupport(typeof(Units), Units.Liter, new [] { "l" }, new [] { "liter", "litre", "liters", "litres" }, ConvertFrom, ConvertTo, Names); + } + } } diff --git a/AppConv/Units/Weight.cs b/AppConv/Units/Weight.cs index 35896f8..1ade069 100644 --- a/AppConv/Units/Weight.cs +++ b/AppConv/Units/Weight.cs @@ -2,24 +2,28 @@ using AppConv.Utils; namespace AppConv.Units { - internal class Weight : DecimalUnitConverterSimple<Weight.Units>{ - internal enum Units{ - Invalid = 0, Gram, Pound, Ounce, Stone - } + class Weight : DecimalUnitConverterSimple<Weight.Units> { + internal enum Units { + Invalid = 0, + Gram, + Pound, + Ounce, + Stone + } - public Weight(){ - AddUnit(Units.Gram, "g", "gram", "grams"); - AddUnit(Units.Pound, "lb", "lbs", "pound", "pounds"); - AddUnit(Units.Ounce, "oz", "ounce", "ounces"); - AddUnit(Units.Stone, "st", "stone", "stones"); + public Weight() { + AddUnit(Units.Gram, "g", "gram", "grams"); + AddUnit(Units.Pound, "lb", "lbs", "pound", "pounds"); + AddUnit(Units.Ounce, "oz", "ounce", "ounces"); + AddUnit(Units.Stone, "st", "stone", "stones"); - SetUnitFactor(Units.Pound, 0.0022046226218M); - SetUnitFactor(Units.Ounce, 0.03527396195M); - SetUnitFactor(Units.Stone, 0.0001574730444177697M); + SetUnitFactor(Units.Pound, 0.0022046226218M); + SetUnitFactor(Units.Ounce, 0.03527396195M); + SetUnitFactor(Units.Stone, 0.0001574730444177697M); - SetInvalidUnitObject(Units.Invalid); + SetInvalidUnitObject(Units.Invalid); - SI.AddSupport(typeof(Units), Units.Gram, new []{ "g" }, new []{ "gram", "grams" }, ConvertFrom, ConvertTo, Names); - } - } + SI.AddSupport(typeof(Units), Units.Gram, new [] { "g" }, new [] { "gram", "grams" }, ConvertFrom, ConvertTo, Names); + } + } } diff --git a/AppConv/Utils/RadixConversion.cs b/AppConv/Utils/RadixConversion.cs index dcdb4ae..99e0aa4 100644 --- a/AppConv/Utils/RadixConversion.cs +++ b/AppConv/Utils/RadixConversion.cs @@ -3,76 +3,76 @@ using System.Globalization; using System.Linq; using System.Text; -namespace AppConv.Utils{ - internal static class RadixConversion{ - private const string Characters = "0123456789ABCDEF"; +namespace AppConv.Utils { + static class RadixConversion { + private const string Characters = "0123456789ABCDEF"; - public static bool IsBaseValid(int checkedBase){ - return checkedBase >= 1 && checkedBase <= 16; - } + public static bool IsBaseValid(int checkedBase) { + return checkedBase >= 1 && checkedBase <= 16; + } - public static bool IsNumberValid(string contents, int checkedBase){ - if (checkedBase == 1){ - return contents.All(chr => chr == '1'); - } + public static bool IsNumberValid(string contents, int checkedBase) { + if (checkedBase == 1) { + return contents.All(chr => chr == '1'); + } - if (IsBaseValid(checkedBase)){ - return contents.Select(chr => Characters.IndexOf(char.ToUpper(chr))).All(index => index != -1 && index < checkedBase); - } + if (IsBaseValid(checkedBase)) { + return contents.Select(chr => Characters.IndexOf(char.ToUpper(chr))).All(index => index != -1 && index < checkedBase); + } - return false; - } + return false; + } - public static string Do(string contents, int fromBase, int toBase){ // TODO biginteger - if (fromBase == 1){ - contents = contents.Length.ToString(CultureInfo.InvariantCulture); - fromBase = 10; - } + public static string Do(string contents, int fromBase, int toBase) { // TODO biginteger + if (fromBase == 1) { + contents = contents.Length.ToString(CultureInfo.InvariantCulture); + fromBase = 10; + } - long wip; + long wip; - if (fromBase == 10){ - wip = long.Parse(contents, NumberStyles.None, CultureInfo.InvariantCulture); - } - else{ - wip = 0; + if (fromBase == 10) { + wip = long.Parse(contents, NumberStyles.None, CultureInfo.InvariantCulture); + } + else { + wip = 0; - for(int chr = 0; chr < contents.Length; chr++){ - int index = Characters.IndexOf(char.ToUpperInvariant(contents[chr])); + for (int chr = 0; chr < contents.Length; chr++) { + int index = Characters.IndexOf(char.ToUpperInvariant(contents[chr])); - if (index > 0){ - wip += index*(long)Math.Pow(fromBase, contents.Length-chr-1); + if (index > 0) { + wip += index * (long) Math.Pow(fromBase, contents.Length - chr - 1); - if (wip < 0){ - throw new OverflowException(); - } - } - } - } + if (wip < 0) { + throw new OverflowException(); + } + } + } + } - if (toBase == 1){ - if (wip <= int.MaxValue){ - return new string('1', (int)wip); - } - else{ - throw new OverflowException(); - } - } - else if (wip < toBase){ - return Characters[(int)wip].ToString(); - } - else{ - StringBuilder converted = new StringBuilder(); + if (toBase == 1) { + if (wip <= int.MaxValue) { + return new string('1', (int) wip); + } + else { + throw new OverflowException(); + } + } + else if (wip < toBase) { + return Characters[(int) wip].ToString(); + } + else { + var converted = new StringBuilder(); - while(wip >= toBase){ - int index = (int)(wip%toBase); - converted.Insert(0, Characters[index]); + while (wip >= toBase) { + int index = (int) (wip % toBase); + converted.Insert(0, Characters[index]); - wip = wip/toBase; - } + wip = wip / toBase; + } - return converted.Insert(0, Characters[(int)wip]).ToString(); - } - } - } + return converted.Insert(0, Characters[(int) wip]).ToString(); + } + } + } } diff --git a/AppConv/Utils/SI.cs b/AppConv/Utils/SI.cs index 5c027e2..051b05b 100644 --- a/AppConv/Utils/SI.cs +++ b/AppConv/Utils/SI.cs @@ -2,88 +2,88 @@ using System.Collections.Generic; using AppConv.General; -namespace AppConv.Utils{ - internal static class SI{ - private static readonly List<Tuple<string, string, int>> Factors = new List<Tuple<string, string, int>>{ - new Tuple<string, string, int>("yotta", "Y", 24), - new Tuple<string, string, int>("zetta", "Z", 21), - new Tuple<string, string, int>("exa", "E", 18), - new Tuple<string, string, int>("peta", "P", 15), - new Tuple<string, string, int>("tera", "T", 12), - new Tuple<string, string, int>("giga", "G", 9), - new Tuple<string, string, int>("mega", "M", 6), - new Tuple<string, string, int>("kilo", "k", 3), - new Tuple<string, string, int>("hecto", "h", 2), - new Tuple<string, string, int>("deca", "da", 1), - new Tuple<string, string, int>("deci", "d", -1), - new Tuple<string, string, int>("centi", "c", -2), - new Tuple<string, string, int>("milli", "m", -3), - new Tuple<string, string, int>("micro", "μ", -6), - new Tuple<string, string, int>("nano", "n", -9), - new Tuple<string, string, int>("pico", "p", -12), - new Tuple<string, string, int>("femto", "f", -15), - new Tuple<string, string, int>("atto", "a", -18), - new Tuple<string, string, int>("zepto", "z", -21), - new Tuple<string, string, int>("yocto", "y", -24) - }; +namespace AppConv.Utils { + static class SI { + private static readonly List<Tuple<string, string, int>> Factors = new List<Tuple<string, string, int>> { + new Tuple<string, string, int>("yotta", "Y", 24), + new Tuple<string, string, int>("zetta", "Z", 21), + new Tuple<string, string, int>("exa", "E", 18), + new Tuple<string, string, int>("peta", "P", 15), + new Tuple<string, string, int>("tera", "T", 12), + new Tuple<string, string, int>("giga", "G", 9), + new Tuple<string, string, int>("mega", "M", 6), + new Tuple<string, string, int>("kilo", "k", 3), + new Tuple<string, string, int>("hecto", "h", 2), + new Tuple<string, string, int>("deca", "da", 1), + new Tuple<string, string, int>("deci", "d", -1), + new Tuple<string, string, int>("centi", "c", -2), + new Tuple<string, string, int>("milli", "m", -3), + new Tuple<string, string, int>("micro", "μ", -6), + new Tuple<string, string, int>("nano", "n", -9), + new Tuple<string, string, int>("pico", "p", -12), + new Tuple<string, string, int>("femto", "f", -15), + new Tuple<string, string, int>("atto", "a", -18), + new Tuple<string, string, int>("zepto", "z", -21), + new Tuple<string, string, int>("yocto", "y", -24) + }; - public static void AddSupport<T>(Type enumType, T unitObject, string[] unitShortNames, string[] unitLongNames, DecimalUnitConverterBase<T>.DecimalFuncMap funcFrom, DecimalUnitConverterBase<T>.DecimalFuncMap funcTo, DecimalUnitConverterBase<T>.NameMap nameMap) where T : struct{ - int enumCounter = 1000+Factors.Count*(int)(object)unitObject; + public static void AddSupport<T>(Type enumType, T unitObject, string[] unitShortNames, string[] unitLongNames, DecimalUnitConverterBase<T>.DecimalFuncMap funcFrom, DecimalUnitConverterBase<T>.DecimalFuncMap funcTo, DecimalUnitConverterBase<T>.NameMap nameMap) where T : struct { + int enumCounter = 1000 + Factors.Count * (int) (object) unitObject; - Func<decimal, decimal> convertFrom = funcFrom[unitObject]; - Func<decimal, decimal> convertTo = funcTo[unitObject]; + Func<decimal, decimal> convertFrom = funcFrom[unitObject]; + Func<decimal, decimal> convertTo = funcTo[unitObject]; - foreach(Tuple<string, string, int> factor in Factors){ - T enumObject = (T)(object)enumCounter++; - int exponent = factor.Item3; + foreach (Tuple<string, string, int> factor in Factors) { + T enumObject = (T) (object) enumCounter++; + int exponent = factor.Item3; - foreach(string unitShortName in unitShortNames){ - nameMap.Add(factor.Item2+unitShortName, enumObject); - } + foreach (string unitShortName in unitShortNames) { + nameMap.Add(factor.Item2 + unitShortName, enumObject); + } - foreach(string unitLongName in unitLongNames){ - nameMap.Add(factor.Item1+unitLongName, enumObject); - } - - funcFrom.Add(enumObject, val => convertFrom(val)*(decimal)Math.Pow(10, -exponent)); - funcTo.Add(enumObject, val => convertTo(val)*(decimal)Math.Pow(10, exponent)); - } - } + foreach (string unitLongName in unitLongNames) { + nameMap.Add(factor.Item1 + unitLongName, enumObject); + } - public static void AddSupportCustom<T>(Type enumType, T unitObject, string[] unitShortNames, string[] unitLongNames, DecimalUnitConverterBase<T>.DecimalFuncMap funcFrom, DecimalUnitConverterBase<T>.DecimalFuncMap funcTo, DecimalUnitConverterBase<T>.NameMap nameMap, ExtededProperties extendedProps) where T : struct{ - int enumCounter = 1000+Factors.Count*(int)(object)unitObject; + funcFrom.Add(enumObject, val => convertFrom(val) * (decimal) Math.Pow(10, -exponent)); + funcTo.Add(enumObject, val => convertTo(val) * (decimal) Math.Pow(10, exponent)); + } + } - Func<decimal, decimal> convertFrom = funcFrom[unitObject]; - Func<decimal, decimal> convertTo = funcTo[unitObject]; + public static void AddSupportCustom<T>(Type enumType, T unitObject, string[] unitShortNames, string[] unitLongNames, DecimalUnitConverterBase<T>.DecimalFuncMap funcFrom, DecimalUnitConverterBase<T>.DecimalFuncMap funcTo, DecimalUnitConverterBase<T>.NameMap nameMap, ExtededProperties extendedProps) where T : struct { + int enumCounter = 1000 + Factors.Count * (int) (object) unitObject; - foreach(Tuple<string, string, int> factor in Factors){ - if (extendedProps.FactorPredicate != null && !extendedProps.FactorPredicate(factor.Item3)){ - continue; - } + Func<decimal, decimal> convertFrom = funcFrom[unitObject]; + Func<decimal, decimal> convertTo = funcTo[unitObject]; - T enumObject = (T)(object)enumCounter++; - int exponent = factor.Item3; + foreach (Tuple<string, string, int> factor in Factors) { + if (extendedProps.FactorPredicate != null && !extendedProps.FactorPredicate(factor.Item3)) { + continue; + } - foreach(string unitShortName in unitShortNames){ - nameMap.Add(factor.Item2+unitShortName, enumObject); - } + T enumObject = (T) (object) enumCounter++; + int exponent = factor.Item3; - foreach(string unitLongName in unitLongNames){ - nameMap.Add(factor.Item1+unitLongName, enumObject); - } + foreach (string unitShortName in unitShortNames) { + nameMap.Add(factor.Item2 + unitShortName, enumObject); + } - Func<decimal> genFrom = extendedProps.FromFunctionGenerator(exponent); - Func<decimal> genTo = extendedProps.ToFunctionGenerator(exponent); - - funcFrom.Add(enumObject, val => convertFrom(val)*genFrom()); - funcTo.Add(enumObject, val => convertTo(val)*genTo()); - } - } + foreach (string unitLongName in unitLongNames) { + nameMap.Add(factor.Item1 + unitLongName, enumObject); + } - internal class ExtededProperties{ - public Predicate<int> FactorPredicate { get; set; } - public Func<int, Func<decimal>> FromFunctionGenerator { get; set; } - public Func<int, Func<decimal>> ToFunctionGenerator { get; set; } - } - } + Func<decimal> genFrom = extendedProps.FromFunctionGenerator(exponent); + Func<decimal> genTo = extendedProps.ToFunctionGenerator(exponent); + + funcFrom.Add(enumObject, val => convertFrom(val) * genFrom()); + funcTo.Add(enumObject, val => convertTo(val) * genTo()); + } + } + + internal class ExtededProperties { + public Predicate<int> FactorPredicate { get; set; } + public Func<int, Func<decimal>> FromFunctionGenerator { get; set; } + public Func<int, Func<decimal>> ToFunctionGenerator { get; set; } + } + } } diff --git a/AppMeme/App.cs b/AppMeme/App.cs index e85740a..8161727 100644 --- a/AppMeme/App.cs +++ b/AppMeme/App.cs @@ -1,25 +1,25 @@ using System.Collections.Generic; using Base; -namespace AppMeme{ - public sealed class App : IApp{ - private static readonly Dictionary<string, string> Map = new Dictionary<string, string>{ - { "shrug", @"¯\_(ツ)_/¯" }, - { "lenny", @"( ͡° ͜ʖ ͡°)" }, - { "flip", @"(╯°□°)╯︵ ┻━┻" }, - { "tableflip", @"(╯°□°)╯︵ ┻━┻" } - }; +namespace AppMeme { + public sealed class App : IApp { + private static readonly Dictionary<string, string> Map = new Dictionary<string, string> { + { "shrug", @"¯\_(ツ)_/¯" }, + { "lenny", @"( ͡° ͜ʖ ͡°)" }, + { "flip", @"(╯°□°)╯︵ ┻━┻" }, + { "tableflip", @"(╯°□°)╯︵ ┻━┻" } + }; - public string[] RecognizedNames => new string[]{ - "meme" - }; - - public MatchConfidence GetConfidence(Command cmd){ - return Map.ContainsKey(cmd.Text) ? MatchConfidence.Full : MatchConfidence.None; - } + public string[] RecognizedNames => new string[] { + "meme" + }; - public string ProcessCommand(Command cmd){ - return Map[cmd.Text]; - } - } + public MatchConfidence GetConfidence(Command cmd) { + return Map.ContainsKey(cmd.Text) ? MatchConfidence.Full : MatchConfidence.None; + } + + public string ProcessCommand(Command cmd) { + return Map[cmd.Text]; + } + } } diff --git a/AppWindows/App.cs b/AppWindows/App.cs index bd44abd..868939a 100644 --- a/AppWindows/App.cs +++ b/AppWindows/App.cs @@ -2,25 +2,25 @@ using AppSys.Handlers; using Base; -namespace AppSys{ - public sealed class App : IApp{ - private static readonly IHandler[] Handlers = { - new HandlerProcesses(), - new HandlerApps() - }; +namespace AppSys { + public sealed class App : IApp { + private static readonly IHandler[] Handlers = { + new HandlerProcesses(), + new HandlerApps() + }; - public string[] RecognizedNames => new string[]{ - "sys", - "os", - "win" - }; + public string[] RecognizedNames => new string[] { + "sys", + "os", + "win" + }; - public MatchConfidence GetConfidence(Command cmd){ - return Handlers.Any(handler => handler.Matches(cmd)) ? MatchConfidence.Full : MatchConfidence.None; - } + public MatchConfidence GetConfidence(Command cmd) { + return Handlers.Any(handler => handler.Matches(cmd)) ? MatchConfidence.Full : MatchConfidence.None; + } - public string ProcessCommand(Command cmd){ - return Handlers.First(handler => handler.Matches(cmd)).Handle(cmd); - } - } + public string ProcessCommand(Command cmd) { + return Handlers.First(handler => handler.Matches(cmd)).Handle(cmd); + } + } } diff --git a/AppWindows/Handlers/HandlerApps.cs b/AppWindows/Handlers/HandlerApps.cs index 7fcabba..393a5d9 100644 --- a/AppWindows/Handlers/HandlerApps.cs +++ b/AppWindows/Handlers/HandlerApps.cs @@ -5,54 +5,57 @@ using System.IO; using Base; namespace AppSys.Handlers { - internal class HandlerApps : IHandler{ - private static readonly string PathSystem = Environment.GetFolderPath(Environment.SpecialFolder.System); + class HandlerApps : IHandler { + private static readonly string PathSystem = Environment.GetFolderPath(Environment.SpecialFolder.System); - private static readonly Dictionary<string, ProcessStartInfo> Mappings = new Dictionary<string, ProcessStartInfo>{ - { "audio", new ProcessStartInfo{ - FileName = Path.Combine(PathSystem, "control.exe"), - Arguments = "mmsys.cpl" - } }, + private static readonly Dictionary<string, ProcessStartInfo> Mappings = new Dictionary<string, ProcessStartInfo> { + { + "audio", new ProcessStartInfo { + FileName = Path.Combine(PathSystem, "control.exe"), + Arguments = "mmsys.cpl" + } + }, { + "programs", new ProcessStartInfo { + FileName = Path.Combine(PathSystem, "control.exe"), + Arguments = "appwiz.cpl" + } + }, { + "system", new ProcessStartInfo { + FileName = Path.Combine(PathSystem, "control.exe"), + Arguments = "sysdm.cpl" + } + }, { + "environment", new ProcessStartInfo { + FileName = Path.Combine(PathSystem, "rundll32.exe"), + Arguments = "sysdm.cpl,EditEnvironmentVariables" + } + } + }; - { "programs", new ProcessStartInfo{ - FileName = Path.Combine(PathSystem, "control.exe"), - Arguments = "appwiz.cpl" - } }, + private static readonly Dictionary<string, string> Substitutions = new Dictionary<string, string> { + { "sounds", "audio" }, + { "apps", "programs" }, + { "appwiz", "programs" }, + { "env", "environment" }, + { "envvars", "environment" }, + { "vars", "environment" }, + { "variables", "environment" } + }; - { "system", new ProcessStartInfo{ - FileName = Path.Combine(PathSystem, "control.exe"), - Arguments = "sysdm.cpl" - } }, + public bool Matches(Command cmd) { + return Mappings.ContainsKey(cmd.Text) || Substitutions.ContainsKey(cmd.Text); + } - { "environment", new ProcessStartInfo{ - FileName = Path.Combine(PathSystem, "rundll32.exe"), - Arguments = "sysdm.cpl,EditEnvironmentVariables" - } } - }; + public string Handle(Command cmd) { + string key; - private static readonly Dictionary<string, string> Substitutions = new Dictionary<string, string>{ - { "sounds", "audio" }, - { "apps", "programs" }, - { "appwiz", "programs" }, - { "env", "environment" }, - { "envvars", "environment" }, - { "vars", "environment" }, - { "variables", "environment" } - }; + if (!Substitutions.TryGetValue(cmd.Text, out key)) { + key = cmd.Text; + } - public bool Matches(Command cmd){ - return Mappings.ContainsKey(cmd.Text) || Substitutions.ContainsKey(cmd.Text); - } + using (Process.Start(Mappings[key])) {} - public string Handle(Command cmd){ - string key; - - if (!Substitutions.TryGetValue(cmd.Text, out key)){ - key = cmd.Text; - } - - using(Process.Start(Mappings[key])){} - return null; - } - } + return null; + } + } } diff --git a/AppWindows/Handlers/HandlerProcesses.cs b/AppWindows/Handlers/HandlerProcesses.cs index 68ced96..9cb1ec2 100644 --- a/AppWindows/Handlers/HandlerProcesses.cs +++ b/AppWindows/Handlers/HandlerProcesses.cs @@ -3,47 +3,47 @@ using System.Diagnostics; using System.Text; using Base; -namespace AppSys.Handlers{ - internal class HandlerProcesses : IHandler{ - public bool Matches(Command cmd){ - return cmd.Text.StartsWith("kill ", StringComparison.InvariantCultureIgnoreCase); - } +namespace AppSys.Handlers { + class HandlerProcesses : IHandler { + public bool Matches(Command cmd) { + return cmd.Text.StartsWith("kill ", StringComparison.InvariantCultureIgnoreCase); + } - public string Handle(Command cmd){ - string[] processNames = cmd.Text.Substring("kill ".Length).Split(',', ';'); - int succeeded = 0, failed = 0; + public string Handle(Command cmd) { + string[] processNames = cmd.Text.Substring("kill ".Length).Split(',', ';'); + int succeeded = 0, failed = 0; - foreach(string processName in processNames){ - try{ - Process[] processes = Process.GetProcessesByName(processName.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase) ? processName.Substring(0, processName.Length-4) : processName); + foreach (string processName in processNames) { + try { + Process[] processes = Process.GetProcessesByName(processName.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase) ? processName.Substring(0, processName.Length - 4) : processName); - foreach(Process process in processes){ - try{ - process.Kill(); - ++succeeded; - }catch{ - ++failed; - } + foreach (Process process in processes) { + try { + process.Kill(); + ++succeeded; + } catch { + ++failed; + } - process.Close(); - } - }catch{ - ++failed; - } - } + process.Close(); + } + } catch { + ++failed; + } + } - if (succeeded == 0 && failed == 0 && (cmd.Text.Equals("kill me", StringComparison.InvariantCultureIgnoreCase) || cmd.Text.StartsWith("kill me ", StringComparison.InvariantCultureIgnoreCase) || cmd.Text.StartsWith("kill me,", StringComparison.InvariantCultureIgnoreCase))){ - return "No."; - } + if (succeeded == 0 && failed == 0 && (cmd.Text.Equals("kill me", StringComparison.InvariantCultureIgnoreCase) || cmd.Text.StartsWith("kill me ", StringComparison.InvariantCultureIgnoreCase) || cmd.Text.StartsWith("kill me,", StringComparison.InvariantCultureIgnoreCase))) { + return "No."; + } - StringBuilder build = new StringBuilder(); - build.Append("Killed ").Append(succeeded).Append(" process").Append(succeeded == 1 ? "" : "es"); + var build = new StringBuilder(); + build.Append("Killed ").Append(succeeded).Append(" process").Append(succeeded == 1 ? "" : "es"); - if (failed > 0){ - build.Append(", failed ").Append(failed); - } + if (failed > 0) { + build.Append(", failed ").Append(failed); + } - return build.Append('.').ToString(); - } - } + return build.Append('.').ToString(); + } + } } diff --git a/AppWindows/IHandler.cs b/AppWindows/IHandler.cs index f0f0710..9e83a0f 100644 --- a/AppWindows/IHandler.cs +++ b/AppWindows/IHandler.cs @@ -1,8 +1,8 @@ using Base; -namespace AppSys{ - internal interface IHandler{ - bool Matches(Command cmd); - string Handle(Command cmd); - } +namespace AppSys { + interface IHandler { + bool Matches(Command cmd); + string Handle(Command cmd); + } } diff --git a/Base/Command.cs b/Base/Command.cs index d358b2b..e731b8b 100644 --- a/Base/Command.cs +++ b/Base/Command.cs @@ -2,43 +2,39 @@ using System.Text.RegularExpressions; using Base.Utils; -namespace Base{ - public sealed class Command{ - private static readonly Regex RegexBalancedBrackets = new Regex(RegexUtils.Balance(@"\[", @"\]"), RegexOptions.Compiled); - private static readonly Regex RegexBalancedParentheses = new Regex(RegexUtils.Balance(@"\(", @"\)"), RegexOptions.Compiled); +namespace Base { + public sealed class Command { + private static readonly Regex RegexBalancedBrackets = new Regex(RegexUtils.Balance(@"\[", @"\]"), RegexOptions.Compiled); + private static readonly Regex RegexBalancedParentheses = new Regex(RegexUtils.Balance(@"\(", @"\)"), RegexOptions.Compiled); - public string Text { get; private set; } + public string Text { get; private set; } - public string PotentialAppName{ - get{ - int firstSpace = Text.IndexOf(' '); + public string PotentialAppName { + get { + int firstSpace = Text.IndexOf(' '); - if (firstSpace == -1){ - return null; - } + if (firstSpace == -1) { + return null; + } - string firstToken = Text.Substring(0, firstSpace); + string firstToken = Text.Substring(0, firstSpace); - if (!firstToken.All(char.IsLetter)){ - return null; - } + if (!firstToken.All(char.IsLetter)) { + return null; + } - return firstToken; - } - } + return firstToken; + } + } - public bool IsSingleToken{ - get{ - return Text.IndexOf(' ') == -1; - } - } + public bool IsSingleToken => Text.IndexOf(' ') == -1; - public Command(string text){ - this.Text = text; - } + public Command(string text) { + Text = text; + } - public Command ReplaceBrackets(MatchEvaluator evaluator){ - return new Command(RegexBalancedParentheses.Replace(RegexBalancedBrackets.Replace(Text, evaluator), evaluator)); - } - } + public Command ReplaceBrackets(MatchEvaluator evaluator) { + return new Command(RegexBalancedParentheses.Replace(RegexBalancedBrackets.Replace(Text, evaluator), evaluator)); + } + } } diff --git a/Base/CommandEventArgs.cs b/Base/CommandEventArgs.cs index 8afae24..484234c 100644 --- a/Base/CommandEventArgs.cs +++ b/Base/CommandEventArgs.cs @@ -1,11 +1,11 @@ using System; -namespace Base{ - public class CommandEventArgs : EventArgs{ - public Command Command { get; private set; } +namespace Base { + public class CommandEventArgs : EventArgs { + public Command Command { get; private set; } - public CommandEventArgs(string text){ - this.Command = new Command(text); - } - } + public CommandEventArgs(string text) { + Command = new Command(text); + } + } } diff --git a/Base/CommandException.cs b/Base/CommandException.cs index 58aa207..a8491cb 100644 --- a/Base/CommandException.cs +++ b/Base/CommandException.cs @@ -1,8 +1,8 @@ using System; -namespace Base{ - public class CommandException : Exception{ - public CommandException(string message) : base(message){} - public CommandException(string message, Exception innerException) : base(message,innerException){} - } +namespace Base { + public class CommandException : Exception { + public CommandException(string message) : base(message) {} + public CommandException(string message, Exception innerException) : base(message, innerException) {} + } } diff --git a/Base/IApp.cs b/Base/IApp.cs index 57a8a50..c7b60a9 100644 --- a/Base/IApp.cs +++ b/Base/IApp.cs @@ -1,8 +1,8 @@ -namespace Base{ - public interface IApp{ - string[] RecognizedNames { get; } +namespace Base { + public interface IApp { + string[] RecognizedNames { get; } - MatchConfidence GetConfidence(Command cmd); - string ProcessCommand(Command cmd); - } + MatchConfidence GetConfidence(Command cmd); + string ProcessCommand(Command cmd); + } } diff --git a/Base/MatchConfidence.cs b/Base/MatchConfidence.cs index 82b53e3..1439df0 100644 --- a/Base/MatchConfidence.cs +++ b/Base/MatchConfidence.cs @@ -1,8 +1,8 @@ -namespace Base{ - public enum MatchConfidence{ - None = 0, - Low = 1, - Possible = 2, - Full = 3 - } +namespace Base { + public enum MatchConfidence { + None = 0, + Low = 1, + Possible = 2, + Full = 3 + } } diff --git a/Base/Utils/RegexUtils.cs b/Base/Utils/RegexUtils.cs index d02b754..2a4f65c 100644 --- a/Base/Utils/RegexUtils.cs +++ b/Base/Utils/RegexUtils.cs @@ -1,23 +1,23 @@ using System.Text; using System.Text.RegularExpressions; -namespace Base.Utils{ - public static class RegexUtils{ - public static readonly RegexOptions Text = RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture | RegexOptions.Compiled; +namespace Base.Utils { + public static class RegexUtils { + public static readonly RegexOptions Text = RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture | RegexOptions.Compiled; - public static string Balance(string escapedStart, string escapedEnd){ // \(((?>[^()]+|\((?<n>)|\)(?<-n>))+(?(n)(?!)))\) - return new StringBuilder() - .Append(escapedStart) - .Append(@"((?>[^") - .Append(escapedStart) - .Append(escapedEnd) - .Append(@"]+|") - .Append(escapedStart) - .Append(@"(?<n>)|") - .Append(escapedEnd) - .Append(@"(?<-n>))+(?(n)(?!)))") - .Append(escapedEnd) - .ToString(); - } - } + public static string Balance(string escapedStart, string escapedEnd) { // \(((?>[^()]+|\((?<n>)|\)(?<-n>))+(?(n)(?!)))\) + return new StringBuilder() + .Append(escapedStart) + .Append(@"((?>[^") + .Append(escapedStart) + .Append(escapedEnd) + .Append(@"]+|") + .Append(escapedStart) + .Append(@"(?<n>)|") + .Append(escapedEnd) + .Append(@"(?<-n>))+(?(n)(?!)))") + .Append(escapedEnd) + .ToString(); + } + } } diff --git a/Query/Controls/QueryHistoryLog.cs b/Query/Controls/QueryHistoryLog.cs index 2859b71..97e5adc 100644 --- a/Query/Controls/QueryHistoryLog.cs +++ b/Query/Controls/QueryHistoryLog.cs @@ -2,42 +2,45 @@ using System.Drawing; using System.Windows.Forms; -namespace Query.Controls{ - sealed partial class QueryHistoryLog : UserControl{ - public enum EntryType{ - UserInput, CommandResult, Information, Error - } +namespace Query.Controls { + sealed partial class QueryHistoryLog : UserControl { + public enum EntryType { + UserInput, + CommandResult, + Information, + Error + } - private static readonly Dictionary<EntryType, Color> EntryColorMap = new Dictionary<EntryType, Color>{ - { EntryType.UserInput, Color.FromArgb(160, 160, 160) }, - { EntryType.CommandResult, Color.FromArgb(240, 240, 240) }, - { EntryType.Information, Color.FromArgb(160, 255, 140) }, - { EntryType.Error, Color.FromArgb(255, 40, 40) } - }; + private static readonly Dictionary<EntryType, Color> EntryColorMap = new Dictionary<EntryType, Color> { + { EntryType.UserInput, Color.FromArgb(160, 160, 160) }, + { EntryType.CommandResult, Color.FromArgb(240, 240, 240) }, + { EntryType.Information, Color.FromArgb(160, 255, 140) }, + { EntryType.Error, Color.FromArgb(255, 40, 40) } + }; - public QueryHistoryLog(){ - InitializeComponent(); - } + public QueryHistoryLog() { + InitializeComponent(); + } - public void AddEntry(string text, EntryType type){ - int width = container.Width-SystemInformation.VerticalScrollBarWidth; + public void AddEntry(string text, EntryType type) { + int width = container.Width - SystemInformation.VerticalScrollBarWidth; - Label label = new Label{ - AutoSize = true, - Font = container.Font, - ForeColor = EntryColorMap[type], - Text = text, - Margin = new Padding(0,1,0,1), - MaximumSize = new Size(width, 0), - Width = width - }; + Label label = new Label { + AutoSize = true, + Font = container.Font, + ForeColor = EntryColorMap[type], + Text = text, + Margin = new Padding(0, 1, 0, 1), + MaximumSize = new Size(width, 0), + Width = width + }; - container.Controls.Add(label); - container.AutoScrollPosition = new Point(0, container.VerticalScroll.Maximum); - } + container.Controls.Add(label); + container.AutoScrollPosition = new Point(0, container.VerticalScroll.Maximum); + } - public void ClearEntries(){ - container.Controls.Clear(); - } - } + public void ClearEntries() { + container.Controls.Clear(); + } + } } diff --git a/Query/Controls/QueryTextBox.cs b/Query/Controls/QueryTextBox.cs index 38a2013..6abcff1 100644 --- a/Query/Controls/QueryTextBox.cs +++ b/Query/Controls/QueryTextBox.cs @@ -5,154 +5,154 @@ using System.Windows.Forms; using Base; using Query.Core; -namespace Query.Controls{ - sealed partial class QueryTextBox : UserControl{ - public event EventHandler<CommandEventArgs> CommandRan; +namespace Query.Controls { + sealed partial class QueryTextBox : UserControl { + public event EventHandler<CommandEventArgs> CommandRan; - private CommandHistory history; - private Action<string> log; + private CommandHistory history; + private Action<string> log; - public QueryTextBox(){ - InitializeComponent(); - } + public QueryTextBox() { + InitializeComponent(); + } - public void Setup(CommandHistory historyObj, Action<string> logFunc){ - this.history = historyObj; - this.log = logFunc; - } + public void Setup(CommandHistory historyObj, Action<string> logFunc) { + history = historyObj; + log = logFunc; + } - private void OnCommandRan(){ - CommandRan?.Invoke(this, new CommandEventArgs(tb.Text)); - } + private void OnCommandRan() { + CommandRan?.Invoke(this, new CommandEventArgs(tb.Text)); + } - private sealed class CustomTextBox : TextBox{ - private string lastInputStr = string.Empty; - private int lastInputPos = 0; - - private bool doResetHistoryMemory; - private bool lastArrowShift; - private int historyOffset; + private sealed class CustomTextBox : TextBox { + private string lastInputStr = string.Empty; + private int lastInputPos = 0; - public CustomTextBox(){ - TextChanged += CustomTextBox_TextChanged; - } + private bool doResetHistoryMemory; + private bool lastArrowShift; + private int historyOffset; - protected override void OnKeyDown(KeyEventArgs e){ - QueryTextBox input = (QueryTextBox)Parent; - CommandHistory history = input.history; + public CustomTextBox() { + TextChanged += CustomTextBox_TextChanged; + } - Keys key = e.KeyCode; - bool handled = false; + protected override void OnKeyDown(KeyEventArgs e) { + QueryTextBox input = (QueryTextBox) Parent; + CommandHistory history = input.history; - switch(key){ - case Keys.Enter: - if (Text != string.Empty){ - input.OnCommandRan(); + Keys key = e.KeyCode; + bool handled = false; - Text = string.Empty; - doResetHistoryMemory = true; - handled = true; - } + switch (key) { + case Keys.Enter: + if (Text != string.Empty) { + input.OnCommandRan(); - break; + Text = string.Empty; + doResetHistoryMemory = true; + handled = true; + } - case Keys.Up: - if (lastArrowShift != e.Shift){ - lastArrowShift = e.Shift; - historyOffset = 0; - } - - --historyOffset; - - if (InsertFromHistory(e.Shift ? history.Results : history.Queries)){ - ++historyOffset; - } + break; - handled = true; - break; + case Keys.Up: + if (lastArrowShift != e.Shift) { + lastArrowShift = e.Shift; + historyOffset = 0; + } - case Keys.Down: - if (lastArrowShift != e.Shift){ - lastArrowShift = e.Shift; - historyOffset = 0; - } + --historyOffset; - ++historyOffset; - - if (InsertFromHistory(e.Shift ? history.Results : history.Queries)){ - --historyOffset; - } + if (InsertFromHistory(e.Shift ? history.Results : history.Queries)) { + ++historyOffset; + } - handled = true; - break; + handled = true; + break; - case Keys.C: - if (e.Modifiers == Keys.Control){ - if (SelectionLength == 0 && history.Results.Count > 0){ - Clipboard.SetText(history.Results.Last(), TextDataFormat.UnicodeText); - input.log("Copied to clipboard."); - handled = true; - } - } + case Keys.Down: + if (lastArrowShift != e.Shift) { + lastArrowShift = e.Shift; + historyOffset = 0; + } - break; - } - - if (!handled && key != Keys.ControlKey && key != Keys.ShiftKey && key != Keys.Menu){ - doResetHistoryMemory = true; - } - - e.Handled = e.SuppressKeyPress = handled; - base.OnKeyDown(e); - } + ++historyOffset; - protected override void OnKeyUp(KeyEventArgs e){ - base.OnKeyUp(e); + if (InsertFromHistory(e.Shift ? history.Results : history.Queries)) { + --historyOffset; + } - if (doResetHistoryMemory){ - doResetHistoryMemory = false; - ResetHistoryMemory(); - } - } + handled = true; + break; - private void CustomTextBox_TextChanged(object sender, EventArgs e){ - ResetHistoryMemory(); - } + case Keys.C: + if (e.Modifiers == Keys.Control) { + if (SelectionLength == 0 && history.Results.Count > 0) { + Clipboard.SetText(history.Results.Last(), TextDataFormat.UnicodeText); + input.log("Copied to clipboard."); + handled = true; + } + } - // Management + break; + } - private void ResetHistoryMemory(){ - lastInputStr = Text; - lastInputPos = SelectionStart; - historyOffset = 0; - } + if (!handled && key != Keys.ControlKey && key != Keys.ShiftKey && key != Keys.Menu) { + doResetHistoryMemory = true; + } - private bool InsertFromHistory(IList<string> collection){ - if (collection.Count == 0){ - return true; - } - - int index = collection.Count + historyOffset; - bool wasClamped = false; + e.Handled = e.SuppressKeyPress = handled; + base.OnKeyDown(e); + } - if (index < 0){ - index = 0; - wasClamped = true; - } - else if (index >= collection.Count){ - index = collection.Count - 1; - wasClamped = true; - } - - TextChanged -= CustomTextBox_TextChanged; + protected override void OnKeyUp(KeyEventArgs e) { + base.OnKeyUp(e); - Text = lastInputStr.Insert(lastInputPos, collection[index]); - SelectionStart = lastInputPos + collection[index].Length; - SelectionLength = 0; + if (doResetHistoryMemory) { + doResetHistoryMemory = false; + ResetHistoryMemory(); + } + } - TextChanged += CustomTextBox_TextChanged; - return wasClamped; - } - } - } + private void CustomTextBox_TextChanged(object sender, EventArgs e) { + ResetHistoryMemory(); + } + + // Management + + private void ResetHistoryMemory() { + lastInputStr = Text; + lastInputPos = SelectionStart; + historyOffset = 0; + } + + private bool InsertFromHistory(IList<string> collection) { + if (collection.Count == 0) { + return true; + } + + int index = collection.Count + historyOffset; + bool wasClamped = false; + + if (index < 0) { + index = 0; + wasClamped = true; + } + else if (index >= collection.Count) { + index = collection.Count - 1; + wasClamped = true; + } + + TextChanged -= CustomTextBox_TextChanged; + + Text = lastInputStr.Insert(lastInputPos, collection[index]); + SelectionStart = lastInputPos + collection[index].Length; + SelectionLength = 0; + + TextChanged += CustomTextBox_TextChanged; + return wasClamped; + } + } + } } diff --git a/Query/Core/CommandHistory.cs b/Query/Core/CommandHistory.cs index e715949..0592f1b 100644 --- a/Query/Core/CommandHistory.cs +++ b/Query/Core/CommandHistory.cs @@ -1,33 +1,25 @@ using System.Collections.Generic; -namespace Query.Core{ - sealed class CommandHistory{ - private readonly List<string> queries = new List<string>(); - private readonly List<string> results = new List<string>(); +namespace Query.Core { + sealed class CommandHistory { + private readonly List<string> queries = new List<string>(); + private readonly List<string> results = new List<string>(); - public IList<string> Queries{ - get{ - return queries; - } - } + public IList<string> Queries => queries; - public IList<string> Results{ - get{ - return results; - } - } + public IList<string> Results => results; - public void AddQuery(string text){ - queries.Add(text); - } + public void AddQuery(string text) { + queries.Add(text); + } - public void AddResult(string text){ - results.Add(text); - } + public void AddResult(string text) { + results.Add(text); + } - public void Clear(){ - queries.Clear(); - results.Clear(); - } - } + public void Clear() { + queries.Clear(); + results.Clear(); + } + } } diff --git a/Query/Core/CommandProcessor.cs b/Query/Core/CommandProcessor.cs index 2c1b912..ccaac86 100644 --- a/Query/Core/CommandProcessor.cs +++ b/Query/Core/CommandProcessor.cs @@ -3,63 +3,63 @@ using System.Collections.Generic; using System.Linq; using Base; -namespace Query.Core{ - sealed class CommandProcessor{ - private readonly Dictionary<string, IApp> appNames = new Dictionary<string, IApp>(8); - private readonly HashSet<IApp> appSet = new HashSet<IApp>(); - - public Func<string, bool> SingleTokenProcessor { get; set; } +namespace Query.Core { + sealed class CommandProcessor { + private readonly Dictionary<string, IApp> appNames = new Dictionary<string, IApp>(8); + private readonly HashSet<IApp> appSet = new HashSet<IApp>(); - public void AddApp<T>() where T : IApp, new(){ - IApp app = new T(); + public Func<string, bool> SingleTokenProcessor { get; set; } - foreach(string name in app.RecognizedNames){ - appNames.Add(name, app); - appSet.Add(app); - } - } + public void AddApp<T>() where T : IApp, new() { + IApp app = new T(); - public string Run(Command cmd){ - cmd = cmd.ReplaceBrackets(match => Run(new Command(match.Groups[1].Value))); + foreach (string name in app.RecognizedNames) { + appNames.Add(name, app); + appSet.Add(app); + } + } - string appName = cmd.PotentialAppName; - IApp app; - - if (appName != null && appNames.TryGetValue(appName.ToLowerInvariant(), out app)){ - return app.ProcessCommand(new Command(cmd.Text.Substring(appName.Length+1))); - } + public string Run(Command cmd) { + cmd = cmd.ReplaceBrackets(match => Run(new Command(match.Groups[1].Value))); - if (cmd.IsSingleToken && SingleTokenProcessor != null && SingleTokenProcessor(cmd.Text)){ - return null; - } + string appName = cmd.PotentialAppName; + IApp app; - var list = appSet.Select(iapp => new { App = iapp, Confidence = iapp.GetConfidence(cmd) }).OrderByDescending(obj => obj.Confidence).Where(obj => obj.Confidence != MatchConfidence.None).ToList(); + if (appName != null && appNames.TryGetValue(appName.ToLowerInvariant(), out app)) { + return app.ProcessCommand(new Command(cmd.Text.Substring(appName.Length + 1))); + } - if (list.Count == 0){ - throw new CommandException("Could not find any suitable app, please write the app name and press Up Arrow."); - } - else if (list.Count == 1){ - app = list[0].App; - } - else{ - List<IApp> plausible = new List<IApp>{ list[0].App }; - MatchConfidence topConfidence = list[0].Confidence; + if (cmd.IsSingleToken && SingleTokenProcessor != null && SingleTokenProcessor(cmd.Text)) { + return null; + } - for(int index = 1; index < list.Count; index++){ - if (list[index].Confidence == topConfidence){ - plausible.Add(list[index].App); - } - } + var list = appSet.Select(iapp => new { App = iapp, Confidence = iapp.GetConfidence(cmd) }).OrderByDescending(obj => obj.Confidence).Where(obj => obj.Confidence != MatchConfidence.None).ToList(); - if (plausible.Count == 1){ - app = plausible.First(); - } - else{ - throw new CommandException("Command is ambiguous, please write the app name and press Up Arrow. Suggested apps: "+string.Join(", ",plausible.Select(iapp => iapp.RecognizedNames.First()))); - } - } + if (list.Count == 0) { + throw new CommandException("Could not find any suitable app, please write the app name and press Up Arrow."); + } + else if (list.Count == 1) { + app = list[0].App; + } + else { + List<IApp> plausible = new List<IApp> { list[0].App }; + MatchConfidence topConfidence = list[0].Confidence; - return app.ProcessCommand(cmd); - } - } + for (int index = 1; index < list.Count; index++) { + if (list[index].Confidence == topConfidence) { + plausible.Add(list[index].App); + } + } + + if (plausible.Count == 1) { + app = plausible.First(); + } + else { + throw new CommandException("Command is ambiguous, please write the app name and press Up Arrow. Suggested apps: " + string.Join(", ", plausible.Select(iapp => iapp.RecognizedNames.First()))); + } + } + + return app.ProcessCommand(cmd); + } + } } diff --git a/Query/Core/KeyboardHook.cs b/Query/Core/KeyboardHook.cs index c282263..44c6189 100644 --- a/Query/Core/KeyboardHook.cs +++ b/Query/Core/KeyboardHook.cs @@ -2,63 +2,63 @@ using System.Runtime.InteropServices; using System.Windows.Forms; -namespace Query.Core{ - sealed class KeyboardHook{ - public event EventHandler Triggered; - - // ReSharper disable once PrivateFieldCanBeConvertedToLocalVariable - private readonly NativeMethods.HookProc keyboardHookDelegate; - private IntPtr keyboardHook; - - public KeyboardHook(){ - keyboardHookDelegate = KeyboardHookProc; - } +namespace Query.Core { + sealed class KeyboardHook { + public event EventHandler Triggered; - public void StartHook(){ - if (keyboardHook != IntPtr.Zero){ - NativeMethods.UnhookWindowsHookEx(keyboardHook); - } + // ReSharper disable once PrivateFieldCanBeConvertedToLocalVariable + private readonly NativeMethods.HookProc keyboardHookDelegate; + private IntPtr keyboardHook; - keyboardHook = NativeMethods.SetWindowsHookEx(NativeMethods.WH_KEYBOARD_LL, keyboardHookDelegate, IntPtr.Zero, 0); - } + public KeyboardHook() { + keyboardHookDelegate = KeyboardHookProc; + } - public void StopHook(){ - if (keyboardHook != IntPtr.Zero){ - NativeMethods.UnhookWindowsHookEx(keyboardHook); - keyboardHook = IntPtr.Zero; - } - } + public void StartHook() { + if (keyboardHook != IntPtr.Zero) { + NativeMethods.UnhookWindowsHookEx(keyboardHook); + } - private IntPtr KeyboardHookProc(int nCode, IntPtr wParam, IntPtr lParam){ - if (wParam == (IntPtr)NativeMethods.WM_KEYDOWN){ - Keys key = (Keys)Marshal.ReadInt32(lParam); + keyboardHook = NativeMethods.SetWindowsHookEx(NativeMethods.WH_KEYBOARD_LL, keyboardHookDelegate, IntPtr.Zero, 0); + } - if ((key == Keys.LWin || key == Keys.RWin) && Control.ModifierKeys.HasFlag(Keys.Control)){ - Triggered?.Invoke(this, EventArgs.Empty); - return NativeMethods.HookHandled; - } - } + public void StopHook() { + if (keyboardHook != IntPtr.Zero) { + NativeMethods.UnhookWindowsHookEx(keyboardHook); + keyboardHook = IntPtr.Zero; + } + } - return NativeMethods.CallNextHookEx(keyboardHook, nCode, wParam, lParam); - } + private IntPtr KeyboardHookProc(int nCode, IntPtr wParam, IntPtr lParam) { + if (wParam == (IntPtr) NativeMethods.WM_KEYDOWN) { + Keys key = (Keys) Marshal.ReadInt32(lParam); - private static class NativeMethods{ - public const int WH_KEYBOARD_LL = 13; - public const int WM_KEYDOWN = 0x0100; - public const int WM_KEYUP = 0x0101; + if ((key == Keys.LWin || key == Keys.RWin) && Control.ModifierKeys.HasFlag(Keys.Control)) { + Triggered?.Invoke(this, EventArgs.Empty); + return NativeMethods.HookHandled; + } + } - public static readonly IntPtr HookHandled = new IntPtr(-1); + return NativeMethods.CallNextHookEx(keyboardHook, nCode, wParam, lParam); + } - public delegate IntPtr HookProc(int nCode, IntPtr wParam, IntPtr lParam); + private static class NativeMethods { + public const int WH_KEYBOARD_LL = 13; + public const int WM_KEYDOWN = 0x0100; + public const int WM_KEYUP = 0x0101; - [DllImport("user32.dll")] - public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); + public static readonly IntPtr HookHandled = new IntPtr(-1); - [DllImport("user32.dll")] - public static extern bool UnhookWindowsHookEx(IntPtr idHook); + public delegate IntPtr HookProc(int nCode, IntPtr wParam, IntPtr lParam); - [DllImport("user32.dll")] - public static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, IntPtr wParam, IntPtr lParam); - } - } + [DllImport("user32.dll")] + public static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); + + [DllImport("user32.dll")] + public static extern bool UnhookWindowsHookEx(IntPtr idHook); + + [DllImport("user32.dll")] + public static extern IntPtr CallNextHookEx(IntPtr idHook, int nCode, IntPtr wParam, IntPtr lParam); + } + } } diff --git a/Query/MainForm.cs b/Query/MainForm.cs index 60c7c1d..e30fc8f 100644 --- a/Query/MainForm.cs +++ b/Query/MainForm.cs @@ -5,142 +5,142 @@ using Base; using Query.Controls; using Query.Core; -namespace Query{ - partial class MainForm : Form{ - private readonly CommandProcessor processor; - private readonly CommandHistory history; +namespace Query { + partial class MainForm : Form { + private readonly CommandProcessor processor; + private readonly CommandHistory history; - private readonly Timer focusTimer; - private readonly KeyboardHook keyboardHook; + private readonly Timer focusTimer; + private readonly KeyboardHook keyboardHook; - private bool isLoaded; + private bool isLoaded; - public MainForm(){ - InitializeComponent(); + public MainForm() { + InitializeComponent(); - processor = new CommandProcessor{ - SingleTokenProcessor = ProcessSingleToken - }; + processor = new CommandProcessor { + SingleTokenProcessor = ProcessSingleToken + }; - processor.AddApp<AppCalc.App>(); - processor.AddApp<AppConv.App>(); - processor.AddApp<AppMeme.App>(); - processor.AddApp<AppSys.App>(); + processor.AddApp<AppCalc.App>(); + processor.AddApp<AppConv.App>(); + processor.AddApp<AppMeme.App>(); + processor.AddApp<AppSys.App>(); - history = new CommandHistory(); - queryBox.Setup(history, str => queryLog.AddEntry(str, QueryHistoryLog.EntryType.Information)); + history = new CommandHistory(); + queryBox.Setup(history, str => queryLog.AddEntry(str, QueryHistoryLog.EntryType.Information)); - keyboardHook = new KeyboardHook(); - keyboardHook.Triggered += keyboardHook_Triggered; + keyboardHook = new KeyboardHook(); + keyboardHook.Triggered += keyboardHook_Triggered; - focusTimer = new Timer{ - Interval = 1 - }; + focusTimer = new Timer { + Interval = 1 + }; - focusTimer.Tick += focusTimer_Tick; + focusTimer.Tick += focusTimer_Tick; - Disposed += MainForm_Disposed; - queryBox.CommandRan += queryBox_CommandRan; - } + Disposed += MainForm_Disposed; + queryBox.CommandRan += queryBox_CommandRan; + } - private void SetShown(bool show){ - if (show){ - focusTimer.Start(); - } - else{ - Hide(); - } - } + private void SetShown(bool show) { + if (show) { + focusTimer.Start(); + } + else { + Hide(); + } + } - private void MainForm_Shown(object sender, EventArgs e){ - Rectangle screenRect = Screen.PrimaryScreen.WorkingArea; - Location = new Point(screenRect.X + screenRect.Width - Width, screenRect.Y + screenRect.Height - Height); + private void MainForm_Shown(object sender, EventArgs e) { + Rectangle screenRect = Screen.PrimaryScreen.WorkingArea; + Location = new Point(screenRect.X + screenRect.Width - Width, screenRect.Y + screenRect.Height - Height); - if (!isLoaded){ - isLoaded = true; - keyboardHook.StartHook(); - } - } + if (!isLoaded) { + isLoaded = true; + keyboardHook.StartHook(); + } + } - private void MainForm_Deactivate(object sender, EventArgs e){ - SetShown(false); - } + private void MainForm_Deactivate(object sender, EventArgs e) { + SetShown(false); + } - private void MainForm_Disposed(object sender, EventArgs e){ - keyboardHook.StopHook(); - } + private void MainForm_Disposed(object sender, EventArgs e) { + keyboardHook.StopHook(); + } - private void trayIcon_Click(object sender, EventArgs e){ - if (((MouseEventArgs)e).Button == MouseButtons.Left){ - SetShown(true); - } - } + private void trayIcon_Click(object sender, EventArgs e) { + if (((MouseEventArgs) e).Button == MouseButtons.Left) { + SetShown(true); + } + } - private void showToolStripMenuItem_Click(object sender, EventArgs e){ - SetShown(true); - } + private void showToolStripMenuItem_Click(object sender, EventArgs e) { + SetShown(true); + } - private void hookToolStripMenuItem_Click(object sender, EventArgs e){ - keyboardHook.StopHook(); - keyboardHook.StartHook(); - } + private void hookToolStripMenuItem_Click(object sender, EventArgs e) { + keyboardHook.StopHook(); + keyboardHook.StartHook(); + } - private void exitToolStripMenuItem_Click(object sender, EventArgs e){ - Application.Exit(); - } + private void exitToolStripMenuItem_Click(object sender, EventArgs e) { + Application.Exit(); + } - private void keyboardHook_Triggered(object sender, EventArgs e){ - SetShown(!Visible); - } + private void keyboardHook_Triggered(object sender, EventArgs e) { + SetShown(!Visible); + } - private void focusTimer_Tick(object sender, EventArgs e){ - WindowState = FormWindowState.Minimized; - Show(); - Activate(); - WindowState = FormWindowState.Normal; + private void focusTimer_Tick(object sender, EventArgs e) { + WindowState = FormWindowState.Minimized; + Show(); + Activate(); + WindowState = FormWindowState.Normal; - queryBox.Focus(); - focusTimer.Stop(); - } + queryBox.Focus(); + focusTimer.Stop(); + } - private void queryBox_CommandRan(object sender, CommandEventArgs e){ - try{ - string result = processor.Run(e.Command); - - if (result != null){ - queryLog.AddEntry("> "+e.Command.Text, QueryHistoryLog.EntryType.UserInput); - history.AddQuery(e.Command.Text); + private void queryBox_CommandRan(object sender, CommandEventArgs e) { + try { + string result = processor.Run(e.Command); - queryLog.AddEntry(result, QueryHistoryLog.EntryType.CommandResult); - history.AddResult(result); - } - }catch(CommandException ex){ - queryLog.AddEntry("> "+e.Command.Text, QueryHistoryLog.EntryType.UserInput); - history.AddQuery(e.Command.Text); + if (result != null) { + queryLog.AddEntry("> " + e.Command.Text, QueryHistoryLog.EntryType.UserInput); + history.AddQuery(e.Command.Text); - queryLog.AddEntry(ex.Message, QueryHistoryLog.EntryType.Error); - } - } + queryLog.AddEntry(result, QueryHistoryLog.EntryType.CommandResult); + history.AddResult(result); + } + } catch (CommandException ex) { + queryLog.AddEntry("> " + e.Command.Text, QueryHistoryLog.EntryType.UserInput); + history.AddQuery(e.Command.Text); - private bool ProcessSingleToken(string token){ - switch(token){ - case "exit": - case "quit": - Application.Exit(); - return true; + queryLog.AddEntry(ex.Message, QueryHistoryLog.EntryType.Error); + } + } - case "clear": - queryLog.ClearEntries(); - history.Clear(); - return true; + private bool ProcessSingleToken(string token) { + switch (token) { + case "exit": + case "quit": + Application.Exit(); + return true; - case "hide": - Hide(); - return true; + case "clear": + queryLog.ClearEntries(); + history.Clear(); + return true; - default: - return false; - } - } - } + case "hide": + Hide(); + return true; + + default: + return false; + } + } + } } diff --git a/Query/MainForm.resx b/Query/MainForm.resx index a73ff59..92caec3 100644 --- a/Query/MainForm.resx +++ b/Query/MainForm.resx @@ -126,94 +126,94 @@ <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <data name="trayIcon.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> - AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAkJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP9AQED/QEBA////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA//// - ////////QEBA////////////QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA//// - /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA////////////QEBA////////////QEBA/0BA - QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA//// - /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED///////// - ////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA//// - /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BA - QP////////////////9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/////////////////0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP9AQED/QEBA////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8AAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEE= -</value> + AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAkJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP9AQED/QEBA////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA//// + ////////QEBA////////////QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA//// + /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA////////////QEBA////////////QEBA/0BA + QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA//// + /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED///////// + ////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA//// + /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BA + QP////////////////9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/////////////////0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP9AQED/QEBA////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8AAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA + AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA + AEE= + </value> </data> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value> - AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAkJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP9AQED/QEBA////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA//// - ////////QEBA////////////QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA//// - /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA////////////QEBA////////////QEBA/0BA - QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA//// - /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED///////// - ////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA//// - /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BA - QP////////////////9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/////////////////0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP9AQED/QEBA////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA - QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk - JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8AAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA - AEE= -</value> + AAABAAEAGBgAAAEAIACICQAAFgAAACgAAAAYAAAAMAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAkJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP9AQED/QEBA////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA//// + ////////QEBA////////////QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA//// + /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA////////////QEBA////////////QEBA/0BA + QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA//// + /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED///////// + ////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP////////////////9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA//// + /////////////0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/////////////////QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BA + QP////////////////9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/////////////////0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP9AQED/QEBA////////////QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP9AQED/QEBA/0BA + QP9AQED/QEBA/0BAQP9AQED/QEBA/0BAQP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQk + JP8kJCT/JCQk/yQkJP8kJCT/JCQk/yQkJP8AAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA + AEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAA + AEE= + </value> </data> -</root> \ No newline at end of file +</root> diff --git a/Query/Program.cs b/Query/Program.cs index 4f388cb..7a05ec9 100644 --- a/Query/Program.cs +++ b/Query/Program.cs @@ -1,13 +1,13 @@ using System; using System.Windows.Forms; -namespace Query{ - static class Program{ - [STAThread] - private static void Main(){ - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainForm()); - } - } +namespace Query { + static class Program { + [STAThread] + private static void Main() { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } }