diff --git a/src/DbPrompter.py b/src/DbPrompter.py index 9f12540bb..a98a383cd 100644 --- a/src/DbPrompter.py +++ b/src/DbPrompter.py @@ -37,12 +37,6 @@ import GrampsCfg import VersionControl from gettext import gettext as _ -try: - import ZODB - _zodb = 1 -except: - _zodb = 0 - #------------------------------------------------------------------------- # # DbPrompter @@ -73,19 +67,13 @@ class DbPrompter: }) self.new = opendb.get_widget("new") - self.zodb = opendb.get_widget("zodb") if self.want_new: self.new.set_active(1) - if _zodb: - self.zodb.show() def open_ok_clicked(self,obj): if self.new.get_active(): self.db.clear_database(0) self.save_as_activate() - elif self.zodb.get_active(): - self.db.clear_database(1) - self.save_as_activate() else: self.open_activate() Utils.destroy_passed_object(obj) diff --git a/src/PeopleView.py b/src/PeopleView.py index 1755f4895..7651cfc60 100644 --- a/src/PeopleView.py +++ b/src/PeopleView.py @@ -184,7 +184,9 @@ class PeopleView: self.DataFilter = class_init(qualifer) self.DataFilter.set_invert(invert_filter) self.model_used = {} + self.clear_person_tabs() self.apply_filter(self.person_tree) + self.goto_active_person() def add_to_person_list(self,person,change): key = person.getId() diff --git a/src/RelLib.py b/src/RelLib.py index 0645a1dab..de1fe821f 100644 --- a/src/RelLib.py +++ b/src/RelLib.py @@ -42,18 +42,6 @@ import GrampsCfg import sort import const -#------------------------------------------------------------------------- -# -# Attempt to load the ZODB libraries, otherwise provide alternates -# -#------------------------------------------------------------------------- -try: - from ZODB import Persistent -except ImportError: - class Persistent: - """Dummy class used if ZODB is not installed on the system""" - pass - #------------------------------------------------------------------------- # # Confidence levels @@ -74,16 +62,7 @@ CONF_VERY_LOW = 0 _id_reg = compile("%\d+d") -def extlist(lst): - """Returns a copy of the passed list""" - return lst[:] # Make a copy. - -def extmap(map): - """Returns a map""" - return map - - -class SourceNote(Persistent): +class SourceNote: """Base class for storing source references and notes""" def __init__(self,source=None): @@ -105,11 +84,10 @@ class SourceNote(Persistent): def addSourceRef(self,id) : """Set the source reference""" self.source_list.append(id) - self._p_changed = 1 def getSourceRefList(self) : """Return the source reference""" - return extlist(self.source_list) + return self.source_list def setSourceRefList(self,list) : """Replaces the source reference""" @@ -310,7 +288,7 @@ class Place(SourceNote): def getUrlList(self): """Return the list of URLs""" - return extlist(self.urls) + return self.urls def setUrlList(self,list): """Replace the current URL list with the new one""" @@ -319,7 +297,6 @@ class Place(SourceNote): def addUrl(self,url): """Add a URL to the URL list""" self.urls.append(url) - self._p_changed = 1 def setId(self,id): """Sets the gramps ID for the place object""" @@ -365,7 +342,7 @@ class Place(SourceNote): def get_alternate_locations(self): """Returns a list of alternate location information objects""" - return extlist(self.alt_loc) + return self.alt_loc def set_alternate_locations(self,list): """Replaces the current alternate location list with the new one""" @@ -375,16 +352,14 @@ class Place(SourceNote): """Adds a Location to the alternate location list""" if loc not in self.alt_loc: self.alt_loc.append(loc) - self._p_changed = 1 def addPhoto(self,photo): """Adds a Photo object to the place object's image list""" self.photoList.append(photo) - self._p_changed = 1 def getPhotoList(self): """Returns the list of Photo objects""" - return extlist(self.photoList) + return self.photoList def setPhotoList(self,list): """Sets the list of Photo objects""" @@ -407,7 +382,7 @@ class Place(SourceNote): else: return [self.title,self.id,'','','','','',self.title.upper(), '','','','',''] -class Researcher(Persistent): +class Researcher: """Contains the information about the owner of the database""" def __init__(self): @@ -472,7 +447,7 @@ class Researcher(Persistent): if email: self.email = strip(email) -class Location(Persistent): +class Location: """Provides information about a place, including city, county, state, and country. Multiple Location objects can represent the same place, since names of citys, countys, states, and even countries can change @@ -536,7 +511,7 @@ class Location(Persistent): """returns the country name of the Location object""" return self.country -class Note(Persistent): +class Note: """Provides general text information""" def __init__(self,text = ""): @@ -623,17 +598,16 @@ class Photo(SourceNote): but provides a means for XML users to attach other properties to the image""" self.attrlist.append(attr) - self._p_changed = 1 def getAttributeList(self): """returns the property list associated with the image""" - return extlist(self.attrlist) + return self.attrlist def setAttributeList(self,list): self.attrlist = list -class ObjectRef(Persistent): +class ObjectRef: """Object reference class""" def __init__(self,source=None): self.attrlist = [] @@ -692,17 +666,15 @@ class ObjectRef(Persistent): but provides a means for XML users to attach other properties to the image""" self.attrlist.append(attr) - self._p_changed = 1 def getAttributeList(self): """returns the property list associated with the image""" - return extlist(self.attrlist) + return self.attrlist def setAttributeList(self,list): """sets the property list associated with the image""" self.attrlist = list - class Attribute(DataObj): """Provides a simple key/value pair for describing properties. Used by the Person and Family objects to store descriptive information.""" @@ -982,7 +954,7 @@ class Name(DataObj): index = index + 1 return 1 -class Url(Persistent): +class Url: """Contains information related to internet Uniform Resource Locators, allowing gramps to store information about internet resources""" @@ -1111,7 +1083,7 @@ class Person(SourceNote): def getAlternateNames(self): """returns the list of alternate Names""" - return extlist(self.alternateNames) + return self.alternateNames def setAlternateNames(self,list): """changes the list of alternate names to the passed list""" @@ -1120,11 +1092,10 @@ class Person(SourceNote): def addAlternateName(self,name): """adds an alternate Name instance to the list""" self.alternateNames.append(name) - self._p_changed = 1 def getUrlList(self): """returns the list of URL instances""" - return extlist(self.urls) + return self.urls def setUrlList(self,list): """sets the list of URL instances to list""" @@ -1133,7 +1104,6 @@ class Person(SourceNote): def addUrl(self,url): """adds a URL instance to the list""" self.urls.append(url) - self._p_changed = 1 def setId(self,id): """sets the gramps ID for the Person""" @@ -1211,11 +1181,10 @@ class Person(SourceNote): def addPhoto(self,photo): """adds a Photo instance to the image list""" self.photoList.append(photo) - self._p_changed = 1 def getPhotoList(self): """returns the list of Photos""" - return extlist(self.photoList) + return self.photoList def setPhotoList(self,list): """Sets the list of Photo objects""" @@ -1224,11 +1193,10 @@ class Person(SourceNote): def addEvent(self,event): """adds an Event to the event list""" self.EventList.append(event) - self._p_changed = 1 def getEventList(self): """returns the list of Event instances""" - return extlist(self.EventList) + return self.EventList def setEventList(self,list): """sets the event list to the passed list""" @@ -1239,7 +1207,6 @@ class Person(SourceNote): families/marriages/partnerships in which the person is a parent or spouse""" self.FamilyList.append(family) - self._p_changed = 1 def setPreferred(self,family): if family in self.FamilyList: @@ -1249,7 +1216,7 @@ class Person(SourceNote): def getFamilyList(self) : """returns the list of Family instances in which the person is a parent or spouse""" - return extlist(self.FamilyList) + return self.FamilyList def clearFamilyList(self) : self.FamilyList = [] @@ -1259,22 +1226,19 @@ class Person(SourceNote): of marriages/partnerships""" if family in self.FamilyList: self.FamilyList.remove(family) - self._p_changed = 1 def addAddress(self,address): """adds the Address instance to the list of addresses""" self.addressList.append(address) - self._p_changed = 1 def removeAddress(self,address): """removes the Address instance from the list of addresses""" if address in self.addressList: self.addressList.remove(address) - self._p_changed = 1 def getAddressList(self): """returns the list of addresses""" - return extlist(self.addressList) + return self.addressList def setAddressList(self,list): """sets the address list to the specified list""" @@ -1283,17 +1247,15 @@ class Person(SourceNote): def addAttribute(self,attribute): """adds an Attribute instance to the attribute list""" self.attributeList.append(attribute) - self._p_changed = 1 def removeAttribute(self,attribute): """removes the specified Attribute instance from the attribute list""" if attribute in self.attributeList: self.attributeList.remove(attribute) - self._p_changed = 1 def getAttributeList(self): """returns the attribute list""" - return extlist(self.attributeList) + return self.attributeList def setAttributeList(self,list): """sets the attribute list to the specified list""" @@ -1302,13 +1264,12 @@ class Person(SourceNote): def getParentList(self): """returns the list of alternate Family instances, in which the Person is a child of the family, but not a natural child of both parents""" - return extlist(self.AltFamilyList) + return self.AltFamilyList def addAltFamily(self,family,mrel,frel): """adds a Family to the alternate family list, indicating the relationship to the mother (mrel) and the father (frel)""" self.AltFamilyList.append((family,mrel,frel)) - self._p_changed = 1 def clearAltFamilyList(self): self.AltFamilyList = [] @@ -1318,7 +1279,6 @@ class Person(SourceNote): for f in self.AltFamilyList[:]: if f[0] == family: self.AltFamilyList.remove(f) - self._p_changed = 1 return f else: return None @@ -1329,7 +1289,6 @@ class Person(SourceNote): for f in self.AltFamilyList[:]: if f[0] == family: self.AltFamilyList[index] = (family,mrel,frel) - self._p_changed = 1 index += 1 def has_family(self,family): @@ -1510,7 +1469,6 @@ class Event(DataObj): self.description = source.description self.name = source.name self.cause = source.cause - # old ZODB database may not have this element try: if source.witness: self.witness = source.witness[:] @@ -1654,7 +1612,7 @@ class Event(DataObj): """sets the Date object associated with the Event""" self.date = date -class Witness(Persistent): +class Witness: def __init__(self,type=Event.NAME,val="",comment=""): self.set_type(type) self.set_value(val) @@ -1721,17 +1679,15 @@ class Family(SourceNote): def addAttribute(self,attribute) : """adds an Attribute instance to the attribute list""" self.attributeList.append(attribute) - self._p_changed = 1 def removeAttribute(self,attribute): """removes the specified Attribute instance from the attribute list""" if attribute in self.attributeList: self.attributeList.remove(attribute) - self._p_changed = 1 def getAttributeList(self) : """returns the attribute list""" - return extlist(self.attributeList) + return self.attributeList def setAttributeList(self,list) : """sets the attribute list to the specified list""" @@ -1786,7 +1742,6 @@ class Family(SourceNote): to the child list""" if person not in self.Children: self.Children.append(person) - self._p_changed = 1 if person.getAncestor(): if self.Father: self.Father.setAncestor(1) @@ -1797,7 +1752,6 @@ class Family(SourceNote): """removes the specified Person from the child list""" if person in self.Children: self.Children.remove(person) - self._p_changed = 1 if person.getAncestor(): if self.Father: self.Father.setAncestor(0) @@ -1806,7 +1760,7 @@ class Family(SourceNote): def getChildList(self): """returns the list of children""" - return extlist(self.Children) + return self.Children def setChildList(self, list): """sets the list of children""" @@ -1829,11 +1783,10 @@ class Family(SourceNote): def addEvent(self,event): """adds an Event to the event list""" self.EventList.append(event) - self._p_changed = 1 def getEventList(self) : """returns the list of Event instances""" - return extlist(self.EventList) + return self.EventList def setEventList(self,list) : """sets the event list to the passed list""" @@ -1842,11 +1795,10 @@ class Family(SourceNote): def addPhoto(self,photo): """Adds a Photo object to the Family instance's image list""" self.photoList.append(photo) - self._p_changed = 1 def getPhotoList(self): """Returns the list of Photo objects""" - return extlist(self.photoList) + return self.photoList def setPhotoList(self,list): """Sets the list of Photo objects""" @@ -1858,7 +1810,7 @@ class Family(SourceNote): return 1 return None -class Source(Persistent): +class Source: """A record of a source of information""" def __init__(self): @@ -1886,11 +1838,10 @@ class Source(Persistent): def addPhoto(self,photo): """Adds a Photo object to the Source instance's image list""" self.photoList.append(photo) - self._p_changed = 1 def getPhotoList(self): """Returns the list of Photo objects""" - return extlist(self.photoList) + return self.photoList def setPhotoList(self,list): """Sets the list of Photo objects""" @@ -1950,7 +1901,7 @@ class Source(Persistent): of the Source""" return self.callno -class SourceRef(Persistent): +class SourceRef: """Source reference, containing detailed information about how a referenced source relates to it""" @@ -2110,7 +2061,7 @@ class GenderStats: return Person.unknown -class GrampsDB(Persistent): +class GrampsDB: """GRAMPS database object. This object is a base class for other objects.""" @@ -2307,7 +2258,7 @@ class GrampsDB(Persistent): def getPersonMap(self): """returns a map of gramps's IDs to Person instances""" - return extmap(self.personMap) + return self.personMap def setPersonMap(self,map): """sets the map of gramps's IDs to Person instances""" @@ -2316,7 +2267,7 @@ class GrampsDB(Persistent): def getPlaceMap(self): """returns a map of gramps's IDs to Place instances""" - return extmap(self.placeMap) + return self.placeMap def setPlaceMap(self,map): """sets the map of gramps's IDs to Place instances""" @@ -2324,7 +2275,7 @@ class GrampsDB(Persistent): def getFamilyMap(self): """returns a map of gramps's IDs to Family instances""" - return extmap(self.familyMap) + return self.familyMap def getFamily(self,id): """returns a map of gramps's IDs to Family instances""" @@ -2336,8 +2287,7 @@ class GrampsDB(Persistent): def getSourceMap(self): """returns a map of gramps's IDs to Source instances""" - return extmap(self.sourceMap) - + return self.sourceMap def getObjectMap(self): """returns a map of gramps's IDs to Object instances""" diff --git a/src/gramps.glade b/src/gramps.glade index 699c914ca..d74607600 100644 --- a/src/gramps.glade +++ b/src/gramps.glade @@ -6357,7 +6357,7 @@ GTK_WIN_POS_NONE True 300 - 200 + 150 True False gramps.png @@ -6476,25 +6476,6 @@ False - - - - 5 - True - Create a new _ZODB database - True - GTK_RELIEF_NORMAL - False - False - True - existing - - - 0 - False - False - - 0 diff --git a/src/gramps_main.py b/src/gramps_main.py index 57bc77ee5..8512088b3 100755 --- a/src/gramps_main.py +++ b/src/gramps_main.py @@ -74,12 +74,6 @@ import VersionControl import ReadXML import GrampsXML -try: - import GrampsZODB - zodb_ok = 1 -except: - zodb_ok = 0 - #------------------------------------------------------------------------- # # Constants @@ -121,7 +115,6 @@ class Gramps: self.place_loaded = 0 self.bookmarks = None self.c_details = 6 - self.id2col = {} self.cl = 0 gtk.rc_parse(const.gtkrcFile) @@ -134,7 +127,7 @@ class Gramps: "security risks.")) # This will never contain data - It will be replaced by either - # a GrampsXML or GrampsZODB + # a GrampsXML self.history = [] self.mhistory = [] @@ -685,7 +678,8 @@ class Gramps: if self.find_person: self.find_person.show() else: - self.find_person = Find.FindPerson(self.find_goto_person,self.db,self.id2col) + self.find_person = Find.FindPerson(self.find_goto_person,self.db, + self.people_view.id2col) def on_findname_activate(self,obj): """Display the find box""" @@ -849,7 +843,7 @@ class Gramps: import DbPrompter DbPrompter.DbPrompter(self,1,self.topWindow) - def clear_database(self,zodb=1): + def clear_database(self): """Clear out the database if permission was granted""" const.personalEvents = const.init_personal_event_list() const.personalAttributes = const.init_personal_attribute_list() @@ -864,12 +858,7 @@ class Gramps: self.people_view.clear_person_tabs() - if zodb == 1: - self.db = GrampsZODB.GrampsZODB() - elif zodb == 2: - self.db = RelLib.GrampsDB() - else: - self.db = GrampsXML.GrampsXML() + self.db = GrampsXML.GrampsXML() self.db.set_iprefix(GrampsCfg.iprefix) self.db.set_oprefix(GrampsCfg.oprefix) self.db.set_fprefix(GrampsCfg.fprefix) @@ -958,7 +947,7 @@ class Gramps: return filename = os.path.normpath(os.path.abspath(filename)) - self.clear_database(0) + self.clear_database() if getoldrev.get_active(): vc = VersionControl.RcsVersionControl(filename) @@ -1028,10 +1017,10 @@ class Gramps: self.displayError(_("Database could not be opened"), _("%s is not a directory.") % filename + ' ' + \ _("You should select a directory that contains a " - "data.gramps file or a gramps.zodb file.")) + "data.gramps file.")) return - self.clear_database(2) + self.clear_database() if self.load_database(filename) == 1: if filename[-1] == '/': filename = filename[:-1] @@ -1153,7 +1142,7 @@ class Gramps: self.displayError(_("Database could not be opened"), _("%s is not a directory.") % filename + ' ' + \ _("You should select a directory that contains a " - "data.gramps file or a gramps.zodb file.")) + "data.gramps file.")) return else: try: @@ -1432,7 +1421,6 @@ class Gramps: self.db.new() self.active_person = None self.place_loaded = 0 - self.id2col = {} self.read_file(file) Utils.clearModified() Utils.clear_timer() @@ -1700,11 +1688,7 @@ class Gramps: def load_database(self,name): filename = "%s/%s" % (name,const.xmlFile) - if not os.path.isfile(filename) and zodb_ok: - filename = "%s/%s" % (name,const.zodbFile) - self.clear_database(1) - else: - self.clear_database(0) + self.clear_database() self.status_text(_("Loading %s...") % name) if self.db.load(filename,self.load_progress) == 0: