# # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2006 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 # # $Id$ #------------------------------------------------------------------------- # # load GRAMPS libraries # #------------------------------------------------------------------------- import RelLib #------------------------------------------------------------------------- # # Collection of standard types for various kinds of objects # #------------------------------------------------------------------------- child_relations = ( (RelLib.Person.CHILD_BIRTH , "Birth"), (RelLib.Person.CHILD_ADOPTED , "Adopted"), (RelLib.Person.CHILD_STEPCHILD , "Stepchild"), (RelLib.Person.CHILD_SPONSORED , "Sponsored"), (RelLib.Person.CHILD_FOSTER , "Foster"), (RelLib.Person.CHILD_UNKNOWN , "Unknown"), ) events = ( # Family events (RelLib.Event.UNKNOWN , "Unknown"), (RelLib.Event.MARRIAGE , "Marriage"), (RelLib.Event.MARR_SETTL , "Marriage Settlement"), (RelLib.Event.MARR_LIC , "Marriage License"), (RelLib.Event.MARR_CONTR , "Marriage Contract"), (RelLib.Event.MARR_BANNS , "Marriage Banns"), (RelLib.Event.ENGAGEMENT , "Engagement"), (RelLib.Event.DIVORCE , "Divorce"), (RelLib.Event.DIV_FILING , "Divorce Filing"), (RelLib.Event.ANNULMENT , "Annulment"), (RelLib.Event.MARR_ALT , "Alternate Marriage"), # Personal events (RelLib.Event.UNKNOWN , "Unknown"), (RelLib.Event.ADOPT , "Adopted"), (RelLib.Event.BIRTH , "Birth"), (RelLib.Event.DEATH , "Death"), (RelLib.Event.ADULT_CHRISTEN , "Adult Christening"), (RelLib.Event.BAPTISM , "Baptism"), (RelLib.Event.BAR_MITZVAH , "Bar Mitzvah"), (RelLib.Event.BAS_MITZVAH , "Bas Mitzvah"), (RelLib.Event.BLESS , "Blessing"), (RelLib.Event.BURIAL , "Burial"), (RelLib.Event.CAUSE_DEATH , "Cause Of Death"), (RelLib.Event.CENSUS , "Census"), (RelLib.Event.CHRISTEN , "Christening"), (RelLib.Event.CONFIRMATION , "Confirmation"), (RelLib.Event.CREMATION , "Cremation"), (RelLib.Event.DEGREE , "Degree"), (RelLib.Event.DIV_FILING , "Divorce Filing"), (RelLib.Event.EDUCATION , "Education"), (RelLib.Event.ELECTED , "Elected"), (RelLib.Event.EMIGRATION , "Emigration"), (RelLib.Event.FIRST_COMMUN , "First Communion"), (RelLib.Event.IMMIGRATION , "Immigration"), (RelLib.Event.GRADUATION , "Graduation"), (RelLib.Event.MED_INFO , "Medical Information"), (RelLib.Event.MILITARY_SERV , "Military Service"), (RelLib.Event.NATURALIZATION , "Naturalization"), (RelLib.Event.NOB_TITLE , "Nobility Title"), (RelLib.Event.NUM_MARRIAGES , "Number of Marriages"), (RelLib.Event.OCCUPATION , "Occupation"), (RelLib.Event.ORDINATION , "Ordination"), (RelLib.Event.PROBATE , "Probate"), (RelLib.Event.PROPERTY , "Property"), (RelLib.Event.RELIGION , "Religion"), (RelLib.Event.RESIDENCE , "Residence"), (RelLib.Event.RETIREMENT , "Retirement"), (RelLib.Event.WILL , "Will"), ) attributes = ( (RelLib.Attribute.UNKNOWN , "Unknown"), (RelLib.Attribute.CASTE , "Caste"), (RelLib.Attribute.DESCRIPTION , "Description"), (RelLib.Attribute.ID , "Identification Number"), (RelLib.Attribute.NATIONAL , "National Origin"), (RelLib.Attribute.NUM_CHILD , "Number of Children"), (RelLib.Attribute.SSN , "Social Security Number"), ) family_relations = ( (RelLib.Family.MARRIED , "Married"), (RelLib.Family.UNMARRIED , "Unmarried"), (RelLib.Family.CIVIL_UNION , "Civil Union"), (RelLib.Family.UNKNOWN , "Unknown"), ) name_types = ( (RelLib.Name.UNKNOWN , "Unknown"), (RelLib.Name.AKA , "Also Known As"), (RelLib.Name.BIRTH , "Birth Name"), (RelLib.Name.MARRIED , "Married Name"), ) source_media_types = ( (RelLib.RepoRef.UNKNOWN , "Unknown"), (RelLib.RepoRef.AUDIO , "Audio"), (RelLib.RepoRef.BOOK , "Book"), (RelLib.RepoRef.CARD , "Card"), (RelLib.RepoRef.ELECTRONIC , "Electronic"), (RelLib.RepoRef.FICHE , "Fiche"), (RelLib.RepoRef.FILM , "Film"), (RelLib.RepoRef.MAGAZINE , "Magazine"), (RelLib.RepoRef.MANUSCRIPT , "Manuscript"), (RelLib.RepoRef.MAP , "Map"), (RelLib.RepoRef.NEWSPAPER , "Newspaper"), (RelLib.RepoRef.PHOTO , "Photo"), (RelLib.RepoRef.TOMBSTONE , "Tombstone"), (RelLib.RepoRef.VIDEO , "Video"), ) event_roles = ( (RelLib.EventRef.UNKNOWN , "Unknown"), (RelLib.EventRef.PRIMARY , "Primary"), (RelLib.EventRef.CLERGY , "Clergy"), (RelLib.EventRef.CELEBRANT , "Celebrant"), (RelLib.EventRef.AIDE , "Aide"), (RelLib.EventRef.BRIDE , "Bride"), (RelLib.EventRef.GROOM , "Groom"), (RelLib.EventRef.WITNESS , "Witness"), (RelLib.EventRef.FAMILY , "Family"), ) repository_types = ( (RelLib.Repository.UNKNOWN , "Unknown"), (RelLib.Repository.LIBRARY , "Library"), (RelLib.Repository.CEMETERY , "Cemetery"), (RelLib.Repository.CHURCH , "Church"), (RelLib.Repository.ARCHIVE , "Archive"), (RelLib.Repository.ALBUM , "Album"), (RelLib.Repository.WEBSITE , "Web site"), (RelLib.Repository.BOOKSTORE , "Bookstore"), (RelLib.Repository.COLLECTION , "Collection"), (RelLib.Repository.SAFE , "Safe"), ) marker_types = ( (RelLib.PrimaryObject.MARKER_NONE , ""), (RelLib.PrimaryObject.MARKER_COMPLETE , "complete"), (RelLib.PrimaryObject.MARKER_TODO , "todo"), ) url_types = ( (RelLib.Url.UNKNOWN , "Unknown"), (RelLib.Url.EMAIL , "Email"), (RelLib.Url.WEB_HOME , "Home"), (RelLib.Url.WEB_SEARCH , "Search"), (RelLib.Url.WEB_FTP , "FTP"), ) # mapping from the tuple collection to the appropriate CUSTOM integer custom_types = { child_relations : RelLib.Person.CHILD_CUSTOM, events : RelLib.Event.CUSTOM, attributes : RelLib.Attribute.CUSTOM, family_relations : RelLib.Family.CUSTOM, name_types : RelLib.Name.CUSTOM, source_media_types : RelLib.RepoRef.CUSTOM, event_roles : RelLib.EventRef.CUSTOM, repository_types : RelLib.Repository.CUSTOM, marker_types : RelLib.PrimaryObject.MARKER_CUSTOM, url_types : RelLib.Url.CUSTOM, } def str_for_xml(tuples,the_tuple): """ This function checks the_tuple against the collection of tuples and returns the string to store in the XML file. """ # use list comprehension to quickly find a match, if any match_list = [ item for item in tuples if item[0] == the_tuple[0] ] # If match_list is not empty, then we have got a match, # so we simply return the string of that standard item if match_list: return match_list[0][1] # empty match_list means there's nothing with that integer, # so we simply return the string from the_tuple else: return the_tuple[1] def tuple_from_xml(tuples,the_str): """ This function checks the_str against the collection of tuples and returns the tuple to use for the type internally. """ # use list comprehension to quickly find a match, if any match_list = [ item for item in tuples if item[1] == the_str ] # If match_list is not empty, then we have got a match, # so we return the tuple made from the only item in the list. if match_list: return (match_list[0][0],'') # empty match_list means there's nothing with that string, # so we return the tuple of custom type and the original string else: return (custom_types[tuples],the_str)