* src/EditPerson.py: Corrections.

* src/EditSource.py: Use parent class. Use windows menu.
* src/ImageSelect.py: Corrections.
* src/Sources.py: Corrections.
* src/gramps.glade: Add handlers.
* src/NoteEdit.py: Corrections.
* src/dialog.glade: Add handler.
* src/Witness.py: Corrections.
* src/RelLib.py: Include witnesses in comparing events.
* src/FamilyView.py: Pass parent on to child classes.
* src/AddSpouse.py: Pass parent on to EditPerson.
* src/ChooseParents.py: Pass parent on to EditPerson.
* src/gramps_main.py: Pass Gramps class to child classes.
* src/MergeData.py: Pass parent on to EditPerson.


svn: r2885
This commit is contained in:
Alex Roitman 2004-02-21 06:40:44 +00:00
parent 2d81ccd542
commit 3e6e2ea2ea
15 changed files with 254 additions and 87 deletions

View File

@ -1,3 +1,19 @@
2004-02-20 Alex Roitman <shura@alex.neuro.umn.edu>
* src/EditPerson.py: Corrections.
* src/EditSource.py: Use parent class. Use windows menu.
* src/ImageSelect.py: Corrections.
* src/Sources.py: Corrections.
* src/gramps.glade: Add handlers.
* src/NoteEdit.py: Corrections.
* src/dialog.glade: Add handler.
* src/Witness.py: Corrections.
* src/RelLib.py: Include witnesses in comparing events.
* src/FamilyView.py: Pass parent on to child classes.
* src/AddSpouse.py: Pass parent on to EditPerson.
* src/ChooseParents.py: Pass parent on to EditPerson.
* src/gramps_main.py: Pass Gramps class to child classes.
* src/MergeData.py: Pass parent on to EditPerson.
2004-02-19 Alex Roitman <shura@alex.neuro.umn.edu> 2004-02-19 Alex Roitman <shura@alex.neuro.umn.edu>
* src/EditPerson.py: Use parent class. Add/remove itself from/to * src/EditPerson.py: Use parent class. Add/remove itself from/to
the Windows menu. the Windows menu.

View File

@ -1,7 +1,7 @@
# #
# Gramps - a GTK+/GNOME based genealogy program # 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 # 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 # it under the terms of the GNU General Public License as published by
@ -65,7 +65,7 @@ class AddSpouse:
family with the passed person as one spouse, and another person to family with the passed person as one spouse, and another person to
be selected. be selected.
""" """
def __init__(self,db,person,update,addperson,family=None): def __init__(self,parent,db,person,update,addperson,family=None):
""" """
Displays the AddSpouse dialog box. Displays the AddSpouse dialog box.
@ -74,6 +74,7 @@ class AddSpouse:
update - function that updates the family display update - function that updates the family display
addperson - function that adds a person to the person view addperson - function that adds a person to the person view
""" """
self.parent = parent
self.db = db self.db = db
self.update = update self.update = update
self.person = person self.person = person
@ -152,7 +153,7 @@ class AddSpouse:
person = RelLib.Person() person = RelLib.Person()
person.set_gender(gen) person.set_gender(gen)
EditPerson.EditPerson(person,self.db,self.update_list) EditPerson.EditPerson(self.parent,person,self.db,self.update_list)
def update_list(self,epo): def update_list(self,epo):
""" """

View File

@ -66,7 +66,7 @@ class ChooseParents:
Displays the Choose Parents dialog box, allowing the parents Displays the Choose Parents dialog box, allowing the parents
to be edited. to be edited.
""" """
def __init__(self,db,person,family,family_update,full_update): def __init__(self,parent,db,person,family,family_update,full_update):
""" """
Creates a ChoosePerson dialog box. Creates a ChoosePerson dialog box.
@ -76,6 +76,7 @@ class ChooseParents:
family_update - task that updates the family display family_update - task that updates the family display
full_update - task that updates the main display full_update - task that updates the main display
""" """
self.parent = parent
self.db = db self.db = db
self.person = person self.person = person
self.family = family self.family = family
@ -85,7 +86,11 @@ class ChooseParents:
self.type = "" self.type = ""
self.parent_selected = 0 self.parent_selected = 0
self.date = person.get_birth().get_date_object() birth_event = self.db.find_event_from_id(person.get_birth_id())
if birth_event:
self.date = birth_event.get_date_object()
else:
self.date = None
if self.family: if self.family:
self.father = self.family.get_father_id() self.father = self.family.get_father_id()
@ -166,8 +171,16 @@ class ChooseParents:
else: else:
father_id = None father_id = None
bday = self.person.get_birth().get_date_object() birth_event = self.db.find_event_from_id(self.person.get_birth_id())
dday = self.person.get_death().get_date_object() if birth_event:
bday = birth_event.get_date_object()
else:
bday = None
death_event = self.db.find_event_from_id(self.person.get_death_id())
if death_event:
dday = death_event.get_date_object()
else:
dday = None
person_list = [] person_list = []
for key in self.db.sort_person_keys(): for key in self.db.sort_person_keys():
@ -180,11 +193,20 @@ class ChooseParents:
if not self.showallf.get_active(): if not self.showallf.get_active():
pdday = person.get_death().get_date_object() birth_event = self.db.find_event_from_id(person.get_birth_id())
pbday = person.get_birth().get_date_object() if birth_event:
pbday = birth_event.get_date_object()
else:
pbday = None
if bday.getYearValid(): death_event = self.db.find_event_from_id(person.get_death_id())
if pbday.getYearValid(): if death_event:
pdday = death_event.get_date_object()
else:
pdday = None
if bday and bday.getYearValid():
if pbday and pbday.getYearValid():
# reject if parents birthdate + 10 > child birthdate # reject if parents birthdate + 10 > child birthdate
if pbday.getLowYear()+10 > bday.getHighYear(): if pbday.getLowYear()+10 > bday.getHighYear():
continue continue
@ -193,18 +215,18 @@ class ChooseParents:
if pbday.getHighYear()+90 < bday.getLowYear(): if pbday.getHighYear()+90 < bday.getLowYear():
continue continue
if pdday.getYearValid(): if pdday and pdday.getYearValid():
# reject if parents birthdate + 10 > child deathdate # reject if parents birthdate + 10 > child deathdate
if pbday.getLowYear()+10 > dday.getHighYear(): if dday and pbday.getLowYear()+10 > dday.getHighYear():
continue continue
if dday.getYearValid(): if dday and dday.getYearValid():
if pbday.getYearValid(): if pbday and pbday.getYearValid():
# reject if parents deathday + 3 < childs birth date # reject if parents deathday + 3 < childs birth date
if pdday.getHighYear()+3 < bday.getLowYear(): if pdday and bday and pdday.getHighYear()+3 < bday.getLowYear():
continue continue
if pdday.getYearValid(): if pdday and pdday.getYearValid():
# reject if parents deathday + 150 < childs death date # reject if parents deathday + 150 < childs death date
if pdday.getHighYear() + 150 < dday.getLowYear(): if pdday.getHighYear() + 150 < dday.getLowYear():
continue continue
@ -240,8 +262,16 @@ class ChooseParents:
else: else:
mid = None mid = None
bday = self.person.get_birth().get_date_object() birth_event = self.db.find_event_from_id(self.person.get_birth_id())
dday = self.person.get_death().get_date_object() if birth_event:
bday = birth_event.get_date_object()
else:
bday = None
death_event = self.db.find_event_from_id(self.person.get_death_id())
if death_event:
dday = death_event.get_date_object()
else:
dday = None
person_list = [] person_list = []
for key in self.db.sort_person_keys(): for key in self.db.sort_person_keys():
@ -256,11 +286,20 @@ class ChooseParents:
if not self.showallm.get_active(): if not self.showallm.get_active():
pdday = person.get_death().get_date_object() birth_event = self.db.find_event_from_id(person.get_birth_id())
pbday = person.get_birth().get_date_object() if birth_event:
pbday = birth_event.get_date_object()
else:
pbday = None
if bday.getYearValid(): death_event = self.db.find_event_from_id(person.get_death_id())
if pbday.getYearValid(): if death_event:
pdday = death_event.get_date_object()
else:
pdday = None
if bday and bday.getYearValid():
if pbday and pbday.getYearValid():
# reject if parents birthdate + 10 > child birthdate # reject if parents birthdate + 10 > child birthdate
if pbday.getLowYear()+10 > bday.getHighYear(): if pbday.getLowYear()+10 > bday.getHighYear():
continue continue
@ -269,18 +308,18 @@ class ChooseParents:
if pbday.getHighYear()+90 < bday.getLowYear(): if pbday.getHighYear()+90 < bday.getLowYear():
continue continue
if pdday.getYearValid(): if pdday and pdday.getYearValid():
# reject if parents birthdate + 10 > child deathdate # reject if parents birthdate + 10 > child deathdate
if pbday.getLowYear()+10 > dday.getHighYear(): if pbday.getLowYear()+10 > dday.getHighYear():
continue continue
if dday.getYearValid(): if dday and dday.getYearValid():
if pbday.getYearValid(): if pbday and pbday.getYearValid():
# reject if parents deathday + 3 < childs birth date # reject if parents deathday + 3 < childs birth date
if pdday.getHighYear()+3 < bday.getLowYear(): if pdday and bday and pdday.getHighYear()+3 < bday.getLowYear():
continue continue
if pdday.getYearValid(): if pdday and pdday.getYearValid():
# reject if parents deathday + 150 < childs death date # reject if parents deathday + 150 < childs death date
if pdday.getHighYear() + 150 < dday.getLowYear(): if pdday.getHighYear() + 150 < dday.getLowYear():
continue continue
@ -463,7 +502,7 @@ class ChooseParents:
try: try:
import EditPerson import EditPerson
EditPerson.EditPerson(person,self.db,self.add_new_parent) EditPerson.EditPerson(self.parent, person,self.db,self.add_new_parent)
except: except:
import DisplayTrace import DisplayTrace
DisplayTrace.DisplayTrace() DisplayTrace.DisplayTrace()

View File

@ -528,11 +528,14 @@ class EditPerson:
flist = [self.person.get_main_parents_family_id()] flist = [self.person.get_main_parents_family_id()]
for (fam,mrel,frel) in self.person.get_parent_family_id_list(): for (fam,mrel,frel) in self.person.get_parent_family_id_list():
flist.append(fam) flist.append(fam)
for fam in flist: for fam_id in flist:
fam = self.db.find_family_from_id(fam_id)
if fam == None: if fam == None:
continue continue
f = fam.get_father_id() f_id = fam.get_father_id()
m = fam.get_mother_id() m_id = fam.get_mother_id()
f = self.db.find_person_from_id(f_id)
m = self.db.find_person_from_id(m_id)
if f and m: if f and m:
name = _("%(father)s and %(mother)s") % { name = _("%(father)s and %(mother)s") % {
'father' : GrampsCfg.nameof(f), 'father' : GrampsCfg.nameof(f),
@ -1223,10 +1226,11 @@ class EditPerson:
self.event_cause_field.set_text(event.get_cause()) self.event_cause_field.set_text(event.get_cause())
self.event_descr_field.set_text(short(event.get_description())) self.event_descr_field.set_text(short(event.get_description()))
if len(event.get_source_references()) > 0: if len(event.get_source_references()) > 0:
psrc_id = event.get_source_references()[0].get_base_id() psrc_ref = event.get_source_references()[0]
psrc_id = psrc_ref.get_base_id()
psrc = self.db.find_source_from_id(psrc_id) psrc = self.db.find_source_from_id(psrc_id)
self.event_src_field.set_text(short(psrc.get_base_id().get_title())) self.event_src_field.set_text(short(psrc.get_title()))
self.event_conf_field.set_text(const.confidence[psrc.get_confidence_level()]) self.event_conf_field.set_text(const.confidence[psrc_ref.get_confidence_level()])
else: else:
self.event_src_field.set_text('') self.event_src_field.set_text('')
self.event_conf_field.set_text('') self.event_conf_field.set_text('')
@ -1255,10 +1259,11 @@ class EditPerson:
self.addr_postal.set_text(addr.get_postal_code()) self.addr_postal.set_text(addr.get_postal_code())
self.addr_phone.set_text(addr.get_phone()) self.addr_phone.set_text(addr.get_phone())
if len(addr.get_source_references()) > 0: if len(addr.get_source_references()) > 0:
psrc_id = addr.get_source_references()[0].get_base_id() psrc_ref = addr.get_source_references()[0]
psrc_id = psrc_ref.get_base_id()
psrc = self.db.find_source_from_id(psrc_id) psrc = self.db.find_source_from_id(psrc_id)
self.addr_conf_field.set_text(const.confidence[psrc.get_confidence_level()]) self.addr_conf_field.set_text(const.confidence[psrc_ref.get_confidence_level()])
self.addr_src_field.set_text(short(psrc.get_base_id().get_title())) self.addr_src_field.set_text(short(psrc.get_title()))
else: else:
self.addr_src_field.set_text('') self.addr_src_field.set_text('')
self.addr_conf_field.set_text('') self.addr_conf_field.set_text('')
@ -1335,10 +1340,11 @@ class EditPerson:
self.attr_type.set_text(const.display_pattr(attr.get_type())) self.attr_type.set_text(const.display_pattr(attr.get_type()))
self.attr_value.set_text(short(attr.get_value())) self.attr_value.set_text(short(attr.get_value()))
if len(attr.get_source_references()) > 0: if len(attr.get_source_references()) > 0:
psrc_id = attr.get_source_references()[0].get_base_id() psrc_ref = attr.get_source_references()[0]
psrc_id = psrc_ref.get_base_id()
psrc = self.db.find_source_from_id(psrc_id) psrc = self.db.find_source_from_id(psrc_id)
self.attr_src_field.set_text(short(psrc.get_base_id().get_title())) self.attr_src_field.set_text(short(psrc.get_title()))
self.attr_conf_field.set_text(const.confidence[psrc.get_confidence_level()]) self.attr_conf_field.set_text(const.confidence[psrc_ref.get_confidence_level()])
else: else:
self.attr_src_field.set_text('') self.attr_src_field.set_text('')
self.attr_conf_field.set_text('') self.attr_conf_field.set_text('')

View File

@ -49,9 +49,11 @@ from gettext import gettext as _
class EditSource: class EditSource:
def __init__(self,source,db,parent_window=None,func=None): def __init__(self,source,db,parent,parent_window=None,func=None):
self.source = source self.source = source
self.db = db self.db = db
self.parent = parent
self.child_windows = []
self.callback = func self.callback = func
self.path = db.get_save_path() self.path = db.get_save_path()
self.not_loaded = 1 self.not_loaded = 1
@ -105,6 +107,9 @@ class EditSource:
"on_editphoto_clicked" : self.gallery.on_edit_photo_clicked, "on_editphoto_clicked" : self.gallery.on_edit_photo_clicked,
"on_edit_properties_clicked": self.gallery.popup_change_description, "on_edit_properties_clicked": self.gallery.popup_change_description,
"on_sourceEditor_help_clicked" : self.on_help_clicked, "on_sourceEditor_help_clicked" : self.on_help_clicked,
"on_sourceEditor_ok_clicked" : self.on_source_apply_clicked,
"on_sourceEditor_cancel_clicked" : self.close,
"on_sourceEditor_delete_event" : self.on_delete_event,
}) })
if self.source.get_id() == "": if self.source.get_id() == "":
@ -115,21 +120,57 @@ class EditSource:
self.top.set_transient_for(parent_window) self.top.set_transient_for(parent_window)
self.display_references() self.display_references()
if parent_window:
self.top.set_transient_for(parent_window)
self.parent.child_windows.append(self)
self.add_itself_to_menu()
self.top.show() self.top.show()
self.val = self.top.run()
if self.val == gtk.RESPONSE_OK: def on_delete_event(self,obj,b):
self.on_source_apply_clicked() self.close_child_windows()
self.top.destroy() self.remove_itself_from_menu()
def on_help_clicked(self,obj): def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual""" """Display the relevant portion of GRAMPS manual"""
gnome.help_display('gramps-manual','gramps-edit-complete') gnome.help_display('gramps-manual','gramps-edit-complete')
self.val = self.top.run()
def close(self,obj): def close(self,obj):
self.gallery.close(self.gallery_ok) self.gallery.close(self.gallery_ok)
self.close_child_windows()
self.remove_itself_from_menu()
self.top.destroy() self.top.destroy()
def close_child_windows(self):
for child_window in self.child_windows:
child_window.close(None)
self.child_windows = []
def add_itself_to_menu(self):
if not self.source:
label = _("New Source")
else:
label = self.source.get_title()
if not label.strip():
label = _("New Source")
label = "%s: %s" % (_('Source'),label)
self.parent_menu_item = gtk.MenuItem(label)
self.parent_menu_item.set_submenu(gtk.Menu())
self.parent_menu_item.show()
self.parent.menu.append(self.parent_menu_item)
self.menu = self.parent_menu_item.get_submenu()
self.menu_item = gtk.MenuItem(_('Source Editor'))
self.menu_item.connect("activate",self.present)
self.menu_item.show()
self.menu.append(self.menu_item)
def remove_itself_from_menu(self):
self.menu_item.destroy()
self.menu.destroy()
self.parent_menu_item.destroy()
def present(self,obj):
self.top.present()
def display_references(self): def display_references(self):
p_event_list = [] p_event_list = []
p_attr_list = [] p_attr_list = []
@ -148,7 +189,12 @@ class EditSource:
for key in self.db.get_person_keys(): for key in self.db.get_person_keys():
p = self.db.get_person(key) p = self.db.get_person(key)
name = GrampsCfg.nameof(p) name = GrampsCfg.nameof(p)
for v in p.get_event_list() + [p.get_birth(), p.get_death()]: birth_event = self.db.find_event_from_id(p.get_birth_id())
death_event = self.db.find_event_from_id(p.get_death_id())
for v_id in p.get_event_list() + [p.get_birth_id(), p.get_death_id()]:
v = self.db.find_event_from_id(v_id)
if not v:
continue
for sref in v.get_source_references(): for sref in v.get_source_references():
if sref.get_base_id() == self.source.get_id(): if sref.get_base_id() == self.source.get_id():
p_event_list.append((name,v.get_name())) p_event_list.append((name,v.get_name()))
@ -170,8 +216,10 @@ class EditSource:
if sref.get_base_id() == self.source.get_id(): if sref.get_base_id() == self.source.get_id():
m_list.append(name) m_list.append(name)
for p in self.db.get_family_id_map().values(): for p in self.db.get_family_id_map().values():
f = p.get_father_id() f_id = p.get_father_id()
m = p.get_mother_id() m_id = p.get_mother_id()
f = self.db.find_person_from_id(f_id)
m = self.db.find_person_from_id(m_id)
if f and m: if f and m:
name = _("%(father)s and %(mother)s") % { name = _("%(father)s and %(mother)s") % {
"father" : GrampsCfg.nameof(f), "father" : GrampsCfg.nameof(f),
@ -180,7 +228,10 @@ class EditSource:
name = GrampsCfg.nameof(f) name = GrampsCfg.nameof(f)
else: else:
name = GrampsCfg.nameof(m) name = GrampsCfg.nameof(m)
for v in p.get_event_list(): for v_id in p.get_event_list():
v = self.db.find_event_from_id(v_id)
if not v:
continue
for sref in v.get_source_references(): for sref in v.get_source_references():
if sref.get_base_id() == self.source.get_id(): if sref.get_base_id() == self.source.get_id():
f_event_list.append((name,v.get_name())) f_event_list.append((name,v.get_name()))
@ -235,7 +286,7 @@ class EditSource:
self.ref_not_loaded = 0 self.ref_not_loaded = 0
def on_source_apply_clicked(self): def on_source_apply_clicked(self,obj):
title = unicode(self.title.get_text()) title = unicode(self.title.get_text())
author = unicode(self.author.get_text()) author = unicode(self.author.get_text())
@ -273,10 +324,10 @@ class EditSource:
Utils.modified() Utils.modified()
self.gallery_ok = 1 self.gallery_ok = 1
self.close(None)
if self.callback: if self.callback:
self.callback(self.source) self.callback(self.source)
self.close(obj)
def on_switch_page(self,obj,a,page): def on_switch_page(self,obj,a,page):
if page == 2 and self.not_loaded: if page == 2 and self.not_loaded:

View File

@ -467,7 +467,7 @@ class FamilyView:
return return
child = self.parent.db.get_person(self.child_model.get_value(iter,2)) child = self.parent.db.get_person(self.child_model.get_value(iter,2))
try: try:
EditPerson.EditPerson(child, self.parent.db, self.spouse_after_edit) EditPerson.EditPerson(self.parent, child, self.parent.db, self.spouse_after_edit)
except: except:
DisplayTrace.DisplayTrace() DisplayTrace.DisplayTrace()
@ -536,7 +536,7 @@ class FamilyView:
def edit_spouse_callback(self,obj): def edit_spouse_callback(self,obj):
if self.selected_spouse: if self.selected_spouse:
try: try:
EditPerson.EditPerson(self.selected_spouse, self.parent.db, self.spouse_after_edit) EditPerson.EditPerson(self.parent, self.selected_spouse, self.parent.db, self.spouse_after_edit)
except: except:
DisplayTrace.DisplayTrace() DisplayTrace.DisplayTrace()
@ -564,7 +564,7 @@ class FamilyView:
self.parent.new_after_edit, self.parent.new_after_edit,
self.load_family) self.load_family)
else: else:
AddSpouse.AddSpouse(self.parent.db,self.person, AddSpouse.AddSpouse(self.parent,self.parent.db,self.person,
self.load_family, self.load_family,
self.parent.people_view.redisplay_person_list, self.parent.people_view.redisplay_person_list,
self.family) self.family)
@ -575,7 +575,7 @@ class FamilyView:
if not self.person: if not self.person:
return return
try: try:
AddSpouse.AddSpouse(self.parent.db, self.person, AddSpouse.AddSpouse(self.parent, self.parent.db, self.person,
self.load_family, self.load_family,
self.parent.people_view.redisplay_person_list) self.parent.people_view.redisplay_person_list)
except: except:
@ -588,7 +588,7 @@ class FamilyView:
else: else:
person.set_gender(RelLib.Person.male) person.set_gender(RelLib.Person.male)
try: try:
EditPerson.EditPerson(person, self.parent.db, self.new_spouse_after_edit) EditPerson.EditPerson(self.parent, person, self.parent.db, self.new_spouse_after_edit)
except: except:
DisplayTrace.DisplayTrace() DisplayTrace.DisplayTrace()
@ -648,7 +648,7 @@ class FamilyView:
person.get_primary_name().set_surname_prefix(name[0]) person.get_primary_name().set_surname_prefix(name[0])
try: try:
EditPerson.EditPerson(person, self.parent.db, self.new_child_after_edit) EditPerson.EditPerson(self.parent, person, self.parent.db, self.new_child_after_edit)
except: except:
DisplayTrace.DisplayTrace() DisplayTrace.DisplayTrace()
@ -1175,7 +1175,7 @@ class FamilyView:
if not person: if not person:
return return
try: try:
ChooseParents.ChooseParents(self.parent.db,person,None, ChooseParents.ChooseParents(self.parent, self.parent.db,person,None,
self.load_family, self.load_family,
self.parent.full_update) self.parent.full_update)
except: except:

View File

@ -260,6 +260,7 @@ class Gallery(ImageSelect):
def close(self,ok=0): def close(self,ok=0):
self.iconlist.hide() self.iconlist.hide()
if self.canvas_list:
for a in self.canvas_list.values(): for a in self.canvas_list.values():
a[0].destroy() a[0].destroy()
a[1].destroy() a[1].destroy()

View File

@ -51,7 +51,8 @@ from gettext import gettext as _
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class MergePeople: class MergePeople:
def __init__(self,db,person1,person2,update,ep_update=None): def __init__(self,parent,db,person1,person2,update,ep_update=None):
self.parent = parent
self.db = db self.db = db
self.p1 = person1 self.p1 = person1
self.p2 = person2 self.p2 = person2
@ -213,7 +214,7 @@ class MergePeople:
import EditPerson import EditPerson
self.on_merge_clicked(obj) self.on_merge_clicked(obj)
# This needs to be fixed to provide an update call # This needs to be fixed to provide an update call
EditPerson.EditPerson(self.p1,self.db,self.ep_update) EditPerson.EditPerson(self.parent,self.p1,self.db,self.ep_update)
def copy_note(self,one,two): def copy_note(self,one,two):
if one.get_note() != two.get_note(): if one.get_note() != two.get_note():

View File

@ -46,7 +46,6 @@ class NoteEditor:
self.data = data self.data = data
self.parent_window = parent_window self.parent_window = parent_window
self.child_windows = []
self.parent = parent self.parent = parent
self.draw() self.draw()

View File

@ -1695,6 +1695,21 @@ class Event(DataObj):
return 0 return 0
index = index + 1 index = index + 1
witness_list = self.get_witness_list()
other_list = other.get_witness_list()
if (not witness_list) and (not other_list):
return 1
elif not (witness_list and other_list):
return 0
other_list = other_list[:]
for a in witness_list:
if a in other_list:
other_list.remove(a)
else:
return 0
if other_list:
return 0
return 1 return 1
def set_name(self,name): def set_name(self,name):
@ -2237,7 +2252,9 @@ class GenderStats:
return Person.unknown return Person.unknown
try: # First try python2.3 and later: this is the future
from bsddb import dbshelve, db
except ImportError: # try python2.2
from bsddb3 import dbshelve, db from bsddb3 import dbshelve, db
class GrampsDB: class GrampsDB:

View File

@ -341,7 +341,7 @@ class SourceEditor:
def close_child_windows(self): def close_child_windows(self):
for child_window in self.child_windows: for child_window in self.child_windows:
child_window.close() child_window.close(None)
self.child_windows = [] self.child_windows = []
def add_itself_to_menu(self): def add_itself_to_menu(self):
@ -482,7 +482,7 @@ class SourceEditor:
def add_src_clicked(self,obj): def add_src_clicked(self,obj):
import EditSource import EditSource
EditSource.EditSource(RelLib.Source(),self.db, self.sourceDisplay, self.update_display) EditSource.EditSource(RelLib.Source(),self.db, self,self.sourceDisplay, self.update_display)
def by_title(first,second): def by_title(first,second):

View File

@ -28,6 +28,7 @@
import gobject import gobject
import gtk import gtk
import gtk.glade import gtk.glade
import gnome
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -89,10 +90,10 @@ class WitnessTab:
if iter: if iter:
objs = self.model.get_selected_objects() objs = self.model.get_selected_objects()
src = objs[0] src = objs[0]
WitnessEditor(src,self.db,self.update_clist,self) WitnessEditor(src,self.db,self,self.update_clist,self.window)
def add_clicked(self,obj): def add_clicked(self,obj):
WitnessEditor(None,self.db,self.update_clist,self,self.window) WitnessEditor(None,self.db,self,self.update_clist,self.window)
def add_ref(self,inst,ref): def add_ref(self,inst,ref):
self.parent.lists_changed = 1 self.parent.lists_changed = 1
@ -113,7 +114,7 @@ class WitnessTab:
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
class WitnessEditor: class WitnessEditor:
def __init__(self,ref,database,update=None,parent=None,parent_window=None): def __init__(self,ref,database,parent,update=None,parent_window=None):
self.db = database self.db = database
self.parent = parent self.parent = parent
@ -122,6 +123,10 @@ class WitnessEditor:
self.show_witness = gtk.glade.XML(const.dialogFile, "witness_edit","gramps") self.show_witness = gtk.glade.XML(const.dialogFile, "witness_edit","gramps")
self.show_witness.signal_autoconnect({ self.show_witness.signal_autoconnect({
"on_toggled" : self.on_toggled, "on_toggled" : self.on_toggled,
"on_witness_edit_delete_event" : self.on_delete_event,
"on_cancel_witness_clicked" : self.close,
"on_help_witness_clicked" : self.on_help_clicked,
"on_ok_witness_clicked" : self.ok_clicked,
}) })
self.window = self.show_witness.get_widget('witness_edit') self.window = self.show_witness.get_widget('witness_edit')
@ -136,7 +141,7 @@ class WitnessEditor:
if self.ref.get_type(): if self.ref.get_type():
self.in_db.set_active(1) self.in_db.set_active(1)
self.idval = self.ref.get_value() self.idval = self.ref.get_value()
person = self.db.get_person(self.idval) person = self.db.find_person_from_id(self.idval)
self.name.set_text(person.get_primary_name().get_regular_name()) self.name.set_text(person.get_primary_name().get_regular_name())
else: else:
self.name.set_text(self.ref.get_value()) self.name.set_text(self.ref.get_value())
@ -150,11 +155,33 @@ class WitnessEditor:
if parent_window: if parent_window:
self.window.set_transient_for(parent_window) self.window.set_transient_for(parent_window)
val = self.window.run() self.parent.parent.child_windows.append(self)
if val == gtk.RESPONSE_OK: self.add_itself_to_menu()
self.ok_clicked() self.window.show()
def on_delete_event(self,obj,b):
self.remove_itself_from_menu()
def close(self,obj):
self.remove_itself_from_menu()
self.window.destroy() self.window.destroy()
def add_itself_to_menu(self):
self.parent_menu_item = gtk.MenuItem(_('Witness Editor'))
self.parent_menu_item.connect("activate",self.present)
self.parent_menu_item.show()
self.parent.parent.menu.append(self.parent_menu_item)
def remove_itself_from_menu(self):
self.parent_menu_item.destroy()
def present(self,obj):
self.window.present()
def on_help_clicked(self,obj):
"""Display the relevant portion of GRAMPS manual"""
gnome.help_display('gramps-manual','gramps-edit-complete')
def choose(self,obj): def choose(self,obj):
import SelectPerson import SelectPerson
sel_person = SelectPerson.SelectPerson(self.db,_('Select Person'),parent_window=self.window) sel_person = SelectPerson.SelectPerson(self.db,_('Select Person'),parent_window=self.window)
@ -176,7 +203,7 @@ class WitnessEditor:
self.name.set_sensitive(1) self.name.set_sensitive(1)
self.select.set_sensitive(0) self.select.set_sensitive(0)
def ok_clicked(self): def ok_clicked(self,obj):
if not self.ref: if not self.ref:
if self.in_db.get_active(): if self.in_db.get_active():
self.ref = RelLib.Witness(RelLib.Event.ID) self.ref = RelLib.Witness(RelLib.Event.ID)
@ -186,10 +213,13 @@ class WitnessEditor:
if self.in_db.get_active(): if self.in_db.get_active():
self.ref.set_value(self.idval) self.ref.set_value(self.idval)
self.ref.set_type(RelLib.Event.ID)
else: else:
self.ref.set_value(unicode(self.name.get_text())) self.ref.set_value(unicode(self.name.get_text()))
self.ref.set_type(RelLib.Event.NAME)
c = self.comment.get_buffer() c = self.comment.get_buffer()
self.ref.set_comment(unicode(c.get_text(c.get_start_iter(),c.get_end_iter(),gtk.FALSE))) self.ref.set_comment(unicode(c.get_text(c.get_start_iter(),c.get_end_iter(),gtk.FALSE)))
if self.update: if self.update:
self.update() self.update()
self.close(obj)

View File

@ -4154,6 +4154,7 @@
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
<property name="icon">gramps.png</property> <property name="icon">gramps.png</property>
<property name="has_separator">False</property> <property name="has_separator">False</property>
<signal name="delete_event" handler="on_witness_edit_delete_event" last_modification_time="Sat, 21 Feb 2004 04:10:13 GMT"/>
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox2"> <widget class="GtkVBox" id="dialog-vbox2">
@ -4175,6 +4176,7 @@
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-6</property> <property name="response_id">-6</property>
<signal name="clicked" handler="on_cancel_witness_clicked" last_modification_time="Sat, 21 Feb 2004 04:10:38 GMT"/>
</widget> </widget>
</child> </child>
@ -4187,6 +4189,7 @@
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-5</property> <property name="response_id">-5</property>
<signal name="clicked" handler="on_ok_witness_clicked" last_modification_time="Sat, 21 Feb 2004 04:11:00 GMT"/>
</widget> </widget>
</child> </child>

View File

@ -5548,6 +5548,7 @@
<property name="destroy_with_parent">False</property> <property name="destroy_with_parent">False</property>
<property name="icon">gramps.png</property> <property name="icon">gramps.png</property>
<property name="has_separator">False</property> <property name="has_separator">False</property>
<signal name="delete_event" handler="on_sourceEditor_delete_event" last_modification_time="Sat, 21 Feb 2004 02:58:41 GMT"/>
<child internal-child="vbox"> <child internal-child="vbox">
<widget class="GtkVBox" id="dialog-vbox11"> <widget class="GtkVBox" id="dialog-vbox11">
@ -5570,6 +5571,7 @@
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-6</property> <property name="response_id">-6</property>
<signal name="clicked" handler="on_sourceEditor_cancel_clicked" last_modification_time="Sat, 21 Feb 2004 02:59:20 GMT"/>
</widget> </widget>
</child> </child>
@ -5584,6 +5586,7 @@
<property name="use_stock">True</property> <property name="use_stock">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property> <property name="relief">GTK_RELIEF_NORMAL</property>
<property name="response_id">-5</property> <property name="response_id">-5</property>
<signal name="clicked" handler="on_sourceEditor_ok_clicked" last_modification_time="Sat, 21 Feb 2004 02:59:36 GMT"/>
</widget> </widget>
</child> </child>

View File

@ -751,7 +751,7 @@ class Gramps:
import MergeData import MergeData
p1 = self.db.get_person(mlist[0]) p1 = self.db.get_person(mlist[0])
p2 = self.db.get_person(mlist[1]) p2 = self.db.get_person(mlist[1])
MergeData.MergePeople(self.db,p1,p2,self.merge_update, MergeData.MergePeople(self,self.db,p1,p2,self.merge_update,
self.update_after_edit) self.update_after_edit)
elif page == PLACE_VIEW: elif page == PLACE_VIEW:
self.place_view.merge() self.place_view.merge()