def column_participant(self,data): handle = data[0] cached, value = self.get_cached_value(handle, "PARTICIPANT") if not cached: value = get_participant_from_event(self.db, data[COLUMN_HANDLE]) self.set_cached_value(handle, "PARTICIPANT", value) return value
def add_event_ref(self, event_ref, spouse=None): """ Add an event to the model. """ self.callman.register_handles({'event': [event_ref.ref]}) event = self.dbstate.db.get_event_from_handle(event_ref.ref) event_date = get_date(event) event_sort = '%012d' % event.get_date_object().get_sort_value() person_age = self.column_age(event) person_age_sort = self.column_sort_age(event) place = place_displayer.display_event(self.dbstate.db, event) participants = get_participant_from_event(self.dbstate.db, event_ref.ref) self.model.add((event.get_handle(), str(event.get_type()), event.get_description(), event_date, event_sort, person_age, person_age_sort, place, participants, str(event_ref.get_role())))
def add_event_ref(self, event_ref, spouse=None): """ Add an event to the model. """ self.callman.register_handles({'event': [event_ref.ref]}) event = self.dbstate.db.get_event_from_handle(event_ref.ref) event_date = get_date(event) event_sort = '%012d' % event.get_date_object().get_sort_value() person_age = self.column_age(event) person_age_sort = self.column_sort_age(event) place = place_displayer.display_event(self.dbstate.db, event) participants = get_participant_from_event(self.dbstate.db, event_ref.ref) self.model.add((event.get_handle(), str(event.get_type()), participants, event_date, event_sort, person_age, person_age_sort, place, event.get_description(), str(event_ref.get_role())))
def add_event_ref(self, event_ref, spouse=None): """ Add an event to the model. """ self.callman.register_handles({'event': [event_ref.ref]}) event = self.dbstate.db.get_event_from_handle(event_ref.ref) event_date = get_date(event) event_sort = '%012d' % event.get_date_object().get_sort_value() person_age = self.column_age(event) person_age_sort = self.column_sort_age(event) place = '' handle = event.get_place_handle() if handle: place = self.dbstate.db.get_place_from_handle(handle).get_title() participants = '' if int(event_ref.get_role()) == EventRoleType.FAMILY: if spouse: participants = name_displayer.display(spouse) if int(event_ref.get_role()) not in (EventRoleType.PRIMARY, EventRoleType.FAMILY): participants = get_participant_from_event(self.dbstate.db, event_ref.ref) self.model.add((event.get_handle(), str(event.get_type()), participants, event_date, event_sort, person_age, person_age_sort, place, event.get_description(), str(event_ref.get_role())))
def column_participant(self, data): handle = data[0] cached, value = self.get_cached_value(handle, "PARTICIPANT") if not cached: value = get_participant_from_event(self.db, data[COLUMN_HANDLE]) self.set_cached_value(handle, "PARTICIPANT", value) return value
def get_event_summary_from_object( db_handle: DbReadBase, event: Event, locale: GrampsLocale = glocale ): """Get a summary of an Event.""" handle = event.get_handle() participant = get_participant_from_event(db_handle, handle) event_type = locale.translation.sgettext(event.type.xml_str()) if not participant: return event_type return f"{event_type} - {participant}"
def write_event(self, event_ref, spouse, index): handle = event_ref.ref event = self.dbstate.db.get_event_from_handle(handle) etype = str(event.get_type()) desc = event.get_description() who = get_participant_from_event(self.dbstate.db, handle) title = etype if desc: title = '%s (%s)' % (title, desc) if spouse: spouse_name = name_displayer.display(spouse) title = '%s - %s' % (title, spouse_name) role = event_ref.get_role() if role in (EventRoleType.PRIMARY, EventRoleType.FAMILY): emph = True else: emph = False title = '%s of %s' % (title, who) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) link_func = self._event_link name = (title, None) handle = event_ref.ref link_label = widgets.LinkLabel(name, link_func, handle, emph, theme=self.theme) link_label.set_padding(3, 0) link_label.set_tooltip_text(_('Click to make this event active')) if self._config.get('preferences.releditbtn'): button = widgets.IconButton(self.edit_event_button, handle) button.set_tooltip_text(_('Edit %s') % name[0]) else: button = None hbox = widgets.LinkBox(link_label, button) if self.show_tags: tag_list = TagList(self.get_tag_list(event)) hbox.pack_start(tag_list, False, False, 0) vbox.pack_start(hbox, False, False, 0) line2 = self.format_event(event) vbox.pack_start(widgets.BasicLabel(line2), False, False, 0) for handle in event.get_citation_list(): self.write_citation(vbox, handle) eventbox = self.make_dragbox(vbox, 'Event', handle) eventbox.show_all() self.vbox2.pack_start(eventbox, False, False, 1)
def get_menu_title(self): handle = self.obj.get_handle() if handle: who = get_participant_from_event(self.db, handle) desc = self.obj.get_description() event_name = self.obj.get_type() if desc: event_name = '%s - %s' % (event_name, desc) if who: event_name = '%s - %s' % (event_name, who) dialog_title = _('Event: %s') % event_name else: dialog_title = _('New Event') return dialog_title
def get_menu_title(self): """ compile menu title out of different actions """ handle = self.obj.get_handle() event_action, event_name = '', '' if handle: if self.action == 'clone': event_action = _('Clone') if self.action == 'edit': event_action = _('Edit') who = get_participant_from_event(self.db, handle) desc = self.obj.get_description() event_name = self.obj.get_type().string if who: event_name = ': %s - %s' % (event_name, who) elif desc: event_name = ': %s - %s' % (event_name, desc) else: event_action = _('New') dialog_title = _('%s Event%s') % (event_action, event_name) return dialog_title
def write_media(self, media_list, event): for media_ref in media_list: mobj = self.dbstate.db.get_media_from_handle(media_ref.ref) button = self.get_thumbnail(media_ref, size=SIZE_LARGE) if button: self.vbox2.add(button) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) if event: etype = str(event.get_type()) label = Gtk.Label(etype) vbox.pack_start(label, False, False, 0) who = get_participant_from_event(self.dbstate.db, event.handle) label = Gtk.Label(who) vbox.pack_start(label, False, False, 0) date_place = self.format_event(event) label = Gtk.Label(date_place) vbox.pack_start(label, False, False, 0) notes = mobj.get_note_list() if len(notes) > 0: note = self.dbstate.db.get_note_from_handle(notes[0]) texteditor = StyledTextEditor() texteditor.set_editable(False) texteditor.set_wrap_mode(Gtk.WrapMode.WORD) texteditor.set_text(note.get_styledtext()) texteditor.set_hexpand(True) texteditor.show() vbox.pack_start(texteditor, True, True, 0) vbox.show_all() self.vbox2.attach_next_to(vbox, button, Gtk.PositionType.RIGHT, 1, 1)
def write_events(self): """ write the events associated with the tag """ elist = self.database.get_event_handles() filter_class = GenericFilterFactory('Event') a_filter = filter_class() a_filter.add_rule(rules.event.HasTag([self.tag])) event_list = a_filter.apply(self.database, elist) if not event_list: return self.doc.start_paragraph("TR-Heading") header = self._("Events") mark = IndexMark(header, INDEX_TYPE_TOC, 2) self.doc.write_text(header, mark) self.doc.end_paragraph() self.doc.start_table('EventTable', 'TR-Table') self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(self._("Id")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(self._("Type")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(self._("Participants")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(self._("Date")) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() for event_handle in event_list: event = self.database.get_event_from_handle(event_handle) self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(event.get_gramps_id()) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(self._(self._get_type(event.get_type()))) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(get_participant_from_event(self.database, event_handle)) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') date = self._get_date(event.get_date_object()) if date: self.doc.write_text(date) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.end_table()
def __init__(self, dbstate, uistate, handle1, handle2): ManagedWindow.__init__(self, uistate, [], self.__class__) self.dbstate = dbstate database = dbstate.db self.ev1 = database.get_event_from_handle(handle1) self.ev2 = database.get_event_from_handle(handle2) self.define_glade('mergeevent', _GLADE_FILE) self.set_window(self._gladeobj.toplevel, self.get_widget("event_title"), _("Merge Events")) # Detailed selection widgets type1 = str(self.ev1.get_type()) type2 = str(self.ev2.get_type()) entry1 = self.get_widget("type1") entry2 = self.get_widget("type2") entry1.set_text(type1) entry2.set_text(type2) if entry1.get_text() == entry2.get_text(): for widget_name in ('type1', 'type2', 'type_btn1', 'type_btn2'): self.get_widget(widget_name).set_sensitive(False) entry1 = self.get_widget("date1") entry2 = self.get_widget("date2") entry1.set_text(get_date(self.ev1)) entry2.set_text(get_date(self.ev2)) if entry1.get_text() == entry2.get_text(): for widget_name in ('date1', 'date2', 'date_btn1', 'date_btn2'): self.get_widget(widget_name).set_sensitive(False) place1 = database.get_place_from_handle(self.ev1.get_place_handle()) place2 = database.get_place_from_handle(self.ev2.get_place_handle()) place1 = place1.get_title() if place1 else "" place2 = place2.get_title() if place2 else "" entry1 = self.get_widget("place1") entry2 = self.get_widget("place2") entry1.set_text(place1) entry2.set_text(place2) if entry1.get_text() == entry2.get_text(): for widget_name in ('place1', 'place2', 'place_btn1', 'place_btn2'): self.get_widget(widget_name).set_sensitive(False) entry1 = self.get_widget("desc1") entry2 = self.get_widget("desc2") entry1.set_text(self.ev1.get_description()) entry2.set_text(self.ev2.get_description()) if entry1.get_text() == entry2.get_text(): for widget_name in ('desc1', 'desc2', 'desc_btn1', 'desc_btn2'): self.get_widget(widget_name).set_sensitive(False) gramps1 = self.ev1.get_gramps_id() gramps2 = self.ev2.get_gramps_id() entry1 = self.get_widget("gramps1") entry2 = self.get_widget("gramps2") entry1.set_text(gramps1) entry2.set_text(gramps2) if entry1.get_text() == entry2.get_text(): for widget_name in ('gramps1', 'gramps2', 'gramps_btn1', 'gramps_btn2'): self.get_widget(widget_name).set_sensitive(False) # Main window widgets that determine which handle survives ppant1 = get_participant_from_event(database, handle1) ppant2 = get_participant_from_event(database, handle2) rbutton1 = self.get_widget("handle_btn1") rbutton_label1 = self.get_widget("label_handle_btn1") rbutton_label2 = self.get_widget("label_handle_btn2") rbutton_label1.set_label("%s %s [%s]" % (type1, ppant1, gramps1)) rbutton_label2.set_label("%s %s [%s]" % (type2, ppant2, gramps2)) rbutton1.connect("toggled", self.on_handle1_toggled) self.connect_button("event_help", self.cb_help) self.connect_button("event_ok", self.cb_merge) self.connect_button("event_cancel", self.close) self.show()
def column_participant(self, event_ref): return get_participant_from_event(self.db, event_ref.ref)
def write_event(self, event_ref): """ write out the event """ text = "" event = self._db.get_event_from_handle(event_ref.ref) if self.fulldate: date = self._get_date(event.get_date_object()) else: date = event.get_date_object().get_year() place = _pd.display_event(self._db, event, self.place_format) self.doc.start_paragraph('DAR-MoreDetails') if date and place: # translators: needed for Arabic, ignore otherwise text += self._('%(str1)s, %(str2)s') % { 'str1': date, 'str2': place } elif date: text += '%s' % date elif place: text += '%s' % self._(place) if event.get_description(): if text: text += ". " text += event.get_description() text += self.endnotes(event) if text: text += ". " event_name = self._(self._get_type(event.get_type())) role = event_ref.get_role() if role in (EventRoleType.PRIMARY, EventRoleType.FAMILY): # translators: needed for French, ignore otherwise text = self._('%(str1)s: %(str2)s') % { 'str1': event_name, 'str2': text } else: primaries = get_participant_from_event(self._db, event_ref.ref) text = self._('%(event_role)s at %(event_name)s ' 'of %(primary_person)s: %(event_text)s') % { 'event_role': self._(role.xml_str()), 'event_name': event_name, 'primary_person': primaries, 'event_text': text } self.doc.write_text_citation(text) if self.inc_attrs: text = "" attr_list = event.get_attribute_list() attr_list.extend(event_ref.get_attribute_list()) for attr in attr_list: if text: # translators: needed for Arabic, ignore otherwise text += self._("; ") attr_name = attr.get_type().type2base() # translators: needed for French, ignore otherwise text += self._("%(type)s: %(value)s%(endnotes)s") % { 'type': self._(attr_name), 'value': attr.get_value(), 'endnotes': self.endnotes(attr) } text = " " + text self.doc.write_text_citation(text) self.doc.end_paragraph() if self.includenotes: # if the event or event reference has a note attached to it, # get the text and format it correctly notelist = event.get_note_list() notelist.extend(event_ref.get_note_list()) for notehandle in notelist: note = self._db.get_note_from_handle(notehandle) self.doc.write_styled_note( note.get_styledtext(), note.get_format(), "DAR-MoreDetails", contains_html=(note.get_type() == NoteType.HTML_CODE))
def load_model(self): """ Objects can have very large backreferences. To avoid blocking the interface up to the moment that the model is created, this method is called via GLib.idle_add. WARNING: a consequence of above is that loading can still be happening while the GUI using this model is no longer used. Disconnect any methods before closing the GUI. """ self.loading = True self.count = 0 for ref in self.sref_list: self.count += 1 dtype = ref[0] if dtype == 'Person': p = self.db.get_person_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = name_displayer.display(p) elif dtype == 'Family': p = self.db.get_family_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = family_name(p, self.db) elif dtype == 'Source': p = self.db.get_source_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = p.get_title() elif dtype == 'Citation': p = self.db.get_citation_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = p.get_page() elif dtype == 'Event': p = self.db.get_event_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = p.get_description() if name: name = self.dispstr % {'part1': str(p.get_type()), 'part2': name} else: name = str(p.get_type()) part = get_participant_from_event(self.db, ref[1]) if part : name = self.dispstr % {'part1': name, 'part2': part} elif dtype == 'Place': p = self.db.get_place_from_handle(ref[1]) if not p: continue name = place_displayer.display(self.db, p) gid = p.gramps_id handle = p.handle elif dtype == 'Repository': p = self.db.get_repository_from_handle(ref[1]) if not p: continue name = p.get_name() gid = p.gramps_id handle = p.handle else: p = self.db.get_object_from_handle(ref[1]) if not p: continue name = p.get_description() gid = p.gramps_id handle = p.handle # dtype is the class name, i.e. is English # We need to use localized string in the model. # we also need to keep class names to get the object type, # but we don't need to show that in the view. self.append(row=[_(dtype), gid, name, handle, dtype]) yield True self.loading = False yield False
def write_events(self): elist = self.database.get_event_handles() FilterClass = GenericFilterFactory('Event') filter = FilterClass() filter.add_rule(rules.event.HasTag([self.tag])) event_list = filter.apply(self.database, elist) if not event_list: return self.doc.start_paragraph("TR-Heading") header = self._("Events") mark = IndexMark(header, INDEX_TYPE_TOC, 2) self.doc.write_text(header, mark) self.doc.end_paragraph() self.doc.start_table('EventTable','TR-Table') self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(self._("Id")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(self._("Type")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(self._("Participants")) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal-Bold') self.doc.write_text(self._("Date")) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() for event_handle in event_list: event = self.database.get_event_from_handle(event_handle) self.doc.start_row() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(event.get_gramps_id()) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(str(event.get_type())) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') self.doc.write_text(get_participant_from_event(self.database, event_handle)) self.doc.end_paragraph() self.doc.end_cell() self.doc.start_cell('TR-TableCell') self.doc.start_paragraph('TR-Normal') date = get_date(event) if date: self.doc.write_text(date) self.doc.end_paragraph() self.doc.end_cell() self.doc.end_row() self.doc.end_table()
def write_event(self, event_ref): """ write out the event """ text = "" event = self._db.get_event_from_handle(event_ref.ref) if self.fulldate: date = self._get_date(event.get_date_object()) else: date = event.get_date_object().get_year() place = _pd.display_event(self._db, event) self.doc.start_paragraph('DAR-MoreDetails') if date and place: # translators: needed for Arabic, ignore otherwise text += self._('%(str1)s, %(str2)s' ) % {'str1' : date, 'str2' : place} elif date: text += '%s' % date elif place: text += '%s' % self._(place) if event.get_description(): if text: text += ". " text += event.get_description() text += self.endnotes(event) if text: text += ". " event_name = self._(self._get_type(event.get_type())) role = event_ref.get_role() if role in (EventRoleType.PRIMARY, EventRoleType.FAMILY): # translators: needed for French, ignore otherwise text = self._('%(str1)s: %(str2)s' ) % {'str1' : event_name, 'str2' : text} else: primaries = get_participant_from_event(self._db, event_ref.ref) text = self._('%(event_role)s at %(event_name)s ' 'of %(primary_person)s: %(event_text)s' ) % {'event_role' : self._(role.xml_str()), 'event_name' : event_name, 'primary_person' : primaries, 'event_text' : text} self.doc.write_text_citation(text) if self.inc_attrs: text = "" attr_list = event.get_attribute_list() attr_list.extend(event_ref.get_attribute_list()) for attr in attr_list: if text: # translators: needed for Arabic, ignore otherwise text += self._("; ") attr_name = attr.get_type().type2base() # translators: needed for French, ignore otherwise text += self._("%(type)s: %(value)s%(endnotes)s" ) % {'type' : self._(attr_name), 'value' : attr.get_value(), 'endnotes' : self.endnotes(attr)} text = " " + text self.doc.write_text_citation(text) self.doc.end_paragraph() if self.includenotes: # if the event or event reference has a note attached to it, # get the text and format it correctly notelist = event.get_note_list() notelist.extend(event_ref.get_note_list()) for notehandle in notelist: note = self._db.get_note_from_handle(notehandle) self.doc.write_styled_note( note.get_styledtext(), note.get_format(), "DAR-MoreDetails", contains_html=(note.get_type() == NoteType.HTML_CODE) )
def write_node(self, grid, event_ref, spouse, index, start_date): handle = event_ref.ref event = self.dbstate.db.get_event_from_handle(handle) etype = str(event.get_type()) desc = event.get_description() who = get_participant_from_event(self.dbstate.db, handle) title = etype if desc: title = '%s (%s)' % (title, desc) if spouse: spouse_name = name_displayer.display(spouse) title = '%s - %s' % (title, spouse_name) role = event_ref.get_role() if role in (EventRoleType.PRIMARY, EventRoleType.FAMILY): emph = True else: emph = False title = '%s of %s' % (title, who) vbox1 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) link_func = self._event_link name = (title, None) handle = event_ref.ref link_label = widgets.LinkLabel(name, link_func, handle, emph, theme=self.theme) link_label.set_padding(3, 0) link_label.set_tooltip_text(_('Click to make this event active')) if self._config.get('preferences.releditbtn'): button = widgets.IconButton(self.edit_event_button, handle) button.set_tooltip_text(_('Edit %s') % name[0]) else: button = None hbox = widgets.LinkBox(link_label, button) if self.show_tags: tag_list = TagList(self.get_tag_list(event)) hbox.pack_start(tag_list, False, False, 0) vbox1.pack_start(hbox, False, False, 0) pname = place_displayer.display_event(self.dbstate.db, event) vbox1.pack_start(widgets.BasicLabel(pname), False, False, 0) vbox1.set_vexpand(False) vbox1.set_valign(Gtk.Align.CENTER) vbox1.show_all() eventbox = self.make_dragbox(vbox1, 'Event', handle) eventbox.set_hexpand(True) eventbox.set_vexpand(False) eventbox.set_valign(Gtk.Align.CENTER) eventbox.set_margin_top(1) eventbox.set_margin_bottom(1) eventbox.show_all() vbox2 = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) dobj = event.get_date_object() date = widgets.BasicLabel(displayer.display(dobj)) vbox2.pack_start(date, False, False, 0) if start_date is not None: age_precision = config.get('preferences.age-display-precision') diff = (dobj - start_date).format(precision=age_precision) age = widgets.BasicLabel(diff) vbox2.pack_start(age, False, False, 0) vbox2.set_valign(Gtk.Align.CENTER) grid.add(vbox2) tl = Timeline() grid.attach_next_to(tl, vbox2, Gtk.PositionType.RIGHT, 1, 1) grid.attach_next_to(eventbox, tl, Gtk.PositionType.RIGHT, 1, 1)
def load_model(self): """ Objects can have very large backreferences. To avoid blocking the interface up to the moment that the model is created, this method is called via GLib.idle_add. WARNING: a consequence of above is that loading can still be happening while the GUI using this model is no longer used. Disconnect any methods before closing the GUI. """ self.loading = True self.count = 0 for ref in self.sref_list: self.count += 1 dtype = ref[0] if dtype == 'Person': p = self.db.get_person_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = name_displayer.display(p) elif dtype == 'Family': p = self.db.get_family_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = family_name(p, self.db) elif dtype == 'Source': p = self.db.get_source_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = p.get_title() elif dtype == 'Citation': p = self.db.get_citation_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = p.get_page() elif dtype == 'Event': p = self.db.get_event_from_handle(ref[1]) if not p: continue gid = p.gramps_id handle = p.handle name = p.get_description() if name: name = self.dispstr % { 'part1': str(p.get_type()), 'part2': name } else: name = str(p.get_type()) part = get_participant_from_event(self.db, ref[1]) if part: name = self.dispstr % {'part1': name, 'part2': part} elif dtype == 'Place': p = self.db.get_place_from_handle(ref[1]) if not p: continue name = place_displayer.display(self.db, p) gid = p.gramps_id handle = p.handle elif dtype == 'Repository': p = self.db.get_repository_from_handle(ref[1]) if not p: continue name = p.get_name() gid = p.gramps_id handle = p.handle else: p = self.db.get_object_from_handle(ref[1]) if not p: continue name = p.get_description() gid = p.gramps_id handle = p.handle # dtype is the class name, i.e. is English # We need to use localized string in the model. # we also need to keep class names to get the object type, # but we don't need to show that in the view. self.append(row=[_(dtype), gid, name, handle, dtype]) yield True self.loading = False yield False
def __init__(self, dbstate, uistate, handle1, handle2): ManagedWindow.__init__(self, uistate, [], self.__class__) self.dbstate = dbstate database = dbstate.db self.ev1 = database.get_event_from_handle(handle1) self.ev2 = database.get_event_from_handle(handle2) self.define_glade('mergeevent', _GLADE_FILE) self.set_window(self._gladeobj.toplevel, self.get_widget("event_title"), _("Merge Events")) # Detailed selection widgets type1 = str(self.ev1.get_type()) type2 = str(self.ev2.get_type()) entry1 = self.get_widget("type1") entry2 = self.get_widget("type2") entry1.set_text(type1) entry2.set_text(type2) if entry1.get_text() == entry2.get_text(): for widget_name in ('type1', 'type2', 'type_btn1', 'type_btn2'): self.get_widget(widget_name).set_sensitive(False) entry1 = self.get_widget("date1") entry2 = self.get_widget("date2") entry1.set_text(get_date(self.ev1)) entry2.set_text(get_date(self.ev2)) if entry1.get_text() == entry2.get_text(): for widget_name in ('date1', 'date2', 'date_btn1', 'date_btn2'): self.get_widget(widget_name).set_sensitive(False) place1 = database.get_place_from_handle( self.ev1.get_place_handle()) place2 = database.get_place_from_handle( self.ev2.get_place_handle()) place1 = place1.get_title() if place1 else "" place2 = place2.get_title() if place2 else "" entry1 = self.get_widget("place1") entry2 = self.get_widget("place2") entry1.set_text(place1) entry2.set_text(place2) if entry1.get_text() == entry2.get_text(): for widget_name in ('place1', 'place2', 'place_btn1', 'place_btn2'): self.get_widget(widget_name).set_sensitive(False) entry1 = self.get_widget("desc1") entry2 = self.get_widget("desc2") entry1.set_text(self.ev1.get_description()) entry2.set_text(self.ev2.get_description()) if entry1.get_text() == entry2.get_text(): for widget_name in ('desc1', 'desc2', 'desc_btn1', 'desc_btn2'): self.get_widget(widget_name).set_sensitive(False) gramps1 = self.ev1.get_gramps_id() gramps2 = self.ev2.get_gramps_id() entry1 = self.get_widget("gramps1") entry2 = self.get_widget("gramps2") entry1.set_text(gramps1) entry2.set_text(gramps2) if entry1.get_text() == entry2.get_text(): for widget_name in ('gramps1', 'gramps2', 'gramps_btn1', 'gramps_btn2'): self.get_widget(widget_name).set_sensitive(False) # Main window widgets that determine which handle survives ppant1 = get_participant_from_event(database, handle1) ppant2 = get_participant_from_event(database, handle2) rbutton1 = self.get_widget("handle_btn1") rbutton_label1 = self.get_widget("label_handle_btn1") rbutton_label2 = self.get_widget("label_handle_btn2") rbutton_label1.set_label("%s %s [%s]" % (type1, ppant1, gramps1)) rbutton_label2.set_label("%s %s [%s]" % (type2, ppant2, gramps2)) rbutton1.connect("toggled", self.on_handle1_toggled) self.connect_button("event_help", self.cb_help) self.connect_button("event_ok", self.cb_merge) self.connect_button("event_cancel", self.close) self.show()
def column_participant(self, data): return get_participant_from_event(self.db, data[COLUMN_HANDLE])
def column_participant(self,data): return get_participant_from_event(self.db, data[COLUMN_HANDLE])