| 
						 
							
							
							
						 
					 | 
				
			
			 | 
			 | 
			
				@@ -1,7 +1,7 @@
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Gramps - a GTK+/GNOME based genealogy program
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Copyright (C) 2000-2003  Donald N. Allingham
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Copyright (C) 2000-2004  Donald N. Allingham
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# This program is free software; you can redistribute it and/or modify
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# it under the terms of the GNU General Public License as published by
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -23,6 +23,8 @@
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# Modified further to use cStringIO object. 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# $Id$
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				"View/Verify"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#------------------------------------------------------------------------
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -54,73 +56,76 @@ import Gregorian
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				from gettext import gettext as _
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				db = None
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				glade_file = None
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				verifySettings = None
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				# returns the year of an event or 0 if no event==None or no year specified in the event
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				def get_year( event ):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    year = 0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if event != None:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        dateObj = event.get_date_object()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if dateObj != None:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            dateObj = Date.Date(dateObj)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if dateObj.__class__ != Gregorian.Gregorian:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                dateObj.set_calendar(Gregorian.Gregorian)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    year = dateObj.getYear()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    return year
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				def runTool(database,active_person,callback):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    global glade_file
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    global db 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    global verifySettings
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Verify(database,active_person)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    db = database
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#-------------------------------------------------------------------------
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#-------------------------------------------------------------------------
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				class Verify:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    def __init__(self,database,active_person):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        self.db = database
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        base = os.path.dirname(__file__)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    glade_file = base + os.sep + "verify.glade"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        self.glade_file = base + os.sep + "verify.glade"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    verifySettings = gtk.glade.XML(glade_file,"verify_settings","gramps")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    verifySettings.signal_autoconnect({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        self.top = gtk.glade.XML(self.glade_file,"verify_settings","gramps")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        self.top.signal_autoconnect({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            "destroy_passed_object" : Utils.destroy_passed_object,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        "on_verify_ok_clicked" : on_apply_clicked
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            "on_verify_ok_clicked" : self.on_apply_clicked
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        })
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Utils.set_titles(verifySettings.get_widget('verify_settings'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                     verifySettings.get_widget('title'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        Utils.set_titles(self.top.get_widget('verify_settings'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                     self.top.get_widget('title'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                     _('Database Verify'))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				def on_apply_clicked(obj):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    global db 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    global verifySettings
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    def get_year(self,event_id):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        """
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        Returns the year of an event (by its id) or 0 if no event_id 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        or no year  specified in the event
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        """
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        year = 0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if event_id:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            event = self.db.find_event_from_id(event_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            dateObj = event.get_date_object()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if dateObj:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if dateObj.get_calendar().NAME != Gregorian.Gregorian:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    dateObj.set_calendar(Gregorian.Gregorian)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                year = dateObj.get_year()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        return year
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    personList = db.get_person_id_map().values()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    def on_apply_clicked(self,obj):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    oldage = int(verifySettings.get_widget("oldage").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    yngmar = int(verifySettings.get_widget("yngmar").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    oldmar = int(verifySettings.get_widget("oldmar").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    oldmom = int(verifySettings.get_widget("oldmom").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    yngmom = int(verifySettings.get_widget("yngmom").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    olddad = int(verifySettings.get_widget("olddad").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    yngdad = int(verifySettings.get_widget("yngdad").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    wedder = int(verifySettings.get_widget("wedder").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    lngwdw = int(verifySettings.get_widget("lngwdw").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    estimate_age = verifySettings.get_widget("estimate").get_active()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        personList = self.db.get_person_keys()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        oldage = int(self.top.get_widget("oldage").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        yngmar = int(self.top.get_widget("yngmar").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        oldmar = int(self.top.get_widget("oldmar").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        oldmom = int(self.top.get_widget("oldmom").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        yngmom = int(self.top.get_widget("yngmom").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        olddad = int(self.top.get_widget("olddad").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        yngdad = int(self.top.get_widget("yngdad").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        wedder = int(self.top.get_widget("wedder").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        lngwdw = int(self.top.get_widget("lngwdw").get_text())
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        estimate_age = self.top.get_widget("estimate").get_active()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        oldunm = 99  # maximum age at death for unmarried person 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        error = cStringIO.StringIO()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        warn = cStringIO.StringIO()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    for person in personList:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        idstr = person.get_primary_name().get_name() + " (" + person.get_id() + ")"
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        for person_id in personList:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            person = self.db.find_person_from_id(person_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            idstr = "%s (%s)" % (person.get_primary_name().get_name(),person_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            # individual checks
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            ageatdeath = 0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					byear = get_year( person.get_birth() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            byear = self.get_year( person.get_birth_id() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            bapyear = 0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					dyear = get_year( person.get_death() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            dyear = self.get_year( person.get_death_id() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            buryear = 0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            if byear>0 and bapyear>0:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if byear > bapyear:
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -240,37 +245,54 @@ def on_apply_clicked(obj):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            prev_maryear=0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            prev_sdyear=0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            fnum = 0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					for family in person.get_family_id_list():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            for family_id in person.get_family_id_list():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                family = self.db.find_family_from_id(family_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                fnum = fnum + 1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    mother = family.get_mother_id()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    father = family.get_father_id()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if mother!=None and father!=None:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                mother_id = family.get_mother_id()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                father_id = family.get_father_id()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if mother_id:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    mother = self.db.find_person_from_id(mother_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if father_id:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    father = self.db.find_person_from_id(father_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if mother_id and father_id:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if ( mother.get_gender() == father.get_gender() ) and mother.get_gender() != RelLib.Person.unknown:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        warn.write( _("Homosexual marriage: %s in family %s.\n") % ( idstr, family.get_id() ) )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if family.get_father_id() == person and person.get_gender() == RelLib.Person.female:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if father_id == person.get_id() and person.get_gender() == RelLib.Person.female:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    error.write( _("Female husband: %s in family %s.\n") % ( idstr, family.get_id() ) )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if family.get_mother_id() == person and person.get_gender() == RelLib.Person.male:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if mother_id == person.get_id() and person.get_gender() == RelLib.Person.male:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    error.write( _("Male wife: %s in family %s.\n") % ( idstr, family.get_id() ) )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if family.get_father_id() == person:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					       spouse = family.get_mother_id()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if father_id == person.get_id():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                   spouse_id = mother_id
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					       spouse = family.get_father_id()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					    if spouse != None:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                   spouse_id = father_id
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                if spouse_id:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    spouse = self.db.find_person_from_id(spouse_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if person.get_gender() == RelLib.Person.male and \
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                           person.get_primary_name().get_surname() == spouse.get_primary_name().get_surname():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        warn.write( _("Husband and wife with the same surname: %s in family %s, and %s.\n") % (
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            idstr,family.get_id(), spouse.get_primary_name().get_name() ) )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
					        sdyear = get_year( spouse.get_death() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    sdyear = self.get_year( spouse.get_death_id() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if sdyear == 0:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        sdyear = 0  # burial year
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						maryear = get_year( family.get_marriage() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    for event_id in family.get_event_list():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        if event_id:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            event = self.db.find_event_from_id(event_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            if event.get_name() == "Marriage":
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                marriage_id = event_id
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                break
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        marriage_id = None
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    maryear = self.get_year( marriage_id )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    if maryear == 0 and estimate_age:   #  estimate marriage year
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cnum=0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    for child in family.get_child_id_list():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        for child_id in family.get_child_id_list():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            cnum = cnum + 1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            if maryear == 0:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
							    birthyear = get_year( child.get_birth() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                child = self.db.find_person_from_id(child_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                birthyear = self.get_year( child.get_birth_id() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            if birthyear > 0:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                maryear = birthyear-cnum
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -334,13 +356,15 @@ def on_apply_clicked(obj):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                warn.write( _("Long widowhood: %s was a widow %d years.\n") % (idstr, wdwyear) )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    nkids = 0
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						for child in family.get_child_id_list():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                    for child_id in family.get_child_id_list():
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        nkids = nkids+1
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
						    cbyear = get_year( child.get_birth() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        child = self.db.find_person_from_id(child_id)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        cbyear = self.get_year( child.get_birth_id() )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        if cbyear>0 and cbyear < first_cbyear:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            first_cbyear = cbyear
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        if cbyear>last_cbyear:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            last_cbyear = cbyear
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        # parentage checks 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                        if byear>0 and cbyear>0:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                            bage = cbyear - byear
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -384,26 +408,27 @@ def on_apply_clicked(obj):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                                
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        text = ""
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if error != "":
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if error:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            text = _("ERRORS:\n") + error.getvalue() + "\n" 
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    if warn != "":
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        if warn:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            text = _("WARNINGS:\n") + warn.getvalue()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        error.close()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        warn.close()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    verifyResult = gtk.glade.XML(glade_file,"verify_result","gramps")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    Utils.set_titles(verifyResult.get_widget('verify_result'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                     verifyResult.get_widget('title'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        top = gtk.glade.XML(self.glade_file,"verify_result","gramps")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        Utils.set_titles(top.get_widget('verify_result'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                     top.get_widget('title'),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				                     _('Database Verify'))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    verifyResult.signal_autoconnect({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        top.signal_autoconnect({
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				            "destroy_passed_object" : Utils.destroy_passed_object,
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        })
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    top = verifyResult.get_widget("verify_result")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    textwindow = verifyResult.get_widget("textwindow")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        topwin = top.get_widget("verify_result")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        textwindow = top.get_widget("textwindow")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        textwindow.get_buffer().set_text(text)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    top.show()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				        topwin.show()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#-------------------------------------------------------------------------
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				#
 | 
			
		
		
	
	
		
			
				
					
					| 
						
					 | 
				
			
			 | 
			 | 
			
				@@ -418,4 +443,3 @@ register_tool(
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    category=_("Utilities"),
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    description=_("Lists exceptions to assertions or checks about the database")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    )
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					
					| 
						 
							
							
							
						 
					 | 
				
			
			 | 
			 | 
			
				 
 |