Similar list speed-ups in AddSpouse
svn: r1573
This commit is contained in:
parent
c66f916acb
commit
dd648159eb
@ -1,7 +1,7 @@
|
||||
#
|
||||
# Gramps - a GTK+/GNOME based genealogy program
|
||||
#
|
||||
# Copyright (C) 2000 Donald N. Allingham
|
||||
# Copyright (C) 2000-2003 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
|
||||
@ -81,6 +81,7 @@ class AddSpouse:
|
||||
self.rel_combo = self.glade.get_widget("rel_combo")
|
||||
self.relation_type = self.glade.get_widget("rel_type")
|
||||
self.spouse_list = self.glade.get_widget("spouse_list")
|
||||
self.showall = self.glade.get_widget('showall')
|
||||
|
||||
titles = [ (_('Name'),3,200), (_('ID'),1,50), (_('Birth date'),4,50),
|
||||
('',0,50), ('',0,0)]
|
||||
@ -101,6 +102,7 @@ class AddSpouse:
|
||||
|
||||
self.glade.signal_autoconnect({
|
||||
"on_select_spouse_clicked" : self.select_spouse_clicked,
|
||||
"on_show_toggled" : self.on_show_toggled,
|
||||
"on_new_spouse_clicked" : self.new_spouse_clicked,
|
||||
"on_rel_type_changed" : self.relation_type_changed,
|
||||
"destroy_passed_object" : Utils.destroy_passed_object
|
||||
@ -111,7 +113,7 @@ class AddSpouse:
|
||||
|
||||
def select_row(self,obj):
|
||||
"""
|
||||
Called with a row has be unselected. Used to ensable the OK button
|
||||
Called with a row has be unselected. Used to enable the OK button
|
||||
when a row has been selected.
|
||||
"""
|
||||
|
||||
@ -202,6 +204,9 @@ class AddSpouse:
|
||||
# the potential spouse list. If Partners is selected, use
|
||||
# the same gender as the current person.
|
||||
gender = self.person.getGender()
|
||||
bday = self.person.getBirth().getDateObj()
|
||||
dday = self.person.getDeath().getDateObj()
|
||||
|
||||
if text == _("Partners"):
|
||||
if gender == RelLib.Person.male:
|
||||
sgender = const.female
|
||||
@ -215,10 +220,49 @@ class AddSpouse:
|
||||
|
||||
self.entries = []
|
||||
self.slist.clear()
|
||||
self.slist.new_model()
|
||||
for key in self.db.getPersonKeys():
|
||||
data = self.db.getPersonDisplay(key)
|
||||
if data[2] == sgender:
|
||||
continue
|
||||
|
||||
if not self.showall.get_active():
|
||||
pdday = self.db.getPerson(key).getDeath().getDateObj()
|
||||
pbday = self.db.getPerson(key).getBirth().getDateObj()
|
||||
|
||||
if bday.getYearValid():
|
||||
if pbday.getYearValid():
|
||||
# reject if person birthdate differs more than
|
||||
# 100 years from spouse birthdate
|
||||
if abs(pbday.getYear() - bday.getYear()) > 100:
|
||||
continue
|
||||
|
||||
if pdday.getYearValid():
|
||||
# reject if person birthdate is after the spouse deathdate
|
||||
if bday.getLowYear() + 10 > pdday.getHighYear():
|
||||
continue
|
||||
|
||||
# reject if person birthdate is more than 100 years
|
||||
# before the spouse deathdate
|
||||
if bday.getHighYear() + 100 < pdday.getLowYear():
|
||||
continue
|
||||
|
||||
if dday.getYearValid():
|
||||
if pbday.getYearValid():
|
||||
# reject if person deathdate was prior to
|
||||
# the spouse birthdate
|
||||
if dday.getHighYear() < pbday.getLowYear() + 10:
|
||||
continue
|
||||
|
||||
if pdday.getYearValid():
|
||||
# reject if person deathdate differs more than
|
||||
# 100 years from spouse deathdate
|
||||
if abs(pdday.getYear() - dday.getYear()) > 100:
|
||||
continue
|
||||
|
||||
self.slist.add([data[0],data[1],data[3],data[5],data[6]],key,person==key)
|
||||
|
||||
self.slist.connect_model()
|
||||
|
||||
def on_show_toggled(self,obj):
|
||||
self.update_data()
|
||||
|
@ -2854,7 +2854,23 @@
|
||||
</child>
|
||||
|
||||
<child>
|
||||
<placeholder/>
|
||||
<widget class="GtkCheckButton" id="showall">
|
||||
<property name="visible">True</property>
|
||||
<property name="tooltip" translatable="yes">Check to show all people in the list. Uncheck to get the list filtered by birth and death dates.</property>
|
||||
<property name="can_focus">True</property>
|
||||
<property name="label" translatable="yes">_Show all</property>
|
||||
<property name="use_underline">True</property>
|
||||
<property name="relief">GTK_RELIEF_NORMAL</property>
|
||||
<property name="active">False</property>
|
||||
<property name="inconsistent">False</property>
|
||||
<property name="draw_indicator">True</property>
|
||||
<signal name="toggled" handler="on_show_toggled"/>
|
||||
</widget>
|
||||
<packing>
|
||||
<property name="padding">0</property>
|
||||
<property name="expand">False</property>
|
||||
<property name="fill">False</property>
|
||||
</packing>
|
||||
</child>
|
||||
|
||||
<child>
|
||||
|
Loading…
Reference in New Issue
Block a user