Пример #1
0
        private static void PL_WalkDescLinks(Graph graph, PGNode prevNode, GEDCOMIndividualRecord ancestor)
        {
            for (int i = 0, count = ancestor.SpouseToFamilyLinks.Count; i < count; i++)
            {
                GEDCOMFamilyRecord family = ancestor.SpouseToFamilyLinks[i].Family;
                PGNode             node   = family.ExtData as PGNode;

                if (node != null && node.Type != PGNodeType.Default)
                {
                    IVertex vtx = graph.FindVertex(node.FamilyXRef);
                    if (vtx == null)
                    {
                        vtx = graph.AddVertex(node.FamilyXRef, node);
                    }

                    if (prevNode != null)
                    {
                        graph.AddDirectedEdge(prevNode.FamilyXRef, node.FamilyXRef, 1, null);
                    }

                    prevNode = node;
                }

                for (int k = 0, count2 = family.Children.Count; k < count2; k++)
                {
                    GEDCOMIndividualRecord child = family.Children[k].Value as GEDCOMIndividualRecord;
                    PL_WalkDescLinks(graph, prevNode, child);
                }
            }
        }
Пример #2
0
        public override void UpdateView()
        {
            fView.SelectedList.BeginUpdate();
            fView.SelectedList.ClearItems();
            fView.SkippedList.BeginUpdate();
            fView.SkippedList.ClearItems();
            try {
                var tree = fBase.Context.Tree;
                int cnt  = 0;
                int num  = tree.RecordsCount;
                for (int i = 0; i < num; i++)
                {
                    GEDCOMRecord rec = tree[i];
                    if (rec is GEDCOMIndividualRecord)
                    {
                        cnt++;
                        GEDCOMIndividualRecord iRec = rec as GEDCOMIndividualRecord;
                        string st = iRec.XRef + " / " + GKUtils.GetNameString(iRec, true, false);

                        if (fSplitList.IndexOf(iRec) < 0)
                        {
                            fView.SkippedList.AddItem(null, st);
                        }
                        else
                        {
                            fView.SelectedList.AddItem(null, st);
                        }
                    }
                }
                fView.Caption = fSplitList.Count.ToString() + @" / " + cnt.ToString();
            } finally {
                fView.SelectedList.EndUpdate();
                fView.SkippedList.EndUpdate();
            }
        }
Пример #3
0
        public CommunicationEditDlg()
        {
            InitializeComponent();

            fTempInd = null;

            for (GKCommunicationType ct = GKCommunicationType.ctCall; ct <= GKCommunicationType.ctLast; ct++)
            {
                cmbCorrType.Items.Add(LangMan.LS(GKData.CommunicationNames[(int)ct]));
            }

            fNotesList = new GKSheetList(pageNotes);
            fMediaList = new GKSheetList(pageMultimedia);

            // SetLang()
            btnAccept.Text       = LangMan.LS(LSID.LSID_DlgAccept);
            btnCancel.Text       = LangMan.LS(LSID.LSID_DlgCancel);
            Title                = LangMan.LS(LSID.LSID_WinCommunicationEdit);
            pageNotes.Text       = LangMan.LS(LSID.LSID_RPNotes);
            pageMultimedia.Text  = LangMan.LS(LSID.LSID_RPMultimedia);
            lblTheme.Text        = LangMan.LS(LSID.LSID_Theme);
            lblCorresponder.Text = LangMan.LS(LSID.LSID_Corresponder);
            lblType.Text         = LangMan.LS(LSID.LSID_Type);
            lblDate.Text         = LangMan.LS(LSID.LSID_Date);
            btnPersonAdd.ToolTip = LangMan.LS(LSID.LSID_PersonAttachTip);

            txtDir.Items.Clear();
            txtDir.Items.AddRange(GKComboItem.Convert(new string[] {
                LangMan.LS(LSID.LSID_CD_1),
                LangMan.LS(LSID.LSID_CD_2)
            }));
        }
Пример #4
0
        private static void SearchKGInt(Vertex prevNode, GEDCOMIndividualRecord iRec,
                                        KinshipsGraph graph, RelationKind relation, RelationKind inverseRelation)
        {
            if (iRec == null)
            {
                return;
            }

            Vertex currNode = graph.FindVertex(iRec.XRef);

            if (currNode != null)
            {
                if (prevNode != null)
                {
                    graph.AddRelation(prevNode, currNode, relation, inverseRelation);
                }

                return;
            }
            else
            {
                currNode = graph.AddIndividual(iRec);

                if (prevNode != null)
                {
                    graph.AddRelation(prevNode, currNode, relation, inverseRelation);
                }
            }

            if (iRec.ChildToFamilyLinks.Count > 0)
            {
                GEDCOMFamilyRecord fam = iRec.GetParentsFamily();
                if (fam != null)
                {
                    GEDCOMIndividualRecord father, mother;
                    father = fam.GetHusband();
                    mother = fam.GetWife();

                    SearchKGInt(currNode, father, graph, RelationKind.rkParent, RelationKind.rkChild);
                    SearchKGInt(currNode, mother, graph, RelationKind.rkParent, RelationKind.rkChild);
                }
            }

            int num = iRec.SpouseToFamilyLinks.Count;

            for (int i = 0; i < num; i++)
            {
                GEDCOMFamilyRecord     family = iRec.SpouseToFamilyLinks[i].Family;
                GEDCOMIndividualRecord spouse = ((iRec.Sex == GEDCOMSex.svMale) ? family.GetWife() : family.GetHusband());

                SearchKGInt(currNode, spouse, graph, RelationKind.rkSpouse, RelationKind.rkSpouse);

                int num2 = family.Children.Count;
                for (int j = 0; j < num2; j++)
                {
                    GEDCOMIndividualRecord child = (GEDCOMIndividualRecord)family.Children[j].Value;
                    SearchKGInt(currNode, child, graph, RelationKind.rkChild, RelationKind.rkParent);
                }
            }
        }
Пример #5
0
        private void ListModify(object sender, ModifyEventArgs eArgs)
        {
            if (sender == fPersonsList)
            {
                GEDCOMIndividualRecord iRec = eArgs.ItemData as GEDCOMIndividualRecord;

                switch (eArgs.Action)
                {
                case RecordAction.raAdd:
                    iRec = fBase.Context.SelectPerson(null, TargetMode.tmNone, GEDCOMSex.svNone);
                    if (iRec != null)
                    {
                        fTemp = fTemp + iRec.XRef + ";";
                    }
                    break;

                case RecordAction.raDelete:
                    if (iRec != null)
                    {
                        fTemp = fTemp.Replace(iRec.XRef + ";", "");
                    }
                    break;
                }
            }

            UpdateControls();
        }
        public CorresponderRet GetCorresponder()
        {
            GKCommunicationDir     commDir      = GKCommunicationDir.cdFrom;
            GEDCOMIndividualRecord corresponder = null;

            GEDCOMTag corrTag = FindTag("FROM", 0);

            if (corrTag == null)
            {
                corrTag = FindTag("TO", 0);
            }

            if (corrTag != null)
            {
                corresponder = (Owner.XRefIndex_Find(GEDCOMUtils.CleanXRef(corrTag.StringValue)) as GEDCOMIndividualRecord);

                if (corrTag.Name == "FROM")
                {
                    commDir = GKCommunicationDir.cdFrom;
                }
                else if (corrTag.Name == "TO")
                {
                    commDir = GKCommunicationDir.cdTo;
                }
            }

            return(new CorresponderRet(commDir, corresponder));
        }
Пример #7
0
        public TreeChartWin(IBaseWindow baseWin, GEDCOMIndividualRecord startPerson)
        {
            InitializeComponent();

            fBase   = baseWin;
            fPerson = startPerson;

            fTreeBox      = new TreeChartBox(new TreeChartGfxRenderer());
            fTreeBox.Base = fBase;
            //fTreeBox.Dock = DockStyle.Fill;
            //fTreeBox.DragOver += ImageTree_DragOver;
            fTreeBox.PersonModify     += ImageTree_PersonModify;
            fTreeBox.RootChanged      += ImageTree_RootChanged;
            fTreeBox.PersonProperties += ImageTree_PersonProperties;
            fTreeBox.Options           = GlobalOptions.Instance.ChartOptions;
            fTreeBox.NavRefresh       += ImageTree_NavRefresh;
            Content = fTreeBox;

            SetLang();

            miModeBoth.Tag        = TreeChartKind.ckBoth;
            miModeAncestors.Tag   = TreeChartKind.ckAncestors;
            miModeDescendants.Tag = TreeChartKind.ckDescendants;

            miCertaintyIndex.Checked = fTreeBox.Options.CertaintyIndexVisible;
            fTreeBox.CertaintyIndex  = fTreeBox.Options.CertaintyIndexVisible;

            miTraceSelected.Checked = fTreeBox.Options.TraceSelected;
            fTreeBox.TraceSelected  = fTreeBox.Options.TraceSelected;

            miTraceKinships.Checked = fTreeBox.TraceKinships;
            miTraceKinships.Enabled = false;
        }
Пример #8
0
        public static bool AddIndividualMother(IBaseWindow baseWin, ChangeTracker localUndoman, GEDCOMIndividualRecord person)
        {
            bool result = false;

            GEDCOMIndividualRecord mother = baseWin.Context.SelectPerson(person, TargetMode.tmChild, GEDCOMSex.svFemale);

            if (mother != null)
            {
                GEDCOMFamilyRecord family = baseWin.Context.GetChildFamily(person, true, mother);
                if (family != null)
                {
                    if (family.Wife.Value == null)
                    {
                        // new family
                        result = localUndoman.DoOrdinaryOperation(OperationType.otFamilySpouseAttach, family, mother);
                    }
                    else
                    {
                        // selected family with wife
                        Logger.LogWrite("BaseController.AddMother(): fail, because family already has mother");
                        result = true;
                    }
                }
            }

            return(result);
        }
Пример #9
0
        private static void PostProcessPerson(IBaseWindow baseWin, GEDCOMIndividualRecord indivRec)
        {
            AppHost.NamesTable.ImportNames(indivRec);

            IListManager listMan = baseWin.GetRecordsListManByType(GEDCOMRecordType.rtIndividual);

            if (listMan == null)
            {
                return;
            }

            IndividualListFilter iFilter = (IndividualListFilter)listMan.Filter;

            if (iFilter.SourceMode == FilterGroupMode.Selected)
            {
                GEDCOMSourceRecord src = baseWin.Context.Tree.XRefIndex_Find(iFilter.SourceRef) as GEDCOMSourceRecord;
                if (src != null && AppHost.StdDialogs.ShowQuestionYN(LangMan.LS(LSID.LSID_IncludedSourceFilter)))
                {
                    indivRec.AddSource(src, "", 0);
                }
            }

            if (iFilter.FilterGroupMode == FilterGroupMode.Selected)
            {
                GEDCOMGroupRecord grp = baseWin.Context.Tree.XRefIndex_Find(iFilter.GroupRef) as GEDCOMGroupRecord;
                if (grp != null && AppHost.StdDialogs.ShowQuestionYN(LangMan.LS(LSID.LSID_IncludedGroupFilter)))
                {
                    grp.AddMember(indivRec);
                }
            }
        }
Пример #10
0
        public CircleChartWin(IBaseWindow baseWin, GEDCOMIndividualRecord startPerson, CircleChartType type)
        {
            InitializeComponent();

            tbImageSave.Image  = GKResources.iSaveImage;
            tbDocPreview.Image = GKResources.iPreview;
            tbDocPrint.Image   = GKResources.iPrint;
            tbPrev.Image       = GKResources.iLeft1;
            tbNext.Image       = GKResources.iRight1;

            ToolBar1.Visible = true;

            fBaseWin = baseWin;

            fCircleChart              = new CircleChart();
            fCircleChart.Base         = fBaseWin;
            fCircleChart.ChartType    = type;
            fCircleChart.Name         = "fCircleChart";
            fCircleChart.Dock         = DockStyle.Fill;
            fCircleChart.NavRefresh  += CircleChartWin_NavRefresh;
            fCircleChart.RootChanged += CircleChartWin_RootChanged;
            fCircleChart.RootPerson   = startPerson;
            Controls.Add(fCircleChart);
            Controls.SetChildIndex(fCircleChart, 0);

            SetLang();
        }
Пример #11
0
        public static ExtList <PatriarchObj> GetPatriarchsLinks(IBaseContext context,
                                                                int gensMin, bool datesCheck,
                                                                bool loneSuppress)
        {
            ExtList <PatriarchObj> patList = GetPatriarchsList(context, gensMin, datesCheck);

            IProgressController progress = AppHost.Progress;

            progress.ProgressInit(LangMan.LS(LSID.LSID_LinksSearch), patList.Count);
            try
            {
                int num2 = patList.Count;
                for (int i = 0; i < num2; i++)
                {
                    PatriarchObj patr = patList[i];

                    for (int j = i + 1; j < num2; j++)
                    {
                        PatriarchObj patr2 = patList[j];

                        GEDCOMIndividualRecord cross = TreeTools.PL_SearchDesc(patr.IRec, patr2.IRec);
                        if (cross != null)
                        {
                            patr.HasLinks  = true;
                            patr2.HasLinks = true;

                            if (cross.Sex == GEDCOMSex.svFemale)
                            {
                                patr.Links.Add(patr2);
                            }
                            else
                            {
                                patr2.Links.Add(patr);
                            }
                        }
                    }

                    progress.ProgressStep();
                }
            }
            finally
            {
                progress.ProgressDone();
            }

            if (loneSuppress)
            {
                for (int i = patList.Count - 1; i >= 0; i--)
                {
                    PatriarchObj patr = patList[i];
                    if (!patr.HasLinks)
                    {
                        patList.Delete(i);
                    }
                }
                patList.Pack();
            }

            return(patList);
        }
Пример #12
0
        public void Test_GEDCOMEventToDateStr()
        {
            GEDCOMIndividualRecord iRec = fContext.Tree.XRefIndex_Find("I1") as GEDCOMIndividualRecord;

            GEDCOMCustomEvent evt = iRec.FindEvent("BIRT");

            Assert.IsNotNull(evt);

            string st2 = GKUtils.GEDCOMEventToDateStr(null, DateFormat.dfYYYY_MM_DD, false);

            Assert.AreEqual("", st2);

            st2 = GKUtils.GEDCOMEventToDateStr(evt, DateFormat.dfYYYY_MM_DD, false);
            Assert.AreEqual("1990.12.28", st2);

            evt.Cause = "test cause";
            st2       = GKUtils.GetEventCause(evt);
            Assert.AreEqual("test cause", st2);

            string ds = GKUtils.GEDCOMEventToDateStr(evt, DateFormat.dfDD_MM_YYYY, false);

            Assert.AreEqual("28.12.1990", ds);

            ds = GKUtils.GEDCOMEventToDateStr(evt, DateFormat.dfYYYY_MM_DD, false);
            Assert.AreEqual("1990.12.28", ds);

            ds = GKUtils.GEDCOMEventToDateStr(evt, DateFormat.dfYYYY, false);
            Assert.AreEqual("1990", ds);

            ds = GKUtils.GEDCOMEventToDateStr(null, DateFormat.dfYYYY, false);
            Assert.AreEqual("", ds);
        }
Пример #13
0
        public override void UpdateContents()
        {
            var family = fDataOwner as GEDCOMFamilyRecord;

            if (fSheetList == null || family == null)
            {
                return;
            }

            try
            {
                fSheetList.BeginUpdate();
                fSheetList.ClearItems();

                int idx = 0;
                foreach (GEDCOMPointer ptr in family.Children)
                {
                    idx += 1;

                    GEDCOMIndividualRecord child = (GEDCOMIndividualRecord)ptr.Value;

                    fSheetList.AddItem(child, new object[] {
                        idx, GKUtils.GetNameString(child, true, false),
                        new GEDCOMDateItem(GKUtils.GetBirthDate(child))
                    });
                }

                fSheetList.EndUpdate();
            }
            catch (Exception ex)
            {
                Logger.LogWrite("ChildrenListModel.UpdateContents(): " + ex.Message);
            }
        }
Пример #14
0
        // FIXME: perhaps it is necessary to define the maximum age by statistics
        private bool FilterHandler(GEDCOMRecord record)
        {
            bool result = true;

            try
            {
                GEDCOMIndividualRecord iRec = (GEDCOMIndividualRecord)record;
                int bdy = iRec.GetChronologicalYear("BIRT");
                int ddy = iRec.GetChronologicalYear("DEAT");

                if (bdy != 0 && ddy == 0)
                {
                    ddy = bdy + GKData.PROVED_LIFE_LENGTH;
                }

                if (bdy == 0 && ddy != 0)
                {
                    bdy = ddy - GKData.PROVED_LIFE_LENGTH;
                }

                if (fYearCurrent > 0)
                {
                    result = (fYearCurrent >= bdy && fYearCurrent <= ddy);
                }
            }
            catch (Exception ex)
            {
                Logger.LogWrite("TimeLineWidget.FilterHandler(): " + ex.Message);
            }

            return(result);
        }
Пример #15
0
        public virtual string GetPossessiveName(GEDCOMIndividualRecord iRec)
        {
            string nm = GKUtils.GetNameString(iRec, true, false);

            nm = GetPossessiveName(nm);
            return(nm);
        }
Пример #16
0
        public CircleChartWin(IBaseWindow baseWin, GEDCOMIndividualRecord startPerson, CircleChartType type)
        {
            InitializeComponent();

            tbImageSave.Image  = UIHelper.LoadResourceImage("Resources.btn_save_image.gif");
            tbDocPreview.Image = UIHelper.LoadResourceImage("Resources.btn_preview.gif");
            tbDocPrint.Image   = UIHelper.LoadResourceImage("Resources.btn_print.gif");
            tbPrev.Image       = UIHelper.LoadResourceImage("Resources.btn_left.gif");
            tbNext.Image       = UIHelper.LoadResourceImage("Resources.btn_right.gif");
            tbOptions.Image    = UIHelper.LoadResourceImage("Resources.btn_tools.gif");

            fBaseWin = baseWin;

            fCircleChart              = new CircleChart();
            fCircleChart.Base         = fBaseWin;
            fCircleChart.ChartType    = type;
            fCircleChart.NavRefresh  += CircleChartWin_NavRefresh;
            fCircleChart.ZoomChanged += CircleChartWin_NavRefresh;
            fCircleChart.RootChanged += CircleChartWin_RootChanged;
            fCircleChart.RootPerson   = startPerson;
            fCircleChart.Options.Assign(GlobalOptions.Instance.AncestorsCircleOptions);
            Content = fCircleChart;

            SetLang();

            fController = new CircleChartWinController(this);
            fController.Init(fBaseWin);
        }
Пример #17
0
        public override void UpdateContents()
        {
            var grp = fDataOwner as GEDCOMGroupRecord;

            if (fSheetList == null || grp == null)
            {
                return;
            }

            try
            {
                fSheetList.BeginUpdate();
                fSheetList.ClearItems();

                foreach (GEDCOMPointer ptrMember in grp.Members)
                {
                    GEDCOMIndividualRecord member = ptrMember.Value as GEDCOMIndividualRecord;
                    if (member == null)
                    {
                        continue;
                    }

                    fSheetList.AddItem(member, new object[] { GKUtils.GetNameString(member, true, false) });
                }

                fSheetList.EndUpdate();
            }
            catch (Exception ex)
            {
                Logger.LogWrite("GroupMembersSublistModel.UpdateContents(): " + ex.Message);
            }
        }
Пример #18
0
        private static void PrepareSpecIndex(StringList index, string val, GEDCOMIndividualRecord iRec)
        {
            if (index == null)
            {
                throw new ArgumentNullException("index");
            }

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

            StringList persons;

            int idx = index.IndexOf(val);

            if (idx < 0)
            {
                persons = new StringList();
                index.AddObject(val, persons);
            }
            else
            {
                persons = (StringList)index.GetObject(idx);
            }

            if (persons.IndexOfObject(iRec) < 0)
            {
                persons.AddObject(GKUtils.GetNameString(iRec, true, false), iRec);
            }
        }
Пример #19
0
        public static bool AddIndividualPortrait(IBaseWindow baseWin, GEDCOMIndividualRecord iRec)
        {
            bool result = false;

            GEDCOMMultimediaRecord mmRec = baseWin.Context.SelectRecord(GEDCOMRecordType.rtMultimedia, null) as GEDCOMMultimediaRecord;

            if (mmRec == null)
            {
                return(false);
            }

            // remove previous portrait link
            GEDCOMMultimediaLink mmLink = iRec.GetPrimaryMultimediaLink();

            if (mmLink != null)
            {
                mmLink.IsPrimary = false;
            }

            // set new portrait link
            mmLink = iRec.SetPrimaryMultimediaLink(mmRec);

            // select portrait area
            using (var selectDlg = AppHost.Container.Resolve <IPortraitSelectDlg>())
            {
                selectDlg.InitDialog(baseWin);
                selectDlg.MultimediaLink = mmLink;
                result = AppHost.Instance.ShowModalX(selectDlg, false);
            }

            return(result);
        }
Пример #20
0
        private static bool CheckPersonsEx(GEDCOMIndividualRecord rec1, GEDCOMIndividualRecord rec2)
        {
            GEDCOMFamilyRecord fam1 = rec1.GetParentsFamily();
            GEDCOMFamilyRecord fam2 = rec2.GetParentsFamily();

            return(!Equals(fam1, fam2));
        }
Пример #21
0
        public void GenChart(GEDCOMIndividualRecord iRec, TreeChartKind kind, bool rootCenter)
        {
            if (iRec == null)
            {
                return;
            }

            try
            {
                fSelected = null;

                fModel.GenChart(iRec, kind, rootCenter);

                RecalcChart();

                if (rootCenter)
                {
                    CenterPerson(fModel.Root, false);
                }

                NavAdd(iRec);
                DoRootChanged(fModel.Root);
            }
            catch (Exception ex)
            {
                Logger.LogWrite("TreeChartBox.GenChart(): " + ex.Message);
            }
        }
Пример #22
0
        private void CollectData()
        {
            fAdrList.ClearItems();
            fPhonesList.ClearItems();
            fMailsList.ClearItems();
            fWebsList.ClearItems();

            int num = fBase.Context.Tree.RecordsCount;

            for (int i = 0; i < num; i++)
            {
                GEDCOMRecord rec = fBase.Context.Tree[i];
                if (rec.RecordType != GEDCOMRecordType.rtIndividual)
                {
                    continue;
                }

                GEDCOMIndividualRecord iRec = (GEDCOMIndividualRecord)rec;
                string nm = GKUtils.GetNameString(iRec, true, false);

                foreach (GEDCOMCustomEvent evt in iRec.Events)
                {
                    PrepareEvent(nm, evt);
                }
            }

            fAdrList.ResizeColumn(0);
            fAdrList.ResizeColumn(1);
            fPhonesList.ResizeColumn(0);
            fPhonesList.ResizeColumn(1);
            fMailsList.ResizeColumn(0);
            fMailsList.ResizeColumn(1);
            fWebsList.ResizeColumn(0);
            fWebsList.ResizeColumn(1);
        }
Пример #23
0
        public void SelectByRec(GEDCOMIndividualRecord iRec)
        {
            if (iRec == null)
            {
                return;
            }

            int num = fModel.Persons.Count;

            for (int i = 0; i < num; i++)
            {
                TreeChartPerson p = fModel.Persons[i];
                if (p.Rec == iRec)
                {
                    SetSelected(p);

                    if (fTraceSelected)
                    {
                        CenterPerson(p);
                    }

                    return;
                }
            }

            SetSelected(null);
        }
Пример #24
0
        private bool ProcessIndividualPortrait(bool redo)
        {
            GEDCOMIndividualRecord iRec   = fObj as GEDCOMIndividualRecord;
            GEDCOMMultimediaLink   mmLink = fNewVal as GEDCOMMultimediaLink;

            if (iRec == null || mmLink == null)
            {
                return(false);
            }

            if (fType == OperationType.otIndividualPortraitDetach)
            {
                redo = !redo;
            }

            if (redo)
            {
                mmLink.IsPrimary = true;
            }
            else
            {
                mmLink.IsPrimary = false;
            }

            return(true);
        }
Пример #25
0
        private void ModifySpousesSheet(object sender, ModifyEventArgs eArgs)
        {
            GEDCOMFamilyRecord family = eArgs.ItemData as GEDCOMFamilyRecord;

            if (eArgs.Action == RecordAction.raJump)
            {
                if (family != null && (fPerson.Sex == GEDCOMSex.svMale || fPerson.Sex == GEDCOMSex.svFemale))
                {
                    GEDCOMPointer sp = null;
                    switch (fPerson.Sex)
                    {
                    case GEDCOMSex.svMale:
                        sp = family.Wife;
                        break;

                    case GEDCOMSex.svFemale:
                        sp = family.Husband;
                        break;
                    }

                    if (sp != null)
                    {
                        GEDCOMIndividualRecord spouse = (GEDCOMIndividualRecord)sp.Value;
                        AcceptChanges();
                        fBase.SelectRecordByXRef(spouse.XRef);
                        Close();
                    }
                }
            }
        }
Пример #26
0
        public void Test_GetMarriageAge()
        {
            GEDCOMIndividualRecord iRec1 = fContext.Tree.XRefIndex_Find("I1") as GEDCOMIndividualRecord;

            // specially bad date also for CheckBase functions
            Assert.AreEqual(10, GKUtils.GetMarriageAge(iRec1));
        }
Пример #27
0
        private GEDCOMIndividualRecord ParsePerson(StringList buffer, string str, ref int selfId)
        {
            try
            {
                selfId = -1;
                int marrNum = -1;
                int pid_end = 0;

                var plRet = ParsePersonLine(str);
                // extData - (в/б)

                if (plRet == null)
                {
                    return(null);
                }

                pid_end = plRet.Pos;

                if (fPersonsList.ContainsKey(plRet.PersId))
                {
                    fLog.Add(">>>> " + fLangMan.LS(ILS.LSID_ParseError_NumDuplicate) + " \"" + plRet.PersId + "\".");
                    return(null);
                }

                if (NumbersType == PersonNumbersType.pnKonovalov)
                {
                    selfId = int.Parse(plRet.PersId);
                    int.TryParse(plRet.MarNum, out marrNum);
                }

                str = str.Substring(pid_end).Trim();

                GEDCOMSex proposeSex = GetProposeSex(buffer);

                GEDCOMIndividualRecord result = DefinePerson(str, proposeSex);

                fPersonsList.Add(plRet.PersId, result);

                if (!string.IsNullOrEmpty(plRet.ParentId))
                {
                    GEDCOMIndividualRecord parent;
                    if (fPersonsList.TryGetValue(plRet.ParentId, out parent))
                    {
                        AddChild(parent, marrNum, result);
                    }
                    else
                    {
                        fLog.Add(">>>> " + fLangMan.LS(ILS.LSID_ParseError_AncNotFound) + " \"" + plRet.ParentId + "\".");
                    }
                }

                return(result);
            }
            catch (Exception ex)
            {
                Logger.LogWrite("Importer.ParsePerson(): " + ex.Message);
                throw;
            }
        }
Пример #28
0
        private void ExposeCatalog(Document document, SimpleColumnText columnText, CatalogProps catProps)
        {
            StringList index = catProps.Index;

            if (index == null)
            {
                return;
            }

            Chunk chunk = new Chunk(catProps.Title, fSubchapFont);

            chunk.SetLocalDestination(catProps.Sign);

            if (CatalogNewPages)
            {
                document.Add(new Paragraph(chunk));
                document.Add(new Paragraph(Chunk.NEWLINE));
            }
            else
            {
                columnText.AddElement(new Paragraph(chunk)
                {
                    Alignment = 1
                });
                columnText.AddElement(new Paragraph(Chunk.NEWLINE));
            }

            index.Sort();
            int num = index.Count;

            for (int i = 0; i < num; i++)
            {
                Paragraph ps = new Paragraph(new Chunk(index[i], fSymFont));
                ps.SpacingBefore = 0f;
                ps.SpacingAfter  = 20f;
                //ps.Alignment = 1;
                ps.Add(Chunk.NEWLINE);
                columnText.AddElement(ps);

                StringList persons = (StringList)index.GetObject(i);

                persons.Sort();
                int num2 = persons.Count;
                for (int k = 0; k < num2; k++)
                {
                    GEDCOMIndividualRecord iRec = (GEDCOMIndividualRecord)persons.GetObject(k);

                    chunk = new Chunk(persons[k], fTextFont);
                    chunk.SetLocalGoto(iRec.XRef);
                    Paragraph p = new Paragraph(chunk);
                    columnText.AddElement(p);
                }

                columnText.AddElement(new Paragraph(Chunk.NEWLINE)
                {
                    SpacingAfter = 10f
                });
            }
        }
Пример #29
0
        public void Test_GetFirstborn()
        {
            GEDCOMIndividualRecord iRec1 = fContext.Tree.XRefIndex_Find("I1") as GEDCOMIndividualRecord;
            GEDCOMIndividualRecord iRec3 = fContext.Tree.XRefIndex_Find("I3") as GEDCOMIndividualRecord;

            Assert.AreEqual(iRec3, GKUtils.GetFirstborn(iRec1));
            Assert.AreEqual(20, GKUtils.GetFirstbornAge(iRec1, iRec3));
        }
Пример #30
0
 private void ImageTree_RootChanged(object sender, TreeChartPerson person)
 {
     if (person != null && person.Rec != null)
     {
         fPerson = person.Rec;
         UpdateControls();
     }
 }