public GEDFileEntry NewEntry(string Type, XmlDocument Doc) { GEDFileEntry Entry = null; String sIDCode = ""; switch (Type) { case "HEAD": Entry = new GEDFileEntryHead(); sIDCode = "X"; break; case "SUBM": Entry = new GEDFileEntrySubm(); sIDCode = "SUB"; break; case "INDI": Entry = new GEDFileEntryIndi(); sIDCode = "I"; break; case "FAM": Entry = new GEDFileEntryFam(); sIDCode = "F"; break; case "SOUR": Entry = new GEDFileEntrySour(); sIDCode = "S"; break; default: frmGEDXmlEditor.Log("Node type not recognised: " + Type); break; } if (Entry != null) { XmlNode Node; Node = Doc.CreateElement(Type); // Everything will fall apart if we create an element with no ID GEDXMLUtilites.SetAttribute("ID", GetNextID(sIDCode), Node); Doc.DocumentElement.AppendChild(Node); Entry.Node = Node; Entries.Add(Entry); } return(Entry); }
void UpdateAllFields(XmlNode Node) { XmlNode TmpNode; GEDXMLUtilites.UpdateSingleField("NAME", txtName.Text, Node); if (rdoMale.Checked) { GEDXMLUtilites.UpdateSingleField("SEX", "M", Node); } else { GEDXMLUtilites.UpdateSingleField("SEX", "F", Node); } GEDXMLUtilites.UpdateCompoundDateField("BIRT", mdpBirth, Node); GEDXMLUtilites.UpdateCompoundDateField("DEAT", mdpDeath, Node); if (txtAKA.Text != "") { TmpNode = GEDXMLUtilites.UpdateSingleField("EVEN", txtAKA.Text, Node); GEDXMLUtilites.UpdateSingleField("TYPE", "AKA", TmpNode); } GEDXMLUtilites.UpdateSingleField("IMG", txtImage.Text, Node); GEDXMLUtilites.UpdateSingleField("NOTE", Note, Node); if (Source != null) { TmpNode = GEDXMLUtilites.UpdateSingleField("SOUR", GEDXMLUtilites.InsertEmpty, Node); GEDXMLUtilites.SetAttribute("REF", Source.ID, TmpNode); } //case "EMIG": // break; //case "OCCU": // break; }
void UpdateAllFields(XmlNode Node) { XmlNode TmpNode; GEDXMLUtilites.UpdateCompoundDateField("MARR", mdpMarriage, Node); GEDXMLUtilites.UpdateCompoundDateField("DIV", mdpDivorce, Node); if (lblHusband.Text != "") { TmpNode = GEDXMLUtilites.UpdateSingleField("HUSB", GEDXMLUtilites.InsertEmpty, Node); GEDXMLUtilites.SetAttribute("REF", lblHusband.Tag.ToString(), TmpNode); } else { GEDXMLUtilites.UpdateSingleField("HUSB", "", Node); } if (lblWife.Text != "") { TmpNode = GEDXMLUtilites.UpdateSingleField("WIFE", GEDXMLUtilites.InsertEmpty, Node); GEDXMLUtilites.SetAttribute("REF", lblWife.Tag.ToString(), TmpNode); } else { GEDXMLUtilites.UpdateSingleField("WIFE", "", Node); } // Children... string[] ChildIDs = new string[lstChildren.Items.Count]; for (int i = 0; i < lstChildren.Items.Count; i++) { ChildIDs[i] = ((GEDFileEntryIndi)lstChildren.Items[i]).ID; } GEDXMLUtilites.UpdateMultipleFieldAttr("CHIL", "REF", ChildIDs, Node); // And now make sure the various individuals are linked back... XmlNode tmpIndiNode; string MyID; MyID = Node.Attributes["ID"].Value; foreach (XmlNode Child in Node.ChildNodes) { try { string SourceID = Child.Attributes["REF"].Value; TmpNode = GEDXMLUtilites.GlobalLocateNodeByID(SourceID, "INDI", Child); if (TmpNode != null) { if (Child.Name.ToUpper() == "HUSB" || Child.Name.ToUpper() == "WIFE") { tmpIndiNode = GEDXMLUtilites.UpdateSingleField("FAMS", GEDXMLUtilites.InsertEmpty, TmpNode); GEDXMLUtilites.SetAttribute("REF", MyID, tmpIndiNode); } else if (Child.Name.ToUpper() == "CHIL") { tmpIndiNode = GEDXMLUtilites.UpdateSingleField("FAMC", GEDXMLUtilites.InsertEmpty, TmpNode); GEDXMLUtilites.SetAttribute("REF", MyID, tmpIndiNode); } } } catch (Exception) { } } }