public static ParseResult <GedcomEvent> Parse(GedcomLine first, ILineProvider lineProvider) { GedcomEvent gedcomEvent = new GedcomEvent(); var initialLevel = first.Level; GedcomLine line = default; ReadOnlySpan <char> currentRawLine; while ((currentRawLine = lineProvider.ReadLine()).Length > 0) { line = ParserHelper.ParseLine(currentRawLine); if (line.Level <= first.Level) { break; } ReadOnlySpan <char> tag = line.GetFirstItem(); if (ParserHelper.Equals(tag, "DATE")) { // If checks we're parsing actual date and not // CREA or CHAN tags // TODO: should actually put CREA and CHAN into different parser if (line.Level == initialLevel + 1) { var dateContent = line.GetLineContent(4); gedcomEvent.Date = dateContent.Length == 0 ? null : dateContent.ToString(); } } else if (ParserHelper.Equals(tag, "PLAC")) { // If checks we're parsing actual date and not // CREA or CHAN tags // TODO: should actually put CREA and CHAN into different parser if (line.Level == initialLevel + 1) { var placContent = line.GetLineContent(4); gedcomEvent.Location = placContent.Length == 0 ? null : placContent.ToString(); } } } return(ParseResult.Create(gedcomEvent, line)); }
public static ParseResult <GedcomEvent> Parse(GedcomLine first, ILineProvider lineProvider) { GedcomEvent gedcomEvent = new GedcomEvent(); var initialLevel = first.Level; GedcomLine line = default; string currentRawLine; while ((currentRawLine = lineProvider.ReadLine()) != null) { line = ParserHelper.ParseLine(currentRawLine); if (line.Level <= first.Level) { break; } switch (line.GetTagOrRef()) { case "DATE": // If checks we're parsing actual date and not // CREA or CHAN tags // TODO: should actually put CREA and CHAN into different parser if (line.Level == initialLevel + 1) { gedcomEvent.Date = line.GetLineContent(); } break; case "PLAC": // If checks we're parsing actual date and not // CREA or CHAN tags // TODO: should actually put CREA and CHAN into different parser if (line.Level == initialLevel + 1) { gedcomEvent.Location = line.GetLineContent(); } break; } } return(ParseResult.Create(gedcomEvent, line)); }
/// <summary> /// Initializes a new instance of the <see cref="GedcomEventTest"/> class. /// Comparison tests for event. /// </summary> public GedcomEventTest() { event1 = GenerateEvent(); event2 = GenerateEvent(); }
protected void SetEventView(GedcomEvent e) { Gtk.ListStore eventTypes = FactTypeCombo.Model as Gtk.ListStore; Gtk.TreeIter iter; if (eventTypes.GetIterFirst(out iter)) { int i = 0; do { GedcomEvent.GedcomEventType type = (GedcomEvent.GedcomEventType)eventTypes.GetValue(iter, 2); if (type == e.EventType) { FactTypeCombo.Active = i; break; } i ++; } while (eventTypes.IterNext(ref iter)); } if (!string.IsNullOrEmpty(e.EventName)) { FactNameEntry.Text = e.EventName; } if (e.Date != null) { FactDateEntry.Text = e.Date.DateString; } GedcomPlace place = e.Place; if (place != null) { CommentTextView.Buffer.Text = place.Name; } _event = e; }
private void SetEventFromSelected() { Gtk.TreeSelection selection = FactsTreeView.Selection; if (_event != null && !_loading) { Save(); } ClearDetails(); Gtk.TreeModel model; Gtk.TreeIter iter; if (selection.GetSelected(out model, out iter)) { GedcomEvent ev = (GedcomEvent)model.GetValue(iter, 0); SetEventView(ev); Enable(); } else { _event = null; Disable(); } }
public void Clear() { _event = null; ClearDetails(); EventListModel eventListModel = FactsTreeView.Model as EventListModel; if (eventListModel != null) { eventListModel.Clear(); } }
protected virtual void OnFactsTreeView_ButtonPressEvent(object sender, Gtk.ButtonPressEventArgs e) { Gdk.EventButton eb = e.Event; if (eb.Button == 1) { int x = (int)eb.X; int y = (int)eb.Y; Gtk.TreePath path; if (FactsTreeView.GetPathAtPos(x, y, out path)) { Gtk.TreeViewColumn buttonCol = FactsTreeView.Columns[0]; if (x < buttonCol.Width) { Gtk.TreeIter iter; Gtk.CellRenderer[] rends = buttonCol.CellRenderers; EventListModel events = FactsTreeView.Model as EventListModel; if (events.GetIter(out iter, path)) { GedcomEvent ev = _event; _event = events.GetValue(iter, 0) as GedcomEvent; int i = 0; bool buttonClicked = false; foreach (GtkCellRendererButton rend in rends) { if (x >= rend.X && x <= rend.X + rend.Width) { buttonClicked = true; break; } i ++; } if (buttonClicked) { switch (i) { // source button case 0: if (ShowSourceCitation != null) { SourceCitationArgs args = new SourceCitationArgs(); args.Record = _event; ShowSourceCitation(this,args); } break; // remove button case 1: GedcomIndividualRecord indi = _record as GedcomIndividualRecord; GedcomFamilyRecord fam = _record as GedcomFamilyRecord; if (EventRemoved != null) { EventRemoved(this, EventArgs.Empty); } events.Remove(ref iter); if (indi != null) { if (indi.Events.Contains((GedcomIndividualEvent)_event)) { indi.Events.Remove((GedcomIndividualEvent)_event); } else if (indi.Attributes.Contains((GedcomIndividualEvent)_event)) { indi.Attributes.Remove((GedcomIndividualEvent)_event); } } else if (fam != null) { fam.Events.Remove((GedcomFamilyEvent)_event); } if (ev == _event) { ev = null; } break; // more button case 2: if (_event == ev) { Save(); } if (MoreInformation != null) { _moreInfoArgs.Event = _event; _event = ev; MoreInformation(this, _moreInfoArgs); } break; } } SetEventFromSelected(); } } } } }
protected virtual void OnNewFactButton_Clicked(object sender, System.EventArgs e) { Save(); Gtk.TreeIter iter; GedcomIndividualRecord indi = _record as GedcomIndividualRecord; GedcomFamilyRecord fam = _record as GedcomFamilyRecord; GedcomEvent ev = null; if (indi != null) { GedcomIndividualEvent individualEvent = new GedcomIndividualEvent(); individualEvent.EventType = GedcomEvent.GedcomEventType.GenericFact; individualEvent.Database = _database; individualEvent.IndiRecord = indi; ev = individualEvent; indi.Attributes.Add(individualEvent); } else if (fam != null) { GedcomFamilyEvent famEvent = new GedcomFamilyEvent(); famEvent.EventType = GedcomEvent.GedcomEventType.GenericEvent; famEvent.Database = _database; famEvent.FamRecord = fam; ev = famEvent; fam.Events.Add(famEvent); } iter = _eventListModel.Append(); _eventListModel.SetValue(iter, 0, ev); _event = null; Gtk.TreeSelection selection = FactsTreeView.Selection; selection.SelectIter(iter); if (EventAdded != null) { EventAdded(this, EventArgs.Empty); } }
/// <summary> /// Appends the event. /// </summary> /// <param name="ev">The ev.</param> /// <param name="root">The root.</param> protected void AppendEvent(GedcomEvent ev, XmlNode root) { ev.GenerateXML(root); }
public void ClearView() { _resi = null; AddressDateEntry.Text = string.Empty; Street1Entry.Text = string.Empty; Street2Entry.Text = string.Empty; CityEntry.Text = string.Empty; StateEntry.Text = string.Empty; PostCodeEntry.Text = string.Empty; CountryEntry.Text = string.Empty; PhoneNumberEntry.Text = string.Empty; PhoneNumber2Entry.Text = string.Empty; PhoneNumber3Entry.Text = string.Empty; EmailEntry.Text = string.Empty; Email2Entry.Text = string.Empty; Email3Entry.Text = string.Empty; WebSiteEntry.Text = string.Empty; WebSite2Entry.Text = string.Empty; WebSite3Entry.Text = string.Empty; Disable(); }
protected void OnResiSelection_Changed(object sender, System.EventArgs e) { if (_submitter == null && _header == null) { Gtk.TreeSelection selection = ResiTreeView.Selection; SaveView(); Gtk.TreeModel model; Gtk.TreeIter iter; ClearView(); if (selection.GetSelected(out model, out iter)) { _resi = (GedcomEvent)model.GetValue(iter, 0); FillView(); } } }
private static GitPersonEvent CreateBirthEvent(GedcomPerson gedcomPerson, GitPerson gitPerson, GedcomEvent ev, DateTime date, GitDateType dateType) { string description = GenerateDescription(ev, EventType.Birth, date, dateType, gitPerson) + " " + Utils.JoinNotEmpty(gedcomPerson.Gender, gedcomPerson.Education, gedcomPerson.Religion, gedcomPerson.Note, gedcomPerson.Changed, gedcomPerson.Occupation, gedcomPerson.Health, gedcomPerson.Title); return(new GitPersonEvent(gitPerson, EventType.Birth, date, description, dateType)); }