Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GedcomEventTest"/> class.
 /// Comparison tests for event.
 /// </summary>
 public GedcomEventTest()
 {
     event1 = GenerateEvent();
     event2 = GenerateEvent();
 }
Ejemplo n.º 4
0
		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;
		}
Ejemplo n.º 5
0
		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();
			}
		}
Ejemplo n.º 6
0
		public void Clear()
		{
			_event = null;
		
			ClearDetails();
		
			EventListModel eventListModel = FactsTreeView.Model as EventListModel;
			if (eventListModel != null)
			{
				eventListModel.Clear();	
			}
		}
Ejemplo n.º 7
0
		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();
						}
					}
				}
			}
		}
Ejemplo n.º 8
0
		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);
 }
Ejemplo n.º 10
0
		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();
		}
Ejemplo n.º 11
0
		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();
				}
			}
		}
Ejemplo n.º 12
0
        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));
        }