* src/AddSpouse.py: display idle cursor

* src/SelectChild.py: display idle cursor


svn: r4848
This commit is contained in:
Don Allingham 2005-06-19 19:30:25 +00:00
parent 765e5cec77
commit 7969779fde
4 changed files with 68 additions and 121 deletions

View File

@ -1,4 +1,6 @@
2005-06-19 Don Allingham <don@gramps-project.org>
* src/AddSpouse.py: display idle cursor
* src/SelectChild.py: display idle cursor
* src/ChooseParents.y: display "Loading..." while loading lists
2005-06-18 Don Allingham <don@gramps-project.org>

View File

@ -42,6 +42,7 @@ from gettext import gettext as _
#-------------------------------------------------------------------------
import gtk.glade
import gnome
import gobject
#-------------------------------------------------------------------------
#
@ -102,8 +103,6 @@ class AddSpouse:
self.renderer = gtk.CellRendererText()
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
self.spouse_list.set_model(self.slist)
self.selection = self.spouse_list.get_selection()
self.selection.connect('changed',self.select_row)
self.add_columns(self.spouse_list)
@ -118,7 +117,7 @@ class AddSpouse:
Utils.set_titles(self.window,
self.glade.get_widget('title'),title,
_('Choose Spouse/Partner'))
self.glade.signal_autoconnect({
"on_select_spouse_clicked" : self.select_spouse_clicked,
"on_spouse_help_clicked" : self.on_spouse_help_clicked,
@ -128,12 +127,11 @@ class AddSpouse:
})
self.rel_combo.set_active(RelLib.Family.MARRIED)
self.update_data()
self.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
gobject.idle_add(self.update_data)
def build_all(self):
filt = GenericFilter.GenericFilter()
filt.add_rule(GenericFilter.Everyone([]))
return filt
return None
def build_likely(self,gender):
birth_handle = self.person.get_birth_handle()
@ -225,7 +223,7 @@ class AddSpouse:
been closed.
"""
person = epo.person
self.update_data(person.get_handle())
self.update_data()
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
self.slist.rebuild_data()
@ -319,7 +317,7 @@ class AddSpouse:
m.on_add_clicked()
def relation_type_changed(self,obj):
self.update_data()
gobject.idle_add(self.update_data)
def all_filter(self, person):
return person.get_gender() != self.sgender
@ -384,18 +382,21 @@ class AddSpouse:
else:
self.sgender = RelLib.Person.FEMALE
def update_data(self,person = None):
def update_data(self):
"""
Called whenever the relationship type changes. Rebuilds the
the potential spouse list.
"""
self.window.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
while(gtk.events_pending()):
gtk.main_iteration()
self.slist = PeopleModel.PeopleModel(self.db,self.filter)
self.spouse_list.set_model(self.slist)
self.window.window.set_cursor(None)
def on_show_toggled(self,obj):
if self.filter == self.likely:
self.filter = self.all
else:
self.filter = self.likely
self.update_data()
gobject.idle_add(self.update_data)

View File

@ -94,7 +94,7 @@ class ChooseParents:
db.connect('person-add', self.person_added)
db.connect('person-update', self.redraw)
db.connect('person-delete', self.redraw)
db.connect('person-rebuild', self.redraw)
db.connect('person-rebuild', self.redraw_all)
# set default filters
self.all_males_filter = GenericFilter.GenericFilter()
@ -353,6 +353,10 @@ class ChooseParents:
self.redrawf()
self.redrawm()
def redraw_all(self):
self.redrawf()
self.redrawm()
def redrawf(self):
"""Redraws the potential father list"""
self.father_model = PeopleModel.PeopleModel(self.db,self.father_filter)

View File

@ -35,6 +35,7 @@ from gettext import gettext as _
#-------------------------------------------------------------------------
import gtk.glade
import gnome
import gobject
#-------------------------------------------------------------------------
#
@ -46,6 +47,8 @@ import const
import Utils
import PeopleModel
import NameDisplay
import GenericFilter
import Date
from QuestionDialog import ErrorDialog
@ -101,10 +104,12 @@ class SelectChild:
else:
self.frel.set_sensitive(False)
self.refmodel = PeopleModel.PeopleModel(self.db)
self.likely_filter = GenericFilter.GenericFilter()
self.likely_filter.add_rule(LikelyFilter([self.person.handle]))
self.active_filter = self.likely_filter
self.add_child.set_model(self.refmodel)
self.redraw_child_list(2)
self.top.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
gobject.idle_add(self.redraw_child_list)
self.add_itself_to_menu()
self.add_columns(self.add_child)
self.top.show()
@ -161,110 +166,10 @@ class SelectChild:
"""Display the relevant portion of GRAMPS manual"""
gnome.help_display('gramps-manual','gramps-edit-quick')
def redraw_child_list(self,filter):
return
birth = self.db.get_event_from_handle(self.person.get_birth_handle())
death = self.db.get_event_from_handle(self.person.get_death_handle())
if birth:
bday = birth.get_date_object()
else:
bday = None
if death:
dday = death.get_date_object()
else:
dday = None
slist = {}
for f in self.person.get_parent_family_handle_list():
if f:
family = self.db.get_family_from_handle(f[0])
if family.get_father_handle():
slist[family.get_father_handle()] = 1
elif family.get_mother_handle():
slist[family.get_mother_handle()] = 1
for c in family.get_child_handle_list():
slist[c] = 1
person_list = []
for key in self.db.get_person_handles(sort_handles=True):
person = self.db.get_person_from_handle(key)
if filter:
if slist.has_key(key) or person.get_main_parents_family_handle():
continue
birth_event = self.db.get_event_from_handle(person.get_birth_handle())
if birth_event:
pbday = birth_event.get_date_object()
else:
pbday = None
death_event = self.db.get_event_from_handle(person.get_death_handle())
if death_event:
pdday = death_event.get_date_object()
else:
pdday = None
if bday and bday.getYearValid():
if pbday and pbday.getYearValid():
# reject if child birthdate < parents birthdate + 10
if pbday.getLowYear() < bday.getHighYear()+10:
continue
# reject if child birthdate > parents birthdate + 90
if pbday.getLowYear() > bday.getHighYear()+90:
continue
if pdday and pdday.getYearValid():
# reject if child deathdate < parents birthdate+ 10
if pdday.getLowYear() < bday.getHighYear()+10:
continue
if dday and dday.getYearValid():
if pbday and pbday.getYearValid():
# reject if childs birth date > parents deathday + 3
if pbday.getLowYear() > dday.getHighYear()+3:
continue
if pdday and pdday.getYearValid():
# reject if childs death date > parents deathday + 150
if pdday.getLowYear() > dday.getHighYear() + 150:
continue
person_list.append(person.get_handle())
node = None
for idval in person_list:
person = self.db.get_person_from_handle(idval)
name = NameDisplay.displayer.display(person)
if person.gender == RelLib.Person.MALE:
gender = _("male")
elif person.gender == RelLib.Person.FEMALE:
gender = _("female")
else:
gender = _("unknown")
bh = person.get_birth_handle()
dh = person.get_death_handle()
if bh:
bdate = self.db.get_event_from_handle(bh).get_date()
else:
bdate = ""
if dh:
ddate = self.db.get_event_from_handle(bh).get_date()
else:
ddate = ""
rdata = [name,person.get_gramps_id(),gender,bdate,ddate]
node = self.refmodel.add(rdata)
self.refmodel.connect_model()
if node:
self.refmodel.selection.select_iter(node)
path = self.refmodel.model.get_path(node)
col = self.add_child.get_column(0)
self.add_child.scroll_to_cell(path,col,1,0.5,0.0)
def redraw_child_list(self):
self.refmodel = PeopleModel.PeopleModel(self.db,self.active_filter)
self.add_child.set_model(self.refmodel)
self.top.window.set_cursor(None)
def select_function(self,store,path,node,id_list):
id_list.append(self.refmodel.get_value(node,PeopleModel.COLUMN_INT_ID))
@ -334,7 +239,14 @@ class SelectChild:
self.callback()
def on_show_toggled(self,obj):
self.redraw_child_list(not obj.get_active())
if obj.get_active():
self.active_filter = None
else:
self.active_filter = self.likely_filter
self.top.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH))
while(gtk.events_pending()):
gtk.main_iteration()
self.redraw_child_list()
def north_american(self,val):
if self.person.get_gender() == RelLib.Person.MALE:
@ -382,3 +294,31 @@ class SelectChild:
return ("","%sdóttir" % fname)
else:
return ("","")
#-------------------------------------------------------------------------
#
# Likely Filters
#
#-------------------------------------------------------------------------
class LikelyFilter(GenericFilter.Rule):
category = _('General filters')
def prepare(self,db):
person = db.get_person_from_handle(self.list[0])
birth = db.get_event_from_handle(person.birth_handle)
dateobj = Date.Date(birth.date)
year = dateobj.get_year()
dateobj.set_year(year+10)
self.lower = dateobj.sortval
dateobj.set_year(year+70)
self.upper = dateobj.sortval
def apply(self,db,handle):
person = db.get_person_from_handle(handle)
if not person.birth_handle:
return True
event = db.get_event_from_handle(person.birth_handle)
return (event.date == None or event.date.sortval == 0 or
self.lower < event.date.sortval < self.upper)