internal TimetableElementViewModel(TimetableElement timetable) : base(timetable) { CultureInfo culture = CultureInfo.InvariantCulture; Width = timetable .ToReactivePropertyAsSynchronized( x => x.Width, x => x.ToString(culture), x => double.Parse(x, NumberStyles.Float, culture), ignoreValidationErrorValue: true ) .SetValidateNotifyError(x => { double result; string message; Utilities.TryParse(x, NumberRange.Positive, out result, out message); return(message); }) .AddTo(disposable); Height = timetable .ToReactivePropertyAsSynchronized( x => x.Height, x => x.ToString(culture), x => double.Parse(x, NumberStyles.Float, culture), ignoreValidationErrorValue: true ) .SetValidateNotifyError(x => { double result; string message; Utilities.TryParse(x, NumberRange.Positive, out result, out message); return(message); }) .AddTo(disposable); TransparentColor = timetable .ToReactivePropertyAsSynchronized( x => x.TransparentColor, x => x.ToString(), Color24.ParseHexColor, ignoreValidationErrorValue: true ) .SetValidateNotifyError(x => { Color24 result; string message; Utilities.TryParse(x, out result, out message); return(message); }) .AddTo(disposable); }
private static void WriteTimetableNode(StringBuilder builder, TimetableElement element) { builder.AppendLine("[Timetable]"); WriteKey(builder, "Location", element.LocationX, element.LocationY); WriteKey(builder, "Width", element.Width); WriteKey(builder, "Height", element.Height); WriteKey(builder, "TransparentColor", element.TransparentColor.ToString()); WriteKey(builder, "Layer", element.Layer); }
private static void WriteTimetableElementNode(XElement parent, TimetableElement element) { parent.Add(new XElement("Timetable", new XElement("Location", $"{element.LocationX}, {element.LocationY}"), new XElement("Layer", element.Layer), new XElement("Width", element.Width), new XElement("Height", element.Height), new XElement("TransparentColor", element.TransparentColor) )); }
private static void ParseTimetableElementNode(XElement parent, out PanelElement element) { double[] location = ((string)parent.Element("Location")).Split(',').Select(double.Parse).ToArray(); element = new TimetableElement { LocationX = location[0], LocationY = location[1], Layer = (int)parent.Element("Layer"), Width = (double)parent.Element("Width"), Height = (double)parent.Element("Height"), TransparentColor = Color24.ParseHexColor((string)parent.Element("TransparentColor")) }; }