private void Application_Startup(object sender, StartupEventArgs e) { TimeStampTraceListener GlobalLog = new TimeStampTraceListener("rsswatcher.log", "global"); GlobalLog.ResetLog(); Trace.Listeners.Add(GlobalLog); Trace.IndentSize = 2; Trace.AutoFlush = true; Trace.WriteLine("=============== RSS Watcher startup =============="); }
public override void CheckConstructorSyntax() { base.CheckConstructorSyntax(); Definition.ObjectName = Definition.ObjectName.ToUpper(); switch (Definition.ObjectName) { default: throw new ArgumentException("Unknown setting '" + Definition.ObjectName + "'"); case "TITLE": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.Title = ParseOrDie <string>(0, Parsers.ParseString); break; case "SUBTITLE": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length >= 1); //subtitles usually contain commas. re-assemble the subtitles. var st = ""; foreach (var s in Definition.ObjectParameters) { if (!string.IsNullOrEmpty(st)) { st += ", "; } st += s; } Engine.Settings.Subtitle = st; break; case "DATETIME": { AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 2); var date = ParseOrDie <DateTime>(0, Parsers.ParseLocalDatetime); var am_pm = ParseOrDie <string>(1, s => s).ToUpper(); var time = new TimeSpan(0, 0, 0); if (am_pm == "PM") { time = new TimeSpan(12, 0, 0); } else if (am_pm != "AM") { throw new ArgumentException(SyntaxErrorMessage); } Engine.Settings.Date = date + time; } break; case "UTCOFFSET": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.UtcOffset = ParseOrDie <TimeSpan>(0, Parsers.ParseTimeSpan); break; case "DATUM": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.DatumName = ParseOrDie <string>(0, s => s); Datum.GetInstance(Engine.Settings.DatumName); //check datum validity break; case "UTMZONE": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.UtmZone = ParseOrDie <string>(0, s => s); break; case "TASKSINORDER": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.TasksInOrder = ParseOrDie <bool>(0, Parsers.ParseBoolean); break; case "CONTESTLANDING": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.ContestLanding = ParseOrDie <bool>(0, Parsers.ParseBoolean); break; case "QNH": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.Qnh = ParseOrDie <double>(0, Parsers.ParseDouble); break; case "ALTITUDEUNITS": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); var units = ParseOrDie <string>(0, Parsers.ParseString).ToLower(); if (units == "meters") { Engine.Settings.AltitudeUnits = AltitudeUnits.Meters; } else if (units == "feet") { Engine.Settings.AltitudeUnits = AltitudeUnits.Feet; } else { throw new ArgumentException("Unknown unit: ", units); } break; case "SMOOTHNESS": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.Smoothness = ParseOrDie <int>(0, int.Parse); break; case "MINSPEED": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.MinSpeed = ParseOrDie <double>(0, Parsers.ParseDouble); break; case "MAXACCELERATION": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); Engine.Settings.MaxAcceleration = ParseOrDie <double>(0, Parsers.ParseLength); break; case "LOGFILE": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); var listener = new TimeStampTraceListener(Definition.ObjectParameters[0]); Trace.Listeners.Add(listener); Trace.AutoFlush = true; break; case "ALTITUDECORRECTIONSFILE": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1); var fileName = ParseOrDie <string>(0, s => s); if (!File.Exists(fileName)) { throw new Exception("Logger altitude corrections file does not exist"); } Engine.Settings.AltitudeCorrectionsFileName = fileName; break; case "INTERPOLATION": AssertNumberOfParametersOrDie(Definition.ObjectParameters.Length == 1 || Definition.ObjectParameters.Length == 2); Engine.Settings.InterpolationInterval = ParseOrDie <int>(0, Parsers.ParseInt); if (Definition.ObjectParameters.Length == 2) { Engine.Settings.InterpolationMaxGap = ParseOrDie <int>(1, Parsers.ParseInt); } break; } }