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);
        }
示例#2
0
 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);
 }
示例#3
0
文件: Writer.cs 项目: zbx1425/OpenBVE
 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)
                             ));
 }
示例#4
0
        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"))
            };
        }