* src/FamilyView.py: add/edit/delete buttons for families added,

add support for no families or parents
* src/GrampsDb/_GrampsBSDDB.py: txn handling for get_handles
* src/GrampsDb/_GrampsDbBase.py: txn handling for get_handles
* src/GrampsDb/_GrampsGEDDB.py: txn handling for get_handles
* src/GrampsDb/_GrampsXMLDb.py: txn handling for get_handles


svn: r5707
This commit is contained in:
Don Allingham 2006-01-10 22:28:09 +00:00
parent 3e12c752d8
commit c80d13f750
6 changed files with 72 additions and 30 deletions

View File

@ -1,6 +1,11 @@
2006-01-10 Don Allingham <don@gramps-project.org>
* src/FamilyView.py: add/edit/delete buttons for families added
* src/FamilyView.py: add/edit/delete buttons for families added,
add support for no families or parents
* src/GrampsDb/_GrampsBSDDB.py: txn handling for get_handles
* src/GrampsDb/_GrampsDbBase.py: txn handling for get_handles
* src/GrampsDb/_GrampsGEDDB.py: txn handling for get_handles
* src/GrampsDb/_GrampsXMLDb.py: txn handling for get_handles
2006-01-10 Alex Roitman <shura@gramps-project.org>
* src/Assistant.py: Cosmeti c changes.
* src/Exporter.py: Start converting to Assistant.

View File

@ -262,14 +262,22 @@ class FamilyView(PageView.PersonNavView):
self.row = 5
family_handle_list = person.get_parent_family_handle_list()
for (family_handle,mrel,frel) in family_handle_list:
if family_handle:
self.write_parents(family_handle)
if family_handle_list:
for (family_handle,mrel,frel) in family_handle_list:
if family_handle:
self.write_parents(family_handle)
else:
self.write_label("%s:" % _('Parents'),None)
self.row += 1
family_handle_list = person.get_family_handle_list()
for family_handle in family_handle_list:
if family_handle:
self.write_family(family_handle)
if family_handle_list:
for family_handle in family_handle_list:
if family_handle:
self.write_family(family_handle)
else:
self.write_label("%s:" % _('Family'),None)
self.row += 1
self.row = 1
self.write_title(person)
@ -303,8 +311,6 @@ class FamilyView(PageView.PersonNavView):
x0 -= 1
if x1 > 4:
x1 -= 1
if x0 == x1:
print d[0]
self.child.attach(d[0],x0,x1,d[3],d[4],d[5],d[6])
self.child.show_all()
@ -403,17 +409,22 @@ class FamilyView(PageView.PersonNavView):
self.attach.attach(MarkupLabel(msg),_LABEL_START,_LABEL_STOP,
self.row,self.row+1,gtk.SHRINK|gtk.FILL)
self.attach.attach(BasicLabel(family.gramps_id),_DATA_START,_DATA_STOP,
if family:
value = family.gramps_id
else:
value = ""
self.attach.attach(BasicLabel(value),_DATA_START,_DATA_STOP,
self.row,self.row+1,gtk.SHRINK|gtk.FILL)
hbox = gtk.HBox()
hbox.set_spacing(6)
add = IconButton(self.add_family,None,gtk.STOCK_ADD)
hbox.pack_start(add,False)
edit = IconButton(self.edit_family,family.handle,gtk.STOCK_EDIT)
hbox.pack_start(edit,False)
delete = IconButton(self.delete_family,family.handle,gtk.STOCK_REMOVE)
hbox.pack_start(delete,False)
if family:
edit = IconButton(self.edit_family,family.handle,gtk.STOCK_EDIT)
hbox.pack_start(edit,False)
delete = IconButton(self.delete_family,family.handle,gtk.STOCK_REMOVE)
hbox.pack_start(delete,False)
self.attach.attach(hbox,_BTN_START,_BTN_STOP,self.row,self.row+1)
self.row += 1
@ -532,12 +543,15 @@ class FamilyView(PageView.PersonNavView):
return p.get_title()
def write_marriage(self,family):
value = False
for event_ref in family.get_event_ref_list():
handle = event_ref.ref
event = self.dbstate.db.get_event_from_handle(handle)
etype = event.get_type()
if etype[0] == RelLib.Event.MARRIAGE:
self.write_event_ref(_('Marriage'),event)
value = True
return value
def write_event_ref(self, ename, event,start_col=_SDATA_START,stop_col=_SDATA_STOP):
if event:
@ -593,8 +607,8 @@ class FamilyView(PageView.PersonNavView):
self.attach.attach(BasicLabel(value),_PDTLS_START,
_PDTLS_STOP,self.row, self.row+1)
self.row += 1
self.write_relationship(family)
self.write_marriage(family)
if not self.write_marriage(family):
self.write_relationship(family)
child_list = family.get_child_handle_list()
label = _("Children")

View File

@ -133,6 +133,9 @@ class GrampsBSDDB(GrampsDbBase):
dbmap.open(name, dbname, db.DB_HASH,
db.DB_CREATE|db.DB_AUTO_COMMIT, 0666)
return dbmap
def _all_handles(self,table):
return table.keys(self.txn)
def get_person_cursor(self):
return GrampsBSDDBCursor(self.person_map,self.txn)
@ -244,7 +247,7 @@ class GrampsBSDDB(GrampsDbBase):
and self.metadata.get('version',0) < _DBVERSION
def load(self,name,callback,mode="w"):
if self.person_map:
if self.db_is_open:
self.close()
self.readonly = mode == "r"
@ -394,6 +397,7 @@ class GrampsBSDDB(GrampsDbBase):
self.bookmarks = []
self.genderStats = GenderStats(gstats)
self.db_is_open = True
return 1
def rebuild_secondary(self,callback=None):
@ -714,7 +718,7 @@ class GrampsBSDDB(GrampsDbBase):
self.close()
def close(self):
if self.person_map == None:
if not self.db_is_open:
return
self.name_group.close()
self.person_map.close()
@ -764,6 +768,7 @@ class GrampsBSDDB(GrampsDbBase):
self.surnames = None
self.env = None
self.metadata = None
self.db_is_open = False
def _del_person(self,handle):
self._delete_primary_from_reference_map(handle)

View File

@ -207,6 +207,7 @@ class GrampsDbBase(GrampsDBCallback):
self.lmap_index = 0
self.omap_index = 0
self.rmap_index = 0
self.db_is_open = False
self.family_event_names = sets.Set()
self.individual_event_names = sets.Set()
@ -336,7 +337,7 @@ class GrampsDbBase(GrampsDBCallback):
"""
Returns 1 if the database has been opened.
"""
return self.person_map != None
return self.db_is_open
def request_rebuild(self):
"""
@ -843,7 +844,10 @@ class GrampsDbBase(GrampsDBCallback):
"""
Returns the number of people currently in the databse.
"""
return len(self.person_map)
if self.db_is_open:
return len(self.person_map)
else:
return 0
def get_number_of_families(self):
"""
@ -881,12 +885,15 @@ class GrampsDbBase(GrampsDBCallback):
"""
return len(self.repository_map)
def _all_handles(self,table):
return table.keys()
def get_person_handles(self,sort_handles=True):
"""
Returns a list of database handles, one handle for each Person in
the database. If sort_handles is True, the list is sorted by surnames
"""
if self.person_map:
if self.db_is_open:
if sort_handles:
slist = []
cursor = self.get_person_cursor()
@ -898,7 +905,7 @@ class GrampsDbBase(GrampsDBCallback):
slist.sort()
return map(lambda x: x[1], slist)
else:
return self.person_map.keys()
return self._all_handles(self.person_map)
return []
def get_place_handles(self,sort_handles=True):
@ -920,7 +927,7 @@ class GrampsDbBase(GrampsDBCallback):
val = map(lambda x: x[1], slist)
return val
else:
return self.place_map.keys()
return self._all_handles(self.place_map)
return []
def get_source_handles(self,sort_handles=True):
@ -930,7 +937,7 @@ class GrampsDbBase(GrampsDBCallback):
Source title.
"""
if self.source_map:
handle_list = self.source_map.keys()
handle_list = self._all_handles(self.source_map)
if sort_handles:
handle_list.sort(self._sortbysource)
return handle_list
@ -942,7 +949,7 @@ class GrampsDbBase(GrampsDBCallback):
the database. If sort_handles is True, the list is sorted by title.
"""
if self.media_map:
handle_list = self.media_map.keys()
handle_list = self._all_handles(self.media_map)
if sort_handles:
handle_list.sort(self._sortbymedia)
return handle_list
@ -954,7 +961,7 @@ class GrampsDbBase(GrampsDBCallback):
the database.
"""
if self.event_map:
return self.event_map.keys()
return self._all_handles(self.event_map)
return []
def get_family_handles(self):
@ -963,7 +970,7 @@ class GrampsDbBase(GrampsDBCallback):
the database.
"""
if self.family_map:
return self.family_map.keys()
return self._all_handles(self.family_map)
return []
def get_repository_handles(self):
@ -972,7 +979,7 @@ class GrampsDbBase(GrampsDBCallback):
the database.
"""
if self.repository_map:
return self.repository_map.keys()
return self._all_handles(self.repository_map)
return []
def _validated_id_prefix(self, val, default):

View File

@ -45,16 +45,22 @@ class GrampsGEDDB(GrampsInMemDB):
GrampsInMemDB.__init__(self)
def load(self,name,callback, mode="w"):
if self.db_is_open:
self.close()
GrampsInMemDB.load(self,name,callback,mode)
ReadGedcom.importData(self,name,use_trans=False)
self.bookmarks = self.metadata.get('bookmarks')
if self.bookmarks == None:
self.bookmarks = []
self.db_is_open = True
return 1
def close(self):
if not self.db_is_open:
return
if not self.readonly and len(self.undodb) > 0:
writer = WriteGedcom.GedcomWriter(self,self.get_default_person())
writer.export_data(self.filename)
self.db_is_open = False

View File

@ -45,6 +45,8 @@ class GrampsXMLDB(GrampsInMemDB):
GrampsInMemDB.__init__(self)
def load(self,name,callback,mode="w"):
if self.db_is_open:
self.close()
GrampsInMemDB.load(self,name,callback,mode)
self.id_trans = {}
@ -53,9 +55,12 @@ class GrampsXMLDB(GrampsInMemDB):
self.bookmarks = self.metadata.get('bookmarks')
if self.bookmarks == None:
self.bookmarks = []
self.db_is_open = True
return 1
def close(self):
if not self.db_is_open:
return
if not self.readonly and len(self.undodb) > 0:
WriteXML.quick_write(self,self.filename)
self.db_is_open = False