Пример #1
0
        private void CheckSpouses(StringList buffer, GEDCOMIndividualRecord curPerson)
        {
            int num2 = buffer.Count;

            for (int i = 0; i < num2; i++)
            {
                string line = buffer[i];
                if (string.IsNullOrEmpty(line))
                {
                    continue;
                }

                try
                {
                    var slRet = ImportUtils.ParseSpouseLine(line);
                    if (slRet != null)
                    {
                        // define sex
                        string    spSex = slRet.Spouse;
                        GEDCOMSex sx    = (spSex[0] == 'М') ? GEDCOMSex.svMale : GEDCOMSex.svFemale;

                        // extract name
                        line = line.Substring(slRet.Pos).Trim();

                        if (!string.IsNullOrEmpty(line))
                        {
                            GEDCOMIndividualRecord spouse = DefinePerson(line, sx);
                            GEDCOMFamilyRecord     family = GetFamilyByNum(curPerson, slRet.MarrNum);

                            if (spouse == null || family == null)
                            {
                                // TODO: error to log, reporting causes
                            }
                            else
                            {
                                family.AddSpouse(spouse);

                                // extract marriage date
                                if (!string.IsNullOrEmpty(slRet.ExtData))
                                {
                                    string marrDate = slRet.ExtData.Substring(1, slRet.ExtData.Length - 2).Trim();

                                    if (marrDate != "")
                                    {
                                        SetEvent(family, "MARR", marrDate);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Logger.LogWrite("Importer.CheckSpouses(): " + ex.Message);
                }
            }
        }
Пример #2
0
        public void gt_bind_family_spouse(object familyPtr, object spousePtr)
        {
            GEDCOMFamilyRecord fRec = familyPtr as GEDCOMFamilyRecord;

            if (fRec == null)
            {
                return;
            }

            GEDCOMIndividualRecord spRec = spousePtr as GEDCOMIndividualRecord;

            fRec.AddSpouse(spRec);
        }
Пример #3
0
        public void AddSpouse()
        {
            TreeChartPerson p = fView.TreeBox.Selected;

            if (p == null || p.Rec == null)
            {
                return;
            }

            GEDCOMIndividualRecord iRec    = p.Rec;
            GEDCOMIndividualRecord iSpouse = fBase.Context.SelectSpouseFor(iRec);

            if (iSpouse == null)
            {
                return;
            }

            GEDCOMFamilyRecord fam = fBase.Context.Tree.CreateFamily();

            fam.AddSpouse(iRec);
            fam.AddSpouse(iSpouse);
            UpdateChart();
        }
Пример #4
0
        private void miSpouseAdd_Click(object sender, EventArgs e)
        {
            TreeChartPerson p = fTreeBox.Selected;

            if (p == null || p.Rec == null)
            {
                return;
            }

            GEDCOMIndividualRecord iRec    = p.Rec;
            GEDCOMIndividualRecord iSpouse = fBase.Context.SelectSpouseFor(iRec);

            if (iSpouse == null)
            {
                return;
            }

            GEDCOMFamilyRecord fam = fBase.Context.Tree.CreateFamily();

            fam.AddSpouse(iRec);
            fam.AddSpouse(iSpouse);
            UpdateChart();
        }
Пример #5
0
        private void ParentAdd(GEDCOMSex needSex)
        {
            TreeChartPerson p = fView.TreeBox.Selected;

            if (p == null || p.Rec == null)
            {
                return;
            }

            bool needParent  = false;
            bool familyExist = p.Rec.GetParentsFamily() != null;

            if (familyExist)
            {
                GEDCOMIndividualRecord mother, father;
                GEDCOMFamilyRecord     fam = p.Rec.GetParentsFamily();
                if (fam == null)
                {
                    father = null;
                    mother = null;
                }
                else
                {
                    father = fam.GetHusband();
                    mother = fam.GetWife();
                }

                needParent = (father == null && needSex == GEDCOMSex.svMale) ||
                             (mother == null && needSex == GEDCOMSex.svFemale);
            }

            if (!familyExist || needParent)
            {
                GEDCOMIndividualRecord child  = p.Rec;
                GEDCOMFamilyRecord     fam    = (familyExist) ? p.Rec.GetParentsFamily() : fBase.Context.Tree.CreateFamily();
                GEDCOMIndividualRecord parent = fBase.Context.SelectPerson(null, TargetMode.tmParent, needSex);
                if (parent != null)
                {
                    fam.AddSpouse(parent);
                    if (!familyExist)
                    {
                        fam.AddChild(child);
                    }

                    UpdateChart();
                }
            }
        }
Пример #6
0
        private GEDCOMFamilyRecord GetFamilyByNum(GEDCOMIndividualRecord parent, int marrNum)
        {
            // it's source of ERRORS! but without this - bad! (AddSpouse() not linking parent to family)
            GEDCOMSex sex = parent.Sex;

            if (sex == GEDCOMSex.svNone || sex == GEDCOMSex.svUndetermined)
            {
                parent.Sex = GEDCOMSex.svMale;
            }

            while (parent.SpouseToFamilyLinks.Count < marrNum)
            {
                GEDCOMFamilyRecord fam = fTree.CreateFamily();
                fam.AddSpouse(parent);
            }

            GEDCOMFamilyRecord family = parent.SpouseToFamilyLinks[marrNum - 1].Family;

            return(family);
        }
Пример #7
0
        private void ImageTree_PersonModify(object sender, PersonModifyEventArgs eArgs)
        {
            TreeChartPerson person = eArgs.Person;

            if (person == null)
            {
                return;
            }

            bool modified = false;

            if (person.Rec != null)
            {
                GEDCOMIndividualRecord iRec = person.Rec;
                modified = BaseController.ModifyIndividual(fBase, ref iRec, null, TargetMode.tmNone, GEDCOMSex.svNone);
            }
            else
            {
                // this is "stub" person, only in descendant tree
                // key properties = BaseSpouse & BaseFamily
                TreeChartPerson    baseSpouse = person.BaseSpouse;
                GEDCOMFamilyRecord baseFamily = person.BaseFamily;

                if (baseSpouse != null && baseFamily != null)
                {
                    GEDCOMIndividualRecord iSpouse = fBase.Context.SelectSpouseFor(person.BaseSpouse.Rec);

                    if (iSpouse != null)
                    {
                        modified = baseFamily.AddSpouse(iSpouse);
                    }
                }
            }

            if (modified)
            {
                UpdateChart();
            }
        }
Пример #8
0
        private bool ProcessFamilySpouse(bool redo)
        {
            GEDCOMFamilyRecord     famRec    = fObj as GEDCOMFamilyRecord;
            GEDCOMIndividualRecord spouseRec = fNewVal as GEDCOMIndividualRecord;

            if (famRec == null || spouseRec == null)
            {
                return(false);
            }

            if (fType == OperationType.otFamilySpouseDetach)
            {
                redo = !redo;
            }
            if (redo)
            {
                famRec.AddSpouse(spouseRec);
            }
            else
            {
                famRec.RemoveSpouse(spouseRec);
            }
            return(true);
        }
Пример #9
0
        public static void FillContext(IBaseContext context)
        {
            // a null result if the record is not defined
            GEDCOMCustomEvent evt = context.CreateEventEx(null, "BIRT", "xxxxx", "xxxxx");

            Assert.IsNull(evt);

            // first individual
            GEDCOMIndividualRecord iRec = context.CreatePersonEx("Ivan", "Ivanovich", "Ivanov", GEDCOMSex.svMale, true);

            Assert.IsNotNull(iRec);

            evt = iRec.FindEvent("BIRT");
            Assert.IsNotNull(evt);
            evt.Date.ParseString("28 DEC 1990");
            evt.Place.StringValue = "Ivanovo";

            GEDCOMCustomEvent evtd = context.CreateEventEx(iRec, "DEAT", "28 DEC 2010", "Ivanovo");

            Assert.IsNotNull(evtd);

            // second individual, wife
            GEDCOMIndividualRecord iRec2 = context.CreatePersonEx("Maria", "Petrovna", "Ivanova", GEDCOMSex.svFemale, true);

            evt = iRec2.FindEvent("BIRT");
            Assert.IsNotNull(evt);
            evt.Date.ParseString("17 MAR 1990");
            evt.Place.StringValue = "Ivanovo";

            iRec.AddAssociation("spouse", iRec2);

            // third individual, child
            GEDCOMIndividualRecord iRec3 = context.CreatePersonEx("Anna", "Ivanovna", "Ivanova", GEDCOMSex.svFemale, true);

            evt = iRec3.FindEvent("BIRT");
            Assert.IsNotNull(evt);
            evt.Date.ParseString("11 FEB 2010");
            evt.Place.StringValue = "Ivanovo";

            // their family
            GEDCOMFamilyRecord famRec = context.Tree.CreateFamily();

            Assert.IsNotNull(famRec);
            famRec.AddSpouse(iRec);
            famRec.AddSpouse(iRec2);
            famRec.AddChild(iRec3);

            context.CreateEventEx(famRec, "MARR", "01 JAN 2000", "unknown");

            // individual outside the family
            GEDCOMIndividualRecord iRec4 = context.CreatePersonEx("Alex", "", "Petrov", GEDCOMSex.svMale, true);

            evt = iRec4.FindEvent("BIRT");
            Assert.IsNotNull(evt);
            evt.Date.ParseString("15 JUN 1989");
            evt.Place.StringValue = "Far Forest";

            evt = context.CreateEventEx(iRec4, "RESI", "12 FEB", "Far Forest");
            Assert.IsNotNull(evt);

            // fifth
            GEDCOMIndividualRecord iRec5 = context.CreatePersonEx("Anna", "", "Jones", GEDCOMSex.svFemale, false);

            Assert.IsNotNull(iRec5);

            // group for tests
            GEDCOMGroupRecord groupRec = context.Tree.CreateGroup();

            groupRec.GroupName = "GroupTest";
            Assert.IsNotNull(groupRec, "group1 != null");
            groupRec.AddMember(iRec);

            // location for tests
            GEDCOMLocationRecord locRec = context.Tree.CreateLocation();

            locRec.LocationName = "Test Location";
            locRec.Map.Lati     = 5.11111;
            locRec.Map.Long     = 7.99999;
            Assert.IsNotNull(locRec, "locRec != null");

            // repository for tests
            GEDCOMRepositoryRecord repoRec = context.Tree.CreateRepository();

            repoRec.RepositoryName = "Test repository";
            Assert.IsNotNull(repoRec, "repoRec != null");

            // research for tests
            GEDCOMResearchRecord resRec = context.Tree.CreateResearch();

            resRec.ResearchName = "Test research";
            Assert.IsNotNull(resRec, "resRec != null");

            // source for tests
            GEDCOMSourceRecord srcRec = context.Tree.CreateSource();

            srcRec.FiledByEntry = "Test source";
            Assert.IsNotNull(srcRec, "srcRec != null");
            iRec.AddSource(srcRec, "p1", 0);

            // note for tests
            GEDCOMNoteRecord noteRec = context.Tree.CreateNote();

            noteRec.SetNoteText("Test note");
            Assert.IsNotNull(noteRec, "noteRec != null");
            iRec.AddNote(noteRec);

            // task for tests
            GEDCOMTaskRecord tskRec = context.Tree.CreateTask();

            tskRec.Goal = "Test task";
            Assert.IsNotNull(tskRec, "tskRec != null");

            // media for tests
            GEDCOMMultimediaRecord mediaRec = context.Tree.CreateMultimedia();

            mediaRec.AddTag("FILE", "", null);
            GEDCOMFileReferenceWithTitle fileRef = mediaRec.FileReferences[0];

            fileRef.Title = "Test multimedia";
            fileRef.LinkFile("sample.png");
            Assert.IsNotNull(mediaRec, "mediaRec != null");
            iRec.AddMultimedia(mediaRec);

            // communication for tests
            GEDCOMCommunicationRecord commRec = context.Tree.CreateCommunication();

            commRec.CommName = "Test communication";
            Assert.IsNotNull(commRec, "commRec != null");
        }
Пример #10
0
        // TODO: rollback changes when exception!
        private void ParseSource()
        {
            int srcYear;

            if (!int.TryParse(edSourceYear.Text, out srcYear))
            {
                ShowError(fLangMan.LS(FLS.LSID_SourceYearInvalid));
                return;
            }

            string srcName = cbSource.Text;
            string srcPage = edPage.Text;
            string place   = edPlace.Text;

            GEDCOMSourceRecord srcRec = null;

            if (!string.IsNullOrEmpty(srcName))
            {
                srcRec = fBase.Context.FindSource(srcName);
                if (srcRec == null)
                {
                    srcRec = fBase.Context.Tree.CreateSource();
                    srcRec.FiledByEntry = srcName;
                }
            }

            GEDCOMIndividualRecord iMain = null;

            int num = dataGridView1.Rows.Count;

            for (int r = 0; r < num; r++)
            {
                DataGridViewRow row = dataGridView1.Rows[r];

                string lnk     = (string)row.Cells[0].Value;
                string nm      = (string)row.Cells[1].Value;
                string pt      = (string)row.Cells[2].Value;
                string fm      = (string)row.Cells[3].Value;
                string age     = (string)row.Cells[4].Value;
                string comment = (string)row.Cells[5].Value;

                if (!string.IsNullOrEmpty(lnk))
                {
                    PersonLink link = GetLinkByName(lnk);

                    GEDCOMSex sx = fBase.Context.DefineSex(nm, pt);
                    GEDCOMIndividualRecord iRec = fBase.Context.CreatePersonEx(nm, pt, fm, sx, false);

                    if (!string.IsNullOrEmpty(age) && SysUtils.IsDigits(age))
                    {
                        int birthYear = srcYear - int.Parse(age);
                        fBase.Context.CreateEventEx(iRec, "BIRT", "ABT " + birthYear.ToString(), "");
                    }

                    if (!string.IsNullOrEmpty(place))
                    {
                        GEDCOMCustomEvent evt = fBase.Context.CreateEventEx(iRec, "RESI", "", "");
                        evt.Place.StringValue = place;
                    }

                    if (!string.IsNullOrEmpty(comment))
                    {
                        GEDCOMNoteRecord noteRec = fBase.Context.Tree.CreateNote();
                        noteRec.SetNoteText(comment);
                        iRec.AddNote(noteRec);
                    }

                    if (srcRec != null)
                    {
                        iRec.AddSource(srcRec, srcPage, 0);
                    }

                    fBase.NotifyRecord(iRec, RecordAction.raAdd);

                    GEDCOMFamilyRecord family = null;

                    if (link == PersonLink.plPerson)
                    {
                        iMain = iRec;
                        string evName = "";

                        if (rbSK_Met.Checked)
                        {
                            switch (cbEventType.SelectedIndex)
                            {
                            case  0:
                                evName = "BIRT";
                                break;

                            case  1:
                                evName = "DEAT";
                                break;

                            case  2:
                                evName = "MARR";
                                break;
                            }
                        }

                        if (evName == "BIRT" || evName == "DEAT")
                        {
                            GEDCOMCustomEvent evt = fBase.Context.CreateEventEx(iRec, evName, GEDCOMDate.CreateByFormattedStr(edEventDate.Text, false), "");
                            evt.Place.StringValue = place;
                        }
                        else if (evName == "MARR")
                        {
                            family = iRec.GetMarriageFamily(true);
                            GEDCOMCustomEvent evt = fBase.Context.CreateEventEx(family, evName, GEDCOMDate.CreateByFormattedStr(edEventDate.Text, false), "");
                            evt.Place.StringValue = place;
                        }
                    }
                    else if (link > PersonLink.plPerson)
                    {
                        if (iMain == null)
                        {
                            throw new PersonScanException(fLangMan.LS(FLS.LSID_BasePersonInvalid));
                        }
                        else
                        {
                            switch (link)
                            {
                            case PersonLink.plFather:
                            case PersonLink.plMother:
                                family = iMain.GetParentsFamily(true);
                                family.AddSpouse(iRec);
                                break;

                            case PersonLink.plGodparent:
                                iMain.AddAssociation(fLangMan.LS(FLS.LSID_PLGodparent), iRec);
                                break;

                            case PersonLink.plSpouse:
                                family = iMain.GetMarriageFamily(true);
                                family.AddSpouse(iRec);
                                break;

                            case PersonLink.plChild:
                                family = iMain.GetMarriageFamily(true);
                                family.AddChild(iRec);
                                break;
                            }
                        }
                    }
                }
            }

            InitSourceControls();
        }