def _post_load_newdb(self, filename, title=None): """Called after load of a new database.""" if not filename: return if filename[-1] == os.path.sep: filename = filename[:-1] name = os.path.basename(filename) self.dbstate.db.db_name = title if title: name = title # apply preferred researcher if loaded file has none res = self.dbstate.db.get_researcher() owner = get_researcher() # If the DB Owner Info is empty and # [default] Researcher is not empty and # database is empty, then copy default researcher to DB owner if res.is_empty() and not owner.is_empty() and self.dbstate.db.get_total() == 0: self.dbstate.db.set_researcher(owner) name_displayer.clear_custom_formats() name_displayer.set_name_format(self.dbstate.db.name_formats) fmt_default = config.get("preferences.name-format") name_displayer.set_default_format(fmt_default) self.dbstate.db.enable_signals() self.dbstate.signal_change() config.set("paths.recent-file", filename) recent_files(filename, name)
def parse(self, ifile, linecount=0, personcount=0): """ Parse the xml file :param ifile: must be a file handle that is already open, with position at the start of the file """ with DbTxn(_("Gramps XML import"), self.db, batch=False) as self.trans: self.set_total(linecount) self.p = ParserCreate() self.p.StartElementHandler = self.startElement self.p.EndElementHandler = self.endElement self.p.CharacterDataHandler = self.characters self.p.ParseFile(ifile) if len(self.name_formats) > 0: # add new name formats to the existing table self.db.name_formats += self.name_formats # Register new formats name_displayer.set_name_format(self.db.name_formats) self.db.set_researcher(self.owner) if self.home is not None: person = self.db.get_person_from_handle(self.home) self.db.set_default_person_handle(person.handle) #set media path, this should really do some parsing to convert eg # windows path to unix ? if self.mediapath: oldpath = self.db.get_mediapath() if not oldpath: self.db.set_mediapath(self.mediapath) elif not oldpath == self.mediapath: ErrorDialog(_("Could not change media path"), _("The opened file has media path %s, which conflicts " "with the media path of the family tree you import " "into. The original media path has been retained. " "Copy the files to a correct directory or change the " "media path in the Preferences." ) % self.mediapath ) for key in self.func_map.keys(): del self.func_map[key] del self.func_map del self.func_list del self.p return self.info
def _post_load_newdb_nongui(self, filename, title=None): """ Called after a new database is loaded. """ if not filename: return if filename[-1] == os.path.sep: filename = filename[:-1] name = os.path.basename(filename) self.dbstate.db.db_name = title if title: name = title # This method is for UI stuff when the database has changed. # Window title, recent files, etc related to new file. self.dbstate.db.set_save_path(filename) # apply preferred researcher if loaded file has none res = self.dbstate.db.get_researcher() owner = get_researcher() # If the DB Owner Info is empty and # [default] Researcher is not empty and # database is empty, then copy default researcher to DB owner if (res.is_empty() and not owner.is_empty() and self.dbstate.db.get_total() == 0): self.dbstate.db.set_researcher(owner) name_displayer.set_name_format(self.dbstate.db.name_formats) fmt_default = config.get('preferences.name-format') name_displayer.set_default_format(fmt_default) self.dbstate.db.enable_signals() self.dbstate.signal_change() config.set('paths.recent-file', filename) recent_files(filename, name) self.file_loaded = True