Esempio n. 1
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);	
			}
		}
Esempio n. 2
0
		public void SaveView()
		{
			if (_indi != null)
			{
				GedcomName name = null;
				
				if (_indi.Names.Count > 0)
				{
					name = _indi.GetName();
				}
				else
				{
					name = new GedcomName();
					name.Database = _database;
					name.Level = _indi.Level + 1;
					name.PreferedName = true;
					_indi.Names.Add(name);
				}
				
				// don't care if the name is empty, set it anyway
				name.Name = HusbandNameEntry.Text;
				
				GedcomIndividualEvent birth = _indi.Birth;
				if (!string.IsNullOrEmpty(HusbandBornInEntry.Text) ||
				    !string.IsNullOrEmpty(HusbandDateBornEntry.Text))
				{
					if (birth == null)
					{
						birth = new GedcomIndividualEvent();
						birth.Database = _database;
						birth.EventType = GedcomEvent.GedcomEventType.BIRT;
						birth.Level = _indi.Level + 1;
						birth.IndiRecord = _indi;
						_indi.Events.Add(birth);
					}
					if (birth.Place == null)
					{
						birth.Place = new GedcomPlace();
						birth.Place.Level = birth.Level + 1;
					}
					if (birth.Date == null)
					{
						birth.Date = new GedcomDate(_database);
						birth.Date.Level = birth.Level + 1;
					}
					
					birth.Place.Database = _database;
					birth.Place.Name = HusbandBornInEntry.Text;
					birth.Date.ParseDateString(HusbandDateBornEntry.Text);
				}
				else if (birth != null)
				{
					_indi.Events.Remove(birth);	
				}
				
				GedcomIndividualEvent death = _indi.Death;
				if (!string.IsNullOrEmpty(HusbandDiedInEntry.Text) ||
				    !string.IsNullOrEmpty(HusbandDateDiedEntry.Text))
				{
					if (death == null)
					{
						death = new GedcomIndividualEvent();
						death.Database = _database;
						death.EventType = GedcomEvent.GedcomEventType.DEAT;
						death.Level = _indi.Level + 1;
						death.IndiRecord = _indi;
						_indi.Events.Add(death);
					}
					if (death.Place == null)
					{
						death.Place = new GedcomPlace();
						death.Place.Level = death.Level + 1;
					}
					if (death.Date == null)
					{
						death.Date = new GedcomDate(_database);
						death.Date.Level = death.Level + 1;
					}
					
					death.Place.Database = _database;
					death.Place.Name = HusbandDiedInEntry.Text;
					death.Date.ParseDateString(HusbandDateDiedEntry.Text);
				}
				else if (death != null)
				{
					_indi.Events.Remove(death);	
				}
			}
			
		}
Esempio n. 3
0
		protected virtual void OnNewAddressButton_Clicked(object sender, System.EventArgs e)
		{
			Gtk.TreeIter iter;
			GedcomEvent ev;
			
			switch (_record.RecordType)
			{
				case GedcomRecordType.Individual:
					GedcomIndividualRecord indi = (GedcomIndividualRecord)_record;
			
					GedcomIndividualEvent individualEvent = new GedcomIndividualEvent();
					individualEvent.EventType = GedcomEvent.GedcomEventType.RESIFact;
					individualEvent.Database = _database;
					individualEvent.Level = indi.Level + 1;
					individualEvent.IndiRecord = indi;
					indi.Events.Add(individualEvent);	
					ev = individualEvent;
				
					break;
				case GedcomRecordType.Family:
					GedcomFamilyRecord fam = (GedcomFamilyRecord)_record;
			
					GedcomFamilyEvent famEvent = new GedcomFamilyEvent ();
					famEvent.EventType = GedcomEvent.GedcomEventType.RESI;
					famEvent.Database = _database;
					famEvent.Level = fam.Level + 1;
					famEvent.FamRecord = fam;
					fam.Events.Add(famEvent);	
					ev = famEvent;
			
					break;
				default:
					throw new Exception("Invalid record type, AddressView can only handle individuals or families");
			}
			
			iter = _eventListModel.Append();
			_eventListModel.SetValue(iter, 0, ev);
			
			Gtk.TreeSelection selection = ResiTreeView.Selection;
			selection.SelectIter(iter);
				
			if (EventAdded != null)
			{
				EventAdded(this, EventArgs.Empty);
			}
			
		}