Ejemplo n.º 1
0
        private void UpdateTreeMap()
        {
            fDataMap.Model.Clear();
            if (fBase == null)
            {
                fDataMap.Invalidate();
                return;
            }

            GEDCOMTree tree = fBase.Context.Tree;
            List <GEDCOMIndividualRecord> prepared     = new List <GEDCOMIndividualRecord>();
            List <GEDCOMRecord>           groupRecords = new List <GEDCOMRecord>();

            try
            {
                int groupNum = 0;
                int num      = tree.RecordsCount;
                for (int i = 0; i < num; i++)
                {
                    GEDCOMRecord rec = tree[i];

                    if (rec.RecordType == GEDCOMRecordType.rtIndividual)
                    {
                        GEDCOMIndividualRecord iRec = rec as GEDCOMIndividualRecord;
                        if (prepared.IndexOf(iRec) < 0)
                        {
                            groupNum++;
                            groupRecords.Clear();

                            TreeTools.WalkTree(iRec, TreeTools.TreeWalkMode.twmAll, groupRecords);

                            int   groupSize = groupRecords.Count;
                            float quality   = 0.0f;
                            for (int j = 0; j < groupSize; j++)
                            {
                                iRec = (GEDCOMIndividualRecord)groupRecords[j];
                                prepared.Add(iRec);

                                quality += iRec.GetCertaintyAssessment();
                            }
                            quality /= groupSize;

                            string name = groupNum.ToString() + " group (" + groupSize.ToString() + ") " + quality.ToString("0.00");

                            CreateItem(null, name, groupSize, quality);
                        }
                    }
                }
            }
            finally
            {
                groupRecords.Clear();
                //prepared.Dispose();
            }

            fDataMap.UpdateView();
        }
Ejemplo n.º 2
0
        private void UpdateTreeMap()
        {
            fDataMap.Model.Items.Clear();
            if (fBase == null)
            {
                fDataMap.Invalidate();
                return;
            }

            string hint = fPlugin.LangMan.LS(CLS.LSID_Hint);

            GDMTree tree = fBase.Context.Tree;
            List <GDMIndividualRecord> prepared     = new List <GDMIndividualRecord>();
            List <GDMRecord>           groupRecords = new List <GDMRecord>();

            try {
                int groupNum = 0;
                int num      = tree.RecordsCount;
                for (int i = 0; i < num; i++)
                {
                    GDMRecord rec = tree[i];

                    if (rec.RecordType == GDMRecordType.rtIndividual)
                    {
                        GDMIndividualRecord iRec = rec as GDMIndividualRecord;
                        if (prepared.IndexOf(iRec) < 0)
                        {
                            groupNum++;
                            groupRecords.Clear();

                            TreeTools.WalkTree(tree, iRec, TreeTools.TreeWalkMode.twmAll, groupRecords);

                            int   groupSize = groupRecords.Count;
                            float quality   = 0.0f;
                            for (int j = 0; j < groupSize; j++)
                            {
                                iRec = (GDMIndividualRecord)groupRecords[j];
                                prepared.Add(iRec);

                                quality += iRec.GetCertaintyAssessment();
                            }
                            quality /= groupSize;

                            string name = string.Format(hint, groupNum, groupSize, quality.ToString("0.00"));

                            CreateItem(null, name, groupSize, quality);
                        }
                    }
                }
            } finally {
                groupRecords.Clear();
            }

            fDataMap.UpdateView();
        }
Ejemplo n.º 3
0
        public void Test_WalkTree()
        {
            GEDCOMIndividualRecord iRec = fBaseWin.Context.Tree.XRefIndex_Find("I1") as GEDCOMIndividualRecord;

            Assert.IsNotNull(iRec);

            List <GEDCOMRecord> walkList = new List <GEDCOMRecord>();

            TreeTools.WalkTree(iRec, TreeTools.TreeWalkMode.twmAll, walkList);
            Assert.AreEqual(5, walkList.Count, "TreeTools.TreeWalk(twmAll)"); // 3 linked from 4 total

            Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.WalkTree(null, TreeTools.TreeWalkMode.twmAll, null); });
            Assert.Throws(typeof(ArgumentNullException), () => { TreeTools.WalkTree(iRec, TreeTools.TreeWalkMode.twmAll, null); });
        }
Ejemplo n.º 4
0
        private void Select(GEDCOMIndividualRecord startPerson, TreeTools.TreeWalkMode walkMode)
        {
            fSplitList.Clear();

            if (startPerson == null)
            {
                AppHost.StdDialogs.ShowError(LangMan.LS(LSID.LSID_NotSelectedPerson));
            }
            else
            {
                TreeTools.WalkTree(startPerson, walkMode, fSplitList);
            }

            UpdateSplitLists();
        }
Ejemplo n.º 5
0
        public void Select(GDMIndividualRecord startPerson, TreeTools.TreeWalkMode walkMode)
        {
            fSplitList.Clear();

            if (startPerson == null)
            {
                AppHost.StdDialogs.ShowError(LangMan.LS(LSID.LSID_NotSelectedPerson));
            }
            else
            {
                TreeTools.WalkTree(fBase.Context.Tree, startPerson, walkMode, fSplitList);
            }

            UpdateView();
        }
Ejemplo n.º 6
0
        private void CheckGroups()
        {
            IProgressController progress = AppHost.Progress;

            gkLogChart1.Clear();
            tvGroups.DataStore = null;

            progress.ProgressInit(LangMan.LS(LSID.LSID_CheckFamiliesConnection), fTree.RecordsCount);
            List <GEDCOMIndividualRecord> prepared     = new List <GEDCOMIndividualRecord>();
            List <GEDCOMRecord>           groupRecords = new List <GEDCOMRecord>();

            try
            {
                var rootItem = new TreeItem();

                int groupNum = 0;

                int num = fTree.RecordsCount;
                for (int i = 0; i < num; i++)
                {
                    GEDCOMRecord rec = fTree[i];

                    if (rec.RecordType == GEDCOMRecordType.rtIndividual)
                    {
                        GEDCOMIndividualRecord iRec = rec as GEDCOMIndividualRecord;
                        if (prepared.IndexOf(iRec) < 0)
                        {
                            groupNum++;
                            groupRecords.Clear();

                            TreeTools.WalkTree(iRec, TreeTools.TreeWalkMode.twmAll, groupRecords);

                            int cnt = groupRecords.Count;

                            TreeItem groupItem = new TreeItem();
                            groupItem.Text = groupNum.ToString() + " " + LangMan.LS(LSID.LSID_Group).ToLower() + " (" + cnt.ToString() + ")";
                            rootItem.Children.Add(groupItem);

                            for (int j = 0; j < cnt; j++)
                            {
                                iRec = (GEDCOMIndividualRecord)groupRecords[j];
                                prepared.Add(iRec);

                                string pn = GKUtils.GetNameString(iRec, true, false);
                                if (iRec.Patriarch)
                                {
                                    pn = "(*) " + pn;
                                }

                                groupItem.Children.Add(new GKTreeNode(pn, iRec));
                            }
                            groupItem.Expanded = true;

                            gkLogChart1.AddFragment(cnt);
                        }
                    }

                    progress.ProgressStep();
                }

                tvGroups.DataStore = rootItem;
                tvGroups.RefreshData();
            }
            finally
            {
                groupRecords.Clear();
                //prepared.Dispose();
                progress.ProgressDone();
            }
        }
Ejemplo n.º 7
0
 public static void PruneMarkConnected(this GDMTree tree, GDMIndividualRecord iRec, List <GDMRecord> marks)
 {
     TreeTools.WalkTree(iRec, TreeTools.TreeWalkMode.twmAll, PruneMarkProc, marks);
 }
Ejemplo n.º 8
0
 public static void PruneDescendants(this GDMTree tree, GDMIndividualRecord iRec, bool visible)
 {
     TreeTools.WalkTree(iRec, TreeTools.TreeWalkMode.twmDescendants, PruneProc, ((object)visible));
 }
Ejemplo n.º 9
0
 public static void RestrictDescendants(GDMTree tree, GDMIndividualRecord iRec, bool visible)
 {
     TreeTools.WalkTree(tree, iRec, TreeTools.TreeWalkMode.twmDescendants, RestrictProc, visible);
 }
Ejemplo n.º 10
0
 public static void RestrictAncestors(GDMTree tree, GDMIndividualRecord iRec, bool visible)
 {
     TreeTools.WalkTree(tree, iRec, TreeTools.TreeWalkMode.twmAncestors, RestrictProc, ((object)visible));
 }