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(); }
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(); }
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); }); }
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(); }
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(); }
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(); } }
public static void PruneMarkConnected(this GDMTree tree, GDMIndividualRecord iRec, List <GDMRecord> marks) { TreeTools.WalkTree(iRec, TreeTools.TreeWalkMode.twmAll, PruneMarkProc, marks); }
public static void PruneDescendants(this GDMTree tree, GDMIndividualRecord iRec, bool visible) { TreeTools.WalkTree(iRec, TreeTools.TreeWalkMode.twmDescendants, PruneProc, ((object)visible)); }
public static void RestrictDescendants(GDMTree tree, GDMIndividualRecord iRec, bool visible) { TreeTools.WalkTree(tree, iRec, TreeTools.TreeWalkMode.twmDescendants, RestrictProc, visible); }
public static void RestrictAncestors(GDMTree tree, GDMIndividualRecord iRec, bool visible) { TreeTools.WalkTree(tree, iRec, TreeTools.TreeWalkMode.twmAncestors, RestrictProc, ((object)visible)); }