private void ArborViewer1_MouseMove(object sender, MouseEventArgs e) { Point mpt = new Point(e.Location); ArborNode resNode = fArborViewer.getNodeByCoord(mpt.X, mpt.Y); if (resNode == null) { if (fTipShow) { //fTip.Hide(arborViewer1); fArborViewer.ToolTip = string.Empty; fTipShow = false; } } else { if (!fTipShow) { string xref = resNode.Sign; GEDCOMFamilyRecord famRec = fBase.Context.Tree.XRefIndex_Find(xref) as GEDCOMFamilyRecord; string txt = GKUtils.GetFamilyString(famRec) + " [" + xref + "] " /* + resNode.Mass.ToString()*/; //fTip.Show(txt, arborViewer1, mpt.X + 24, mpt.Y); fArborViewer.ToolTip = txt; fTipShow = true; } } }
private void ArborViewer1_MouseMove(object sender, MouseEventArgs e) { ArborNode resNode = arborViewer1.getNodeByCoord(e.X, e.Y); if (resNode == null) { if (fTipShow) { fTip.Hide(arborViewer1); fTipShow = false; } } else { if (!fTipShow) { string xref = resNode.Sign; GEDCOMFamilyRecord famRec = fBase.Context.Tree.XRefIndex_Find(xref) as GEDCOMFamilyRecord; string txt = GKUtils.GetFamilyString(famRec) + " [" + xref + "] " /* + resNode.Mass.ToString()*/; fTip.Show(txt, arborViewer1, e.X + 24, e.Y); fTipShow = true; } } }
public object gt_get_family_wife(object recPtr) { GEDCOMFamilyRecord fam = recPtr as GEDCOMFamilyRecord; recPtr = (fam == null) ? null : fam.Wife.Value; return(recPtr); }
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); }
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); } } }
private static bool CheckPersonsEx(GEDCOMIndividualRecord rec1, GEDCOMIndividualRecord rec2) { GEDCOMFamilyRecord fam1 = rec1.GetParentsFamily(); GEDCOMFamilyRecord fam2 = rec2.GetParentsFamily(); return(!Equals(fam1, fam2)); }
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(); } } } }
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); } } }
private void SetFamily(GEDCOMFamilyRecord value) { fFamily = value; try { fChildrenList.ListModel.DataOwner = fFamily; fEventsList.ListModel.DataOwner = fFamily; fNotesList.ListModel.DataOwner = fFamily; fMediaList.ListModel.DataOwner = fFamily; fSourcesList.ListModel.DataOwner = fFamily; if (fFamily == null) { cmbMarriageStatus.Enabled = false; cmbMarriageStatus.SelectedIndex = 0; cmbRestriction.SelectedIndex = 0; } else { string stat = fFamily.GetTagStringValue("_STAT"); int statIdx = GKUtils.GetMarriageStatusIndex(stat); cmbMarriageStatus.Enabled = true; cmbMarriageStatus.SelectedIndex = statIdx; cmbRestriction.SelectedIndex = (sbyte)fFamily.Restriction; } UpdateControls(); } catch (Exception ex) { Logger.LogWrite("FamilyEditDlg.SetFamily(): " + ex.Message); } }
public static GEDCOMFamilyRecord CreateFamilyRecord(int recordNo) { var family = new GEDCOMFamilyRecord(recordNo); GEDCOMRecord childRecord; GEDCOMEventStructure marrEvent; switch (recordNo) { case 1: childRecord = new GEDCOMRecord(family.Level + 1, "", "@I1@", "HUSB", ""); family.ChildRecords.Add(childRecord); childRecord = new GEDCOMRecord(family.Level + 1, "", "@I2@", "WIFE", ""); family.ChildRecords.Add(childRecord); marrEvent = new GEDCOMEventStructure(family.Level + 1, "MARR", "11 JUN 1988", "MyTown"); family.ChildRecords.Add(marrEvent); break; case 2: childRecord = new GEDCOMRecord(family.Level + 1, "", "@I3@", "HUSB", ""); family.ChildRecords.Add(childRecord); childRecord = new GEDCOMRecord(family.Level + 1, "", "@I2@", "WIFE", ""); family.ChildRecords.Add(childRecord); marrEvent = new GEDCOMEventStructure(family.Level + 1, "MARR", "09 APR 2001", "MyTown"); family.ChildRecords.Add(marrEvent); break; } return(family); }
public override void UpdateContents() { var iRec = fDataOwner as GEDCOMIndividualRecord; if (fSheetList == null || iRec == null) { return; } try { fSheetList.BeginUpdate(); fSheetList.ClearItems(); foreach (GEDCOMChildToFamilyLink cfLink in iRec.ChildToFamilyLinks) { GEDCOMFamilyRecord famRec = cfLink.Family; fSheetList.AddItem(cfLink, new object[] { GKUtils.GetFamilyString(famRec), LangMan.LS(GKData.ParentTypes[(int)cfLink.PedigreeLinkageType]) }); } fSheetList.EndUpdate(); } catch (Exception ex) { Logger.LogWrite("ParentsSublistModel.UpdateContents(): " + ex.Message); } }
private bool ParentIsRequired(GEDCOMSex needSex) { TreeChartPerson p = fTreeBox.Selected; if (p == null || p.Rec == null) { return(false); } bool familyExist = p.Rec.GetParentsFamily() != null; if (!familyExist) { return(true); } GEDCOMIndividualRecord mother, father; GEDCOMFamilyRecord fam = p.Rec.GetParentsFamily(); if (fam == null) { father = null; mother = null; } else { father = fam.GetHusband(); mother = fam.GetWife(); } bool needParent = (father == null && needSex == GEDCOMSex.svMale) || (mother == null && needSex == GEDCOMSex.svFemale); return(needParent); }
public object gt_get_family_husband(object recPtr) { GEDCOMFamilyRecord fam = recPtr as GEDCOMFamilyRecord; recPtr = (fam == null) ? null : fam.Husband.Value; return(recPtr); }
private void WriteCompactFmt(PedigreePerson person) { if (fOptions.PedigreeOptions.IncludeNotes && person.IRec.Notes.Count != 0) { int num = person.IRec.Notes.Count; for (int i = 0; i < num; i++) { GEDCOMNotes note = person.IRec.Notes[i]; fWriter.addParagraph(GKUtils.MergeStrings(note.Notes), fTextFont); } } bool spIndex = person.IRec.SpouseToFamilyLinks.Count > 1; int num2 = person.IRec.SpouseToFamilyLinks.Count; for (int i = 0; i < num2; i++) { GEDCOMFamilyRecord family = person.IRec.SpouseToFamilyLinks[i].Family; if (fBase.Context.IsRecordAccess(family.Restriction)) { GEDCOMPointer sp; string st; string unk; if (person.IRec.Sex == GEDCOMSex.svMale) { sp = family.Wife; st = LangMan.LS(LSID.LSID_WifeSign); unk = LangMan.LS(LSID.LSID_UnkFemale); } else { sp = family.Husband; st = LangMan.LS(LSID.LSID_HusbSign); unk = LangMan.LS(LSID.LSID_UnkMale); } if (spIndex) { st += (i + 1).ToString(); } st += " - "; GEDCOMIndividualRecord irec = sp.Value as GEDCOMIndividualRecord; if (irec != null) { st = st + GKUtils.GetNameString(irec, true, false) + GKUtils.GetPedigreeLifeStr(irec, fOptions.PedigreeOptions.Format) /* + this.idLink(this.FindPerson(irec))*/; } else { st += unk; } fWriter.addParagraph(st, fTextFont); } } }
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); } } }
public void EditParents() { GEDCOMFamilyRecord family = fBase.Context.GetChildFamily(fPerson, false, null); if (family != null && BaseController.ModifyFamily(fBase, ref family, TargetMode.tmNone, null)) { UpdateControls(); } }
public override void UpdateContents() { var iRec = fDataOwner as GEDCOMIndividualRecord; if (fSheetList == null || iRec == null) { return; } try { fSheetList.BeginUpdate(); fSheetList.ClearItems(); int idx = 0; foreach (GEDCOMSpouseToFamilyLink spLink in iRec.SpouseToFamilyLinks) { idx += 1; GEDCOMFamilyRecord family = spLink.Family; if (family == null) { continue; } GEDCOMIndividualRecord relPerson; string relName; if (iRec.Sex == GEDCOMSex.svMale) { relPerson = family.GetWife(); relName = LangMan.LS(LSID.LSID_UnkFemale); } else { relPerson = family.GetHusband(); relName = LangMan.LS(LSID.LSID_UnkMale); } if (relPerson != null) { relName = GKUtils.GetNameString(relPerson, true, false); } fSheetList.AddItem(family, new object[] { idx, relName, new GEDCOMDateItem(GKUtils.GetMarriageDate(family)) }); } fSheetList.EndUpdate(); } catch (Exception ex) { Logger.LogWrite("SpousesSublistModel.UpdateContents(): " + ex.Message); } }
public override void Setup() { base.Setup(); fBase = new BaseWindowStub(); fFamilyRecord = new GEDCOMFamilyRecord(fBase.Context.Tree, fBase.Context.Tree, "", ""); fDialog = new FamilyEditDlg(fBase); fDialog.Family = fFamilyRecord; fDialog.Show(); }
private void btnParentsEdit_Click(object sender, EventArgs e) { AcceptTempData(); GEDCOMFamilyRecord family = fBase.Context.GetChildFamily(fPerson, false, null); if (family != null && BaseController.ModifyFamily(fBase, ref family, TargetMode.tmNone, null)) { UpdateControls(); } }
public void JumpToMother() { GEDCOMFamilyRecord family = fBase.Context.GetChildFamily(fPerson, false, null); if (family == null) { return; } JumpToRecord(family.GetWife()); }
public void AddParents() { AcceptTempData(); GEDCOMFamilyRecord family = fBase.Context.SelectFamily(fPerson); if (family != null && family.IndexOfChild(fPerson) < 0) { fLocalUndoman.DoOrdinaryOperation(OperationType.otIndividualParentsAttach, fPerson, family); } UpdateControls(); }
public void UpdateFamily(Family family) { Requires.NotNull("family", family); GEDCOMFamilyRecord record = _document.SelectFamilyRecord(GEDCOMUtil.CreateId("F", family.Id)); if (record == null) { //record not in repository throw new ArgumentOutOfRangeException(); } }
protected override void OnKeyDown(KeyEventArgs e) { switch (e.Key) { case Keys.Plus: if (Keys.None == e.Modifiers) { Zoom = Math.Min(fZoom * 1.05f, ZOOM_HIGH_LIMIT); } break; case Keys.Minus: if (Keys.None == e.Modifiers) { Zoom = Math.Max(fZoom * 0.95f, ZOOM_LOW_LIMIT); } break; case Keys.D0: if (e.Control) { Zoom = 1.0f; } break; case Keys.Left: if (fChartType == CircleChartType.Ancestors && fModel.RootPerson != null) { GEDCOMFamilyRecord fam = fModel.RootPerson.GetParentsFamily(); var father = (fam == null) ? null : fam.GetHusband(); if (father != null) { RootPerson = father; } } break; case Keys.Right: if (fChartType == CircleChartType.Ancestors && fModel.RootPerson != null) { GEDCOMFamilyRecord fam = fModel.RootPerson.GetParentsFamily(); var mother = (fam == null) ? null : fam.GetWife(); if (mother != null) { RootPerson = mother; } } break; } base.OnKeyDown(e); }
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); }
public void gt_bind_family_child(object familyPtr, object childPtr) { GEDCOMFamilyRecord fRec = familyPtr as GEDCOMFamilyRecord; if (fRec == null) { return; } GEDCOMIndividualRecord chRec = childPtr as GEDCOMIndividualRecord; fRec.AddChild(chRec); }
public object gt_get_person_parents_family(object recPtr) { GEDCOMIndividualRecord rec = recPtr as GEDCOMIndividualRecord; if (rec == null) { return(null); } GEDCOMFamilyRecord fam = rec.GetParentsFamily(); return(fam); }
public object gt_get_person_spouse_family(object recPtr, int spIdx) { GEDCOMIndividualRecord rec = recPtr as GEDCOMIndividualRecord; if (rec == null) { return(null); } GEDCOMFamilyRecord fam = rec.SpouseToFamilyLinks[spIdx].Family; return(fam); }
private DescPersonSegment TraverseDescendants(GEDCOMIndividualRecord iRec, int gen) { if (iRec == null) { return(null); } try { fIndividualsCount++; DescPersonSegment resultSegment = new DescPersonSegment(gen); resultSegment.IRec = iRec; fSegments.Add(resultSegment); if (gen < fVisibleGenerations) { int numberOfFamilyLinks = iRec.SpouseToFamilyLinks.Count; for (int j = 0; j < numberOfFamilyLinks; j++) { GEDCOMFamilyRecord family = iRec.SpouseToFamilyLinks[j].Family; if (!fBase.Context.IsRecordAccess(family.Restriction)) { continue; } fBase.Context.ProcessFamily(family); int numberOfChildren = family.Children.Count; for (int i = 0; i < numberOfChildren; i++) { GEDCOMIndividualRecord child = family.Children[i].Value as GEDCOMIndividualRecord; DescPersonSegment childSegment = TraverseDescendants(child, gen + 1); int size = Math.Max(1, childSegment.TotalSubSegments); resultSegment.TotalSubSegments += size; resultSegment.ChildSegments.Add(childSegment); } } } return(resultSegment); } catch { return(null); } }
public void GEDCOMWriter_WriterRecord_Correctly_Renders_Family_Record_And_Children() { var sb = new StringBuilder(); GEDCOMWriter writer = GEDCOMWriter.Create(sb); writer.NewLine = "\n"; GEDCOMFamilyRecord record = Util.CreateFamilyRecord(1); //write Header writer.WriteRecord(record); //Assert GEDCOMAssert.IsValidOutput(GetEmbeddedFileString("OneFamily"), sb); }
private void btnMotherSel_Click(object sender, EventArgs e) { GEDCOMFamilyRecord family = fBase.Context.GetChildFamily(fPerson, false, null); if (family == null) { return; } AcceptChanges(); GEDCOMIndividualRecord mother = family.GetWife(); fBase.SelectRecordByXRef(mother.XRef); Close(); }