def __init__(self, database, options, user): """ Create the Timeline object that produces the report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - instance of gen.user.User() This report needs the following parameters (class variables) that come in the options class. filter - Filter to be applied to the people of the database. The option class carries its number, and the function returning the list of filters. sortby - Sorting method to be used. """ Report.__init__(self, database, options, user) self._user = user menu = options.menu self.filter = menu.get_option_by_name('filter').get_filter() self._lang = options.menu.get_option_by_name('trans').get_value() self.set_locale(self._lang) name_format = menu.get_option_by_name("name_format").get_value() if name_format != 0: self._name_display.set_default_format(name_format) sort_func_num = menu.get_option_by_name('sortby').get_value() sort_functions = _get_sort_functions(Sort(database)) self.sort_name = sort_functions[sort_func_num][0] self.sort_func = sort_functions[sort_func_num][1] self.calendar = config.get('preferences.calendar-format-report')
def add_menu_options(self, menu): category_name = _("Report Options") self.__filter = FilterOption(_("Filter"), 0) self.__filter.set_help( _("Determines what people are included in the report")) menu.add_option(category_name, "filter", self.__filter) self.__filter.connect('value-changed', self.__filter_changed) self.__pid = PersonOption(_("Filter Person")) self.__pid.set_help(_("The center person for the filter")) menu.add_option(category_name, "pid", self.__pid) self.__pid.connect('value-changed', self.__update_filters) self.__update_filters() stdoptions.add_name_format_option(menu, category_name) sortby = EnumeratedListOption(_('Sort by'), 0) idx = 0 for item in _get_sort_functions(Sort(self.__db)): sortby.add_item(idx, item[0]) idx += 1 sortby.set_help(_("Sorting method to use")) menu.add_option(category_name, "sortby", sortby) stdoptions.add_private_data_option(menu, category_name) stdoptions.add_localization_option(menu, category_name)
def __init__(self, database, options_class, user): Report.__init__(self, database, options_class, user) menu = options_class.menu places = menu.get_option_by_name('places').get_value() self.reporttype = menu.get_option_by_name('reporttype').get_value() self.incpriv = menu.get_option_by_name('incpriv').get_value() #self.incliving = menu.get_option_by_name('incliving').get_value() if self.incpriv: self.database = database else: self.database = PrivateProxyDb(database) #self.database = LivingProxyDb(database, LivingProxyDb.MODE_EXCLUDE_ALL) filter_option = menu.get_option_by_name('filter') self.filter = filter_option.get_filter() self.sort = Sort(self.database) if self.filter.get_name() != '': # Use the selected filter to provide a list of place handles plist = self.database.iter_place_handles() self.place_handles = self.filter.apply(self.database, plist) else: # Use the place handles selected without a filter self.place_handles = self.__get_place_handles(places) self.place_handles.sort(key=self.sort.by_place_title_key)
def add_menu_options(self, menu): """ Define the options for the menu. """ category_name = _("Tool Options") self.__filter = FilterOption(_("Filter"), 0) self.__filter.set_help(_("Select the people to sort")) menu.add_option(category_name, "filter", self.__filter) self.__filter.connect('value-changed', self.__filter_changed) self.__pid = PersonOption(_("Filter Person")) self.__pid.set_help(_("The center person for the filter")) menu.add_option(category_name, "pid", self.__pid) self.__pid.connect('value-changed', self.__update_filters) self.__update_filters() sort_by = EnumeratedListOption(_('Sort by'), 0) idx = 0 for item in _get_sort_functions(Sort(self.__db)): sort_by.add_item(idx, item[0]) idx += 1 sort_by.set_help(_("Sorting method to use")) menu.add_option(category_name, "sort_by", sort_by) sort_desc = BooleanOption(_("Sort descending"), False) sort_desc.set_help(_("Set the sort order")) menu.add_option(category_name, "sort_desc", sort_desc) family_events = BooleanOption(_("Include family events"), True) family_events.set_help(_("Sort family events of the person")) menu.add_option(category_name, "family_events", family_events)
def __init__(self, database, options, user): """ Create the PlaceFamilyReport object produces the PlaceFamily report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - instance of a gen.user.User class This report needs the following parameters (class variables) that come in the options class. places - List of places to report on. # placeformat - Format of Place to display incpriv - Whether to include private data showgodparents - Whether to include and show godparents """ Report.__init__(self, database, options, user) self._user = user menu = options.menu places = menu.get_option_by_name('places').get_value() self.pl_format = menu.get_option_by_name('placeformat').get_value() #U self.placeformat = get_value('placeformat') self.incpriv = menu.get_option_by_name('incpriv').get_value() self.showgodparents = menu.get_option_by_name( 'showgodparents').get_value() self.set_locale(menu.get_option_by_name('trans').get_value()) name_format = menu.get_option_by_name("name_format").get_value() if name_format != 0: self._name_display.set_default_format(name_format) self._nd = self._name_display if self.incpriv: self.database = database else: self.database = PrivateProxyDb(database) filter_option = menu.get_option_by_name('filter') self.filter = filter_option.get_filter() self.sort = Sort(self.database) if self.filter.get_name() != '': # Use the selected filter to provide a list of place handles plist = self.database.iter_place_handles() self.place_handles = self.filter.apply(self.database, plist) else: # Use the place handles selected without a filter self.place_handles = self.__get_place_handles(places) self.place_handles.sort(key=self.sort.by_place_title_key)
def __init__(self, database, options, user): """ Create the DescendantReport object that produces the report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - a gen.user.User() instance This report needs the following parameters (class variables) that come in the options class. gen - Maximum number of generations to include. name_format - Preferred format to display names dups - Whether to include duplicate descendant trees incl_private - Whether to include private data living_people - How to handle living people years_past_death - Consider as living this many years after death """ Report.__init__(self, database, options, user) menu = options.menu lang = menu.get_option_by_name('trans').get_value() self._locale = self.set_locale(lang) stdoptions.run_private_data_option(self, menu) stdoptions.run_living_people_option(self, menu, self._locale) self.max_generations = menu.get_option_by_name('gen').get_value() pid = menu.get_option_by_name('pid').get_value() self.center_person = self.database.get_person_from_gramps_id(pid) if (self.center_person == None): raise ReportError(_("Person %s is not in the Database") % pid) sort = Sort(self.database) #Initialize the Printinfo class self._showdups = menu.get_option_by_name('dups').get_value() numbering = menu.get_option_by_name('numbering').get_value() if numbering == "Simple": obj = PrintSimple(self._showdups) elif numbering == "de Villiers/Pama": obj = PrintVilliers() elif numbering == "Meurgey de Tupigny": obj = PrintMeurgey() else: raise AttributeError("no such numbering: '%s'" % self.numbering) marrs = menu.get_option_by_name('marrs').get_value() divs = menu.get_option_by_name('divs').get_value() stdoptions.run_name_format_option(self, menu) self.objPrint = Printinfo(self.doc, self.database, obj, marrs, divs, self._name_display, self._locale)
def __init__(self, database, options, user): """ Create the DescendantBook object that produces the report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - a gen.user.User() instance This report needs the following parameters (class variables) that come in the options class. gen - Maximum number of generations to include. name_format - Preferred format to display names dups - Whether to include duplicate descendant trees filter_option - Specific report filter to use. """ Report.__init__(self, database, options, user) menu = options.menu self.user = user self.title = _('Descendants Report') self.max_generations = menu.get_option_by_name('gen').get_value() pid = menu.get_option_by_name('pid').get_value() self.center_person = database.get_person_from_gramps_id(pid) if (self.center_person == None): raise ReportError(_("Person %s is not in the Database") % pid) sort = Sort(self.database) self.by_birthdate_key = sort.by_birthdate_key #Initialize the Printinfo class self._showdups = menu.get_option_by_name('dups').get_value() numbering = menu.get_option_by_name('numbering').get_value() if numbering == "Simple": obj = PrintSimple(self._showdups) elif numbering == "de Villiers/Pama": obj = PrintVilliers() elif numbering == "Meurgey de Tupigny": obj = PrintMeurgey() else: raise AttributeError("no such numbering: '%s'" % self.numbering) marrs = menu.get_option_by_name('marrs').get_value() divs = menu.get_option_by_name('divs').get_value() self.filter_option = menu.get_option_by_name('filter') self.filter = self.filter_option.get_filter() # Copy the global NameDisplay so that we don't change application defaults. self._name_display = copy.deepcopy(global_name_display) name_format = menu.get_option_by_name("name_format").get_value() if name_format != 0: self._name_display.set_default_format(name_format) self.objPrint = Printinfo(self.doc, database, obj, marrs, divs, self._name_display)
def __init__(self, database, options, user): """ Create the PlaceReport object produces the Place report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - instance of a gen.user.User class This report needs the following parameters (class variables) that come in the options class. places - List of places to report on. center - Center of report, person or event incl_private - Whether to include private data name_format - Preferred format to display names """ Report.__init__(self, database, options, user) self._user = user menu = options.menu stdoptions.run_private_data_option(self, menu) places = menu.get_option_by_name('places').get_value() self.center = menu.get_option_by_name('center').get_value() self.set_locale(menu.get_option_by_name('trans').get_value()) stdoptions.run_name_format_option(self, menu) self._nd = self._name_display filter_option = menu.get_option_by_name('filter') self.filter = filter_option.get_filter() self.sort = Sort(self.database) self.place_handles = [] if self.filter.get_name() != '': # Use the selected filter to provide a list of place handles plist = self.database.iter_place_handles() self.place_handles = self.filter.apply(self.database, plist) if places: # Add places selected individually self.place_handles += self.__get_place_handles(places) if not self.place_handles: raise ReportError( _('Place Report'), _('Please select at least one place before running this.')) self.place_handles.sort(key=self.sort.by_place_title_key)
def __init__(self, database, options, user): """ Create the Timeline object that produces the report. The arguments are: database - the Gramps database instance options - instance of the Options class for this report user - instance of gen.user.User() This report needs the following parameters (class variables) that come in the options class. filter - Filter to be applied to the people of the database. The option class carries its number, and the function returning the list of filters. sortby - Sorting method to be used. name_format - Preferred format to display names incl_private - Whether to include private data living_people - How to handle living people years_past_death - Consider as living this many years after death """ Report.__init__(self, database, options, user) self._user = user menu = options.menu self.set_locale(options.menu.get_option_by_name('trans').get_value()) stdoptions.run_private_data_option(self, menu) living_opt = stdoptions.run_living_people_option( self, menu, self._locale) self.database = CacheProxyDb(self.database) self.filter = menu.get_option_by_name('filter').get_filter() self.fil_name = "(%s)" % self.filter.get_name(self._locale) living_value = menu.get_option_by_name('living_people').get_value() for (value, description) in living_opt.get_items(xml_items=True): if value == living_value: living_desc = self._(description) break self.living_desc = self._("(Living people: %(option_name)s)") % { 'option_name': living_desc } stdoptions.run_name_format_option(self, menu) sort_func_num = menu.get_option_by_name('sortby').get_value() sort_functions = _get_sort_functions(Sort(self.database)) self.sort_name = self._(sort_functions[sort_func_num][0]) self.sort_func = sort_functions[sort_func_num][1] self.calendar = config.get('preferences.calendar-format-report') self.plist = [] self.header = 2.6
def run(self): """ Perform the actual extraction of information. """ menu = self.options.menu self.filter = menu.get_option_by_name('filter').get_filter() sort_func_num = menu.get_option_by_name('sort_by').get_value() self.sort_desc = menu.get_option_by_name('sort_desc').get_value() self.fam_events = menu.get_option_by_name('family_events').get_value() sort_functions = _get_sort_functions(Sort(self.db)) self.sort_name = sort_functions[sort_func_num][0] self.sort_func = sort_functions[sort_func_num][1] self.sort = Sort(self.db) with DbTxn(_("Sort event changes"), self.db, batch=True) as trans: self.db.disable_signals() family_handles = self.sort_person_events(trans) if len(family_handles) > 0: self.sort_family_events(family_handles, trans) self.db.enable_signals() self.db.request_rebuild()
def __init__(self, database, options, user): """ Create the PlaceReport object produces the Place report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - instance of a gen.user.User class This report needs the following parameters (class variables) that come in the options class. places - List of places to report on. center - Center of report, person or event incl_private - Whether to include private data name_format - Preferred format to display names """ Report.__init__(self, database, options, user) self._user = user menu = options.menu stdoptions.run_private_data_option(self, menu) self.set_locale(menu.get_option_by_name('trans').get_value()) stdoptions.run_name_format_option(self, menu) self._nd = self._name_display filter_option = menu.get_option_by_name('filter') self.filter = filter_option.get_filter() self.sort = Sort(self.database) self.person_handles = [h for h in self.database.iter_person_handles()] self.family_handles = [h for h in self.database.iter_family_handles()] self.place_handles = [h for h in self.database.iter_place_handles()] self.citation_handles = [ h for h in self.database.iter_citation_handles() ] self.source_handles = [h for h in self.database.iter_source_handles()] self.note_handles = [h for h in self.database.iter_note_handles()] self.media_handles = [h for h in self.database.iter_media_handles()] self.repository_handles = [ h for h in self.database.iter_repository_handles() ] self.event_handles = [h for h in self.database.iter_event_handles()] print("Länge", len(self.person_handles))
def __init__(self, database, options, user): """ Create the PlaceReport object produces the Place report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - instance of a gen.user.User class This report needs the following parameters (class variables) that come in the options class. places - List of places to report on. incpriv - Whether to include private data """ Report.__init__(self, database, options, user) self._user = user menu = options.menu places = menu.get_option_by_name('places').get_value() self.incpriv = menu.get_option_by_name('incpriv').get_value() if self.incpriv: self.__db = database else: self.__db = PrivateProxyDb(database) filter_option = menu.get_option_by_name('filter') self.filter = filter_option.get_filter() self.sort = Sort(self.__db) if self.filter.get_name() != '': # Use the selected filter to provide a list of place handles plist = self.__db.iter_place_handles() self.place_handles = self.filter.apply(self.__db, plist) else: # Use the place handles selected without a filter self.place_handles = self.__get_place_handles(places) self.place_handles.sort(key=self.sort.by_place_title_key)
def __init__(self, database, options, user): """ Create the SourceReport object that produces the report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - a gen.user.User() instance This report needs the following parameters (class variables) that come in the options class. Sources - List of places to report on. """ Report.__init__(self, database, options, user) self.__db = database self._user = user menu = options.menu self.title_string = menu.get_option_by_name('title').get_value() self.subtitle_string = menu.get_option_by_name('subtitle').get_value() self.footer_string = menu.get_option_by_name('footer').get_value() menucalc = options.menu self.showallfamilies = menucalc.get_option_by_name( 'showallfamilies').get_value() filter_option = menucalc.get_option_by_name('filter') self.filter = filter_option.get_filter() self.sort = Sort(self.database) if self.filter.get_name() != '': # Use the selected filter to provide a list of source handles sourcefilterlist = self.__db.iter_source_handles() self.source_handles = self.filter.apply(self.__db, sourcefilterlist) else: self.source_handles = self.__db.get_source_handles() self.place_fmt = menu.get_option_by_name("place_format").get_value()
def __init__(self, dbstate, uistate, people_list, track): self.dbstate = dbstate self.uistate = uistate ManagedWindow.__init__(self, uistate, track, self) self.db = dbstate.db self.my_list = people_list self.row_data = [] self.save_form = None self.topDialog = Glade(toplevel="eventcmp") self.topDialog.connect_signals({ "on_write_table": self.on_write_table, "destroy_passed_object": self.close, "on_help_clicked": self.on_help_clicked, "on_apply_clicked": self.__dummy, "on_editor_clicked": self.__dummy, }) window = self.topDialog.toplevel self.set_window(window, self.topDialog.get_object('title'), _('Event Comparison Results')) self.setup_configs('interface.eventcomparisonresults', 750, 400) self.eventlist = self.topDialog.get_object('treeview') self.sort = Sort(self.db) self.my_list.sort(key=self.sort.by_last_name_key) self.event_titles = self.make_event_titles() self.table_titles = [_("Person"), _("ID")] for event_name in self.event_titles: self.table_titles.append( _("%(event_name)s Date") % {'event_name': event_name}) self.table_titles.append('sort') # This won't be shown in a tree self.table_titles.append( _("%(event_name)s Place") % {'event_name': event_name}) self.build_row_data() self.draw_display() self.show()
def __init__(self, database, options, user): """ Create the Timeline object that produces the report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - instance of gen.user.User() This report needs the following parameters (class variables) that come in the options class. filter - Filter to be applied to the people of the database. The option class carries its number, and the function returning the list of filters. sortby - Sorting method to be used. name_format - Preferred format to display names incl_private - Whether to include private data """ Report.__init__(self, database, options, user) self._user = user menu = options.menu stdoptions.run_private_data_option(self, menu) self.filter = menu.get_option_by_name('filter').get_filter() self._lang = options.menu.get_option_by_name('trans').get_value() self._locale = self.set_locale(self._lang) self._ = self._locale.translation.sgettext stdoptions.run_name_format_option(self, menu) sort_func_num = menu.get_option_by_name('sortby').get_value() sort_functions = _get_sort_functions(Sort(self.database)) self.sort_name = self._(sort_functions[sort_func_num][0]) self.sort_func = sort_functions[sort_func_num][1] self.calendar = config.get('preferences.calendar-format-report')
def __init__(self, database, options, user): """ Create the PersonEverythingReport object that produces the report. The arguments are: database - the GRAMPS database instance options - instance of the Options class for this report user - a gen.user.User() instance This report needs the following parameters (class variables) that come in the options class. pid - The centre person about whom the report is to be produced gen - Maximum number of generations to include. name_format - Preferred format to display names dups - Whether to include duplicate descendant trees """ Report.__init__(self, database, options, user) self._user = user menu = options.menu pid = menu.get_option_by_name('pid').get_value() self.center_person = database.get_person_from_gramps_id(pid) if (self.center_person == None) : raise ReportError(_("Person %s is not in the Database") % pid ) sort = Sort(self.database) self.by_birthdate = sort.by_birthdate_key # Copy the global NameDisplay so that we don't change application # defaults self._name_display = copy.deepcopy(global_name_display) name_format = menu.get_option_by_name("name_format").get_value() if name_format != 0: self._name_display.set_default_format(name_format)
def __init__(self, database, options, user): """ Create the PlaceReport object produces the Place report. The arguments are: database - the Gramps database instance options - instance of the Options class for this report user - instance of a gen.user.User class This report needs the following parameters (class variables) that come in the options class. places - List of places to report on. center - Center of report, person or event incl_private - Whether to include private data name_format - Preferred format to display names living_people - How to handle living people years_past_death - Consider as living this many years after death """ Report.__init__(self, database, options, user) self._user = user menu = options.menu self.set_locale(menu.get_option_by_name('trans').get_value()) stdoptions.run_date_format_option(self, menu) stdoptions.run_private_data_option(self, menu) living_opt = stdoptions.run_living_people_option(self, menu, self._locale) self.database = CacheProxyDb(self.database) self._db = self.database self._lv = menu.get_option_by_name('living_people').get_value() for (value, description) in living_opt.get_items(xml_items=True): if value == self._lv: living_desc = self._(description) break self.living_desc = self._("(Living people: %(option_name)s)" ) % {'option_name': living_desc} places = menu.get_option_by_name('places').get_value() self.center = menu.get_option_by_name('center').get_value() stdoptions.run_name_format_option(self, menu) self._nd = self._name_display self.place_format = menu.get_option_by_name("place_format").get_value() filter_option = menu.get_option_by_name('filter') self.filter = filter_option.get_filter() self.sort = Sort(self._db) self.place_handles = [] if self.filter.get_name() != '': # Use the selected filter to provide a list of place handles plist = self._db.iter_place_handles() self.place_handles = self.filter.apply(self._db, plist, user=self._user) if places: # Add places selected individually self.place_handles += self.__get_place_handles(places) if not self.place_handles: raise ReportError( _('Place Report'), _('Please select at least one place before running this.')) self.place_handles.sort(key=self.sort.by_place_title_key)