* src/RelLib.py: rework of the API

* src/*.py: rework of the api


svn: r3371
This commit is contained in:
Don Allingham 2004-08-11 03:42:38 +00:00
parent 4fd3c41ceb
commit fa4fe6d391
26 changed files with 771 additions and 856 deletions

View File

@ -1,3 +1,7 @@
2004-08-10 Don Allingham <dallingham@users.sourceforge.net>
* src/RelLib.py: rework of the API
* src/*.py: rework of the api
2004-08-06 Don Allingham <dallingham@users.sourceforge.net>
* various: change try_to_find_*_from_handle to
get_*_from_handle

View File

@ -1,5 +1,5 @@
%define ver 1.1.1
%define rel 0.CVS20040730
%define rel 0.CVS20040806
%define prefix /usr
%define localstatedir /var/lib
# Ensure that internal RPM macros for configure & makeinstall

View File

@ -1,5 +1,5 @@
%define ver 1.1.1
%define rel 0.CVS20040730
%define rel 0.CVS20040806
%define prefix /usr
%define localstatedir /var/lib
# Ensure that internal RPM macros for configure & makeinstall

View File

@ -213,17 +213,12 @@ class AddSpouse:
"""
person = epo.person
trans = self.db.start_transaction()
id = person.get_handle()
if id == "":
id = self.db.add_person(person,trans)
else:
self.db.add_person_no_map(person,id,trans)
handle = self.db.add_person(person,trans)
person = self.db.get_person_from_handle(id)
n = person.get_primary_name().get_name()
self.db.add_transaction(trans,_('Add Person (%s)' % n))
self.addperson(person)
self.update_data(id)
self.update_data(handle)
self.slist = PeopleModel.PeopleModel(self.db)
self.slist.rebuild_data()

View File

@ -55,7 +55,6 @@ def fill_entry(entry,data_list):
entry.set_completion(completion)
def fill_option_text(combobox,data):
typelist = []
store = gtk.ListStore(gobject.TYPE_STRING)
cell = gtk.CellRendererText()
combobox.pack_start(cell,gtk.TRUE)

View File

@ -68,7 +68,6 @@ fmt7 = re.compile(_start+r"([?\d]+)\s*[./-]\s*([?\d]+)\s*$", re.IGNORECASE)
fmt4 = re.compile(_start+"(\S+)\s+(\d+)\s*$", re.IGNORECASE)
fmt5 = re.compile(_start+"(\d+)\s*$", re.IGNORECASE)
#-------------------------------------------------------------------------
#
#

View File

@ -306,7 +306,7 @@ class ChooseParents:
fam = self.db.find_family_from_handle(family_handle)
for handle in [fam.get_father_handle(), fam.get_mother_handle()] + \
fam.get_child_handle_list():
if id:
if handle:
self.exclude[handle] = 1
def redrawf(self):
@ -569,28 +569,23 @@ class ChooseParents:
depending on the gender of the person."""
person = epo.person
id = person.get_handle()
handle = person.get_handle()
name = person.get_primary_name().get_surname()
if id == "":
id = self.db.add_person(person,trans)
else:
self.db.add_person_no_map(person,id,trans)
self.db.add_person(person,trans)
self.type = self.prel.get_active()
if self.type == const.FAMILY_CIVIL_UNION:
self.parent_relation_changed(self.prel)
elif person.get_gender() == RelLib.Person.male:
self.redrawf()
path = self.father_nsort.on_get_path(id)
path = self.father_nsort.on_get_path(handle)
top_path = self.father_nsort.on_get_path(name)
self.father_list.expand_row(top_path,0)
self.father_selection.select_path(path)
self.father_list.scroll_to_cell(path,None,1,0.5,0)
else:
self.redrawm()
path = self.mother_nsort.on_get_path(id)
path = self.mother_nsort.on_get_path(handle)
top_path = self.mother_nsort.on_get_path(name)
self.mother_list.expand_row(top_path,0)
self.mother_selection.select_path(path)

View File

@ -61,15 +61,15 @@ class ColumnOrder:
self.glade.get_widget('cancelbutton').connect('clicked',self.cancel_clicked)
for item in self.arglist:
iter = self.model.append()
self.model.set(iter,0,item[0],1,column_names[item[1]],2,item[1])
node = self.model.append()
self.model.set(node,0,item[0],1,column_names[item[1]],2,item[1])
def ok_clicked(self,obj):
newlist = []
for i in range(0,len(self.arglist)):
iter = self.model.get_iter((int(i),))
newlist.append((self.model.get_value(iter,0),
self.model.get_value(iter,2)))
node = self.model.get_iter((int(i),))
newlist.append((self.model.get_value(node,0),
self.model.get_value(node,2)))
self.callback(newlist)
self.top.destroy()
@ -77,7 +77,7 @@ class ColumnOrder:
self.top.destroy()
def toggled(self, cell, path, model):
iter = model.get_iter((int(path),))
value = model.get_value(iter,0)
node = model.get_iter((int(path),))
value = model.get_value(node,0)
value = not value
model.set(iter,0,value)
model.set(node,0,value)

View File

@ -128,32 +128,32 @@ class ExistingDbPrompter:
gtk.RESPONSE_OK))
choose.set_local_only(gtk.FALSE)
# Always add automatic (macth all files) filter
filter = gtk.FileFilter()
filter.set_name(_('Automatic'))
filter.add_pattern('*')
choose.add_filter(filter)
mime_filter = gtk.FileFilter()
mime_filter.set_name(_('Automatic'))
mime_filter.add_pattern('*')
choose.add_filter(mime_filter)
# Always add native format filter
filter = gtk.FileFilter()
filter.set_name(_('GRAMPS databases'))
filter.add_mime_type(const.app_gramps)
choose.add_filter(filter)
mime_filter = gtk.FileFilter()
mime_filter.set_name(_('GRAMPS databases'))
mime_filter.add_mime_type(const.app_gramps)
choose.add_filter(mime_filter)
# Always add native format filter
filter = gtk.FileFilter()
filter.set_name(_('GRAMPS XML databases'))
filter.add_mime_type(const.app_gramps_xml)
choose.add_filter(filter)
mime_filter = gtk.FileFilter()
mime_filter.set_name(_('GRAMPS XML databases'))
mime_filter.add_mime_type(const.app_gramps_xml)
choose.add_filter(mime_filter)
# Always add native format filter
filter = gtk.FileFilter()
filter.set_name(_('GEDCOM'))
filter.add_mime_type(const.app_gedcom)
choose.add_filter(filter)
mime_filter = gtk.FileFilter()
mime_filter.set_name(_('GEDCOM'))
mime_filter.add_mime_type(const.app_gedcom)
choose.add_filter(mime_filter)
# Add more data type selections if opening existing db
for (importData,filter,mime_type) in Plugins._imports:
choose.add_filter(filter)
for (importData,mime_filter,mime_type) in Plugins._imports:
choose.add_filter(mime_filter)
response = choose.run()
if response == gtk.RESPONSE_OK:
@ -176,7 +176,7 @@ class ExistingDbPrompter:
self.parent.read_file(filename)
return 1
(junk,the_file) = os.path.split(filename)
for (importData,filter,mime_type) in Plugins._imports:
for (importData,mime_filter,mime_type) in Plugins._imports:
if filetype == mime_type or the_file == mime_type:
choose.destroy()
QuestionDialog.OkDialog( _("Opening non-native format"),
@ -234,10 +234,10 @@ class ImportDbPrompter:
gtk.RESPONSE_OK))
choose.set_local_only(gtk.FALSE)
# Always add automatic (macth all files) filter
filter = gtk.FileFilter()
filter.set_name(_('Automatic'))
filter.add_pattern('*')
choose.add_filter(filter)
mime_filter = gtk.FileFilter()
mime_filter.set_name(_('Automatic'))
mime_filter.add_pattern('*')
choose.add_filter(mime_filter)
# FIXME: Uncomment when we have grdb importer
#
@ -248,8 +248,8 @@ class ImportDbPrompter:
# choose.add_filter(filter)
# Add more data type selections if opening existing db
for (importData,filter,mime_type) in Plugins._imports:
choose.add_filter(filter)
for (importData,mime_filter,mime_type) in Plugins._imports:
choose.add_filter(mime_filter)
response = choose.run()
if response == gtk.RESPONSE_OK:
@ -262,7 +262,7 @@ class ImportDbPrompter:
# self.parent.read_file(filename)
# return 1
(junk,the_file) = os.path.split(filename)
for (importData,filter,mime_type) in Plugins._imports:
for (importData,mime_filter,mime_type) in Plugins._imports:
if filetype == mime_type or the_file == mime_type:
choose.destroy()
importData(self.parent.db,filename)
@ -308,16 +308,16 @@ class NewNativeDbPrompter:
self.parent.clear_database()
# Always add automatic (macth all files) filter
filter = gtk.FileFilter()
filter.set_name(_('Automatic'))
filter.add_pattern('*')
choose.add_filter(filter)
mime_filter = gtk.FileFilter()
mime_filter.set_name(_('Automatic'))
mime_filter.add_pattern('*')
choose.add_filter(mime_filter)
# Always add native format filter
filter = gtk.FileFilter()
filter.set_name(_('GRAMPS databases'))
filter.add_mime_type('application/x-gramps')
choose.add_filter(filter)
mime_filter = gtk.FileFilter()
mime_filter.set_name(_('GRAMPS databases'))
mime_filter.add_mime_type('application/x-gramps')
choose.add_filter(mime_filter)
new_filename = Utils.get_new_filename('grdb')

View File

@ -133,24 +133,28 @@ class SourceModel(BaseModel):
self.column_author,
self.column_abbrev,
self.column_pubinfo,
self.column_handle,
]
BaseModel.__init__(self,db)
def column_title(self,data):
return unicode(data[1])
def column_author(self,data):
return unicode(data[2])
def column_abbrev(self,data):
return unicode(data[3])
def column_id(self,data):
def column_handle(self,data):
return unicode(data[0])
def column_pubinfo(self,data):
def column_author(self,data):
return unicode(data[3])
def column_abbrev(self,data):
return unicode(data[4])
def column_id(self,data):
return unicode(data[1])
def column_pubinfo(self,data):
return unicode(data[5])
#-------------------------------------------------------------------------
#
# PlaceModel
@ -171,48 +175,52 @@ class PlaceModel(BaseModel):
self.column_country,
self.column_longitude,
self.column_latitude,
self.column_handle,
]
BaseModel.__init__(self,db)
def column_name(self,data):
return unicode(data[1])
def column_longitude(self,data):
return unicode(data[2])
def column_latitude(self,data):
def column_handle(self,data):
return unicode(data[0])
def column_longitude(self,data):
return unicode(data[3])
def column_latitude(self,data):
return unicode(data[4])
def column_id(self,data):
return unicode(data[0])
return unicode(data[1])
def column_parish(self,data):
try:
return data[4].get_parish()
return data[5].get_parish()
except:
return u''
def column_city(self,data):
try:
return data[4].get_city()
return data[5].get_city()
except:
return u''
def column_county(self,data):
try:
return data[4].get_county()
return data[5].get_county()
except:
return u''
def column_state(self,data):
try:
return data[4].get_state()
return data[5].get_state()
except:
return u''
def column_country(self,data):
try:
return data[4].get_country()
return data[5].get_country()
except:
return u''
@ -236,13 +244,13 @@ class MediaModel(BaseModel):
BaseModel.__init__(self,db)
def column_description(self,data):
return unicode(data[3])
return unicode(data[4])
def column_path(self,data):
return unicode(data[1])
def column_mime(self,data):
return unicode(data[2])
def column_mime(self,data):
return unicode(data[3])
def column_id(self,data):
return unicode(data[0])
return unicode(data[1])

View File

@ -484,13 +484,13 @@ class EditPerson:
cnum = cnum + 1
tree.append_column(column)
def lds_field(self,ord,combo,date,place):
def lds_field(self,lds_ord,combo,date,place):
AutoComp.fill_combo(combo,_temple_names)
if not ord.is_empty():
stat = ord.get_status()
date.set_text(ord.get_date())
if ord.get_temple() != "":
name = const.lds_temple_to_abrev[ord.get_temple()]
if not lds_ord.is_empty():
stat = lds_ord.get_status()
date.set_text(lds_ord.get_date())
if lds_ord.get_temple() != "":
name = const.lds_temple_to_abrev[lds_ord.get_temple()]
else:
name = ""
combo.child.set_text(name)
@ -499,9 +499,9 @@ class EditPerson:
combo.child.set_text("")
build_dropdown(place,self.place_list)
if ord and ord.get_place_handle():
ord_place = self.db.get_place_from_handle(ord.get_place_handle())
place.set_text(ord_place.get_title())
if lds_ord and lds_ord.get_place_handle():
lds_ord_place = self.db.get_place_from_handle(lds_ord.get_place_handle())
place.set_text(lds_ord_place.get_title())
return stat
def draw_lds(self):
@ -793,8 +793,8 @@ class EditPerson:
self.ntree.clear()
self.nmap = {}
for name in self.nlist:
iter = self.ntree.add([name.get_name(),_(name.get_type())],name)
self.nmap[str(name)] = iter
node = self.ntree.add([name.get_name(),_(name.get_type())],name)
self.nmap[str(name)] = node
if self.nlist:
self.ntree.select_row(0)
Utils.bold_label(self.names_label)
@ -807,8 +807,8 @@ class EditPerson:
self.wtree.clear()
self.wmap = {}
for url in self.ulist:
iter = self.wtree.add([url.get_path(),url.get_description()],url)
self.wmap[str(url)] = iter
node = self.wtree.add([url.get_path(),url.get_description()],url)
self.wmap[str(url)] = node
if len(self.ulist) > 0:
self.web_go.set_sensitive(0)
@ -827,8 +827,8 @@ class EditPerson:
for addr in self.plist:
location = "%s %s %s %s" % (addr.get_street(),addr.get_city(),
addr.get_state(),addr.get_country())
iter = self.ptree.add([addr.get_date(),location],addr)
self.pmap[str(addr)] = iter
node = self.ptree.add([addr.get_date(),location],addr)
self.pmap[str(addr)] = node
if self.plist:
self.ptree.select_row(0)
Utils.bold_label(self.addr_label)
@ -840,8 +840,8 @@ class EditPerson:
self.atree.clear()
self.amap = {}
for attr in self.alist:
iter = self.atree.add([const.display_pattr(attr.get_type()),attr.get_value()],attr)
self.amap[str(attr)] = iter
node = self.atree.add([const.display_pattr(attr.get_type()),attr.get_value()],attr)
self.amap[str(attr)] = node
if self.alist:
self.atree.select_row(0)
Utils.bold_label(self.attr_label)
@ -885,9 +885,9 @@ class EditPerson:
for event_handle in self.elist:
event = self.db.find_event_from_handle(event_handle)
pname = place_title(self.db,event)
iter = self.etree.add([const.display_pevent(event.get_name()),event.get_description(),
node = self.etree.add([const.display_pevent(event.get_name()),event.get_description(),
event.get_quote_date(),pname],event)
self.emap[str(event)] = iter
self.emap[str(event)] = node
if self.elist:
self.etree.select_row(0)
Utils.bold_label(self.events_label)
@ -939,16 +939,16 @@ class EditPerson:
def on_up_clicked(self,obj):
sel = obj.get_selection()
store,iter = sel.get_selected()
if iter:
row = store.get_path(iter)
store,node = sel.get_selected()
if node:
row = store.get_path(node)
sel.select_path((row[0]-1))
def on_down_clicked(self,obj):
sel = obj.get_selection()
store,iter = sel.get_selected()
if iter:
row = store.get_path(iter)
store,node = sel.get_selected()
if node:
row = store.get_path(node)
sel.select_path((row[0]+1))
def on_event_add_clicked(self,obj):
@ -996,33 +996,33 @@ class EditPerson:
def on_aka_delete_clicked(self,obj):
"""Deletes the selected name from the name list"""
store,iter = self.ntree.get_selected()
if iter:
self.nlist.remove(self.ntree.get_object(iter))
store,node = self.ntree.get_selected()
if node:
self.nlist.remove(self.ntree.get_object(node))
self.lists_changed = 1
self.redraw_name_list()
def on_delete_url_clicked(self,obj):
"""Deletes the selected URL from the URL list"""
store,iter = self.wtree.get_selected()
if iter:
self.ulist.remove(self.wtree.get_object(iter))
store,node = self.wtree.get_selected()
if node:
self.ulist.remove(self.wtree.get_object(node))
self.lists_changed = 1
self.redraw_url_list()
def on_delete_attr_clicked(self,obj):
"""Deletes the selected attribute from the attribute list"""
store,iter = self.atree.get_selected()
if iter:
self.alist.remove(self.atree.get_object(iter))
store,node = self.atree.get_selected()
if node:
self.alist.remove(self.atree.get_object(node))
self.lists_changed = 1
self.redraw_attr_list()
def on_delete_addr_clicked(self,obj):
"""Deletes the selected address from the address list"""
store,iter = self.ptree.get_selected()
if iter:
self.plist.remove(self.ptree.get_object(iter))
store,node = self.ptree.get_selected()
if node:
self.plist.remove(self.ptree.get_object(node))
self.lists_changed = 1
self.redraw_addr_list()
@ -1207,44 +1207,44 @@ class EditPerson:
def on_update_attr_clicked(self,obj):
import AttrEdit
store,iter = self.atree.get_selected()
if iter:
attr = self.atree.get_object(iter)
store,node = self.atree.get_selected()
if node:
attr = self.atree.get_object(node)
pname = self.person.get_primary_name().get_name()
AttrEdit.AttributeEditor(self,attr,pname,const.personalAttributes,
self.attr_edit_callback,self.window)
def on_update_addr_clicked(self,obj):
import AddrEdit
store,iter = self.ptree.get_selected()
if iter:
AddrEdit.AddressEditor(self,self.ptree.get_object(iter),
store,node = self.ptree.get_selected()
if node:
AddrEdit.AddressEditor(self,self.ptree.get_object(node),
self.addr_edit_callback,self.window)
def on_update_url_clicked(self,obj):
import UrlEdit
store,iter = self.wtree.get_selected()
if iter:
store,node = self.wtree.get_selected()
if node:
pname = self.person.get_primary_name().get_name()
url = self.wtree.get_object(iter)
url = self.wtree.get_object(node)
UrlEdit.UrlEditor(self,pname,url,self.url_edit_callback,self.window)
def on_event_update_clicked(self,obj):
import EventEdit
store,iter = self.etree.get_selected()
if not iter:
store,node = self.etree.get_selected()
if not node:
return
pname = self.person.get_primary_name().get_name()
event = self.etree.get_object(iter)
event = self.etree.get_object(node)
EventEdit.EventEditor(self,pname,const.personalEvents,
const.save_event,event,None,0,
self.event_edit_callback)
def on_event_select_row(self,obj):
store,iter = obj.get_selected()
if iter:
row = store.get_path(iter)
store,node = obj.get_selected()
if node:
row = store.get_path(node)
event = self.db.find_event_from_handle(self.elist[row[0]])
self.event_date_field.set_text(event.get_date())
self.event_place_field.set_text(place_title(self.db,event))
@ -1274,9 +1274,9 @@ class EditPerson:
self.event_edit_btn.set_sensitive(0)
def on_addr_select_row(self,obj):
store,iter = self.ptree.get_selected()
if iter:
addr = self.ptree.get_object(iter)
store,node = self.ptree.get_selected()
if node:
addr = self.ptree.get_object(node)
self.addr_start.set_text(addr.get_date())
self.addr_street.set_text(addr.get_street())
self.addr_city.set_text(addr.get_city())
@ -1309,9 +1309,9 @@ class EditPerson:
self.addr_edit_btn.set_sensitive(0)
def on_name_select_row(self,obj):
store,iter = self.ntree.get_selected()
if iter:
name = self.ntree.get_object(iter)
store,node = self.ntree.get_selected()
if node:
name = self.ntree.get_object(node)
self.alt_given_field.set_text(name.get_first_name())
self.alt_title_field.set_text(name.get_title())
self.alt_last_field.set_text(name.get_surname())
@ -1342,9 +1342,9 @@ class EditPerson:
self.name_edit_btn.set_sensitive(0)
def on_web_select_row(self,obj):
store,iter = self.wtree.get_selected()
if iter:
url = self.wtree.get_object(iter)
store,node = self.wtree.get_selected()
if node:
url = self.wtree.get_object(node)
path = url.get_path()
self.web_url.set_text(path)
self.web_description.set_text(url.get_description())
@ -1360,9 +1360,9 @@ class EditPerson:
self.web_edit_btn.set_sensitive(0)
def on_attr_select_row(self,obj):
store,iter = self.atree.get_selected()
if iter:
attr = self.atree.get_object(iter)
store,node = self.atree.get_selected()
if node:
attr = self.atree.get_object(node)
self.attr_type.set_text(const.display_pattr(attr.get_type()))
self.attr_value.set_text(short(attr.get_value()))
if len(attr.get_source_references()) > 0:
@ -1398,9 +1398,9 @@ class EditPerson:
def on_aka_update_clicked(self,obj):
import NameEdit
store,iter = self.ntree.get_selected()
if iter:
NameEdit.NameEditor(self,self.ntree.get_object(iter),
store,node = self.ntree.get_selected()
if node:
NameEdit.NameEditor(self,self.ntree.get_object(node),
self.name_edit_callback,self.window)
def load_photo(self,photo):
@ -1509,11 +1509,11 @@ class EditPerson:
# change in ordering due to the new birth date
family = self.person.get_main_parents_family_handle()
if (family):
f = self.db.find_family_no_map(family,trans)
f = self.db.find_family_from_handle(family,trans)
new_order = self.reorder_child_list(self.person,f.get_child_handle_list())
f.set_child_handle_list(new_order)
for (family, rel1, rel2) in self.person.get_parent_family_handle_list():
f = self.db.find_family_no_map(family,trans)
f = self.db.find_family_from_handle(family,trans)
new_order = self.reorder_child_list(self.person,f.get_child_handle_list())
f.set_child_handle_list(new_order)
@ -1586,16 +1586,16 @@ class EditPerson:
if self.lds_not_loaded == 0:
self.check_lds()
ord = RelLib.LdsOrd(self.person.get_lds_baptism())
if not self.lds_baptism.are_equal(ord):
lds_ord = RelLib.LdsOrd(self.person.get_lds_baptism())
if not self.lds_baptism.are_equal(lds_ord):
self.person.set_lds_baptism(self.lds_baptism)
ord = RelLib.LdsOrd(self.person.get_lds_endowment())
if not self.lds_endowment.are_equal(ord):
lds_ord = RelLib.LdsOrd(self.person.get_lds_endowment())
if not self.lds_endowment.are_equal(lds_ord):
self.person.set_lds_endowment(self.lds_endowment)
ord = RelLib.LdsOrd(self.person.get_lds_sealing())
if not self.lds_sealing.are_equal(ord):
lds_ord = RelLib.LdsOrd(self.person.get_lds_sealing())
if not self.lds_sealing.are_equal(lds_ord):
self.person.set_lds_sealing(self.lds_sealing)
if self.lists_changed:
@ -1682,10 +1682,10 @@ class EditPerson:
if media_list:
ph = media_list[0]
object_handle = ph.get_reference_handle()
object = self.db.get_object_from_handle(object_handle)
if self.load_obj != object.get_path():
if object.get_mime_type()[0:5] == "image":
self.load_photo(object.get_path())
obj = self.db.get_object_from_handle(object_handle)
if self.load_obj != obj.get_path():
if obj.get_mime_type()[0:5] == "image":
self.load_photo(obj.get_path())
else:
self.load_photo(None)
else:
@ -1843,8 +1843,8 @@ def place_title(db,event):
def build_dropdown(entry,strings):
store = gtk.ListStore(gobject.TYPE_STRING)
for value in strings:
iter = store.append()
store.set(iter,0,value)
node = store.append()
store.set(node,0,value)
completion = gtk.EntryCompletion()
completion.set_text_column(0)
completion.set_model(store)

View File

@ -82,7 +82,6 @@ class EditPlace:
self.not_loaded = 1
self.ref_not_loaded = 1
self.lists_changed = 0
self.gallery_ok = 0
if place:
self.srcreflist = place.get_source_references()
else:
@ -224,12 +223,12 @@ class EditPlace:
self.top.show()
def on_delete_event(self,obj,b):
self.glry.close(self.gallery_ok)
self.glry.close()
self.close_child_windows()
self.remove_itself_from_menu()
def close(self,obj):
self.glry.close(self.gallery_ok)
self.glry.close()
self.close_child_windows()
self.remove_itself_from_menu()
self.top.destroy()
@ -367,7 +366,6 @@ class EditPlace:
if format != self.place.get_note_format():
self.place.set_note_format(format)
self.gallery_ok = 1
self.update_lists()
trans = self.db.start_transaction()
@ -486,7 +484,7 @@ class EditPlace:
if event and event.get_place_handle() == self.place:
pevent.append((p,event))
for family_handle in self.db.get_family_keys():
f = self.db.find_family_from_handle(family_handle)
f = self.db.get_family_from_handle(family_handle)
for event_handle in f.get_event_list():
event = self.db.find_event_from_handle(event_handle)
if event and event.get_place_handle() == self.place:
@ -570,7 +568,7 @@ class DeletePlaceQuery:
self.db.commit_event(event,trans)
for fid in self.db.get_family_keys():
f = self.db.find_family_from_handle(fid)
f = self.db.get_family_from_handle(fid)
for event_handle in f.get_event_list():
event = self.db.find_event_from_handle(event_handle)
if event and event.get_place_handle() == self.place.get_handle():

View File

@ -191,7 +191,7 @@ class EditSource:
f_attr_list = []
p_list = []
for key in self.db.get_place_handle_keys():
p = self.db.get_place_handle(key)
p = self.db.get_place_from_handle(key)
name = p.get_title()
for sref in p.get_source_references():
if sref.get_base_handle() == self.source.get_handle():
@ -201,7 +201,7 @@ class EditSource:
name = GrampsCfg.get_nameof()(p)
for event_handle in p.get_event_list() + [p.get_birth_handle(), p.get_death_handle()]:
if event_handle:
event = self.db.find_event_from_handle(event_handle)
event = self.db.get_event_from_handle(event_handle)
for sref in event.get_source_references():
if sref.get_base_handle() == self.source.get_handle():
p_event_list.append((name,event.get_name()))
@ -224,7 +224,7 @@ class EditSource:
if sref.get_base_handle() == self.source.get_handle():
m_list.append(name)
for family_handle in self.db.get_family_keys():
family = self.db.find_family_from_handle(family_handle)
family = self.db.get_family_from_handle(family_handle)
f_id = family.get_father_handle()
m_id = family.get_mother_handle()
if f_id:

View File

@ -631,11 +631,7 @@ class FamilyView:
def new_spouse_after_edit(self,epo,trans):
if epo.person.get_handle() == "":
self.parent.db.add_person(epo.person,trans)
else:
self.parent.db.add_person_no_map(epo.person,epo.person.get_handle(),trans)
self.family = self.parent.db.new_family(trans)
self.parent.people_view.add_to_person_list(epo.person,0)
@ -700,11 +696,7 @@ class FamilyView:
def new_child_after_edit(self,epo,trans):
if epo.person.get_handle() == "":
self.parent.db.add_person(epo.person,trans)
else:
self.parent.db.add_person_no_map(epo.person,epo.person.get_handle(),trans)
self.parent.people_view.add_to_person_list(epo.person,0)
if not self.family:
@ -796,8 +788,9 @@ class FamilyView:
self.parent.db.commit_person(self.person,trans)
self.parent.db.delete_family(self.family.get_handle(),trans)
if len(self.person.get_family_handle_list()) > 0:
family_handle = self.person.get_family_handle_list()[0]
self.load_family(self.parent.db.find_family_from_handle(family_handle))
handle = self.person.get_family_handle_list()[0]
family = self.parent.db.find_family_from_handle(handle,trans)
self.load_family(family)
else:
self.load_family(self.family)
else:
@ -906,7 +899,7 @@ class FamilyView:
for f in splist:
if not f:
continue
fm = self.parent.db.find_family_no_map(f,None)
fm = self.parent.db.find_family_from_handle(f,None)
if fm.get_father_handle() == self.person.get_handle():
sp_id = fm.get_mother_handle()
@ -937,7 +930,7 @@ class FamilyView:
self.spouse_selection.select_iter(iter)
elif len(flist) > 0:
fid = splist[0]
fam = self.parent.db.find_family_from_handle(fid)
fam = self.parent.db.get_family_from_handle(fid)
self.display_marriage(fam)
iter = flist[fid]
self.spouse_selection.select_iter(iter)
@ -961,7 +954,7 @@ class FamilyView:
list = person.get_parent_family_handle_list()
for (f,mrel,frel) in list:
fam = self.parent.db.find_family_from_handle(f)
fam = self.parent.db.get_family_from_handle(f)
father_handle = fam.get_father_handle()
mother_handle = fam.get_mother_handle()
f = self.parent.db.get_person_from_handle(father_handle)
@ -1006,7 +999,7 @@ class FamilyView:
if not family:
self.family = None
return
self.family = self.parent.db.find_family_from_handle(family.get_handle())
self.family = self.parent.db.get_family_from_handle(family.get_handle())
if self.family.get_father_handle() == self.person.get_handle():
sp_id = self.family.get_mother_handle()

File diff suppressed because it is too large Load Diff

View File

@ -239,7 +239,7 @@ class Gallery(ImageSelect):
self.dataobj = dataobj;
self.iconlist = icon_list;
self.root = self.iconlist.root()
self.old_media_list = [RelLib.MediaRef(ref) for ref in self.dataobj.get_media_list()]
self.old_media_list = [RelLib.MediaRef(ref) for ref in dataobj.get_media_list()]
# Local object variables
self.y = 0

View File

@ -27,7 +27,8 @@ import gtk
#
#-------------------------------------------------------------------------
class ListModel:
def __init__(self,tree,dlist,select_func=None,event_func=None,mode=gtk.SELECTION_SINGLE):
def __init__(self,tree,dlist,select_func=None,
event_func=None,mode=gtk.SELECTION_SINGLE):
self.tree = tree
l = len(dlist)
self.mylist = [TYPE_STRING]*l + [TYPE_PYOBJECT]

View File

@ -268,7 +268,7 @@ class PedigreeView:
self.canvas_items.append(self.anchor_txt)
for family_handle in self.active_person.get_family_handle_list():
family = self.parent.db.find_family_from_handle(family_handle)
family = self.parent.db.get_family_from_handle(family_handle)
if len(family.get_child_handle_list()) > 0:
button,arrow = self.make_arrow_button(gtk.ARROW_LEFT,
self.on_show_child_menu)
@ -490,7 +490,7 @@ class PedigreeView:
mrel = (m != "Birth")
frel = (f != "Birth")
family = self.parent.db.find_family_from_handle(family_handle)
family = self.parent.db.get_family_from_handle(family_handle)
list[index] = (person,val)
if family != None:
father_handle = family.get_father_handle()
@ -573,7 +573,7 @@ class PedigreeView:
fam_list = person.get_family_handle_list()
no_spouses = 1
for fam_id in fam_list:
family = self.parent.db.find_family_from_handle(fam_id)
family = self.parent.db.get_family_from_handle(fam_id)
if family.get_father_handle() == person.get_handle():
sp_id = family.get_mother_handle()
else:
@ -604,7 +604,7 @@ class PedigreeView:
pfam_list = person.get_parent_family_handle_list()
no_siblings = 1
for (f,mrel,frel) in pfam_list:
fam = self.parent.db.find_family_from_handle(f)
fam = self.parent.db.get_family_from_handle(f)
sib_list = fam.get_child_handle_list()
for sib_id in sib_list:
if sib_id == person.get_handle():
@ -774,7 +774,7 @@ def find_children(db,p):
"""
childlist = []
for family_handle in p.get_family_handle_list():
family = db.find_family_from_handle(family_handle)
family = db.get_family_from_handle(family_handle)
for child_handle in family.get_child_handle_list():
childlist.append(child_handle)
return childlist
@ -790,7 +790,7 @@ def find_parents(db,p):
"""
parentlist = []
for (f,mrel,frel) in p.get_parent_family_handle_list():
family = db.find_family_from_handle(f)
family = db.get_family_from_handle(f)
father_handle = family.get_father_handle()
mother_handle = family.get_mother_handle()
if father_handle not in parentlist:

View File

@ -60,6 +60,8 @@ column_names = [
_('Latitude'),
]
_HANDLE_COL = len(column_names)
#-------------------------------------------------------------------------
#
# PlaceView class
@ -70,7 +72,6 @@ class PlaceView:
def __init__(self,parent,db,glade,update):
self.parent = parent
self.glade = glade
self.db = db
self.list = glade.get_widget("place_list")
self.list.connect('button-press-event',self.button_press)
self.list.connect('key-press-event',self.key_press)
@ -79,7 +80,7 @@ class PlaceView:
self.renderer = gtk.CellRendererText()
self.model = gtk.TreeModelSort(DisplayModels.PlaceModel(self.db))
self.model = gtk.TreeModelSort(DisplayModels.PlaceModel(self.parent.db))
self.list.set_model(self.model)
self.topWindow = self.glade.get_widget("gramps")
@ -176,7 +177,7 @@ class PlaceView:
EditPlace.EditPlace(self.parent,RelLib.Place(),self.new_place_after_edit)
def new_place_after_edit(self,place):
self.db.add_place(place)
self.parent.db.add_place(place)
def update_display(self,place):
self.build_tree()
@ -185,15 +186,15 @@ class PlaceView:
mlist = []
self.selection.selected_foreach(self.blist,mlist)
trans = self.db.start_transaction()
trans = self.parent.db.start_transaction()
for place in mlist:
used = 0
for key in self.db.get_person_keys():
p = self.db.get_person_from_handle(key)
for key in self.parent.db.get_person_keys():
p = self.parent.db.get_person_from_handle(key)
event_list = []
for e in [p.get_birth_handle(),p.get_death_handle()] + p.get_event_list():
event = self.db.find_event_from_handle(e)
event = self.parent.db.find_event_from_handle(e)
if event:
event_list.append(event)
if p.get_lds_baptism():
@ -206,11 +207,11 @@ class PlaceView:
if event.get_place_handle() == place.get_handle():
used = 1
for fid in self.db.get_family_keys():
f = self.db.find_family_from_handle(fid)
for fid in self.parent.db.get_family_keys():
f = self.parent.db.find_family_from_handle(fid)
event_list = []
for e in f.get_event_list():
event = self.db.find_event_from_handle(e)
event = self.parent.db.find_event_from_handle(e)
if event:
event_list.append(event)
if f.get_lds_sealing():
@ -220,7 +221,7 @@ class PlaceView:
used = 1
if used == 1:
ans = EditPlace.DeletePlaceQuery(place,self.db,self.update_display)
ans = EditPlace.DeletePlaceQuery(place,self.parent.db,self.update_display)
QuestionDialog(_('Delete %s?') % place.get_title(),
_('This place is currently being used by at least one '
'record in the database. Deleting it will remove it '
@ -229,9 +230,9 @@ class PlaceView:
_('_Delete Place'),
ans.query_response)
else:
trans = self.db.start_transaction()
self.db.remove_place(place.get_handle(),trans)
self.db.add_transaction(trans,_("Delete Place (%s)") % place.title())
trans = self.parent.db.start_transaction()
self.parent.db.remove_place(place.get_handle(),trans)
self.parent.db.add_transaction(trans,_("Delete Place (%s)") % place.title())
self.build_tree()
def on_edit_clicked(self,obj):
@ -243,7 +244,7 @@ class PlaceView:
EditPlace.EditPlace(self.parent, place, self.update_display)
def blist(self,store,path,iter,list):
id = self.db.get_place_from_handle(store.get_value(iter,1))
id = self.parent.db.get_place_from_handle(store.get_value(iter,_HANDLE_COL))
list.append(id)
def merge(self):
@ -258,5 +259,5 @@ class PlaceView:
ErrorDialog(msg,msg2)
else:
import MergeData
MergeData.MergePlaces(self.db,mlist[0],mlist[1],self.build_tree)
MergeData.MergePlaces(self.parent.db,mlist[0],mlist[1],self.build_tree)

View File

@ -222,6 +222,9 @@ class GedcomParser:
self.is_ftw = 0
self.idswap = {}
self.gid2id = {}
self.sid2id = {}
self.lid2id = {}
self.fid2id = {}
self.f = open(file,"rU")
self.filename = file
@ -442,7 +445,7 @@ class GedcomParser:
self.ignore_sub_junk(1)
def parse_source(self,name,level):
self.source = self.db.find_source(name,self.smap, self.trans)
self.source = self.find_or_create_source(name[1:-1])
note = ""
while 1:
@ -495,7 +498,7 @@ class GedcomParser:
if self.fam_count % UPDATE == 0 and self.window:
self.update(self.families_obj,str(self.fam_count))
self.fam_count = self.fam_count + 1
self.family = self.db.find_family_with_map(matches[1],self.fmap, self.trans)
self.family = self.find_or_create_family(matches[1])
self.parse_family()
if self.addr != None:
father = self.family.get_father_handle()
@ -563,10 +566,51 @@ class GedcomParser:
intid = Utils.create_id()
person.set_handle(intid)
person.set_gramps_id(gramps_id)
self.db.add_person_as(person,self.trans)
self.db.add_person(person,self.trans)
self.gid2id[gramps_id] = intid
return person
def find_or_create_source(self,gramps_id):
source = RelLib.Source()
intid = self.sid2id.get(gramps_id)
if self.db.source_map.has_key(intid):
source.unserialize(self.db.source_map.get(intid))
else:
intid = Utils.create_id()
source.set_handle(intid)
source.set_gramps_id(gramps_id)
self.db.add_source(source,self.trans)
self.sid2id[gramps_id] = intid
return source
def find_or_create_place(self,gramps_id):
place = RelLib.Place()
intid = self.lid2id.get(gramps_id)
if self.db.place_map.has_key(intid):
place.unserialize(self.db.place_map.get(intid))
else:
intid = Utils.create_id()
place.set_handle(intid)
place.set_title(gramps_id)
place.set_gramps_id(self.db.find_next_place_gramps_id())
print place.get_gramps_id()
self.db.add_place(place,self.trans)
self.lid2id[gramps_id] = intid
return place
def find_or_create_family(self,gramps_id):
family = RelLib.Family()
intid = self.fid2id.get(gramps_id)
if self.db.family_map.has_key(intid):
family.unserialize(self.db.family_map.get(intid))
else:
intid = Utils.create_id()
family.set_handle(intid)
family.set_gramps_id(gramps_id)
self.db.add_family(family,self.trans)
self.fid2id[gramps_id] = intid
return family
def parse_cause(self,event,level):
while 1:
matches = self.get_next()
@ -793,7 +837,7 @@ class GedcomParser:
self.person.set_lds_sealing(ord)
self.parse_ord(ord,2)
elif matches[1] == "FAMS":
family = self.db.find_family_with_map(matches[2],self.fmap, self.trans)
family = self.find_or_create_family(matches[2])
self.person.add_family_handle(family.get_handle())
if note == "":
note = self.parse_optional_note(2)
@ -802,7 +846,7 @@ class GedcomParser:
self.db.commit_family(family, self.trans)
elif matches[1] == "FAMC":
type,note = self.parse_famc_type(2)
family = self.db.find_family_with_map(matches[2],self.fmap, self.trans)
family = self.find_or_create_family(matches[2])
for f in self.person.get_parent_family_handle_list():
if f[0] == family.get_handle():
@ -1115,18 +1159,13 @@ class GedcomParser:
elif matches[1] == "DATE":
ord.set_date_object(self.extract_date(matches[2]))
elif matches[1] == "FAMC":
ord.set_family_handle(self.db.find_family_with_map(matches[2],self.fmap,self.trans))
ord.set_family_handle(self.find_or_create_family(matches[2]))
elif matches[1] == "PLAC":
try:
val = matches[2]
if self.placemap.has_key(val):
place_handle = self.placemap[val]
else:
place = RelLib.Place()
place = self.find_or_create_place(matches[2])
place.set_title(matches[2])
self.db.add_place(place, self.trans)
place_handle = place.get_handle()
self.placemap[val] = place_handle
ord.set_place_handle(place_handle)
self.ignore_sub_junk(level+1)
except NameError:
@ -1172,14 +1211,9 @@ class GedcomParser:
event.set_description(val)
self.ignore_sub_junk(level+1)
else:
if self.placemap.has_key(val):
place_handle = self.placemap[val]
else:
place = RelLib.Place()
place.set_title(matches[2])
self.db.add_place(place, self.trans)
place = self.find_or_create_place(val)
place_handle = place.get_handle()
self.placemap[val] = place_handle
place.set_title(matches[2])
event.set_place_handle(place_handle)
self.ignore_sub_junk(level+1)
elif matches[1] == "CAUS":
@ -1221,21 +1255,16 @@ class GedcomParser:
elif matches[1] == "SOUR":
event.add_source_reference(self.handle_source(matches,level+1))
elif matches[1] == "FAMC":
family = self.db.find_family_with_map(matches[2],self.fmap,self.trans)
family = self.find_or_create_family(matches[2])
mrel,frel = self.parse_adopt_famc(level+1);
if self.person.get_main_parents_family_handle() == family.get_handle():
self.person.set_main_parent_family_handle(None)
self.person.add_parent_family_handle(family.get_handle(),mrel,frel)
elif matches[1] == "PLAC":
val = matches[2]
if self.placemap.has_key(val):
place_handle = self.placemap[val]
else:
place = RelLib.Place()
place.set_title(matches[2])
self.db.add_place(place, self.trans)
place = self.find_or_create_place(val)
place_handle = place.get_handle()
self.placemap[val] = place_handle
place.set_title(matches[2])
event.set_place_handle(place_handle)
self.ignore_sub_junk(level+1)
elif matches[1] == "TYPE":
@ -1356,14 +1385,9 @@ class GedcomParser:
event.add_source_reference(self.handle_source(matches,level+1))
elif matches[1] == "PLAC":
val = matches[2]
if self.placemap.has_key(val):
place_handle = self.placemap[val]
else:
place = RelLib.Place()
place.set_title(matches[2])
self.db.add_place(place, self.trans)
place = self.find_or_create_place(val)
place_handle = place.get_handle()
self.placemap[val] = place_handle
place.set_title(matches[2])
event.set_place_handle(place_handle)
self.ignore_sub_junk(level+1)
elif matches[1] == 'OFFI':
@ -1722,13 +1746,13 @@ class GedcomParser:
if matches[2] and matches[2][0] != "@":
self.localref = self.localref + 1
ref = "gsr%d" % self.localref
s = self.db.find_source(ref,self.smap, self.trans)
s = self.find_or_create_source(ref)
source_ref.set_base_handle(s.get_handle())
s.set_title('Imported Source #%d' % self.localref)
s.set_note(matches[2] + self.parse_continue_data(level))
self.ignore_sub_junk(level+1)
else:
source_ref.set_base_handle(self.db.find_source(matches[2],self.smap,self.trans).get_handle())
source_ref.set_base_handle(self.find_or_create_source(matches[2][1:-1]))
self.parse_source_reference(source_ref,level)
return source_ref
@ -1761,7 +1785,7 @@ class GedcomParser:
self.db.remove_person_handle(pid,self.trans)
person.set_handle(new_key)
person.set_gramps_id(new_key)
self.db.add_person_as(person,self.trans)
self.db.add_person(person,self.trans)
# give up trying to use the refn as a key
else:
pass

View File

@ -422,7 +422,7 @@ class GrampsParser:
intid = Utils.create_id()
person.set_handle(intid)
person.set_gramps_id(gramps_id)
self.db.add_person_as(person,self.trans)
self.db.add_person(person,self.trans)
self.gid2id[gramps_id] = intid
return person
@ -478,15 +478,13 @@ class GrampsParser:
def start_sealed_to(self,attrs):
id = self.map_gid(attrs['ref'])
self.ord.set_family_handle(self.db.find_family_no_map(id,self.trans))
self.ord.set_family_handle(self.db.find_family_from_handle(id,self.trans))
def start_place(self,attrs):
self.placeobj = self.db.find_place_no_conflicts(attrs['ref'],
self.lmap, self.trans)
self.placeobj = self.db.find_place_from_handle(attrs['ref'],self.trans)
def start_placeobj(self,attrs):
self.placeobj = self.db.find_place_no_conflicts(attrs['id'],
self.lmap,self.trans)
self.placeobj = self.db.find_place_from_handle(attrs['id'],self.trans)
title = attrs['title']
if title == "":
title = attrs['id']
@ -637,18 +635,18 @@ class GrampsParser:
if self.callback != None and self.count % self.increment == 0:
self.callback(float(self.count)/float(self.entries))
self.count = self.count + 1
self.family = self.db.find_family_no_conflicts(attrs["id"],
self.fmap,self.trans)
self.family = self.db.find_family_from_handle(attrs["id"],self.trans)
if attrs.has_key("type"):
self.family.set_relationship(_FAMILY_TRANS.get(attrs["type"],const.FAMILY_UNKNOWN))
self.family.set_relationship(_FAMILY_TRANS.get(attrs["type"],
const.FAMILY_UNKNOWN))
if attrs.has_key("complete"):
self.family.set_complete(int(attrs['complete']))
else:
self.family.set_complete(0)
def start_childof(self,attrs):
family = self.db.find_family_no_conflicts(attrs["ref"],
self.fmap,self.trans)
family = self.db.find_family_from_handle(attrs["ref"],self.trans)
if attrs.has_key("mrel"):
mrel = attrs["mrel"]
else:
@ -686,8 +684,7 @@ class GrampsParser:
def start_sourceref(self,attrs):
self.source_ref = RelLib.SourceRef()
source = self.db.find_source_no_conflicts(attrs["ref"],
self.smap,self.trans)
source = self.db.find_source_from_handle(attrs["ref"],self.trans)
if attrs.has_key("conf"):
self.source_ref.confidence = int(attrs["conf"])
else:
@ -717,13 +714,13 @@ class GrampsParser:
self.person.add_source_reference(self.source_ref)
def start_source(self,attrs):
self.source = self.db.find_source_no_conflicts(attrs["id"],
self.smap,self.trans)
self.source = self.db.find_source_from_handle(attrs["id"],self.trans)
def start_objref(self,attrs):
self.objref = RelLib.MediaRef()
id = self.db.find_object_no_conflicts(attrs['ref'],
self.media_file_map,self.trans).get_handle()
obj = self.db.find_object_from_handle(attrs['ref'],self.trans)
id = obj.get_handle()
self.objref.set_reference_handle(id)
if attrs.has_key('priv'):
self.objref.set_privacy(int(attrs['priv']))
@ -739,9 +736,7 @@ class GrampsParser:
self.placeobj.add_media_reference(self.objref)
def start_object(self,attrs):
self.object = self.db.find_object_no_conflicts(attrs['id'],
self.media_file_map,
self.trans)
self.object = self.db.find_object_from_handle(attrs['id'],self.trans)
self.object.set_mime_type(attrs['mime'])
self.object.set_description(attrs['description'])
src = attrs["src"]

View File

@ -302,6 +302,7 @@ class Place(SourceNote):
for loc in source.alt_loc:
self.alt_loc = Location(loc)
self.handle = source.handle
self.gramps_id = source.gramps_id
self.urls = []
for u in source.urls:
self.urls.append(Url(u))
@ -315,15 +316,17 @@ class Place(SourceNote):
self.main_loc = None
self.alt_loc = []
self.handle = ""
self.gramps_id = ""
self.urls = []
self.media_list = []
def serialize(self):
return (self.handle, self.title, self.long, self.lat, self.main_loc,
self.alt_loc, self.urls, self.media_list, self.source_list, self.note)
return (self.handle, self.gramps_id, self.title, self.long, self.lat,
self.main_loc, self.alt_loc, self.urls, self.media_list,
self.source_list, self.note)
def unserialize(self,data):
(self.handle, self.title, self.long, self.lat, self.main_loc,
(self.handle, self.gramps_id, self.title, self.long, self.lat, self.main_loc,
self.alt_loc, self.urls, self.media_list, self.source_list,
self.note) = data
@ -347,6 +350,14 @@ class Place(SourceNote):
"""Returns the database handle for the place object"""
return self.handle
def set_gramps_id(self,gramps_id):
"""Sets the GRAMPS ID for the place object"""
self.gramps_id = gramps_id
def get_gramps_id(self):
"""Returns the GRAMPS ID for the place object"""
return self.gramps_id
def set_title(self,name):
"""Sets the title of the place object"""
self.title = name
@ -415,13 +426,14 @@ class Place(SourceNote):
case city, upper case county, upper case state, upper case country"""
if self.main_loc:
return [self.title,self.handle,self.main_loc.parish,self.main_loc.city,
return [self.title,self.gramps_id,self.main_loc.parish,self.main_loc.city,
self.main_loc.county,self.main_loc.state,self.main_loc.country,
self.title.upper(), self.main_loc.parish.upper(),
self.main_loc.city.upper(), self.main_loc.county.upper(),
self.main_loc.state.upper(), self.main_loc.country.upper()]
else:
return [self.title,self.handle,'','','','','',self.title.upper(), '','','','','']
return [self.title,self.gramps_id,'','','','','',
self.title.upper(), '','','','','']
#-------------------------------------------------------------------------
#
@ -636,23 +648,25 @@ class MediaObject(SourceNote):
self.mime = source.mime
self.desc = source.desc
self.handle = source.handle
self.gramps_id = source.gramps_id
self.thumb = source.thumb
for attr in source.attrlist:
self.attrlist.append(Attribute(attr))
else:
self.handle = ""
self.gramps_id = ""
self.path = ""
self.mime = ""
self.desc = ""
self.thumb = None
def serialize(self):
return (self.handle, self.path, self.mime, self.desc, self.attrlist,
self.source_list, self.note)
return (self.handle, self.gramps_id, self.path, self.mime,
self.desc, self.attrlist, self.source_list, self.note)
def unserialize(self,data):
(self.handle, self.path, self.mime, self.desc, self.attrlist,
self.source_list, self.note) = data
(self.handle, self.gramps_id, self.path, self.mime, self.desc,
self.attrlist, self.source_list, self.note) = data
def set_handle(self,handle):
"""Sets the database handle for the place object"""
@ -662,6 +676,14 @@ class MediaObject(SourceNote):
"""Returns the database handle for the place object"""
return self.handle
def set_gramps_id(self,gramps_id):
"""Sets the GRAMPS ID for the place object"""
self.gramps_id = gramps_id
def get_gramps_id(self):
"""Returns the GRAMPS ID for the place object"""
return self.gramps_id
def set_mime_type(self,type):
self.mime = type
@ -1267,6 +1289,14 @@ class Person(SourceNote):
"""returns the database handle for the Person"""
return self.handle
def set_gramps_id(self,gramps_id):
"""Sets the GRAMPS ID for the place object"""
self.gramps_id = gramps_id
def get_gramps_id(self):
"""Returns the GRAMPS ID for the place object"""
return self.gramps_id
def set_nick_name(self,name):
"""sets the nickname for the Person"""
self.nickname = name
@ -1617,6 +1647,7 @@ class Event(DataObj):
self.name = source.name
self.cause = source.cause
self.handle = source.handle
self.gramps_id = source.gramps_id
self.media_list = [MediaRef(media_id) for media_id in source.media_list]
try:
if source.witness:
@ -1632,7 +1663,8 @@ class Event(DataObj):
self.name = ""
self.cause = ""
self.witness = None
self.handle = None
self.handle = ""
self.gramps_id = ""
self.media_list = []
def clone(self,source):
@ -1642,6 +1674,7 @@ class Event(DataObj):
self.name = source.name
self.cause = source.cause
self.handle = source.handle
self.gramps_id = source.gramps_id
self.private = source.private
self.source_list = source.source_list[:]
self.note = source.note
@ -1655,12 +1688,12 @@ class Event(DataObj):
self.witness = None
def serialize(self):
return (self.handle, self.name, self.date, self.description,
return (self.handle, self.gramps_id, self.name, self.date, self.description,
self.place, self.cause, self.private, self.source_list,
self.note, self.witness, self.media_list)
def unserialize(self,data):
(self.handle, self.name, self.date, self.description,
(self.handle, self.gramps_id, self.name, self.date, self.description,
self.place, self.cause, self.private, self.source_list,
self.note, self.witness, self.media_list) = data
@ -1684,6 +1717,14 @@ class Event(DataObj):
"""Returns the database handle for the place object"""
return self.handle
def set_gramps_id(self,gramps_id):
"""Sets the GRAMPS ID for the place object"""
self.gramps_id = gramps_id
def get_gramps_id(self):
"""Returns the GRAMPS ID for the place object"""
return self.gramps_id
def get_witness_list(self):
return self.witness
@ -1865,6 +1906,7 @@ class Family(SourceNote):
self.type = const.FAMILY_MARRIED
self.event_list = []
self.handle = ""
self.gramps_id = ""
self.media_list = []
self.attribute_list = []
self.lds_seal = None
@ -1872,20 +1914,16 @@ class Family(SourceNote):
def serialize(self):
return (self.handle, self.father_handle, self.mother_handle,
return (self.handle, self.gramps_id, self.father_handle, self.mother_handle,
self.child_list, self.type, self.event_list,
self.media_list, self.attribute_list, self.lds_seal,
self.complete,
self.source_list,
self.note)
self.complete, self.source_list, self.note)
def unserialize(self, data):
(self.handle, self.father_handle, self.mother_handle,
(self.handle, self.gramps_id, self.father_handle, self.mother_handle,
self.child_list, self.type, self.event_list,
self.media_list, self.attribute_list, self.lds_seal,
self.complete,
self.source_list,
self.note) = data
self.complete, self.source_list, self.note) = data
def set_complete(self,val):
self.complete = val
@ -1924,6 +1962,14 @@ class Family(SourceNote):
"""returns the database handle for the Family"""
return unicode(self.handle)
def set_gramps_id(self,gramps_id):
"""Sets the GRAMPS ID for the place object"""
self.gramps_id = gramps_id
def get_gramps_id(self):
"""Returns the GRAMPS ID for the place object"""
return self.gramps_id
def set_relationship(self,type):
"""assigns a string indicating the relationship between the
father and the mother"""
@ -2049,18 +2095,19 @@ class Source:
self.note = Note()
self.media_list = []
self.handle = ""
self.gramps_id = ""
self.abbrev = ""
def serialize(self):
return (self.handle,self.title,self.author,self.pubinfo,
self.note,self.media_list,self.abbrev)
return (self.handle, self.gramps_id, self.title, self.author,
self.pubinfo, self.note, self.media_list, self.abbrev)
def unserialize(self,data):
(self.handle,self.title,self.author,self.pubinfo,
self.note,self.media_list,self.abbrev) = data
(self.handle, self.gramps_id, self.title, self.author,
self.pubinfo, self.note, self.media_list, self.abbrev) = data
def get_display_info(self):
return [self.title,self.handle,self.author,self.title.upper(),self.author.upper()]
return [self.title,self.gramps_id,self.author,self.title.upper(),self.author.upper()]
def set_handle(self,handle):
"""sets the gramps' ID for the Source instance"""
@ -2070,6 +2117,14 @@ class Source:
"""returns the gramps' ID of the Source instance"""
return self.handle
def set_gramps_id(self,gramps_id):
"""Sets the GRAMPS ID for the place object"""
self.gramps_id = gramps_id
def get_gramps_id(self):
"""Returns the GRAMPS ID for the place object"""
return self.gramps_id
def add_media_reference(self,media_id):
"""Adds a MediaObject object to the Source instance's image list"""
self.media_list.append(media_id)

View File

@ -186,7 +186,7 @@ class SelectChild:
slist = {}
for f in self.person.get_parent_family_handle_list():
if f:
family = self.db.find_family_no_map(f[0])
family = self.db.find_family_from_handle(f[0])
if family.get_father_handle():
slist[family.get_father_handle()] = 1
elif family.get_mother_handle():

View File

@ -42,6 +42,8 @@ import const
from QuestionDialog import QuestionDialog
_HANDLE_COL = 5
#-------------------------------------------------------------------------
#
# internationalization
@ -131,7 +133,7 @@ class SourceView:
def button_press(self,obj,event):
if event.type == gtk.gdk._2BUTTON_PRESS and event.button == 1:
store,iter = self.selection.get_selected()
id = store.get_value(iter,1)
id = store.get_value(iter,_HANDLE_COL)
source = self.parent.db.get_source_from_handle(id)
EditSource.EditSource(source,self.parent.db,self.parent,
self.topWindow,self.update_display)
@ -182,7 +184,7 @@ class SourceView:
if not iter:
return
id = store.get_value(iter,1)
id = store.get_value(iter,_HANDLE_COL)
source = self.parent.db.get_source_from_handle(id)
if self.is_used(source):
@ -249,7 +251,7 @@ class SourceView:
def on_edit_clicked(self,obj):
list_store, iter = self.selection.get_selected()
if iter:
id = list_store.get_value(iter,1)
id = list_store.get_value(iter,_HANDLE_COL)
source = self.parent.db.get_source_from_handle(id)
EditSource.EditSource(source, self.parent.db, self.parent,
self.topWindow, self.update_display)

View File

@ -138,7 +138,7 @@
<applyto>/apps/gramps/preferences/oprefix</applyto>
<owner>gramps</owner>
<type>string</type>
<default>F%04d</default>
<default>O%04d</default>
<locale name="C">
<short>Default media object GRAMPS ID pattern</short>
<long>The new GRAMPS IDs for the media object are generated
@ -151,7 +151,7 @@
<applyto>/apps/gramps/preferences/pprefix</applyto>
<owner>gramps</owner>
<type>string</type>
<default>F%04d</default>
<default>P%04d</default>
<locale name="C">
<short>Default place GRAMPS ID pattern</short>
<long>The new GRAMPS IDs for the place are generated according
@ -164,7 +164,7 @@
<applyto>/apps/gramps/preferences/sprefix</applyto>
<owner>gramps</owner>
<type>string</type>
<default>F%04d</default>
<default>S%04d</default>
<locale name="C">
<short>Default source GRAMPS ID pattern</short>
<long>The new GRAMPS IDs for the source are generated according

View File

@ -1427,10 +1427,7 @@ class Gramps:
def new_after_edit(self,epo,trans):
if epo:
if epo.person.get_handle() == "":
self.db.add_person(epo.person,trans)
else:
self.db.add_person_no_map(epo.person,epo.person.get_handle(),trans)
self.change_active_person(epo.person)
self.people_view.add_to_person_list(epo.person)
if self.views.get_current_page() in [FAMILY_VIEW1,FAMILY_VIEW2]: