public EventEditDlgController(IEventEditDlg view) : base(view)
        {
            fTempLocation = null;

            int num = GKData.DateKinds.Length;

            for (int i = 0; i < num; i++)
            {
                fView.EventDateType.Add(LangMan.LS(GKData.DateKinds[i].Name));
            }

            for (GDMCalendar gc = GDMCalendar.dcGregorian; gc <= GDMCalendar.dcLast; gc++)
            {
                GKData.CalendarStruct cdr = GKData.DateCalendars[(int)gc];
                if (!cdr.HasSupport)
                {
                    continue;
                }

                fView.Date1Calendar.AddItem(LangMan.LS(cdr.Name), gc);
                fView.Date2Calendar.AddItem(LangMan.LS(cdr.Name), gc);
            }

            fView.Date1Calendar.SelectedIndex = 0;
            fView.Date2Calendar.SelectedIndex = 0;

            fView.EventType.Activate();
        }
Example #2
0
        public void SetDate(GDMCalendar calendar, int day, int month, int year, bool yearBC = false)
        {
            switch (calendar)
            {
            case GDMCalendar.dcGregorian:
                SetGregorian(day, month, year);
                break;

            case GDMCalendar.dcJulian:
                SetJulian(day, month, year);
                break;

            case GDMCalendar.dcHebrew:
                SetHebrew(day, month, year);
                break;

            case GDMCalendar.dcFrench:
                SetFrench(day, month, year);
                break;

            case GDMCalendar.dcRoman:
                SetRoman(day, month, year, yearBC);
                break;

            case GDMCalendar.dcIslamic:
                SetIslamic(day, month, year);
                break;

            case GDMCalendar.dcUnknown:
                SetUnknown(day, month, year, yearBC);
                break;
            }
        }
Example #3
0
        public static string[] GetMonthNames(GDMCalendar calendar)
        {
            string[] monthes;
            switch (calendar)
            {
            case GDMCalendar.dcGregorian:
            case GDMCalendar.dcJulian:
            case GDMCalendar.dcRoman:
                monthes = GEDCOMConsts.GEDCOMMonthArray;
                break;

            case GDMCalendar.dcHebrew:
                monthes = GEDCOMConsts.GEDCOMMonthHebrewArray;
                break;

            case GDMCalendar.dcFrench:
                monthes = GEDCOMConsts.GEDCOMMonthFrenchArray;
                break;

            case GDMCalendar.dcIslamic:
                monthes = GEDCOMConsts.GEDCOMMonthIslamicArray;
                break;

            case GDMCalendar.dcUnknown:
            default:
                monthes = GEDCOMConsts.GEDCOMMonthArray;
                break;
            }
            return(monthes);
        }
Example #4
0
        public void SetLocale()
        {
            int num = GKData.DateKinds.Length;

            for (int i = 0; i < num; i++)
            {
                cmbDateType.Items.Add(LangMan.LS(GKData.DateKinds[i].Name));
            }

            for (GDMCalendar gc = GDMCalendar.dcGregorian; gc <= GDMCalendar.dcLast; gc++)
            {
                GKData.CalendarStruct cdr = GKData.DateCalendars[(int)gc];
                if (!cdr.HasSupport)
                {
                    continue;
                }

                cmbDate1Calendar.Items.Add(new GKComboItem <GDMCalendar>(LangMan.LS(cdr.Name), gc));
                cmbDate2Calendar.Items.Add(new GKComboItem <GDMCalendar>(LangMan.LS(cdr.Name), gc));
            }

            cmbDate1Calendar.SelectedIndex = 0;
            cmbDate2Calendar.SelectedIndex = 0;

            fToolTip.SetToolTip(txtDate1, txtDate1.RegionalDatePattern);
            fToolTip.SetToolTip(txtDate2, txtDate2.RegionalDatePattern);
        }
Example #5
0
 public GDMDate(GDMObject owner) : base(owner)
 {
     fApproximated = GDMApproximated.daExact;
     fCalendar     = GDMCalendar.dcGregorian;
     fYear         = UNKNOWN_YEAR;
     fYearBC       = false;
     fYearModifier = string.Empty;
     fMonth        = 0;
     fDay          = 0;
 }
Example #6
0
        private void SetDateInternal(GDMCalendar calendar, int day, int month, int year, string yearModifier, bool yearBC)
        {
            fCalendar     = calendar;
            fDay          = (byte)day;
            fMonth        = (byte)month;
            fYear         = (short)year;
            fYearModifier = yearModifier;
            fYearBC       = yearBC;

            DateChanged();
        }
Example #7
0
        /// <summary>
        /// Internal helper method for parser
        /// </summary>
        internal void SetRawData(GDMApproximated approximated, GDMCalendar calendar,
                                 short year, bool yearBC, string yearModifier, byte month, byte day)
        {
            fApproximated = approximated;
            fCalendar     = calendar;
            fYear         = year;
            fYearBC       = yearBC;
            fYearModifier = yearModifier;
            fMonth        = month;
            fDay          = day;

            DateChanged();
        }
Example #8
0
        public override void Clear()
        {
            base.Clear();

            fApproximated = GDMApproximated.daExact;
            fCalendar     = GDMCalendar.dcGregorian;
            fYear         = UNKNOWN_YEAR;
            fYearBC       = false;
            fYearModifier = string.Empty;
            fMonth        = 0;
            fDay          = 0;

            DateChanged();
        }
Example #9
0
        /// <summary>
        /// This function transforms the string into a date. All components of
        /// the date's string must be given by numbers in order of day / month / year.
        /// This function is intended only for use with the date entry controls (fixed format of date's string).
        /// </summary>
        public static GDMDate CreateByFormattedStr(string dateStr, GDMCalendar calendar, bool aException)
        {
            if (string.IsNullOrEmpty(dateStr))
            {
                return(null);
            }

            if (dateStr.IndexOf("-") >= 0)
            {
                dateStr = dateStr.Replace("-", ".");
            }
            if (dateStr.IndexOf("/") >= 0)
            {
                dateStr = dateStr.Replace("/", ".");
            }
            if (dateStr.IndexOf("_") >= 0)
            {
                dateStr = dateStr.Replace("_", " ");
            }

            string[] dtParts = dateStr.Split('.');
            if (dtParts.Length < 3)
            {
                if (aException)
                {
                    throw new GDMDateException(string.Format("GEDCOMDate.CreateByFormattedStr(): date format is invalid {0}", dateStr));
                }

                return(null);
            }

            string pd = dtParts[0].Trim();
            string pm = dtParts[1].Trim();
            string py = dtParts[2].Trim();

            int day   = (pd == "") ? 0 : ConvertHelper.ParseInt(pd, 0);
            int month = (pm == "") ? 0 : ConvertHelper.ParseInt(pm, 0);
            int year  = (py == "") ? UNKNOWN_YEAR : ConvertHelper.ParseInt(py, UNKNOWN_YEAR);

            var date = new GDMDate(null);

            date.SetDate(calendar, day, month, year);
            return(date);
        }
Example #10
0
        public override void Assign(GDMTag source)
        {
            GDMDate srcDate = source as GDMDate;

            if (srcDate == null)
            {
                throw new ArgumentException(@"Argument is null or wrong type", "source");
            }

            fApproximated = srcDate.fApproximated;
            fCalendar     = srcDate.fCalendar;
            fYear         = srcDate.fYear;
            fYearBC       = srcDate.fYearBC;
            fYearModifier = srcDate.fYearModifier;
            fMonth        = srcDate.fMonth;
            fDay          = srcDate.fDay;

            DateChanged();
        }
Example #11
0
        private static string CheckGEDCOMMonth(GDMCalendar calendar, string str)
        {
            // An empty string is a valid identifier for an unknown month
            if (string.IsNullOrEmpty(str))
            {
                return(string.Empty);
            }

            string[] monthes = GDMDate.GetMonthNames(calendar);
            str = str.ToUpperInvariant();
            for (int m = 0; m < monthes.Length; m++)
            {
                if (monthes[m] == str)
                {
                    return(str);
                }
            }

            throw new GDMDateException(string.Format("The string {0} is not a valid {1} month identifier", str, calendar.ToString()));
        }
Example #12
0
        private static byte GetMonthNumber(GDMCalendar calendar, string strMonth)
        {
            string su = GEDCOMUtils.InvariantTextInfo.ToUpper(strMonth);

            int month;

            switch (calendar)
            {
            case GDMCalendar.dcHebrew:
                month = Algorithms.IndexOf(GEDCOMMonthHebrewArray, su);
                break;

            case GDMCalendar.dcFrench:
                month = Algorithms.IndexOf(GEDCOMMonthFrenchArray, su);
                break;

            default:
                month = Algorithms.IndexOf(GEDCOMMonthArray, su);
                break;
            }

            return((byte)(month + 1));
        }
Example #13
0
        public static UDN GetUDNByFormattedStr(string dateStr, GDMCalendar calendar, bool aException = false)
        {
            GDMDate dtx = GDMDate.CreateByFormattedStr(dateStr, calendar, aException);

            return((dtx != null) ? dtx.GetUDN() : UDN.CreateEmpty());
        }
Example #14
0
 private void SetDateInternal(GDMCalendar calendar, int day, string month, int year, string yearModifier, bool yearBC)
 {
     SetDateInternal(calendar, day, GetMonthNumber(calendar, month), year, yearModifier, yearBC);
 }
Example #15
0
        private GDMCustomDate GetDate()
        {
            GDMCustomDate result = null;

            GDMCalendar cal1 = cmbDate1Calendar.GetSelectedTag <GDMCalendar>();
            GDMCalendar cal2 = cmbDate2Calendar.GetSelectedTag <GDMCalendar>();

            GDMDate gcd1 = GDMDate.CreateByFormattedStr(txtDate1.NormalizeDate, cal1, true);

            if (gcd1 == null)
            {
                throw new ArgumentNullException("gcd1");
            }

            GDMDate gcd2 = GDMDate.CreateByFormattedStr(txtDate2.NormalizeDate, cal2, true);

            if (gcd2 == null)
            {
                throw new ArgumentNullException("gcd2");
            }

            gcd1.YearBC = chkBC1.Checked.GetValueOrDefault();
            gcd2.YearBC = chkBC2.Checked.GetValueOrDefault();

            switch (cmbDateType.SelectedIndex)
            {
            case 0:
                result = gcd1;
                break;

            case 1:     // BEF gcd2
                result = GDMCustomDate.CreateRange(null, gcd2);
                break;

            case 2:     // AFT gcd1
                result = GDMCustomDate.CreateRange(gcd1, null);
                break;

            case 3:     // "BET " + gcd1 + " AND " + gcd2
                result = GDMCustomDate.CreateRange(gcd1, gcd2);
                break;

            case 4:     // FROM gcd1
                result = GDMCustomDate.CreatePeriod(gcd1, null);
                break;

            case 5:     // TO gcd2
                result = GDMCustomDate.CreatePeriod(null, gcd2);
                break;

            case 6:     // FROM gcd1 TO gcd2
                result = GDMCustomDate.CreatePeriod(gcd1, gcd2);
                break;

            case 7:     // ABT gcd1
                result = GDMCustomDate.CreateApproximated(gcd1, GDMApproximated.daAbout);
                break;

            case 8:     // CAL gcd1
                result = GDMCustomDate.CreateApproximated(gcd1, GDMApproximated.daCalculated);
                break;

            case 9:     // EST gcd1
                result = GDMCustomDate.CreateApproximated(gcd1, GDMApproximated.daEstimated);
                break;
            }

            return(result);
        }
Example #16
0
        private GDMCustomDate AssembleDate()
        {
            GDMCustomDate result = null;

            GDMCalendar cal1 = (GDMCalendar)fView.Date1Calendar.SelectedTag;
            GDMCalendar cal2 = (GDMCalendar)fView.Date2Calendar.SelectedTag;

            GDMDate gcd1 = GDMDate.CreateByFormattedStr(fView.Date1.NormalizeDate, cal1, true);

            if (gcd1 == null)
            {
                throw new ArgumentNullException("gcd1");
            }

            GDMDate gcd2 = GDMDate.CreateByFormattedStr(fView.Date2.NormalizeDate, cal2, true);

            if (gcd2 == null)
            {
                throw new ArgumentNullException("gcd2");
            }

            gcd1.YearBC = fView.Date1BC.Checked;
            gcd2.YearBC = fView.Date2BC.Checked;

            switch (fView.EventDateType.SelectedIndex)
            {
            case 0:
                result = gcd1;
                break;

            case 1:     // BEF gcd2
                result = GDMCustomDate.CreateRange(null, null, gcd2);
                break;

            case 2:     // AFT gcd1
                result = GDMCustomDate.CreateRange(null, gcd1, null);
                break;

            case 3:     // "BET " + gcd1 + " AND " + gcd2
                result = GDMCustomDate.CreateRange(null, gcd1, gcd2);
                break;

            case 4:     // FROM gcd1
                result = GDMCustomDate.CreatePeriod(null, gcd1, null);
                break;

            case 5:     // TO gcd2
                result = GDMCustomDate.CreatePeriod(null, null, gcd2);
                break;

            case 6:     // FROM gcd1 TO gcd2
                result = GDMCustomDate.CreatePeriod(null, gcd1, gcd2);
                break;

            case 7:     // ABT gcd1
                result = GDMCustomDate.CreateApproximated(null, gcd1, GDMApproximated.daAbout);
                break;

            case 8:     // CAL gcd1
                result = GDMCustomDate.CreateApproximated(null, gcd1, GDMApproximated.daCalculated);
                break;

            case 9:     // EST gcd1
                result = GDMCustomDate.CreateApproximated(null, gcd1, GDMApproximated.daEstimated);
                break;
            }

            return(result);
        }