* various: Add undo functionality
svn: r3065
This commit is contained in:
parent
feef42099d
commit
8592fa2cc9
@ -1,3 +1,6 @@
|
|||||||
|
2004-03-29 Don Allingham <dallingham@users.sourceforge.net>
|
||||||
|
* various: Add undo functionality
|
||||||
|
|
||||||
2004-03-27 Alex Roitman <shura@alex.neuro.umn.edu>
|
2004-03-27 Alex Roitman <shura@alex.neuro.umn.edu>
|
||||||
* src/plugins/rel_it.py: Convert to class.
|
* src/plugins/rel_it.py: Convert to class.
|
||||||
|
|
||||||
|
@ -129,7 +129,9 @@ class AddMediaObject:
|
|||||||
if self.update:
|
if self.update:
|
||||||
self.update()
|
self.update()
|
||||||
self.object = mobj
|
self.object = mobj
|
||||||
self.db.commit_media_object(mobj)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_media_object(mobj,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
def on_name_changed(self,obj):
|
def on_name_changed(self,obj):
|
||||||
"""
|
"""
|
||||||
|
@ -217,7 +217,6 @@ class AddSpouse:
|
|||||||
self.db.add_person(person)
|
self.db.add_person(person)
|
||||||
else:
|
else:
|
||||||
self.db.add_person_no_map(person,person.get_id())
|
self.db.add_person_no_map(person,person.get_id())
|
||||||
self.db.build_person_display(person.get_id())
|
|
||||||
self.addperson(person)
|
self.addperson(person)
|
||||||
self.update_data(person.get_id())
|
self.update_data(person.get_id())
|
||||||
#self.slist.center_selected()
|
#self.slist.center_selected()
|
||||||
@ -241,12 +240,14 @@ class AddSpouse:
|
|||||||
Utils.destroy_passed_object(obj)
|
Utils.destroy_passed_object(obj)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
trans = self.db.start_transaction()
|
||||||
|
|
||||||
if not self.active_family:
|
if not self.active_family:
|
||||||
self.active_family = self.db.new_family()
|
self.active_family = self.db.new_family()
|
||||||
self.person.add_family_id(self.active_family.get_id())
|
self.person.add_family_id(self.active_family.get_id())
|
||||||
self.db.commit_person(self.person)
|
self.db.commit_person(self.person,trans)
|
||||||
spouse.add_family_id(self.active_family.get_id())
|
spouse.add_family_id(self.active_family.get_id())
|
||||||
self.db.commit_person(spouse)
|
self.db.commit_person(spouse,trans)
|
||||||
|
|
||||||
if self.person.get_gender() == RelLib.Person.male:
|
if self.person.get_gender() == RelLib.Person.male:
|
||||||
self.active_family.set_mother_id(spouse.get_id())
|
self.active_family.set_mother_id(spouse.get_id())
|
||||||
@ -255,8 +256,10 @@ class AddSpouse:
|
|||||||
self.active_family.set_father_id(spouse.get_id())
|
self.active_family.set_father_id(spouse.get_id())
|
||||||
self.active_family.set_mother_id(self.person.get_id())
|
self.active_family.set_mother_id(self.person.get_id())
|
||||||
|
|
||||||
self.active_family.set_relationship(const.save_frel(unicode(self.relation_type.get_text())))
|
rtype = const.save_frel(unicode(self.relation_type.get_text()))
|
||||||
self.db.commit_family(self.active_family)
|
self.active_family.set_relationship(rtype)
|
||||||
|
self.db.commit_family(self.active_family,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
Utils.destroy_passed_object(obj)
|
Utils.destroy_passed_object(obj)
|
||||||
self.update(self.active_family)
|
self.update(self.active_family)
|
||||||
|
|
||||||
|
@ -293,7 +293,8 @@ class ChooseParents:
|
|||||||
|
|
||||||
def redrawf(self):
|
def redrawf(self):
|
||||||
"""Redraws the potential father list"""
|
"""Redraws the potential father list"""
|
||||||
self.father_model = gtk.TreeModelSort(PeopleModel.PeopleModel(self.db, self.father_filter))
|
self.father_nsort = PeopleModel.PeopleModel(self.db, self.father_filter)
|
||||||
|
self.father_model = gtk.TreeModelSort(self.father_nsort)
|
||||||
self.father_list.set_model(self.father_model)
|
self.father_list.set_model(self.father_model)
|
||||||
if self.type == "Partners":
|
if self.type == "Partners":
|
||||||
self.flabel.set_label("<b>%s</b>" % _("Par_ent"))
|
self.flabel.set_label("<b>%s</b>" % _("Par_ent"))
|
||||||
@ -302,7 +303,8 @@ class ChooseParents:
|
|||||||
|
|
||||||
def redrawm(self):
|
def redrawm(self):
|
||||||
"""Redraws the potential mother list"""
|
"""Redraws the potential mother list"""
|
||||||
self.mother_model = gtk.TreeModelSort(PeopleModel.PeopleModel(self.db, self.mother_filter))
|
self.mother_nsort = PeopleModel.PeopleModel(self.db, self.mother_filter)
|
||||||
|
self.mother_model = gtk.TreeModelSort(self.mother_nsort)
|
||||||
self.mother_list.set_model(self.mother_model)
|
self.mother_list.set_model(self.mother_model)
|
||||||
if self.type == "Partners":
|
if self.type == "Partners":
|
||||||
self.mlabel.set_label("<b>%s</b>" % _("Pa_rent"))
|
self.mlabel.set_label("<b>%s</b>" % _("Pa_rent"))
|
||||||
@ -351,16 +353,18 @@ class ChooseParents:
|
|||||||
family.set_mother_id(mother_id)
|
family.set_mother_id(mother_id)
|
||||||
family.add_child_id(self.person.get_id())
|
family.add_child_id(self.person.get_id())
|
||||||
|
|
||||||
|
trans = self.db.start_transaction()
|
||||||
if father_id:
|
if father_id:
|
||||||
father = self.db.find_person_from_id(father_id)
|
father = self.db.find_person_from_id(father_id)
|
||||||
father.add_family_id(family.get_id())
|
father.add_family_id(family.get_id())
|
||||||
self.db.commit_person(father)
|
self.db.commit_person(father,trans)
|
||||||
if mother_id:
|
if mother_id:
|
||||||
mother = self.db.find_person_from_id(mother_id)
|
mother = self.db.find_person_from_id(mother_id)
|
||||||
mother.add_family_id(family.get_id())
|
mother.add_family_id(family.get_id())
|
||||||
self.db.commit_person(mother)
|
self.db.commit_person(mother,trans)
|
||||||
|
|
||||||
self.db.commit_family(family)
|
self.db.commit_family(family,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
return family
|
return family
|
||||||
|
|
||||||
def mother_list_select_row(self,obj):
|
def mother_list_select_row(self,obj):
|
||||||
@ -414,8 +418,13 @@ class ChooseParents:
|
|||||||
if len(family_id_list) >= 1:
|
if len(family_id_list) >= 1:
|
||||||
family = self.db.find_family_from_id(family_id_list[0])
|
family = self.db.find_family_from_id(family_id_list[0])
|
||||||
mother_id = family.get_mother_id()
|
mother_id = family.get_mother_id()
|
||||||
self.mother_selection.select(mother_id)
|
mother = self.db.find_person_from_id(mother_id)
|
||||||
#self.mother_model.center_selected()
|
sname = mother.get_primary_name().get_surname()
|
||||||
|
tpath = self.mother_nsort.on_get_path(sname)
|
||||||
|
self.mother_list.expand_row(tpath,0)
|
||||||
|
path = self.mother_nsort.on_get_path(mother_id)
|
||||||
|
self.mother_selection.select_path(path)
|
||||||
|
self.mother_list.scroll_to_cell(path,None,1,0.5,0)
|
||||||
|
|
||||||
def mother_list_select_row(self,obj):
|
def mother_list_select_row(self,obj):
|
||||||
"""Called when a row is selected in the father list. Sets the
|
"""Called when a row is selected in the father list. Sets the
|
||||||
@ -432,9 +441,14 @@ class ChooseParents:
|
|||||||
family_id_list = self.mother.get_family_id_list()
|
family_id_list = self.mother.get_family_id_list()
|
||||||
if len(family_id_list) >= 1:
|
if len(family_id_list) >= 1:
|
||||||
family = self.db.find_family_from_id(family_id_list[0])
|
family = self.db.find_family_from_id(family_id_list[0])
|
||||||
father_id = family.get_father_id()
|
father_id = family.get_mother_id()
|
||||||
self.father_selection.select(father_id)
|
father = self.db.find_person_from_id(father_id)
|
||||||
#self.father_model.center_selected()
|
sname = father.get_primary_name().get_surname()
|
||||||
|
tpath = self.father_nsort.on_get_path(sname)
|
||||||
|
self.father_list.expand_row(tpath,0)
|
||||||
|
path = self.father_nsort.on_get_path(father_id)
|
||||||
|
self.father_selection.select_path(path)
|
||||||
|
self.father_list.scroll_to_cell(path,None,1,0.5,0)
|
||||||
|
|
||||||
def save_parents_clicked(self,obj):
|
def save_parents_clicked(self,obj):
|
||||||
"""
|
"""
|
||||||
@ -491,7 +505,6 @@ class ChooseParents:
|
|||||||
id = self.db.add_person(person)
|
id = self.db.add_person(person)
|
||||||
else:
|
else:
|
||||||
self.db.add_person_no_map(person,id)
|
self.db.add_person_no_map(person,id)
|
||||||
self.db.build_person_display(id)
|
|
||||||
|
|
||||||
self.type = const.save_frel(unicode(self.prel.get_text()))
|
self.type = const.save_frel(unicode(self.prel.get_text()))
|
||||||
dinfo = self.db.get_person_display(id)
|
dinfo = self.db.get_person_display(id)
|
||||||
@ -538,12 +551,15 @@ class ChooseParents:
|
|||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
self.person.add_parent_family_id(family.get_id(),mother_rel,father_rel)
|
self.person.add_parent_family_id(family.get_id(),mother_rel,father_rel)
|
||||||
self.db.commit_person(self.person)
|
|
||||||
self.db.commit_family(family)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_person(self.person,trans)
|
||||||
|
self.db.commit_family(family,trans)
|
||||||
if self.father:
|
if self.father:
|
||||||
self.db.commit_person(self.father)
|
self.db.commit_person(self.father,trans)
|
||||||
if self.mother:
|
if self.mother:
|
||||||
self.db.commit_person(self.mother)
|
self.db.commit_person(self.mother,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
class ModifyParents:
|
class ModifyParents:
|
||||||
def __init__(self,db,person,family_id,family_update,full_update,parent_window=None):
|
def __init__(self,db,person,family_id,family_update,full_update,parent_window=None):
|
||||||
|
@ -92,7 +92,8 @@ class DbPrompter:
|
|||||||
"on_ok_button1_clicked": self.save_ok_button_clicked,
|
"on_ok_button1_clicked": self.save_ok_button_clicked,
|
||||||
"destroy_passed_object": self.cancel_button_clicked,
|
"destroy_passed_object": self.cancel_button_clicked,
|
||||||
})
|
})
|
||||||
wFs.get_widget('fileselection').set_title('%s - GRAMPS' % _('Create database'))
|
filesel = wFs.get_widget('fileselection')
|
||||||
|
filesel.set_title('%s - GRAMPS' % _('Create database'))
|
||||||
|
|
||||||
def save_ok_button_clicked(self,obj):
|
def save_ok_button_clicked(self,obj):
|
||||||
filename = obj.get_filename().encode('iso8859-1')
|
filename = obj.get_filename().encode('iso8859-1')
|
||||||
@ -101,6 +102,18 @@ class DbPrompter:
|
|||||||
self.db.read_file(filename)
|
self.db.read_file(filename)
|
||||||
|
|
||||||
def open_activate(self):
|
def open_activate(self):
|
||||||
|
|
||||||
|
wFs = gtk.glade.XML (const.gladeFile, "fileselection","gramps")
|
||||||
|
wFs.signal_autoconnect({
|
||||||
|
"on_ok_button1_clicked": self.ok_button_clicked,
|
||||||
|
"destroy_passed_object": self.cancel_button_clicked,
|
||||||
|
})
|
||||||
|
self.filesel = wFs.get_widget('fileselection')
|
||||||
|
self.filesel.set_title('%s - GRAMPS' % _('Open database'))
|
||||||
|
if GrampsCfg.lastfile:
|
||||||
|
self.filesel.set_filename(GrampsCfg.lastfile)
|
||||||
|
return
|
||||||
|
|
||||||
wFs = gtk.glade.XML(const.revisionFile, "dbopen","gramps")
|
wFs = gtk.glade.XML(const.revisionFile, "dbopen","gramps")
|
||||||
wFs.signal_autoconnect({
|
wFs.signal_autoconnect({
|
||||||
"on_ok_button1_clicked": self.ok_button_clicked,
|
"on_ok_button1_clicked": self.ok_button_clicked,
|
||||||
@ -130,7 +143,7 @@ class DbPrompter:
|
|||||||
self.show()
|
self.show()
|
||||||
|
|
||||||
def ok_button_clicked(self,obj):
|
def ok_button_clicked(self,obj):
|
||||||
filename = self.dbname.get_full_path(0)
|
filename = self.filesel.get_filename()
|
||||||
|
|
||||||
if not filename:
|
if not filename:
|
||||||
return
|
return
|
||||||
|
@ -1409,6 +1409,9 @@ class EditPerson:
|
|||||||
self.person.set_death_id(self.death.get_id())
|
self.person.set_death_id(self.death.get_id())
|
||||||
|
|
||||||
def on_apply_person_clicked(self,obj):
|
def on_apply_person_clicked(self,obj):
|
||||||
|
|
||||||
|
trans = self.db.start_transaction()
|
||||||
|
|
||||||
surname = unicode(self.surname_field.get_text())
|
surname = unicode(self.surname_field.get_text())
|
||||||
suffix = unicode(self.suffix.get_text())
|
suffix = unicode(self.suffix.get_text())
|
||||||
prefix = unicode(self.prefix.get_text())
|
prefix = unicode(self.prefix.get_text())
|
||||||
@ -1424,7 +1427,7 @@ class EditPerson:
|
|||||||
self.birth.set_place_id(self.get_place(self.bplace,1))
|
self.birth.set_place_id(self.get_place(self.bplace,1))
|
||||||
|
|
||||||
if idval != self.person.get_id():
|
if idval != self.person.get_id():
|
||||||
m = self.db.get_person_id_map()
|
m = self.db.get_person_keys()
|
||||||
if not m.has_key(idval):
|
if not m.has_key(idval):
|
||||||
if m.has_key(self.person.get_id()):
|
if m.has_key(self.person.get_id()):
|
||||||
del m[self.person.get_id()]
|
del m[self.person.get_id()]
|
||||||
@ -1476,20 +1479,20 @@ class EditPerson:
|
|||||||
self.pdmap[p[0]] = key
|
self.pdmap[p[0]] = key
|
||||||
|
|
||||||
if self.orig_birth == None:
|
if self.orig_birth == None:
|
||||||
self.db.add_event(self.birth)
|
self.db.add_event(self.birth,trans)
|
||||||
self.person.set_birth_id(self.birth.get_id())
|
self.person.set_birth_id(self.birth.get_id())
|
||||||
elif not self.orig_birth.are_equal(self.birth):
|
elif not self.orig_birth.are_equal(self.birth):
|
||||||
self.db.commit_event(self.birth)
|
self.db.commit_event(self.birth,trans)
|
||||||
|
|
||||||
# Update each of the families child lists to reflect any
|
# Update each of the families child lists to reflect any
|
||||||
# change in ordering due to the new birth date
|
# change in ordering due to the new birth date
|
||||||
family = self.person.get_main_parents_family_id()
|
family = self.person.get_main_parents_family_id()
|
||||||
if (family):
|
if (family):
|
||||||
f = self.db.find_family_no_map(family)
|
f = self.db.find_family_no_map(family,trans)
|
||||||
new_order = self.reorder_child_list(self.person,f.get_child_id_list())
|
new_order = self.reorder_child_list(self.person,f.get_child_id_list())
|
||||||
f.set_child_id_list(new_order)
|
f.set_child_id_list(new_order)
|
||||||
for (family, rel1, rel2) in self.person.get_parent_family_id_list():
|
for (family, rel1, rel2) in self.person.get_parent_family_id_list():
|
||||||
f = self.db.find_family_no_map(family)
|
f = self.db.find_family_no_map(family,trans)
|
||||||
new_order = self.reorder_child_list(self.person,f.get_child_id_list())
|
new_order = self.reorder_child_list(self.person,f.get_child_id_list())
|
||||||
f.set_child_id_list(new_order)
|
f.set_child_id_list(new_order)
|
||||||
|
|
||||||
@ -1497,10 +1500,10 @@ class EditPerson:
|
|||||||
self.death.set_place_id(self.get_place(self.dplace,1))
|
self.death.set_place_id(self.get_place(self.dplace,1))
|
||||||
|
|
||||||
if self.orig_death == None:
|
if self.orig_death == None:
|
||||||
self.db.add_event(self.death)
|
self.db.add_event(self.death,trans)
|
||||||
self.person.set_death_id(self.death.get_id())
|
self.person.set_death_id(self.death.get_id())
|
||||||
elif not self.orig_death.are_equal(self.death):
|
elif not self.orig_death.are_equal(self.death):
|
||||||
self.db.commit_event(self.death)
|
self.db.commit_event(self.death,trans)
|
||||||
|
|
||||||
male = self.is_male.get_active()
|
male = self.is_male.get_active()
|
||||||
female = self.is_female.get_active()
|
female = self.is_female.get_active()
|
||||||
@ -1580,10 +1583,10 @@ class EditPerson:
|
|||||||
self.update_lists()
|
self.update_lists()
|
||||||
if self.callback:
|
if self.callback:
|
||||||
change = (self.orig_surname != surname) or (self.orig_id != idval)
|
change = (self.orig_surname != surname) or (self.orig_id != idval)
|
||||||
self.callback(self,change)
|
self.callback(self,trans)
|
||||||
|
|
||||||
self.db.commit_person(self.person)
|
|
||||||
|
|
||||||
|
self.db.commit_person(self.person, trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
self.close(1)
|
self.close(1)
|
||||||
|
|
||||||
def get_place(self,field,makenew=0):
|
def get_place(self,field,makenew=0):
|
||||||
|
@ -369,7 +369,10 @@ class EditPlace:
|
|||||||
self.gallery_ok = 1
|
self.gallery_ok = 1
|
||||||
self.update_lists()
|
self.update_lists()
|
||||||
|
|
||||||
self.db.commit_place(self.place)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_place(self.place,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
if self.callback:
|
if self.callback:
|
||||||
self.callback(self.place)
|
self.callback(self.place)
|
||||||
|
|
||||||
@ -553,16 +556,25 @@ class DeletePlaceQuery:
|
|||||||
self.update = update
|
self.update = update
|
||||||
|
|
||||||
def query_response(self):
|
def query_response(self):
|
||||||
self.db.remove_place(self.place.get_id())
|
trans = self.db.start_transaction()
|
||||||
|
|
||||||
|
self.db.remove_place(self.place.get_id(),trans)
|
||||||
|
|
||||||
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)
|
||||||
for event in [p.get_birth(), p.get_death()] + p.get_event_list():
|
for event_id in [p.get_birth_id(), p.get_death_id()] + p.get_event_list():
|
||||||
if event.get_place_id() == self.place:
|
event = self.db.find_event_from_id(event_id)
|
||||||
event.set_place_id(None)
|
if event and event.get_place_id() == self.place.get_id():
|
||||||
for f in self.db.get_family_id_map().values():
|
|
||||||
for event in f.get_event_list():
|
|
||||||
if event.get_place_id() == self.place:
|
|
||||||
event.set_place_id(None)
|
event.set_place_id(None)
|
||||||
|
self.db.commit_event(event,trans)
|
||||||
|
|
||||||
|
for fid in self.db.get_family_keys():
|
||||||
|
f = self.db.find_family_from_id(fid)
|
||||||
|
for event_id in f.get_event_list():
|
||||||
|
event = self.db.find_event_from_id(event_id)
|
||||||
|
if event and event.get_place_id() == self.place.get_id():
|
||||||
|
event.set_place_id(None)
|
||||||
|
self.db.commit_event(event,trans)
|
||||||
|
|
||||||
|
self.db.add_transaction(trans)
|
||||||
self.update(None)
|
self.update(None)
|
||||||
|
@ -326,7 +326,10 @@ class EditSource:
|
|||||||
|
|
||||||
self.gallery_ok = 1
|
self.gallery_ok = 1
|
||||||
|
|
||||||
self.db.commit_source(self.source)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_source(self.source,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
if self.callback:
|
if self.callback:
|
||||||
self.callback(self.source)
|
self.callback(self.source)
|
||||||
self.close(obj)
|
self.close(obj)
|
||||||
@ -362,42 +365,53 @@ class DelSrcQuery:
|
|||||||
m = 1
|
m = 1
|
||||||
if m:
|
if m:
|
||||||
object.set_source_reference_list(l)
|
object.set_source_reference_list(l)
|
||||||
|
return m
|
||||||
|
|
||||||
def query_response(self):
|
def query_response(self):
|
||||||
self.db.remove_source_id(self.source.get_id())
|
trans = self.db.start_transaction()
|
||||||
|
|
||||||
for key in self.db.get_person_keys():
|
for key in self.db.get_person_keys():
|
||||||
|
commit = 0
|
||||||
p = self.db.get_person(key)
|
p = self.db.get_person(key)
|
||||||
for v_id in p.get_event_list() + [p.get_birth_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)
|
v = self.db.find_event_from_id(v_id)
|
||||||
if v:
|
if v:
|
||||||
self.delete_source(v)
|
commit += self.delete_source(v)
|
||||||
|
|
||||||
for v in p.get_attribute_list():
|
for v in p.get_attribute_list():
|
||||||
self.delete_source(v)
|
commit += self.delete_source(v)
|
||||||
|
|
||||||
for v in p.get_alternate_names() + [p.get_primary_name()]:
|
for v in p.get_alternate_names() + [p.get_primary_name()]:
|
||||||
self.delete_source(v)
|
commit += self.delete_source(v)
|
||||||
|
|
||||||
for v in p.get_address_list():
|
for v in p.get_address_list():
|
||||||
self.delete_source(v)
|
commit += self.delete_source(v)
|
||||||
|
if commit > 0:
|
||||||
|
self.db.commit_person(p,trans)
|
||||||
|
|
||||||
for p_id in self.db.get_family_keys():
|
for p_id in self.db.get_family_keys():
|
||||||
|
commit = 0
|
||||||
p = self.db.find_family_from_id(p_id)
|
p = self.db.find_family_from_id(p_id)
|
||||||
for v_id in p.get_event_list():
|
for v_id in p.get_event_list():
|
||||||
v = self.db.find_event_from_id(v_id)
|
v = self.db.find_event_from_id(v_id)
|
||||||
if v:
|
if v:
|
||||||
self.delete_source(v)
|
commit += self.delete_source(v)
|
||||||
|
|
||||||
for v in p.get_attribute_list():
|
for v in p.get_attribute_list():
|
||||||
self.delete_source(v)
|
commit += self.delete_source(v)
|
||||||
|
if commit > 0:
|
||||||
|
self.db.commit_family(p,trans)
|
||||||
|
|
||||||
for p_id in self.db.get_object_keys():
|
for p_id in self.db.get_object_keys():
|
||||||
p = self.db.find_object_from_id(p_id)
|
p = self.db.find_object_from_id(p_id)
|
||||||
self.delete_source(p)
|
if self.delete_source(p):
|
||||||
|
self.db.commit_media_object(p,trans)
|
||||||
|
|
||||||
for key in self.db.get_place_id_keys():
|
for key in self.db.get_place_id_keys():
|
||||||
p = self.db.find_place_from_id(key)
|
p = self.db.find_place_from_id(key)
|
||||||
self.delete_source(self.db.find_place_from_id(key))
|
if self.delete_source(self.db.find_place_from_id(key)):
|
||||||
|
self.db.commit_place(p,trans)
|
||||||
|
|
||||||
self.update(0)
|
self.db.remove_source_id(self.source.get_id(),trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
self.update()
|
||||||
|
@ -356,7 +356,9 @@ class EventEditor:
|
|||||||
if self.event.get_privacy() != priv:
|
if self.event.get_privacy() != priv:
|
||||||
self.event.set_privacy(priv)
|
self.event.set_privacy(priv)
|
||||||
self.parent.lists_changed = 1
|
self.parent.lists_changed = 1
|
||||||
self.db.commit_event(self.event)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_event(self.event,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
def on_switch_page(self,obj,a,page):
|
def on_switch_page(self,obj,a,page):
|
||||||
buf = self.note_field.get_buffer()
|
buf = self.note_field.get_buffer()
|
||||||
|
@ -87,16 +87,26 @@ class FamilyView:
|
|||||||
self.sp_par_arrow = "Down"
|
self.sp_par_arrow = "Down"
|
||||||
self.child_arrow = "Up"
|
self.child_arrow = "Up"
|
||||||
if not already_init:
|
if not already_init:
|
||||||
self.top.get_widget('add_parents2').connect('clicked',self.add_parents_clicked)
|
self.top.get_widget('add_parents2').connect('clicked',
|
||||||
self.top.get_widget('del_parents2').connect('clicked',self.del_parents_clicked)
|
self.add_parents_clicked)
|
||||||
self.top.get_widget('add_spparents2').connect('clicked',self.add_sp_parents)
|
self.top.get_widget('del_parents2').connect('clicked',
|
||||||
self.top.get_widget('del_spparents2').connect('clicked',self.del_sp_parents)
|
self.del_parents_clicked)
|
||||||
self.top.get_widget('fam_back2').connect('clicked',self.child_back)
|
self.top.get_widget('add_spparents2').connect('clicked',
|
||||||
self.top.get_widget('del_child_btn2').connect('clicked',self.remove_child_clicked)
|
self.add_sp_parents)
|
||||||
self.top.get_widget('add_child_btn2').connect('clicked',self.add_child_clicked)
|
self.top.get_widget('del_spparents2').connect('clicked',
|
||||||
self.top.get_widget('select_child2').connect('clicked',self.select_child_clicked)
|
self.del_sp_parents)
|
||||||
self.top.get_widget('ap_parents_btn2').connect('clicked',self.ap_parents_clicked)
|
self.top.get_widget('fam_back2').connect('clicked',
|
||||||
self.top.get_widget('sp_parents_btn2').connect('clicked',self.sp_parents_clicked)
|
self.child_back)
|
||||||
|
self.top.get_widget('del_child_btn2').connect('clicked',
|
||||||
|
self.remove_child_clicked)
|
||||||
|
self.top.get_widget('add_child_btn2').connect('clicked',
|
||||||
|
self.add_child_clicked)
|
||||||
|
self.top.get_widget('select_child2').connect('clicked',
|
||||||
|
self.select_child_clicked)
|
||||||
|
self.top.get_widget('ap_parents_btn2').connect('clicked',
|
||||||
|
self.ap_parents_clicked)
|
||||||
|
self.top.get_widget('sp_parents_btn2').connect('clicked',
|
||||||
|
self.sp_parents_clicked)
|
||||||
self.parent.views.get_nth_page(2).show_all()
|
self.parent.views.get_nth_page(2).show_all()
|
||||||
if self.parent.views.get_current_page() == 1:
|
if self.parent.views.get_current_page() == 1:
|
||||||
self.parent.views.set_current_page(2)
|
self.parent.views.set_current_page(2)
|
||||||
@ -117,16 +127,26 @@ class FamilyView:
|
|||||||
self.sp_par_arrow = "Right"
|
self.sp_par_arrow = "Right"
|
||||||
self.child_arrow = "Left"
|
self.child_arrow = "Left"
|
||||||
if not already_init:
|
if not already_init:
|
||||||
self.top.get_widget('add_parents').connect('clicked',self.add_parents_clicked)
|
self.top.get_widget('add_parents').connect('clicked',
|
||||||
self.top.get_widget('del_parents').connect('clicked',self.del_parents_clicked)
|
self.add_parents_clicked)
|
||||||
self.top.get_widget('add_spparents').connect('clicked',self.add_sp_parents)
|
self.top.get_widget('del_parents').connect('clicked',
|
||||||
self.top.get_widget('del_spparents').connect('clicked',self.del_sp_parents)
|
self.del_parents_clicked)
|
||||||
self.top.get_widget('fam_back').connect('clicked',self.child_back)
|
self.top.get_widget('add_spparents').connect('clicked',
|
||||||
self.top.get_widget('del_child_btn').connect('clicked',self.remove_child_clicked)
|
self.add_sp_parents)
|
||||||
self.top.get_widget('add_child_btn').connect('clicked',self.add_child_clicked)
|
self.top.get_widget('del_spparents').connect('clicked',
|
||||||
self.top.get_widget('select_child').connect('clicked',self.select_child_clicked)
|
self.del_sp_parents)
|
||||||
self.top.get_widget('ap_parents_btn').connect('clicked',self.ap_parents_clicked)
|
self.top.get_widget('fam_back').connect('clicked',
|
||||||
self.top.get_widget('sp_parents_btn').connect('clicked',self.sp_parents_clicked)
|
self.child_back)
|
||||||
|
self.top.get_widget('del_child_btn').connect('clicked',
|
||||||
|
self.remove_child_clicked)
|
||||||
|
self.top.get_widget('add_child_btn').connect('clicked',
|
||||||
|
self.add_child_clicked)
|
||||||
|
self.top.get_widget('select_child').connect('clicked',
|
||||||
|
self.select_child_clicked)
|
||||||
|
self.top.get_widget('ap_parents_btn').connect('clicked',
|
||||||
|
self.ap_parents_clicked)
|
||||||
|
self.top.get_widget('sp_parents_btn').connect('clicked',
|
||||||
|
self.sp_parents_clicked)
|
||||||
self.parent.views.get_nth_page(1).show_all()
|
self.parent.views.get_nth_page(1).show_all()
|
||||||
if self.parent.views.get_current_page() == 2:
|
if self.parent.views.get_current_page() == 2:
|
||||||
self.parent.views.set_current_page(1)
|
self.parent.views.set_current_page(1)
|
||||||
@ -234,7 +254,7 @@ class FamilyView:
|
|||||||
and event.state == gtk.gdk.CONTROL_MASK:
|
and event.state == gtk.gdk.CONTROL_MASK:
|
||||||
self.spouse_swap(obj)
|
self.spouse_swap(obj)
|
||||||
elif event.keyval == gtk.gdk.keyval_from_name("Delete") and not event.state:
|
elif event.keyval == gtk.gdk.keyval_from_name("Delete") and not event.state:
|
||||||
self.remove_spouse(obj)
|
self.remove_spouse(obj,trans)
|
||||||
elif event.keyval == gtk.gdk.keyval_from_name("Insert") and not event.state:
|
elif event.keyval == gtk.gdk.keyval_from_name("Insert") and not event.state:
|
||||||
self.select_spouse(obj)
|
self.select_spouse(obj)
|
||||||
elif event.keyval == gtk.gdk.keyval_from_name("Insert") \
|
elif event.keyval == gtk.gdk.keyval_from_name("Insert") \
|
||||||
@ -530,7 +550,9 @@ class FamilyView:
|
|||||||
def set_preferred_spouse(self,obj):
|
def set_preferred_spouse(self,obj):
|
||||||
if self.selected_spouse:
|
if self.selected_spouse:
|
||||||
self.person.set_preferred_family_id(self.family)
|
self.person.set_preferred_family_id(self.family)
|
||||||
self.parent.db.commit_person(self.person)
|
trans = self.parent.db.start_transaction()
|
||||||
|
self.parent.db.commit_person(self.person,trans)
|
||||||
|
self.parent.db.add_transaction(trans)
|
||||||
self.load_family()
|
self.load_family()
|
||||||
|
|
||||||
def edit_spouse_callback(self,obj):
|
def edit_spouse_callback(self,obj):
|
||||||
@ -597,28 +619,30 @@ class FamilyView:
|
|||||||
def spouse_after_edit(self,epo):
|
def spouse_after_edit(self,epo):
|
||||||
ap = self.parent.active_person
|
ap = self.parent.active_person
|
||||||
if epo:
|
if epo:
|
||||||
self.parent.db.build_person_display(epo.person.get_id(),epo.original_id)
|
trans = self.parent.db.start_transaction()
|
||||||
self.parent.db.commit_person(epo.person)
|
self.parent.db.commit_person(epo.person,trans)
|
||||||
|
self.parent.db.add_transaction(trans)
|
||||||
self.parent.people_view.remove_from_person_list(epo.person,epo.original_id)
|
self.parent.people_view.remove_from_person_list(epo.person,epo.original_id)
|
||||||
self.parent.people_view.redisplay_person_list(epo.person)
|
self.parent.people_view.redisplay_person_list(epo.person)
|
||||||
|
|
||||||
self.parent.active_person = ap
|
self.parent.active_person = ap
|
||||||
self.load_family(self.family)
|
self.load_family(self.family)
|
||||||
|
|
||||||
def new_spouse_after_edit(self,epo,change):
|
def new_spouse_after_edit(self,epo,trans):
|
||||||
|
|
||||||
if epo.person.get_id() == "":
|
if epo.person.get_id() == "":
|
||||||
self.parent.db.add_person(epo.person)
|
self.parent.db.add_person(epo.person,trans)
|
||||||
else:
|
else:
|
||||||
self.parent.db.add_person_no_map(epo.person,epo.person.get_id())
|
self.parent.db.add_person_no_map(epo.person,epo.person.get_id(),trans)
|
||||||
|
|
||||||
|
self.family = self.parent.db.new_family(trans)
|
||||||
|
|
||||||
self.parent.people_view.add_to_person_list(epo.person,0)
|
self.parent.people_view.add_to_person_list(epo.person,0)
|
||||||
self.family = self.parent.db.new_family()
|
|
||||||
self.person.add_family_id(self.family.get_id())
|
self.person.add_family_id(self.family.get_id())
|
||||||
epo.person.add_family_id(self.family.get_id())
|
epo.person.add_family_id(self.family.get_id())
|
||||||
|
|
||||||
self.parent.db.commit_person(epo.person)
|
self.parent.db.commit_person(epo.person,trans)
|
||||||
self.parent.db.commit_person(self.person)
|
self.parent.db.commit_person(self.person,trans)
|
||||||
|
|
||||||
if self.person.get_gender() == RelLib.Person.male:
|
if self.person.get_gender() == RelLib.Person.male:
|
||||||
self.family.set_mother_id(epo.person.get_id())
|
self.family.set_mother_id(epo.person.get_id())
|
||||||
@ -627,7 +651,7 @@ class FamilyView:
|
|||||||
self.family.set_father_id(epo.person.get_id())
|
self.family.set_father_id(epo.person.get_id())
|
||||||
self.family.set_mother_id(self.person.get_id())
|
self.family.set_mother_id(self.person.get_id())
|
||||||
|
|
||||||
self.parent.db.commit_family(self.family)
|
self.parent.db.commit_family(self.family,trans)
|
||||||
self.load_family(self.family)
|
self.load_family(self.family)
|
||||||
|
|
||||||
Marriage.Marriage(self.parent,self.family,self.parent.db,
|
Marriage.Marriage(self.parent,self.family,self.parent.db,
|
||||||
@ -671,14 +695,13 @@ class FamilyView:
|
|||||||
self.parent.update_person_list(person)
|
self.parent.update_person_list(person)
|
||||||
self.load_family(self.family)
|
self.load_family(self.family)
|
||||||
|
|
||||||
def new_child_after_edit(self,epo):
|
def new_child_after_edit(self,epo,trans):
|
||||||
|
|
||||||
if epo.person.get_id() == "":
|
if epo.person.get_id() == "":
|
||||||
self.parent.db.add_person(epo.person)
|
self.parent.db.add_person(epo.person,trans)
|
||||||
else:
|
else:
|
||||||
self.parent.db.add_person_no_map(epo.person,epo.person.get_id())
|
self.parent.db.add_person_no_map(epo.person,epo.person.get_id(),trans)
|
||||||
|
|
||||||
self.parent.db.build_person_display(epo.person.get_id())
|
|
||||||
self.parent.people_view.add_to_person_list(epo.person,0)
|
self.parent.people_view.add_to_person_list(epo.person,0)
|
||||||
|
|
||||||
if not self.family:
|
if not self.family:
|
||||||
@ -691,8 +714,8 @@ class FamilyView:
|
|||||||
|
|
||||||
self.family.add_child_id(epo.person.get_id())
|
self.family.add_child_id(epo.person.get_id())
|
||||||
epo.person.add_parent_family_id(self.family.get_id(),"Birth","Birth")
|
epo.person.add_parent_family_id(self.family.get_id(),"Birth","Birth")
|
||||||
self.parent.db.commit_person(epo.person)
|
self.parent.db.commit_person(epo.person,trans)
|
||||||
self.parent.db.commit_family(self.family)
|
self.parent.db.commit_family(self.family,trans)
|
||||||
self.display_marriage(self.family)
|
self.display_marriage(self.family)
|
||||||
|
|
||||||
def select_child_clicked(self,obj):
|
def select_child_clicked(self,obj):
|
||||||
@ -716,6 +739,8 @@ class FamilyView:
|
|||||||
id = self.child_model.get_value(iter,2)
|
id = self.child_model.get_value(iter,2)
|
||||||
child = self.parent.db.get_person(id)
|
child = self.parent.db.get_person(id)
|
||||||
|
|
||||||
|
trans = self.parent.db.start_transaction()
|
||||||
|
|
||||||
self.family.remove_child_id(child.get_id())
|
self.family.remove_child_id(child.get_id())
|
||||||
child.remove_parent_family_id(self.family.get_id())
|
child.remove_parent_family_id(self.family.get_id())
|
||||||
|
|
||||||
@ -725,8 +750,10 @@ class FamilyView:
|
|||||||
elif self.family.get_mother_id() == None:
|
elif self.family.get_mother_id() == None:
|
||||||
self.delete_family_from(self.family.get_father_id())
|
self.delete_family_from(self.family.get_father_id())
|
||||||
|
|
||||||
self.parent.db.commit_person(child)
|
self.parent.db.commit_person(child,trans)
|
||||||
self.parent.db.commit_family(self.family)
|
self.parent.db.commit_family(self.family,trans)
|
||||||
|
self.parent.db.add_transaction(trans)
|
||||||
|
|
||||||
self.load_family()
|
self.load_family()
|
||||||
|
|
||||||
def remove_spouse(self,obj):
|
def remove_spouse(self,obj):
|
||||||
@ -752,16 +779,18 @@ class FamilyView:
|
|||||||
else:
|
else:
|
||||||
self.family.set_mother_id(None)
|
self.family.set_mother_id(None)
|
||||||
|
|
||||||
|
trans = self.parent.db.start_transaction()
|
||||||
|
|
||||||
if self.selected_spouse:
|
if self.selected_spouse:
|
||||||
self.selected_spouse.remove_family_id(self.family.get_id())
|
self.selected_spouse.remove_family_id(self.family.get_id(),trans)
|
||||||
self.parent.db.commit_person(self.selected_spouse)
|
self.parent.db.commit_person(self.selected_spouse,trans)
|
||||||
|
|
||||||
self.parent.db.commit_family(self.family)
|
self.parent.db.commit_family(self.family,trans)
|
||||||
|
|
||||||
if len(self.family.get_child_id_list()) == 0:
|
if len(self.family.get_child_id_list()) == 0:
|
||||||
self.person.remove_family_id(self.family.get_id())
|
self.person.remove_family_id(self.family.get_id(),trans)
|
||||||
self.parent.db.commit_person(self.person)
|
self.parent.db.commit_person(self.person,trans)
|
||||||
self.parent.db.delete_family(self.family.get_id())
|
self.parent.db.delete_family(self.family.get_id(),trans)
|
||||||
if len(self.person.get_family_id_list()) > 0:
|
if len(self.person.get_family_id_list()) > 0:
|
||||||
family_id = self.person.get_family_id_list()[0]
|
family_id = self.person.get_family_id_list()[0]
|
||||||
self.load_family(self.parent.db.find_family_from_id(family_id))
|
self.load_family(self.parent.db.find_family_from_id(family_id))
|
||||||
@ -769,6 +798,7 @@ class FamilyView:
|
|||||||
self.load_family(self.family)
|
self.load_family(self.family)
|
||||||
else:
|
else:
|
||||||
self.load_family(self.family)
|
self.load_family(self.family)
|
||||||
|
self.parent.db.add_transaction(trans)
|
||||||
|
|
||||||
if len(self.person.get_family_id_list()) <= 1:
|
if len(self.person.get_family_id_list()) <= 1:
|
||||||
self.spouse_selection.set_mode(gtk.SELECTION_NONE)
|
self.spouse_selection.set_mode(gtk.SELECTION_NONE)
|
||||||
@ -806,7 +836,9 @@ class FamilyView:
|
|||||||
person = self.parent.db.find_person_from_id(person_id)
|
person = self.parent.db.find_person_from_id(person_id)
|
||||||
self.parent.change_active_person(person)
|
self.parent.change_active_person(person)
|
||||||
|
|
||||||
self.parent.db.commit_family(family)
|
trans = self.parent.db.start_transaction()
|
||||||
|
self.parent.db.commit_family(family,trans)
|
||||||
|
self.parent.db.add_transaction(trans)
|
||||||
self.load_family(family)
|
self.load_family(family)
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
@ -938,13 +970,15 @@ class FamilyView:
|
|||||||
return _("%s: unknown") % (l)
|
return _("%s: unknown") % (l)
|
||||||
|
|
||||||
def delete_family_from(self,person):
|
def delete_family_from(self,person):
|
||||||
person.remove_family_id(self.family.get_id())
|
trans = self.parent.db.start_transaction()
|
||||||
self.parent.db.delete_family(self.family.get_id())
|
person.remove_family_id(self.family.get_id(),trans)
|
||||||
|
self.parent.db.delete_family(self.family.get_id(),trans)
|
||||||
flist = self.person.get_family_id_list()
|
flist = self.person.get_family_id_list()
|
||||||
if len(flist) > 0:
|
if len(flist) > 0:
|
||||||
self.family = flist[0]
|
self.family = flist[0]
|
||||||
else:
|
else:
|
||||||
self.family = None
|
self.family = None
|
||||||
|
self.parent.db.add_transaction(trans)
|
||||||
|
|
||||||
def display_marriage(self,family):
|
def display_marriage(self,family):
|
||||||
self.child_model.clear()
|
self.child_model.clear()
|
||||||
@ -1228,7 +1262,10 @@ class FamilyView:
|
|||||||
fam = person.get_parent_family_id_list()[row[0]]
|
fam = person.get_parent_family_id_list()[row[0]]
|
||||||
person.remove_parent_family_id(fam[0])
|
person.remove_parent_family_id(fam[0])
|
||||||
|
|
||||||
self.parent.db.commit_person(person)
|
trans = self.parent.db.start_transaction()
|
||||||
|
self.parent.db.commit_person(person,trans)
|
||||||
|
self.parent.db.add_transaction(trans)
|
||||||
|
|
||||||
self.load_family()
|
self.load_family()
|
||||||
|
|
||||||
def drag_data_received(self,widget,context,x,y,sel_data,info,time):
|
def drag_data_received(self,widget,context,x,y,sel_data,info,time):
|
||||||
|
@ -235,7 +235,7 @@ def loadConfig(call):
|
|||||||
global familyview
|
global familyview
|
||||||
|
|
||||||
_callback = call
|
_callback = call
|
||||||
lastfile = get_string("/apps/gramps/last-file")
|
lastfile = get_string("/apps/gramps/recent-file")
|
||||||
uselds = get_bool("/apps/gramps/use-lds")
|
uselds = get_bool("/apps/gramps/use-lds")
|
||||||
ac = get_bool("/apps/gramps/disable-auto-complete",0)
|
ac = get_bool("/apps/gramps/disable-auto-complete",0)
|
||||||
mediaref = get_bool("/apps/gramps/make-reference",1)
|
mediaref = get_bool("/apps/gramps/make-reference",1)
|
||||||
@ -372,7 +372,7 @@ def sync():
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
def save_last_file(file):
|
def save_last_file(file):
|
||||||
set_string("/apps/gramps/last-file",file)
|
set_string("/apps/gramps/recent-file",file)
|
||||||
sync()
|
sync()
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
@ -705,7 +705,6 @@ class GrampsParser:
|
|||||||
self.family = None
|
self.family = None
|
||||||
|
|
||||||
def stop_person(self,tag):
|
def stop_person(self,tag):
|
||||||
self.db.build_person_display(self.person.get_id())
|
|
||||||
self.db.commit_person(self.person)
|
self.db.commit_person(self.person)
|
||||||
self.person = None
|
self.person = None
|
||||||
|
|
||||||
|
@ -525,7 +525,7 @@ class Gallery(ImageSelect):
|
|||||||
if GrampsCfg.globalprop:
|
if GrampsCfg.globalprop:
|
||||||
GlobalMediaProperties(self.db,photo,None)
|
GlobalMediaProperties(self.db,photo,None)
|
||||||
else:
|
else:
|
||||||
if self.db.get_object_map().has_key(data.data):
|
if self.db.has_object_id(data.data):
|
||||||
icon_index = self.get_index(w,x,y)
|
icon_index = self.get_index(w,x,y)
|
||||||
index = 0
|
index = 0
|
||||||
for p in self.dataobj.get_media_list():
|
for p in self.dataobj.get_media_list():
|
||||||
@ -822,7 +822,10 @@ class LocalMediaProperties:
|
|||||||
if self.lists_changed:
|
if self.lists_changed:
|
||||||
self.photo.set_attribute_list(self.alist)
|
self.photo.set_attribute_list(self.alist)
|
||||||
self.parent.lists_changed = 1
|
self.parent.lists_changed = 1
|
||||||
self.db.commit_media_object(self.object)
|
|
||||||
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_media_object(self.object,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
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"""
|
||||||
@ -1061,7 +1064,9 @@ class GlobalMediaProperties:
|
|||||||
self.object.set_attribute_list(self.alist)
|
self.object.set_attribute_list(self.alist)
|
||||||
if self.update != None:
|
if self.update != None:
|
||||||
self.update()
|
self.update()
|
||||||
self.db.commit_media_object(self.object)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_media_object(self.object,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
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"""
|
||||||
@ -1115,8 +1120,8 @@ class DeleteMediaQuery:
|
|||||||
self.update = update
|
self.update = update
|
||||||
|
|
||||||
def query_response(self):
|
def query_response(self):
|
||||||
del self.db.get_object_map()[self.media.get_id()]
|
trans = self.db.start_transaction()
|
||||||
|
|
||||||
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)
|
||||||
nl = []
|
nl = []
|
||||||
@ -1128,8 +1133,10 @@ class DeleteMediaQuery:
|
|||||||
change = 1
|
change = 1
|
||||||
if change:
|
if change:
|
||||||
p.set_media_list(nl)
|
p.set_media_list(nl)
|
||||||
|
self.db.commit_person(p,trans)
|
||||||
|
|
||||||
for p in self.db.get_family_id_map().values():
|
for fid in self.db.get_family_keys():
|
||||||
|
p = self.db.find_family_from_id(fid)
|
||||||
nl = []
|
nl = []
|
||||||
change = 0
|
change = 0
|
||||||
for photo in p.get_media_list():
|
for photo in p.get_media_list():
|
||||||
@ -1139,9 +1146,10 @@ class DeleteMediaQuery:
|
|||||||
change = 1
|
change = 1
|
||||||
if change:
|
if change:
|
||||||
p.set_media_list(nl)
|
p.set_media_list(nl)
|
||||||
|
self.db.commit_family(p,trans)
|
||||||
|
|
||||||
for key in self.db.get_source_keys():
|
for key in self.db.get_source_keys():
|
||||||
p = self.db.get_source(key)
|
sid = self.db.find_source_from_id(key,trans)
|
||||||
nl = []
|
nl = []
|
||||||
change = 0
|
change = 0
|
||||||
for photo in p.get_media_list():
|
for photo in p.get_media_list():
|
||||||
@ -1151,9 +1159,10 @@ class DeleteMediaQuery:
|
|||||||
change = 1
|
change = 1
|
||||||
if change:
|
if change:
|
||||||
p.set_media_list(nl)
|
p.set_media_list(nl)
|
||||||
|
self.db.commit_source(p,trans)
|
||||||
|
|
||||||
for key in self.db.get_place_id_keys():
|
for key in self.db.get_place_id_keys():
|
||||||
p = self.db.get_place_id(key)
|
p = self.db.find_place_from_id(key)
|
||||||
nl = []
|
nl = []
|
||||||
change = 0
|
change = 0
|
||||||
for photo in p.get_media_list():
|
for photo in p.get_media_list():
|
||||||
@ -1163,6 +1172,9 @@ class DeleteMediaQuery:
|
|||||||
change = 1
|
change = 1
|
||||||
if change:
|
if change:
|
||||||
p.set_media_list(nl)
|
p.set_media_list(nl)
|
||||||
|
self.db.commit_place(p,trans)
|
||||||
|
|
||||||
|
self.db.remove_object(self.media.get_id(),trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
if self.update:
|
if self.update:
|
||||||
self.update(0)
|
self.update()
|
||||||
|
@ -635,7 +635,9 @@ class Marriage:
|
|||||||
|
|
||||||
self.update_lists()
|
self.update_lists()
|
||||||
self.update_fv(self.family)
|
self.update_fv(self.family)
|
||||||
self.db.commit_family(self.family)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_family(self.family,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
self.close(1)
|
self.close(1)
|
||||||
|
|
||||||
|
@ -150,14 +150,6 @@ class MediaView:
|
|||||||
self.build_columns()
|
self.build_columns()
|
||||||
self.build_tree()
|
self.build_tree()
|
||||||
|
|
||||||
def goto(self,id):
|
|
||||||
self.selection.unselect_all()
|
|
||||||
iter = self.id2col[id]
|
|
||||||
self.selection.select_iter(iter)
|
|
||||||
itpath = self.model.get_path (iter)
|
|
||||||
col = self.list.get_column (0)
|
|
||||||
self.list.scroll_to_cell (itpath, col, gtk.TRUE, 0.5, 0)
|
|
||||||
|
|
||||||
def build_tree(self):
|
def build_tree(self):
|
||||||
self.list.set_model(None)
|
self.list.set_model(None)
|
||||||
self.model = gtk.TreeModelSort(DisplayModels.MediaModel(self.parent.db))
|
self.model = gtk.TreeModelSort(DisplayModels.MediaModel(self.parent.db))
|
||||||
@ -295,7 +287,7 @@ class MediaView:
|
|||||||
id = store.get_value(iter,1)
|
id = store.get_value(iter,1)
|
||||||
mobj = self.db.find_object_from_id(id)
|
mobj = self.db.find_object_from_id(id)
|
||||||
if self.is_object_used(mobj):
|
if self.is_object_used(mobj):
|
||||||
ans = ImageSelect.DeleteMediaQuery(mobj,self.db,self.update)
|
ans = ImageSelect.DeleteMediaQuery(mobj,self.db,self.build_tree)
|
||||||
QuestionDialog(_('Delete Media Object?'),
|
QuestionDialog(_('Delete Media Object?'),
|
||||||
_('This media object is currently being used. '
|
_('This media object is currently being used. '
|
||||||
'If you delete this object, it will be removed '
|
'If you delete this object, it will be removed '
|
||||||
@ -304,8 +296,10 @@ class MediaView:
|
|||||||
_('_Delete Media Object'),
|
_('_Delete Media Object'),
|
||||||
ans.query_response)
|
ans.query_response)
|
||||||
else:
|
else:
|
||||||
self.db.remove_object(mobj.get_id())
|
trans = self.db.start_transaction()
|
||||||
self.update(0)
|
self.db.remove_object(mobj.get_id(),trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
self.build_tree()
|
||||||
|
|
||||||
def is_object_used(self,mobj):
|
def is_object_used(self,mobj):
|
||||||
for family_id in self.db.get_family_keys():
|
for family_id in self.db.get_family_keys():
|
||||||
@ -366,7 +360,8 @@ class MediaView:
|
|||||||
photo.set_thumbnail(RelImage.build_thumbnail(name))
|
photo.set_thumbnail(RelImage.build_thumbnail(name))
|
||||||
description = os.path.basename(name)
|
description = os.path.basename(name)
|
||||||
photo.set_description(description)
|
photo.set_description(description)
|
||||||
self.db.add_object(photo)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.add_object(photo,trans)
|
||||||
self.load_media()
|
self.load_media()
|
||||||
if GrampsCfg.mediaref == 0:
|
if GrampsCfg.mediaref == 0:
|
||||||
name = RelImage.import_media_object(name,
|
name = RelImage.import_media_object(name,
|
||||||
@ -375,7 +370,10 @@ class MediaView:
|
|||||||
if name:
|
if name:
|
||||||
photo.set_path(name)
|
photo.set_path(name)
|
||||||
photo.setLocal(1)
|
photo.setLocal(1)
|
||||||
self.db.commit_media_object(photo)
|
|
||||||
|
self.db.commit_media_object(photo,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
if GrampsCfg.globalprop:
|
if GrampsCfg.globalprop:
|
||||||
ImageSelect.GlobalMediaProperties(self.db,photo,self.load_media)
|
ImageSelect.GlobalMediaProperties(self.db,photo,self.load_media)
|
||||||
elif protocol != "":
|
elif protocol != "":
|
||||||
@ -394,7 +392,8 @@ class MediaView:
|
|||||||
photo.set_description(d)
|
photo.set_description(d)
|
||||||
photo.setLocal(1)
|
photo.setLocal(1)
|
||||||
photo.set_path(tfile)
|
photo.set_path(tfile)
|
||||||
self.db.add_object(photo)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.add_object(photo,trans)
|
||||||
oref = RelLib.MediaRef()
|
oref = RelLib.MediaRef()
|
||||||
oref.set_reference(photo)
|
oref.set_reference(photo)
|
||||||
try:
|
try:
|
||||||
@ -407,7 +406,10 @@ class MediaView:
|
|||||||
except:
|
except:
|
||||||
photo.set_path(tfile)
|
photo.set_path(tfile)
|
||||||
return
|
return
|
||||||
self.db.commit_media_object(photo)
|
|
||||||
|
self.db.commit_media_object(photo,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
if GrampsCfg.globalprop:
|
if GrampsCfg.globalprop:
|
||||||
ImageSelect.GlobalMediaProperties(self.db,photo,None)
|
ImageSelect.GlobalMediaProperties(self.db,photo,None)
|
||||||
|
|
||||||
|
@ -307,7 +307,7 @@ class MergePeople:
|
|||||||
event = self.p2.get_death()
|
event = self.p2.get_death()
|
||||||
event.set_name("Alternate Death")
|
event.set_name("Alternate Death")
|
||||||
self.p1.add_event(event)
|
self.p1.add_event(event)
|
||||||
|
|
||||||
if self.glade.get_widget("bfather2").get_active():
|
if self.glade.get_widget("bfather2").get_active():
|
||||||
orig_family = self.p1.get_main_parents_family_id()
|
orig_family = self.p1.get_main_parents_family_id()
|
||||||
if orig_family:
|
if orig_family:
|
||||||
@ -347,7 +347,6 @@ class MergePeople:
|
|||||||
try:
|
try:
|
||||||
self.db.remove_person_id(self.p2.get_id())
|
self.db.remove_person_id(self.p2.get_id())
|
||||||
self.db.personMap[self.p1.get_id()] = self.p1
|
self.db.personMap[self.p1.get_id()] = self.p1
|
||||||
self.db.build_person_display(self.p1.get_id(),old_id)
|
|
||||||
except:
|
except:
|
||||||
print "%s is not in the person map!" % (GrampsCfg.nameof(self.p2))
|
print "%s is not in the person map!" % (GrampsCfg.nameof(self.p2))
|
||||||
self.update(self.p1,self.p2,old_id)
|
self.update(self.p1,self.p2,old_id)
|
||||||
|
@ -62,7 +62,7 @@ class PeopleModel(gtk.GenericTreeModel):
|
|||||||
|
|
||||||
if not self.db.is_open():
|
if not self.db.is_open():
|
||||||
return
|
return
|
||||||
|
|
||||||
for person_id in self.db.get_person_keys():
|
for person_id in self.db.get_person_keys():
|
||||||
|
|
||||||
person = self.db.find_person_from_id(person_id)
|
person = self.db.find_person_from_id(person_id)
|
||||||
@ -141,7 +141,8 @@ class PeopleModel(gtk.GenericTreeModel):
|
|||||||
else:
|
else:
|
||||||
return u''
|
return u''
|
||||||
else:
|
else:
|
||||||
return self.fmap[col](self.db.person_map[str(iter)])
|
val = self.fmap[col](self.db.person_map[str(iter)])
|
||||||
|
return val
|
||||||
|
|
||||||
def on_iter_next(self, node):
|
def on_iter_next(self, node):
|
||||||
'''returns the next node at this level of the tree'''
|
'''returns the next node at this level of the tree'''
|
||||||
|
@ -1,325 +0,0 @@
|
|||||||
#
|
|
||||||
# Gramps - a GTK+/GNOME based genealogy program
|
|
||||||
#
|
|
||||||
# Copyright (C) 2000 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
|
|
||||||
# the Free Software Foundation; either version 2 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# This program is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
#
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# GNOME
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
from gobject import TYPE_STRING, TYPE_INT
|
|
||||||
import gtk
|
|
||||||
import pango
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# internationalization
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
from gettext import gettext as _
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# constants
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
_BCOL = 8
|
|
||||||
_IDCOL = 1
|
|
||||||
|
|
||||||
_TOP_FONT=pango.WEIGHT_ULTRABOLD
|
|
||||||
_TEXT_FONT=pango.WEIGHT_NORMAL
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
#
|
|
||||||
# PeopleStore
|
|
||||||
#
|
|
||||||
#-------------------------------------------------------------------------
|
|
||||||
class PeopleStore:
|
|
||||||
def __init__(self,tree,parent,select_func=None,event_func=None,
|
|
||||||
mode=gtk.SELECTION_SINGLE):
|
|
||||||
|
|
||||||
self.titles = [
|
|
||||||
(_('Name'),5,250), (_('ID'),1,50),(_('Gender'),2,70),
|
|
||||||
(_('Birth date'),6,150),(_('Death date'),7,150)
|
|
||||||
]
|
|
||||||
|
|
||||||
ncols = len(self.titles) + 3
|
|
||||||
self.tree = tree
|
|
||||||
self.parent = parent
|
|
||||||
self.tree.connect('row-expanded',self.on_row_expanded)
|
|
||||||
self.mylist = [TYPE_STRING]*ncols + [TYPE_INT]
|
|
||||||
|
|
||||||
self.tree.set_rules_hint(gtk.TRUE)
|
|
||||||
self.model = None
|
|
||||||
self.tree_roots = {}
|
|
||||||
self.tree_open = {}
|
|
||||||
self.tree_list = {}
|
|
||||||
self.selection = None
|
|
||||||
self.mode = mode
|
|
||||||
self.new_model()
|
|
||||||
self.count = 0
|
|
||||||
self.cid = None
|
|
||||||
self.cids = []
|
|
||||||
|
|
||||||
cnum = 0
|
|
||||||
for name in self.titles:
|
|
||||||
renderer = gtk.CellRendererText()
|
|
||||||
renderer.set_fixed_height_from_font(1)
|
|
||||||
if name[0] != '':
|
|
||||||
column = gtk.TreeViewColumn(name[0],renderer,text=cnum)
|
|
||||||
column.set_min_width(name[2])
|
|
||||||
column.set_resizable(gtk.TRUE)
|
|
||||||
column.set_clickable(gtk.TRUE)
|
|
||||||
column.set_sort_column_id(name[1])
|
|
||||||
|
|
||||||
cnum += 1
|
|
||||||
self.cids.append(name[1])
|
|
||||||
self.tree.append_column(column)
|
|
||||||
|
|
||||||
self.connect_model()
|
|
||||||
|
|
||||||
if select_func:
|
|
||||||
self.selection.connect('changed',select_func)
|
|
||||||
if event_func:
|
|
||||||
self.double_click = event_func
|
|
||||||
self.tree.connect('row_activated', self.row_activated)
|
|
||||||
|
|
||||||
def row_activated (self, treeview, path, column):
|
|
||||||
self.double_click (treeview)
|
|
||||||
|
|
||||||
def enable_sort(self):
|
|
||||||
if self.cids[0] != -1:
|
|
||||||
self.model.set_sort_column_id(self.cids[0],gtk.SORT_ASCENDING)
|
|
||||||
|
|
||||||
def unselect(self):
|
|
||||||
self.selection.unselect_all()
|
|
||||||
|
|
||||||
def set_reorderable(self,order):
|
|
||||||
self.tree.set_reorderable(order)
|
|
||||||
|
|
||||||
def new_model(self):
|
|
||||||
if self.model:
|
|
||||||
self.cid = self.model.get_sort_column_id()
|
|
||||||
del self.model
|
|
||||||
del self.selection
|
|
||||||
self.count = 0
|
|
||||||
|
|
||||||
self.model = gtk.TreeStore(*self.mylist)
|
|
||||||
self.selection = self.tree.get_selection()
|
|
||||||
self.selection.set_mode(self.mode)
|
|
||||||
self.sel_iter = None
|
|
||||||
|
|
||||||
def connect_model(self):
|
|
||||||
self.tree.set_model(self.model)
|
|
||||||
if self.sel_iter:
|
|
||||||
self.selection.select_iter(self.sel_iter)
|
|
||||||
if self.cid:
|
|
||||||
self.model.set_sort_column_id(self.cid[0],self.cid[1])
|
|
||||||
self.sort()
|
|
||||||
|
|
||||||
def sort(self):
|
|
||||||
val = self.model.get_sort_column_id()
|
|
||||||
col = val[0]
|
|
||||||
if col < 0:
|
|
||||||
return
|
|
||||||
if col > 0:
|
|
||||||
self.model.set_sort_column_id(col,val[1])
|
|
||||||
else:
|
|
||||||
self.model.set_sort_column_id(self.cids[0],val[1])
|
|
||||||
self.model.sort_column_changed()
|
|
||||||
|
|
||||||
def get_selected(self):
|
|
||||||
return self.selection.get_selected()
|
|
||||||
|
|
||||||
def get_row_at(self,x,y):
|
|
||||||
path = self.tree.get_path_at_pos(x,y)
|
|
||||||
if path == None:
|
|
||||||
return self.count -1
|
|
||||||
else:
|
|
||||||
return path[0][0]-1
|
|
||||||
|
|
||||||
def get_selected_row(self):
|
|
||||||
store, iter = self.selection.get_selected()
|
|
||||||
if iter:
|
|
||||||
rows = store.get_path(iter)
|
|
||||||
return rows[0]
|
|
||||||
else:
|
|
||||||
return -1
|
|
||||||
|
|
||||||
def get_selected_objects(self):
|
|
||||||
if self.count == 0:
|
|
||||||
return []
|
|
||||||
elif self.mode == gtk.SELECTION_SINGLE:
|
|
||||||
store,iter = self.selection.get_selected()
|
|
||||||
if iter:
|
|
||||||
return [self.model.get_value(iter,_IDCOL)]
|
|
||||||
else:
|
|
||||||
return []
|
|
||||||
else:
|
|
||||||
mlist = []
|
|
||||||
self.selection.selected_foreach(self.blist,mlist)
|
|
||||||
return mlist
|
|
||||||
|
|
||||||
def get_icon(self):
|
|
||||||
if self.mode == gtk.SELECTION_SINGLE:
|
|
||||||
store,iter = self.selection.get_selected()
|
|
||||||
path = self.model.get_path(iter)
|
|
||||||
else:
|
|
||||||
mlist = []
|
|
||||||
self.selection.selected_foreach(self.blist,mlist)
|
|
||||||
path = self.model.get_path(mlist[0])
|
|
||||||
return self.tree.create_row_drag_icon(path)
|
|
||||||
|
|
||||||
def blist(self,store,path,iter,id_list):
|
|
||||||
id_list.append(self.model.get_value(iter,_IDCOL))
|
|
||||||
|
|
||||||
def clear(self):
|
|
||||||
self.count = 0
|
|
||||||
self.tree_roots = {}
|
|
||||||
self.tree_open = {}
|
|
||||||
self.model.clear()
|
|
||||||
|
|
||||||
def remove(self,iter):
|
|
||||||
try:
|
|
||||||
iter_parent = self.model.iter_parent (iter)
|
|
||||||
self.model.remove(iter)
|
|
||||||
if iter_parent and not self.model.iter_has_child (iter_parent):
|
|
||||||
name = unicode(self.model.get_value(iter_parent,0))
|
|
||||||
self.model.remove (iter_parent)
|
|
||||||
if self.tree_roots.has_key(name):
|
|
||||||
del self.tree_roots[name]
|
|
||||||
if self.tree_open.has_key(name):
|
|
||||||
del self.tree_open[name]
|
|
||||||
if self.tree_list.has_key(name):
|
|
||||||
del self.tree_list[name]
|
|
||||||
self.count = self.count - 1
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
def get_row(self,iter):
|
|
||||||
row = self.model.get_path(iter)
|
|
||||||
return row[0]
|
|
||||||
|
|
||||||
def select_row(self,row):
|
|
||||||
self.selection.select_path((row))
|
|
||||||
|
|
||||||
def select_iter(self,iter):
|
|
||||||
self.selection.select_iter(iter)
|
|
||||||
|
|
||||||
def get_object(self,iter):
|
|
||||||
return self.model.get_value(iter,_IDCOL)
|
|
||||||
|
|
||||||
def insert(self,position,data,info=None,select=0):
|
|
||||||
self.count = self.count + 1
|
|
||||||
iter = self.model.insert(position)
|
|
||||||
col = 0
|
|
||||||
for object in data:
|
|
||||||
self.model.set_value(iter,col,object)
|
|
||||||
col = col + 1
|
|
||||||
self.model.set_value(iter,_IDCOL,info)
|
|
||||||
self.model.set_value(iter,_BCOL,_TOP_FONT)
|
|
||||||
if select:
|
|
||||||
self.selection.select_iter(iter)
|
|
||||||
return iter
|
|
||||||
|
|
||||||
def get_data(self,iter,cols):
|
|
||||||
return [ self.model.get_value(iter,c) for c in cols ]
|
|
||||||
|
|
||||||
def on_row_expanded(self, view, iter, path):
|
|
||||||
name = self.model.get_value(iter,0)
|
|
||||||
self.fill_row(name,iter)
|
|
||||||
|
|
||||||
def expand_row(self,name,iter=None):
|
|
||||||
path = self.model.get_path(self.tree_roots[name])
|
|
||||||
self.parent.parent.status_text(_('Updating display...'))
|
|
||||||
self.tree.expand_row(path,1)
|
|
||||||
self.parent.parent.modify_statusbar()
|
|
||||||
|
|
||||||
def fill_row(self,name,iter=None):
|
|
||||||
name = unicode(name)
|
|
||||||
|
|
||||||
if not iter:
|
|
||||||
iter = self.tree_roots[name]
|
|
||||||
child = self.model.iter_children(iter)
|
|
||||||
|
|
||||||
if self.model.get_value(child,0) is None:
|
|
||||||
self.model.remove(child)
|
|
||||||
for d in self.tree_list[name]:
|
|
||||||
new_iter = self.model.append(iter)
|
|
||||||
self.model.set(new_iter,0,d[0],1,d[1],2,d[2],3,d[3],4,d[4],
|
|
||||||
5,d[5],6,d[6],7,d[7])
|
|
||||||
self.parent.id2col[d[1]] = (self,new_iter)
|
|
||||||
self.expand_row (name, iter)
|
|
||||||
|
|
||||||
def add(self,data,select=0):
|
|
||||||
self.count = self.count + 1
|
|
||||||
|
|
||||||
name = data[-1]
|
|
||||||
if self.tree_roots.has_key(name):
|
|
||||||
top = self.tree_roots[name]
|
|
||||||
else:
|
|
||||||
top = self.model.append(None)
|
|
||||||
self.model.append(top)
|
|
||||||
self.tree_open[name] = 0
|
|
||||||
self.tree_list[name] = []
|
|
||||||
self.model.set_value(top,0,name)
|
|
||||||
self.model.set_value(top,5,name.upper())
|
|
||||||
self.model.set_value(top,_BCOL,_TOP_FONT)
|
|
||||||
self.tree_roots[name] = top
|
|
||||||
|
|
||||||
if self.tree_open[name] or select:
|
|
||||||
iter = self.model.append(top)
|
|
||||||
col = 0
|
|
||||||
for object in data[:-1]:
|
|
||||||
self.model.set_value(iter,col,object)
|
|
||||||
col = col + 1
|
|
||||||
self.model.set_value(iter,_BCOL,_TEXT_FONT)
|
|
||||||
if select:
|
|
||||||
self.sel_iter = iter
|
|
||||||
self.selection.select_iter(self.sel_iter)
|
|
||||||
return iter
|
|
||||||
else:
|
|
||||||
self.tree_list[name].append(data)
|
|
||||||
return None
|
|
||||||
|
|
||||||
def set(self,iter,data,select=0):
|
|
||||||
col = 0
|
|
||||||
for object in data:
|
|
||||||
self.model.set_value(iter,col,object)
|
|
||||||
col = col + 1
|
|
||||||
self.model.set_value(iter,_BCOL,_TEXT_FONT)
|
|
||||||
if select:
|
|
||||||
self.sel_iter = iter
|
|
||||||
return iter
|
|
||||||
|
|
||||||
def add_and_select(self,data):
|
|
||||||
self.count = self.count + 1
|
|
||||||
iter = self.model.append()
|
|
||||||
col = 0
|
|
||||||
for object in data:
|
|
||||||
self.model.set_value(iter,col,object)
|
|
||||||
col = col + 1
|
|
||||||
self.model.set_value(iter,_BCOL,_TEXT_FONT)
|
|
||||||
self.selection.select_iter(iter)
|
|
||||||
|
|
||||||
def center_selected(self):
|
|
||||||
model,iter = self.selection.get_selected()
|
|
||||||
if iter:
|
|
||||||
path = model.get_path(iter)
|
|
||||||
self.tree.scroll_to_cell(path,None,gtk.TRUE,0.5,0.5)
|
|
@ -151,11 +151,7 @@ class PeopleView:
|
|||||||
def remove_from_person_list(self,person,old_id=None):
|
def remove_from_person_list(self,person,old_id=None):
|
||||||
"""Remove the selected person from the list. A person object is expected,
|
"""Remove the selected person from the list. A person object is expected,
|
||||||
not an ID"""
|
not an ID"""
|
||||||
if old_id == None or person.get_id() == old_id:
|
self.build_tree()
|
||||||
path = self.person_model.on_get_path(person.get_id())
|
|
||||||
self.person_model.row_deleted(path)
|
|
||||||
else:
|
|
||||||
self.person_model.rebuild_data()
|
|
||||||
|
|
||||||
def remove_from_history(self,person,old_id=None):
|
def remove_from_history(self,person,old_id=None):
|
||||||
"""Removes a person from the history list"""
|
"""Removes a person from the history list"""
|
||||||
@ -187,8 +183,8 @@ class PeopleView:
|
|||||||
self.apply_filter(self.person_tree)
|
self.apply_filter(self.person_tree)
|
||||||
self.goto_active_person()
|
self.goto_active_person()
|
||||||
|
|
||||||
def add_to_person_list(self,person,change):
|
def add_to_person_list(self,person,change=0):
|
||||||
self.rebuild_data()
|
self.build_tree()
|
||||||
|
|
||||||
def goto_active_person(self,first=0):
|
def goto_active_person(self,first=0):
|
||||||
if not self.parent.active_person:
|
if not self.parent.active_person:
|
||||||
@ -253,4 +249,7 @@ class PeopleView:
|
|||||||
menu.popup(None,None,None,event.button,event.time)
|
menu.popup(None,None,None,event.button,event.time)
|
||||||
|
|
||||||
def redisplay_person_list(self,person):
|
def redisplay_person_list(self,person):
|
||||||
self.person_model.rebuild_data()
|
self.person_model = PeopleModel.PeopleModel(self.parent.db)
|
||||||
|
self.sort_model = gtk.TreeModelSort(self.person_model)
|
||||||
|
self.person_tree.set_model(self.sort_model)
|
||||||
|
|
||||||
|
@ -68,21 +68,18 @@ class PlaceView:
|
|||||||
|
|
||||||
def __init__(self,parent,db,glade,update):
|
def __init__(self,parent,db,glade,update):
|
||||||
self.parent = parent
|
self.parent = parent
|
||||||
self.db = db
|
|
||||||
self.glade = glade
|
self.glade = glade
|
||||||
|
self.db = db
|
||||||
self.list = glade.get_widget("place_list")
|
self.list = glade.get_widget("place_list")
|
||||||
self.update = update
|
self.list.connect('button-press-event',self.button_press)
|
||||||
|
self.list.connect('key-press-event',self.key_press)
|
||||||
|
self.selection = self.list.get_selection()
|
||||||
|
self.selection.set_mode(gtk.SELECTION_MULTIPLE)
|
||||||
|
|
||||||
self.renderer = gtk.CellRendererText()
|
self.renderer = gtk.CellRendererText()
|
||||||
|
|
||||||
self.active = None
|
|
||||||
|
|
||||||
self.model = gtk.TreeModelSort(DisplayModels.PlaceModel(self.db))
|
self.model = gtk.TreeModelSort(DisplayModels.PlaceModel(self.db))
|
||||||
self.list.set_model(self.model)
|
self.list.set_model(self.model)
|
||||||
self.selection = self.list.get_selection()
|
|
||||||
self.selection.set_mode(gtk.SELECTION_MULTIPLE)
|
|
||||||
self.list.connect('button-press-event',self.button_press)
|
|
||||||
self.list.connect('key-press-event',self.key_press)
|
|
||||||
self.topWindow = self.glade.get_widget("gramps")
|
self.topWindow = self.glade.get_widget("gramps")
|
||||||
|
|
||||||
self.columns = []
|
self.columns = []
|
||||||
@ -127,35 +124,6 @@ class PlaceView:
|
|||||||
self.list.set_model(self.model)
|
self.list.set_model(self.model)
|
||||||
self.selection = self.list.get_selection()
|
self.selection = self.list.get_selection()
|
||||||
|
|
||||||
def load_places(self,id=None):
|
|
||||||
"""Rebuilds the entire place view. This can be very time consuming
|
|
||||||
on large databases, and should only be called when absolutely
|
|
||||||
necessary"""
|
|
||||||
pass
|
|
||||||
#self.build_tree()
|
|
||||||
|
|
||||||
def goto(self,id):
|
|
||||||
self.selection.unselect_all()
|
|
||||||
iter = self.id2col[id]
|
|
||||||
self.selection.select_iter(iter)
|
|
||||||
itpath = self.model.get_path (iter)
|
|
||||||
col = self.list.get_column (0)
|
|
||||||
self.list.scroll_to_cell (itpath, col, gtk.TRUE, 0.5, 0)
|
|
||||||
|
|
||||||
def merge(self):
|
|
||||||
mlist = []
|
|
||||||
self.selection.selected_foreach(self.blist,mlist)
|
|
||||||
|
|
||||||
if len(mlist) != 2:
|
|
||||||
msg = _("Cannot merge places.")
|
|
||||||
msg2 = _("Exactly two places must be selected to perform a merge. "
|
|
||||||
"A second place can be selected by holding down the "
|
|
||||||
"control key while clicking on the desired place.")
|
|
||||||
ErrorDialog(msg,msg2)
|
|
||||||
else:
|
|
||||||
import MergeData
|
|
||||||
MergeData.MergePlaces(self.db,mlist[0],mlist[1],self.load_places)
|
|
||||||
|
|
||||||
def button_press(self,obj,event):
|
def button_press(self,obj,event):
|
||||||
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
|
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
|
||||||
mlist = []
|
mlist = []
|
||||||
@ -201,26 +169,25 @@ class PlaceView:
|
|||||||
menu.append(item)
|
menu.append(item)
|
||||||
menu.popup(None,None,None,event.button,event.time)
|
menu.popup(None,None,None,event.button,event.time)
|
||||||
|
|
||||||
def new_place_after_edit(self,place):
|
|
||||||
self.db.add_place(place)
|
|
||||||
self.update(0)
|
|
||||||
|
|
||||||
def update_display(self,place):
|
|
||||||
if place:
|
|
||||||
self.db.build_place_display(place.get_id())
|
|
||||||
self.update(0)
|
|
||||||
|
|
||||||
def on_add_place_clicked(self,obj):
|
def on_add_place_clicked(self,obj):
|
||||||
EditPlace.EditPlace(self.parent,RelLib.Place(),self.new_place_after_edit)
|
EditPlace.EditPlace(self.parent,RelLib.Place(),self.new_place_after_edit)
|
||||||
|
|
||||||
|
def new_place_after_edit(self,place):
|
||||||
|
self.db.add_place(place)
|
||||||
|
|
||||||
|
def update_display(self,place):
|
||||||
|
self.build_tree()
|
||||||
|
|
||||||
def on_delete_clicked(self,obj):
|
def on_delete_clicked(self,obj):
|
||||||
mlist = []
|
mlist = []
|
||||||
self.selection.selected_foreach(self.blist,mlist)
|
self.selection.selected_foreach(self.blist,mlist)
|
||||||
|
|
||||||
|
trans = self.db.start_transaction()
|
||||||
|
|
||||||
for place in mlist:
|
for place in mlist:
|
||||||
used = 0
|
used = 0
|
||||||
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.find_person_from_id(key)
|
||||||
event_list = []
|
event_list = []
|
||||||
for e in [p.get_birth_id(),p.get_death_id()] + p.get_event_list():
|
for e in [p.get_birth_id(),p.get_death_id()] + p.get_event_list():
|
||||||
event = self.db.find_event_from_id(e)
|
event = self.db.find_event_from_id(e)
|
||||||
@ -233,7 +200,8 @@ class PlaceView:
|
|||||||
if p.get_lds_sealing():
|
if p.get_lds_sealing():
|
||||||
event_list.append(p.get_lds_sealing())
|
event_list.append(p.get_lds_sealing())
|
||||||
for event in event_list:
|
for event in event_list:
|
||||||
if event.get_place_id() == place:
|
if event.get_place_id() == place.get_id():
|
||||||
|
print event.get_id()
|
||||||
used = 1
|
used = 1
|
||||||
|
|
||||||
for fid in self.db.get_family_keys():
|
for fid in self.db.get_family_keys():
|
||||||
@ -246,7 +214,8 @@ class PlaceView:
|
|||||||
if f.get_lds_sealing():
|
if f.get_lds_sealing():
|
||||||
event_list.append(f.get_lds_sealing())
|
event_list.append(f.get_lds_sealing())
|
||||||
for event in event_list:
|
for event in event_list:
|
||||||
if event.get_place_id() == place:
|
if event.get_place_id() == place.get_id():
|
||||||
|
print event.get_id()
|
||||||
used = 1
|
used = 1
|
||||||
|
|
||||||
if used == 1:
|
if used == 1:
|
||||||
@ -259,8 +228,10 @@ class PlaceView:
|
|||||||
_('_Delete Place'),
|
_('_Delete Place'),
|
||||||
ans.query_response)
|
ans.query_response)
|
||||||
else:
|
else:
|
||||||
self.db.remove_place(place.get_id())
|
trans = self.db.start_transaction()
|
||||||
self.update(0)
|
self.db.remove_place(place.get_id(),trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
self.build_tree()
|
||||||
|
|
||||||
def on_edit_clicked(self,obj):
|
def on_edit_clicked(self,obj):
|
||||||
"""Display the selected places in the EditPlace display"""
|
"""Display the selected places in the EditPlace display"""
|
||||||
@ -273,3 +244,18 @@ class PlaceView:
|
|||||||
def blist(self,store,path,iter,list):
|
def blist(self,store,path,iter,list):
|
||||||
id = self.db.get_place_id(store.get_value(iter,1))
|
id = self.db.get_place_id(store.get_value(iter,1))
|
||||||
list.append(id)
|
list.append(id)
|
||||||
|
|
||||||
|
def merge(self):
|
||||||
|
mlist = []
|
||||||
|
self.selection.selected_foreach(self.blist,mlist)
|
||||||
|
|
||||||
|
if len(mlist) != 2:
|
||||||
|
msg = _("Cannot merge places.")
|
||||||
|
msg2 = _("Exactly two places must be selected to perform a merge. "
|
||||||
|
"A second place can be selected by holding down the "
|
||||||
|
"control key while clicking on the desired place.")
|
||||||
|
ErrorDialog(msg,msg2)
|
||||||
|
else:
|
||||||
|
import MergeData
|
||||||
|
MergeData.MergePlaces(self.db,mlist[0],mlist[1],self.build_tree)
|
||||||
|
|
||||||
|
643
src/RelLib.py
643
src/RelLib.py
File diff suppressed because it is too large
Load Diff
@ -300,7 +300,10 @@ class SelectChild:
|
|||||||
|
|
||||||
select_child.add_parent_family_id(self.family.get_id(),mrel,frel)
|
select_child.add_parent_family_id(self.family.get_id(),mrel,frel)
|
||||||
|
|
||||||
self.db.commit_person(select_child)
|
trans = self.db.start_transaction()
|
||||||
|
self.db.commit_person(select_child,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
self.redraw(self.family)
|
self.redraw(self.family)
|
||||||
self.close(obj)
|
self.close(obj)
|
||||||
|
|
||||||
@ -430,6 +433,9 @@ class EditRel:
|
|||||||
frel = "Unknown"
|
frel = "Unknown"
|
||||||
|
|
||||||
self.child.change_parent_family_id(self.family.get_id(),mrel,frel)
|
self.child.change_parent_family_id(self.family.get_id(),mrel,frel)
|
||||||
self.db.commit_person(self.child)
|
trans = self.start_transaction()
|
||||||
|
self.db.commit_person(self.child,trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
self.update()
|
self.update()
|
||||||
self.top.destroy()
|
self.top.destroy()
|
||||||
|
@ -68,8 +68,8 @@ class SourceView:
|
|||||||
self.db = db
|
self.db = db
|
||||||
self.update = update
|
self.update = update
|
||||||
self.list = glade.get_widget("source_list")
|
self.list = glade.get_widget("source_list")
|
||||||
|
self.list.connect('button-press-event',self.button_press)
|
||||||
self.selection = self.list.get_selection()
|
self.selection = self.list.get_selection()
|
||||||
colno = 0
|
|
||||||
|
|
||||||
self.renderer = gtk.CellRendererText()
|
self.renderer = gtk.CellRendererText()
|
||||||
|
|
||||||
@ -80,12 +80,6 @@ class SourceView:
|
|||||||
self.columns = []
|
self.columns = []
|
||||||
self.build_columns()
|
self.build_columns()
|
||||||
|
|
||||||
def load_sources(self,id=None):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def on_click(self,column):
|
|
||||||
self.click_col = column
|
|
||||||
|
|
||||||
def build_columns(self):
|
def build_columns(self):
|
||||||
for column in self.columns:
|
for column in self.columns:
|
||||||
self.list.remove_column(column)
|
self.list.remove_column(column)
|
||||||
@ -112,25 +106,18 @@ class SourceView:
|
|||||||
self.list.append_column(column)
|
self.list.append_column(column)
|
||||||
index += 1
|
index += 1
|
||||||
|
|
||||||
|
def on_click(self,column):
|
||||||
|
self.click_col = column
|
||||||
|
|
||||||
def change_db(self,db):
|
def change_db(self,db):
|
||||||
self.build_columns()
|
self.build_columns()
|
||||||
self.build_tree()
|
self.build_tree()
|
||||||
|
|
||||||
def goto(self,id):
|
|
||||||
iter = self.map[id]
|
|
||||||
self.list.get_selection().select_iter(iter)
|
|
||||||
itpath = self.model.get_path (iter)
|
|
||||||
col = self.list.get_column (0)
|
|
||||||
self.list.scroll_to_cell (itpath, col, gtk.TRUE, 0.5, 0)
|
|
||||||
|
|
||||||
def build_tree(self):
|
def build_tree(self):
|
||||||
self.list.set_model(None)
|
self.list.set_model(None)
|
||||||
self.model = gtk.TreeModelSort(DisplayModels.SourceModel(self.parent.db))
|
self.model = gtk.TreeModelSort(DisplayModels.SourceModel(self.parent.db))
|
||||||
|
|
||||||
self.list.set_model(self.model)
|
self.list.set_model(self.model)
|
||||||
|
|
||||||
self.selection = self.list.get_selection()
|
self.selection = self.list.get_selection()
|
||||||
self.list.connect('button-press-event',self.button_press)
|
|
||||||
|
|
||||||
def button_press(self,obj,event):
|
def button_press(self,obj,event):
|
||||||
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
|
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
|
||||||
@ -182,7 +169,6 @@ class SourceView:
|
|||||||
self.topWindow,self.new_after_edit)
|
self.topWindow,self.new_after_edit)
|
||||||
|
|
||||||
def on_delete_clicked(self,obj):
|
def on_delete_clicked(self,obj):
|
||||||
|
|
||||||
store,iter = self.selection.get_selected()
|
store,iter = self.selection.get_selected()
|
||||||
if not iter:
|
if not iter:
|
||||||
return
|
return
|
||||||
@ -191,7 +177,7 @@ class SourceView:
|
|||||||
source = self.db.get_source(id)
|
source = self.db.get_source(id)
|
||||||
|
|
||||||
if self.is_used(source):
|
if self.is_used(source):
|
||||||
ans = EditSource.DelSrcQuery(source,self.db,self.update)
|
ans = EditSource.DelSrcQuery(source,self.db,self.build_tree)
|
||||||
|
|
||||||
QuestionDialog(_('Delete %s?') % source.get_title(),
|
QuestionDialog(_('Delete %s?') % source.get_title(),
|
||||||
_('This source is currently being used. Deleting it '
|
_('This source is currently being used. Deleting it '
|
||||||
@ -200,8 +186,10 @@ class SourceView:
|
|||||||
_('_Delete Source'),
|
_('_Delete Source'),
|
||||||
ans.query_response,self.topWindow)
|
ans.query_response,self.topWindow)
|
||||||
else:
|
else:
|
||||||
self.db.remove_source_id(source.get_id())
|
trans = self.db.start_transaction()
|
||||||
self.update(0)
|
self.db.remove_source_id(source.get_id(),trans)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
self.build_tree()
|
||||||
|
|
||||||
def is_used(self,source):
|
def is_used(self,source):
|
||||||
for key in self.db.get_place_id_keys():
|
for key in self.db.get_place_id_keys():
|
||||||
@ -258,8 +246,7 @@ class SourceView:
|
|||||||
|
|
||||||
def new_after_edit(self,source):
|
def new_after_edit(self,source):
|
||||||
self.db.add_source(source)
|
self.db.add_source(source)
|
||||||
self.update(0)
|
self.build_tree()
|
||||||
|
|
||||||
def update_display(self,place):
|
def update_display(self,place):
|
||||||
self.db.build_source_display(place.get_id())
|
self.build_tree()
|
||||||
self.update(0)
|
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
<accelerator key="N" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="N" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1865">
|
<widget class="GtkImage" id="image1882">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-new</property>
|
<property name="stock">gtk-new</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -73,7 +73,7 @@
|
|||||||
<accelerator key="O" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="O" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1866">
|
<widget class="GtkImage" id="image1883">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-open</property>
|
<property name="stock">gtk-open</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -107,7 +107,7 @@
|
|||||||
<property name="use_underline">True</property>
|
<property name="use_underline">True</property>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1867">
|
<widget class="GtkImage" id="image1884">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-convert</property>
|
<property name="stock">gtk-convert</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -135,7 +135,7 @@
|
|||||||
<accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1868">
|
<widget class="GtkImage" id="image1885">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-quit</property>
|
<property name="stock">gtk-quit</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -171,7 +171,7 @@
|
|||||||
<accelerator key="Insert" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="Insert" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1869">
|
<widget class="GtkImage" id="image1886">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-add</property>
|
<property name="stock">gtk-add</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -194,7 +194,7 @@
|
|||||||
<accelerator key="Delete" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="Delete" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1870">
|
<widget class="GtkImage" id="image1887">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-remove</property>
|
<property name="stock">gtk-remove</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -207,6 +207,14 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</child>
|
</child>
|
||||||
|
|
||||||
|
<child>
|
||||||
|
<widget class="GtkImageMenuItem" id="undo1">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="stock_item">GNOMEUIINFO_MENU_UNDO_ITEM</property>
|
||||||
|
<signal name="activate" handler="on_undo_activate" last_modification_time="Fri, 26 Mar 2004 00:07:15 GMT"/>
|
||||||
|
</widget>
|
||||||
|
</child>
|
||||||
|
|
||||||
<child>
|
<child>
|
||||||
<widget class="GtkMenuItem" id="edit_item">
|
<widget class="GtkMenuItem" id="edit_item">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@ -232,7 +240,7 @@
|
|||||||
<accelerator key="F" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="F" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1871">
|
<widget class="GtkImage" id="image1888">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-find</property>
|
<property name="stock">gtk-find</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -254,7 +262,7 @@
|
|||||||
<accelerator key="M" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="M" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1872">
|
<widget class="GtkImage" id="image1889">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-convert</property>
|
<property name="stock">gtk-convert</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -281,7 +289,7 @@
|
|||||||
<signal name="activate" handler="on_preferences1_activate"/>
|
<signal name="activate" handler="on_preferences1_activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1873">
|
<widget class="GtkImage" id="image1890">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-preferences</property>
|
<property name="stock">gtk-preferences</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -302,7 +310,7 @@
|
|||||||
<signal name="activate" handler="on_column_order_activate" last_modification_time="Wed, 10 Mar 2004 04:36:07 GMT"/>
|
<signal name="activate" handler="on_column_order_activate" last_modification_time="Wed, 10 Mar 2004 04:36:07 GMT"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1874">
|
<widget class="GtkImage" id="image1891">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-properties</property>
|
<property name="stock">gtk-properties</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -323,7 +331,7 @@
|
|||||||
<signal name="activate" handler="on_default_person_activate" last_modification_time="Sat, 16 Aug 2003 01:58:26 GMT"/>
|
<signal name="activate" handler="on_default_person_activate" last_modification_time="Sat, 16 Aug 2003 01:58:26 GMT"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1875">
|
<widget class="GtkImage" id="image1892">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-home</property>
|
<property name="stock">gtk-home</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -409,7 +417,7 @@
|
|||||||
<accelerator key="D" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="D" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1876">
|
<widget class="GtkImage" id="image1893">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-index</property>
|
<property name="stock">gtk-index</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -431,7 +439,7 @@
|
|||||||
<accelerator key="B" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
<accelerator key="B" modifiers="GDK_CONTROL_MASK" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1877">
|
<widget class="GtkImage" id="image1894">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gnome-stock-book-open</property>
|
<property name="stock">gnome-stock-book-open</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -504,7 +512,7 @@
|
|||||||
<accelerator key="F1" modifiers="0" signal="activate"/>
|
<accelerator key="F1" modifiers="0" signal="activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1878">
|
<widget class="GtkImage" id="image1895">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-help</property>
|
<property name="stock">gtk-help</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -525,7 +533,7 @@
|
|||||||
<signal name="activate" handler="on_faq_activate" last_modification_time="Wed, 26 Nov 2003 17:59:23 GMT"/>
|
<signal name="activate" handler="on_faq_activate" last_modification_time="Wed, 26 Nov 2003 17:59:23 GMT"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1879">
|
<widget class="GtkImage" id="image1896">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gnome-stock-book-open</property>
|
<property name="stock">gnome-stock-book-open</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -552,7 +560,7 @@
|
|||||||
<signal name="activate" handler="on_gramps_home_page_activate"/>
|
<signal name="activate" handler="on_gramps_home_page_activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1880">
|
<widget class="GtkImage" id="image1897">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gtk-jump-to</property>
|
<property name="stock">gtk-jump-to</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -573,7 +581,7 @@
|
|||||||
<signal name="activate" handler="on_gramps_mailing_lists_activate"/>
|
<signal name="activate" handler="on_gramps_mailing_lists_activate"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1881">
|
<widget class="GtkImage" id="image1898">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gnome-stock-mail</property>
|
<property name="stock">gnome-stock-mail</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
@ -627,7 +635,7 @@
|
|||||||
<signal name="activate" handler="on_about_activate" last_modification_time="Tue, 01 Apr 2003 03:44:24 GMT"/>
|
<signal name="activate" handler="on_about_activate" last_modification_time="Tue, 01 Apr 2003 03:44:24 GMT"/>
|
||||||
|
|
||||||
<child internal-child="image">
|
<child internal-child="image">
|
||||||
<widget class="GtkImage" id="image1882">
|
<widget class="GtkImage" id="image1899">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="stock">gnome-stock-about</property>
|
<property name="stock">gnome-stock-about</property>
|
||||||
<property name="icon_size">1</property>
|
<property name="icon_size">1</property>
|
||||||
|
@ -148,7 +148,6 @@ class Gramps:
|
|||||||
self.db.set_researcher(GrampsCfg.get_researcher())
|
self.db.set_researcher(GrampsCfg.get_researcher())
|
||||||
|
|
||||||
def pref_callback(self,val):
|
def pref_callback(self,val):
|
||||||
self.db.rebuild_person_table()
|
|
||||||
self.modify_statusbar()
|
self.modify_statusbar()
|
||||||
self.family_view.init_interface()
|
self.family_view.init_interface()
|
||||||
self.update_display(1)
|
self.update_display(1)
|
||||||
@ -259,6 +258,7 @@ class Gramps:
|
|||||||
self.child_windows = {}
|
self.child_windows = {}
|
||||||
|
|
||||||
self.gtop.signal_autoconnect({
|
self.gtop.signal_autoconnect({
|
||||||
|
"on_undo_activate" : self.undo,
|
||||||
"on_column_order_activate": self.column_order,
|
"on_column_order_activate": self.column_order,
|
||||||
"on_back_clicked" : self.back_clicked,
|
"on_back_clicked" : self.back_clicked,
|
||||||
"on_back_pressed" : self.back_pressed,
|
"on_back_pressed" : self.back_pressed,
|
||||||
@ -346,6 +346,16 @@ class Gramps:
|
|||||||
self.topWindow.show()
|
self.topWindow.show()
|
||||||
self.enable_toolbar(self.use_toolbar)
|
self.enable_toolbar(self.use_toolbar)
|
||||||
|
|
||||||
|
def undo(self,*args):
|
||||||
|
self.db.undo()
|
||||||
|
p = self.db.try_to_find_person_from_id(self.active_person.get_id())
|
||||||
|
self.change_active_person(p)
|
||||||
|
self.place_view.change_db(self.db)
|
||||||
|
self.people_view.change_db(self.db)
|
||||||
|
self.source_view.change_db(self.db)
|
||||||
|
self.media_view.change_db(self.db)
|
||||||
|
self.family_view.load_family()
|
||||||
|
|
||||||
def set_column_order(self,list):
|
def set_column_order(self,list):
|
||||||
self.db.set_column_order(list)
|
self.db.set_column_order(list)
|
||||||
self.people_view.build_columns()
|
self.people_view.build_columns()
|
||||||
@ -894,8 +904,6 @@ class Gramps:
|
|||||||
self.family_view.clear()
|
self.family_view.clear()
|
||||||
self.family_view.load_family()
|
self.family_view.load_family()
|
||||||
self.pedigree_view.clear()
|
self.pedigree_view.clear()
|
||||||
self.source_view.load_sources()
|
|
||||||
self.place_view.load_places()
|
|
||||||
self.media_view.load_media()
|
self.media_view.load_media()
|
||||||
|
|
||||||
def tool_callback(self,val):
|
def tool_callback(self,val):
|
||||||
@ -931,17 +939,12 @@ class Gramps:
|
|||||||
self.family_view.load_family()
|
self.family_view.load_family()
|
||||||
elif page == PEDIGREE_VIEW:
|
elif page == PEDIGREE_VIEW:
|
||||||
self.pedigree_view.load_canvas(self.active_person)
|
self.pedigree_view.load_canvas(self.active_person)
|
||||||
elif page == SOURCE_VIEW:
|
|
||||||
self.source_view.load_sources()
|
|
||||||
elif page == PLACE_VIEW:
|
elif page == PLACE_VIEW:
|
||||||
if len(self.db.get_place_id_keys()) > 2000:
|
if len(self.db.get_place_id_keys()) > 2000:
|
||||||
self.status_text(_('Updating display - this may take a few seconds...'))
|
self.status_text(_('Updating display - this may take a few seconds...'))
|
||||||
else:
|
else:
|
||||||
self.status_text(_('Updating display...'))
|
self.status_text(_('Updating display...'))
|
||||||
self.place_view.load_places()
|
|
||||||
self.modify_statusbar()
|
self.modify_statusbar()
|
||||||
else:
|
|
||||||
self.media_view.load_media()
|
|
||||||
|
|
||||||
def on_tools_clicked(self,obj):
|
def on_tools_clicked(self,obj):
|
||||||
if self.active_person:
|
if self.active_person:
|
||||||
@ -953,23 +956,13 @@ class Gramps:
|
|||||||
Plugins.ReportPlugins(self,self.db,self.active_person)
|
Plugins.ReportPlugins(self,self.db,self.active_person)
|
||||||
|
|
||||||
def on_ok_button1_clicked(self,obj):
|
def on_ok_button1_clicked(self,obj):
|
||||||
|
filename = self.filesel.get_filename()
|
||||||
dbname = obj.get_data("dbname")
|
|
||||||
getoldrev = obj.get_data("getoldrev")
|
|
||||||
filename = dbname.get_full_path(0)
|
|
||||||
|
|
||||||
if filename == "" or filename == None:
|
if filename == "" or filename == None:
|
||||||
return
|
return
|
||||||
filename = os.path.normpath(os.path.abspath(filename))
|
filename = os.path.normpath(os.path.abspath(filename))
|
||||||
|
self.filesel.destroy()
|
||||||
self.clear_database()
|
self.clear_database()
|
||||||
|
self.auto_save_load(filename)
|
||||||
if getoldrev.get_active():
|
|
||||||
vc = VersionControl.RcsVersionControl(filename)
|
|
||||||
VersionControl.RevisionSelect(self.db,filename,vc,
|
|
||||||
self.load_revision)
|
|
||||||
else:
|
|
||||||
self.auto_save_load(filename)
|
|
||||||
|
|
||||||
def on_help_dbopen_clicked(self,obj):
|
def on_help_dbopen_clicked(self,obj):
|
||||||
"""Display the relevant portion of GRAMPS manual"""
|
"""Display the relevant portion of GRAMPS manual"""
|
||||||
@ -1053,7 +1046,10 @@ class Gramps:
|
|||||||
if o.get_reference_id() == ObjectId:
|
if o.get_reference_id() == ObjectId:
|
||||||
nl.remove(o)
|
nl.remove(o)
|
||||||
p.set_media_list(nl)
|
p.set_media_list(nl)
|
||||||
self.db.remove_object(ObjectId)
|
|
||||||
|
trans = self.db.start_transaction()
|
||||||
|
self.db.remove_object(ObjectId)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
|
|
||||||
def leave_clicked():
|
def leave_clicked():
|
||||||
# File is lost => do nothing, leave as is
|
# File is lost => do nothing, leave as is
|
||||||
@ -1210,6 +1206,8 @@ class Gramps:
|
|||||||
|
|
||||||
def delete_person_response(self):
|
def delete_person_response(self):
|
||||||
|
|
||||||
|
trans = self.db.start_transaction()
|
||||||
|
|
||||||
if self.db.get_default_person() == self.active_person:
|
if self.db.get_default_person() == self.active_person:
|
||||||
self.db.set_default_person(None)
|
self.db.set_default_person(None)
|
||||||
|
|
||||||
@ -1222,7 +1220,8 @@ class Gramps:
|
|||||||
for child_id in family.get_child_id_list():
|
for child_id in family.get_child_id_list():
|
||||||
child = self.db.find_person_from_id(child_id)
|
child = self.db.find_person_from_id(child_id)
|
||||||
child.remove_parent_family_id(family.get_id())
|
child.remove_parent_family_id(family.get_id())
|
||||||
self.db.delete_family(family.get_id())
|
self.db.commit_person(child,trans)
|
||||||
|
self.db.delete_family(family.get_id(),trans)
|
||||||
else:
|
else:
|
||||||
family.set_father_id(None)
|
family.set_father_id(None)
|
||||||
else:
|
else:
|
||||||
@ -1230,23 +1229,27 @@ class Gramps:
|
|||||||
for child_id in family.get_child_id_list():
|
for child_id in family.get_child_id_list():
|
||||||
child = self.db.find_person_from_id(child_id)
|
child = self.db.find_person_from_id(child_id)
|
||||||
child.remove_parent_family_id(family)
|
child.remove_parent_family_id(family)
|
||||||
self.db.delete_family(family)
|
self.db.commit_person(child,trans)
|
||||||
|
self.db.delete_family(family,trans)
|
||||||
else:
|
else:
|
||||||
family.set_mother_id(None)
|
family.set_mother_id(None)
|
||||||
|
self.db.commit_family(family,trans)
|
||||||
|
|
||||||
for (family_id,mrel,frel) in self.active_person.get_parent_family_id_list():
|
for (family_id,mrel,frel) in self.active_person.get_parent_family_id_list():
|
||||||
if family_id:
|
if family_id:
|
||||||
family = self.db.find_family_from_id(family_id)
|
family = self.db.find_family_from_id(family_id)
|
||||||
family.remove_child_id(self.active_person.get_id())
|
family.remove_child_id(self.active_person.get_id())
|
||||||
|
self.db.commit_family(family,trans)
|
||||||
|
|
||||||
self.people_view.remove_from_history(self.active_person)
|
self.people_view.remove_from_history(self.active_person)
|
||||||
self.db.remove_person_id(self.active_person.get_id())
|
self.db.remove_person_id(self.active_person.get_id(),trans)
|
||||||
self.people_view.remove_from_person_list(self.active_person)
|
self.people_view.remove_from_person_list(self.active_person)
|
||||||
|
|
||||||
if self.hindex >= 0:
|
if self.hindex >= 0:
|
||||||
self.active_person = self.db.get_person(self.history[self.hindex])
|
self.active_person = self.db.get_person(self.history[self.hindex])
|
||||||
else:
|
else:
|
||||||
self.change_active_person(None)
|
self.change_active_person(None)
|
||||||
|
self.db.add_transaction(trans)
|
||||||
self.redraw_histmenu()
|
self.redraw_histmenu()
|
||||||
|
|
||||||
def merge_update(self,p1,p2,old_id):
|
def merge_update(self,p1,p2,old_id):
|
||||||
@ -1261,15 +1264,16 @@ class Gramps:
|
|||||||
def goto_active_person(self,first=0):
|
def goto_active_person(self,first=0):
|
||||||
self.people_view.goto_active_person(first)
|
self.people_view.goto_active_person(first)
|
||||||
|
|
||||||
def change_active_person(self,person):
|
def change_active_person(self,person,force=0):
|
||||||
|
self.active_person = person
|
||||||
if person == None:
|
if person == None:
|
||||||
self.set_buttons(0)
|
self.set_buttons(0)
|
||||||
self.active_person = None
|
self.active_person = None
|
||||||
self.modify_statusbar()
|
self.modify_statusbar()
|
||||||
elif self.active_person == None or \
|
elif self.active_person == None or \
|
||||||
person.get_id() != self.active_person.get_id():
|
person.get_id() != self.active_person.get_id():
|
||||||
self.active_person = person
|
|
||||||
self.modify_statusbar()
|
self.modify_statusbar()
|
||||||
|
self.set_buttons(1)
|
||||||
if person:
|
if person:
|
||||||
if self.hindex+1 < len(self.history):
|
if self.hindex+1 < len(self.history):
|
||||||
self.history = self.history[0:self.hindex+1]
|
self.history = self.history[0:self.hindex+1]
|
||||||
@ -1292,6 +1296,7 @@ class Gramps:
|
|||||||
else:
|
else:
|
||||||
self.backbtn.set_sensitive(0)
|
self.backbtn.set_sensitive(0)
|
||||||
self.back.set_sensitive(0)
|
self.back.set_sensitive(0)
|
||||||
|
else:
|
||||||
self.set_buttons(1)
|
self.set_buttons(1)
|
||||||
|
|
||||||
def modify_statusbar(self):
|
def modify_statusbar(self):
|
||||||
@ -1327,31 +1332,19 @@ class Gramps:
|
|||||||
DisplayTrace.DisplayTrace()
|
DisplayTrace.DisplayTrace()
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
def fs_close_window(self,obj):
|
||||||
|
self.filesel.destroy()
|
||||||
|
|
||||||
def on_open_activate(self,obj):
|
def on_open_activate(self,obj):
|
||||||
wFs = gtk.glade.XML(const.revisionFile, "dbopen","gramps")
|
|
||||||
|
top = gtk.glade.XML (const.gladeFile, "fileselection","gramps")
|
||||||
self.dbopen_fs = wFs.get_widget("dbopen")
|
top.signal_autoconnect({
|
||||||
|
"on_ok_button1_clicked": self.on_ok_button1_clicked,
|
||||||
Utils.set_titles(self.dbopen_fs, wFs.get_widget('title'),
|
"destroy_passed_object": self.fs_close_window,
|
||||||
_('Open a database'))
|
})
|
||||||
|
self.filesel = top.get_widget('fileselection')
|
||||||
dbname = wFs.get_widget("dbname")
|
if GrampsCfg.lastfile:
|
||||||
getoldrev = wFs.get_widget("getoldrev")
|
self.filesel.set_filename(GrampsCfg.lastfile)
|
||||||
self.dbopen_fs.set_data("dbname",dbname)
|
|
||||||
dbname.set_default_path(GrampsCfg.db_dir)
|
|
||||||
dbname.set_filename(GrampsCfg.db_dir)
|
|
||||||
dbname.gtk_entry().set_position(len(GrampsCfg.db_dir))
|
|
||||||
|
|
||||||
self.dbopen_fs.set_data("getoldrev",getoldrev)
|
|
||||||
getoldrev.set_sensitive(GrampsCfg.usevc)
|
|
||||||
self.dbopen_fs.set_transient_for(self.topWindow)
|
|
||||||
self.dbopen_fs.show()
|
|
||||||
self.dbopen_button = self.dbopen_fs.run()
|
|
||||||
if self.dbopen_button == gtk.RESPONSE_OK:
|
|
||||||
self.on_ok_button1_clicked(self.dbopen_fs)
|
|
||||||
elif self.dbopen_button == gtk.RESPONSE_HELP:
|
|
||||||
self.on_help_dbopen_clicked(obj)
|
|
||||||
self.dbopen_fs.destroy()
|
|
||||||
|
|
||||||
def on_revert_activate(self,obj):
|
def on_revert_activate(self,obj):
|
||||||
pass
|
pass
|
||||||
@ -1429,15 +1422,12 @@ class Gramps:
|
|||||||
elif page == SOURCE_VIEW:
|
elif page == SOURCE_VIEW:
|
||||||
self.enable_buttons(1)
|
self.enable_buttons(1)
|
||||||
self.merge_button.set_sensitive(0)
|
self.merge_button.set_sensitive(0)
|
||||||
self.source_view.load_sources()
|
|
||||||
elif page == PLACE_VIEW:
|
elif page == PLACE_VIEW:
|
||||||
self.enable_buttons(1)
|
self.enable_buttons(1)
|
||||||
self.place_view.load_places()
|
|
||||||
self.merge_button.set_sensitive(1)
|
self.merge_button.set_sensitive(1)
|
||||||
elif page == MEDIA_VIEW:
|
elif page == MEDIA_VIEW:
|
||||||
self.enable_buttons(1)
|
self.enable_buttons(1)
|
||||||
self.merge_button.set_sensitive(0)
|
self.merge_button.set_sensitive(0)
|
||||||
self.media_view.load_media()
|
|
||||||
|
|
||||||
def on_apply_filter_clicked(self,obj):
|
def on_apply_filter_clicked(self,obj):
|
||||||
self.people_view.apply_filter_clicked()
|
self.people_view.apply_filter_clicked()
|
||||||
@ -1455,15 +1445,14 @@ class Gramps:
|
|||||||
filter.hide()
|
filter.hide()
|
||||||
filter.set_sensitive(qual)
|
filter.set_sensitive(qual)
|
||||||
|
|
||||||
def new_after_edit(self,epo):
|
def new_after_edit(self,epo,trans):
|
||||||
if epo:
|
if epo:
|
||||||
if epo.person.get_id() == "":
|
if epo.person.get_id() == "":
|
||||||
self.db.add_person(epo.person)
|
self.db.add_person(epo.person,trans)
|
||||||
else:
|
else:
|
||||||
self.db.add_person_no_map(epo.person,epo.person.get_id())
|
self.db.add_person_no_map(epo.person,epo.person.get_id(),trans)
|
||||||
self.db.build_person_display(epo.person.get_id())
|
|
||||||
self.change_active_person(epo.person)
|
self.change_active_person(epo.person)
|
||||||
self.people_view.redisplay_person_list(epo.person)
|
self.people_view.add_to_person_list(epo.person)
|
||||||
if self.views.get_current_page() in [FAMILY_VIEW1,FAMILY_VIEW2]:
|
if self.views.get_current_page() in [FAMILY_VIEW1,FAMILY_VIEW2]:
|
||||||
self.family_view.load_family()
|
self.family_view.load_family()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user