Exemple #1
0
        /// <summary>Returns the string representation of the value of this instance.</summary>
        /// <param name="format">Format string using the usual characters to interpret custom datetime - as per standard Timespan custom formats</param>
        /// <returns>A string that represents the value of this instance.</returns>
        public String ToString(String format, IFormatProvider provider)
        {
            //parse and replace the format stuff
            MatchCollection matches = Regex.Matches(format, "([a-zA-z])\\1{0,}");

            for (int i = matches.Count - 1; i >= 0; i--)
            {
                Match m = matches[i];
                Int32 mIndex = m.Index, mLength = m.Length;

                if (mIndex > 0 && format[m.Index - 1] == '\\')
                {
                    if (m.Length == 1)
                    {
                        continue;
                    }
                    else
                    {
                        mIndex++;
                        mLength--;
                    }
                }
                switch (m.Value[0])
                {
                case 'y':
                    format = format.Substring(0, mIndex) + Years.ToString("D" + mLength) + format.Substring(mIndex + mLength);
                    break;

                case 'd':
                    format = format.Substring(0, mIndex) + Days.ToString("D" + mLength) + format.Substring(mIndex + mLength);
                    break;

                case 'h':
                    format = format.Substring(0, mIndex) + Hours.ToString("D" + mLength.Clamp(1, KSPDateStructure.HoursPerDay.ToString().Length)) + format.Substring(mIndex + mLength);
                    break;

                case 'm':
                    format = format.Substring(0, mIndex) + Minutes.ToString("D" + mLength.Clamp(1, KSPDateStructure.MinutesPerHour.ToString().Length)) + format.Substring(mIndex + mLength);
                    break;

                case 's':
                    format = format.Substring(0, mIndex) + Seconds.ToString("D" + mLength.Clamp(1, KSPDateStructure.SecondsPerMinute.ToString().Length)) + format.Substring(mIndex + mLength);
                    break;

                default:
                    break;
                }
            }

            //Now strip out the \ , but not multiple \\
            format = Regex.Replace(format, "\\\\(?=[a-z])", "");

            return(format);
            //if (KSPDateStructure.CalendarType == CalendarTypeEnum.Earth)
            //    return String.Format(format, _EarthDateTime);
            //else
            //    return String.Format(format, this); //"TEST";
        }
        /// <summary>
        /// Invoked when the current value is changed, and informs the viewmodel.
        /// </summary>
        /// <param name="sender">Sending object.</param>
        /// <param name="e">Event args.</param>
        private void DepthUpdated(Object sender, EventArgs e)
        {
            Object value     = this.DepthHexDecBox.GetValue();
            Int32  realValue = value == null ? 0 : (Int32)Conversions.ParsePrimitiveStringAsPrimitive(DataTypes.Int32, value.ToString());

            if (this.DepthHexDecBox.IsValid())
            {
                this.DepthHexDecBox.SetValue(realValue.Clamp <Int32>(0, PointerScannerViewModel.MaximumPointerScanDepth));
            }

            this.PointerScannerViewModel.SetDepthCommand.Execute(realValue);
        }
        private void DepthHexDecBoxViewModelPropertyChanged(Object sender, PropertyChangedEventArgs args)
        {
            if (args.PropertyName == nameof(HexDecBoxViewModel.Text))
            {
                Object value     = this.DepthHexDecBoxViewModel.GetValue();
                Int32  realValue = value == null ? 0 : (Int32)Conversions.ParsePrimitiveStringAsPrimitive(DataType.Int32, value.ToString());

                if (this.DepthHexDecBoxViewModel.IsValid)
                {
                    this.DepthHexDecBoxViewModel.SetValue(realValue.Clamp <Int32>(0, PointerScannerViewModel.MaximumPointerScanDepth));
                }

                this.PointerScannerViewModel.SetDepthCommand.Execute(realValue);
            }
        }
        /// <summary>Returns the string representation of the value of this instance.</summary>
        /// <param name="format">Format string using the usual characters to interpret custom datetime - as per standard DateTime custom formats</param>
        /// <returns>A string that represents the value of this instance.</returns>
        public String ToString(String format, IFormatProvider provider)
        {
            //parse and replace the format stuff
            MatchCollection matches = Regex.Matches(format, "([a-zA-z])\\1{0,}");

            for (int i = matches.Count - 1; i >= 0; i--)
            {
                Match m = matches[i];
                Int32 mIndex = m.Index, mLength = m.Length;

                if (mIndex > 0 && format[m.Index - 1] == '\\')
                {
                    if (m.Length == 1)
                    {
                        continue;
                    }
                    else
                    {
                        mIndex++;
                        mLength--;
                    }
                }
                switch (m.Value[0])
                {
                case 'y':
                    format = format.Substring(0, mIndex) + Year.ToString("D" + mLength) + format.Substring(mIndex + mLength);
                    break;

                case 'M':
                    if (mLength < 3)
                    {
                        String input2 = Month.ToString("D" + mLength);
                        format = format.Substring(0, mIndex) + input2 + format.Substring(mIndex + mLength);
                    }
                    else if (mLength == 3)
                    {
                        if (KSPDateStructure.CalendarType == CalendarTypeEnum.Earth)
                        {
                            format = format.Substring(0, mIndex) + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(Month) + format.Substring(mIndex + mLength);
                        }
                        else
                        if (KSPDateStructure.MonthCount < 1)
                        {
                            String input2 = Month.ToString("D" + mLength);
                            format = format.Substring(0, mIndex) + input2 + format.Substring(mIndex + mLength);
                        }
                        else
                        {
                            format = format.Substring(0, mIndex) + KSPDateStructure.Months[Month].ToString().Substring(0, 3) + format.Substring(mIndex + mLength);
                        }
                    }
                    else
                    {
                        if (KSPDateStructure.CalendarType == CalendarTypeEnum.Earth)
                        {
                            format = format.Substring(0, mIndex) + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(Month) + format.Substring(mIndex + mLength);
                        }
                        else
                        if (KSPDateStructure.MonthCount < 1)
                        {
                            String input2 = Month.ToString("D" + mLength);
                            format = format.Substring(0, mIndex) + input2 + format.Substring(mIndex + mLength);
                        }
                        else
                        {
                            format = format.Substring(0, mIndex) + KSPDateStructure.Months[Month] + format.Substring(mIndex + mLength);
                        }
                    }
                    break;

                case 'd':
                    format = format.Substring(0, mIndex) + Day.ToString("D" + mLength) + format.Substring(mIndex + mLength);
                    break;

                case 'h':
                    //how to do this one AM/PM Hours
                    String HalfDayTime = "";
                    switch (AMPM)
                    {
                    case AMPMEnum.AM:
                        HalfDayTime = Hour.ToString("D" + mLength.Clamp(1, (KSPDateStructure.HoursPerDay / 2).ToString().Length));
                        break;

                    case AMPMEnum.PM:
                        HalfDayTime = (Hour - (KSPDateStructure.HoursPerDay / 2)).ToString("D" + mLength.Clamp(1, (KSPDateStructure.HoursPerDay / 2).ToString().Length));
                        break;

                    case AMPMEnum.OddHoursPerDay:
                    default:
                        HalfDayTime = Hour.ToString("D" + mLength.Clamp(1, KSPDateStructure.HoursPerDay.ToString().Length));
                        break;
                    }

                    format = format.Substring(0, mIndex) + HalfDayTime + format.Substring(mIndex + mLength);
                    break;

                case 't':
                    if (AMPM != AMPMEnum.OddHoursPerDay)
                    {
                        format = format.Substring(0, mIndex) + AMPM.ToString().ToLower() + format.Substring(mIndex + mLength);
                    }
                    break;

                case 'T':
                    if (AMPM != AMPMEnum.OddHoursPerDay)
                    {
                        format = format.Substring(0, mIndex) + AMPM.ToString().ToUpper() + format.Substring(mIndex + mLength);
                    }
                    break;

                case 'H':
                    format = format.Substring(0, mIndex) + Hour.ToString("D" + mLength.Clamp(1, KSPDateStructure.HoursPerDay.ToString().Length)) + format.Substring(mIndex + mLength);
                    break;

                case 'm':
                    format = format.Substring(0, mIndex) + Minute.ToString("D" + mLength.Clamp(1, KSPDateStructure.MinutesPerHour.ToString().Length)) + format.Substring(mIndex + mLength);
                    break;

                case 's':
                    format = format.Substring(0, mIndex) + Second.ToString("D" + mLength.Clamp(1, KSPDateStructure.SecondsPerMinute.ToString().Length)) + format.Substring(mIndex + mLength);
                    break;

                default:
                    break;
                }
            }

            //Now strip out the \ , but not multiple \\
            format = Regex.Replace(format, "\\\\(?=[a-z])", "");

            return(format);
            //if (KSPDateStructure.CalendarType == CalendarTypeEnum.Earth)
            //    return String.Format(format, _EarthDateTime);
            //else
            //    return String.Format(format, this); //"TEST";
        }
Exemple #5
0
 public static Int32 ClampIndex <T>(this Int32 index, T[] array)
 {
     return(index.Clamp(0, array.Length - 1));
 }