Add event filtering with collapsible expanders and human-readable event type names
- Add comprehensive event filtering (event types, categories, persons, date range) - Implement collapsible Gtk.Expander widgets for event type groups - Add human-readable event type names in filter dialog - Add EVENT_CATEGORIES mapping for event categorization - Add filter state management and filter application logic - Add filter button to toolbar with active state indication - Support multiple filter types that can be combined
This commit is contained in:
parent
1b6d76583c
commit
9976a95b97
@ -705,8 +705,9 @@ class MyTimelineView(NavigationView):
|
|||||||
category_boxes[category] = category_box
|
category_boxes[category] = category_box
|
||||||
box.pack_start(category_box, False, False, 0)
|
box.pack_start(category_box, False, False, 0)
|
||||||
|
|
||||||
# Create checkbox for event type
|
# Create checkbox for event type with human-readable name
|
||||||
checkbox = Gtk.CheckButton(label=str(event_type_obj))
|
event_type_name = self._get_event_type_display_name(event_type_obj)
|
||||||
|
checkbox = Gtk.CheckButton(label=event_type_name)
|
||||||
event_type_checkboxes[event_type_obj] = checkbox
|
event_type_checkboxes[event_type_obj] = checkbox
|
||||||
category_boxes[category].pack_start(checkbox, False, False, 0)
|
category_boxes[category].pack_start(checkbox, False, False, 0)
|
||||||
|
|
||||||
@ -1329,6 +1330,71 @@ class MyTimelineView(NavigationView):
|
|||||||
return True
|
return True
|
||||||
return person_handle in self.person_filter
|
return person_handle in self.person_filter
|
||||||
|
|
||||||
|
def _get_event_type_display_name(self, event_type: EventType) -> str:
|
||||||
|
"""
|
||||||
|
Get human-readable display name for an event type.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
event_type: The event type (integer or EventType object).
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
str: Human-readable name for the event type.
|
||||||
|
"""
|
||||||
|
# Normalize to integer first
|
||||||
|
event_type_value = self._normalize_event_type(event_type)
|
||||||
|
|
||||||
|
# Map EventType integer values to their human-readable names
|
||||||
|
event_type_names = {
|
||||||
|
EventType.BIRTH: _("Birth"),
|
||||||
|
EventType.DEATH: _("Death"),
|
||||||
|
EventType.BURIAL: _("Burial"),
|
||||||
|
EventType.CREMATION: _("Cremation"),
|
||||||
|
EventType.ADOPT: _("Adoption"),
|
||||||
|
EventType.MARRIAGE: _("Marriage"),
|
||||||
|
EventType.DIVORCE: _("Divorce"),
|
||||||
|
EventType.ENGAGEMENT: _("Engagement"),
|
||||||
|
EventType.MARR_SETTL: _("Marriage Settlement"),
|
||||||
|
EventType.MARR_LIC: _("Marriage License"),
|
||||||
|
EventType.MARR_CONTR: _("Marriage Contract"),
|
||||||
|
EventType.MARR_BANNS: _("Marriage Banns"),
|
||||||
|
EventType.DIV_FILING: _("Divorce Filing"),
|
||||||
|
EventType.ANNULMENT: _("Annulment"),
|
||||||
|
EventType.MARR_ALT: _("Marriage (Alternative)"),
|
||||||
|
EventType.BAPTISM: _("Baptism"),
|
||||||
|
EventType.ADULT_CHRISTEN: _("Adult Christening"),
|
||||||
|
EventType.CONFIRMATION: _("Confirmation"),
|
||||||
|
EventType.CHRISTEN: _("Christening"),
|
||||||
|
EventType.FIRST_COMMUN: _("First Communion"),
|
||||||
|
EventType.BLESS: _("Blessing"),
|
||||||
|
EventType.BAR_MITZVAH: _("Bar Mitzvah"),
|
||||||
|
EventType.BAS_MITZVAH: _("Bat Mitzvah"),
|
||||||
|
EventType.RELIGION: _("Religion"),
|
||||||
|
EventType.ORDINATION: _("Ordination"),
|
||||||
|
EventType.OCCUPATION: _("Occupation"),
|
||||||
|
EventType.RETIREMENT: _("Retirement"),
|
||||||
|
EventType.ELECTED: _("Elected"),
|
||||||
|
EventType.MILITARY_SERV: _("Military Service"),
|
||||||
|
EventType.EDUCATION: _("Education"),
|
||||||
|
EventType.GRADUATION: _("Graduation"),
|
||||||
|
EventType.DEGREE: _("Degree"),
|
||||||
|
EventType.EMIGRATION: _("Emigration"),
|
||||||
|
EventType.IMMIGRATION: _("Immigration"),
|
||||||
|
EventType.NATURALIZATION: _("Naturalization"),
|
||||||
|
EventType.PROBATE: _("Probate"),
|
||||||
|
EventType.WILL: _("Will"),
|
||||||
|
EventType.RESIDENCE: _("Residence"),
|
||||||
|
EventType.CENSUS: _("Census"),
|
||||||
|
EventType.PROPERTY: _("Property"),
|
||||||
|
EventType.CAUSE_DEATH: _("Cause of Death"),
|
||||||
|
EventType.MED_INFO: _("Medical Information"),
|
||||||
|
EventType.NOB_TITLE: _("Nobility Title"),
|
||||||
|
EventType.NUM_MARRIAGES: _("Number of Marriages"),
|
||||||
|
EventType.UNKNOWN: _("Unknown"),
|
||||||
|
EventType.CUSTOM: _("Custom"),
|
||||||
|
}
|
||||||
|
|
||||||
|
return event_type_names.get(event_type_value, _("Unknown Event"))
|
||||||
|
|
||||||
def _get_event_category(self, event_type: EventType) -> str:
|
def _get_event_category(self, event_type: EventType) -> str:
|
||||||
"""
|
"""
|
||||||
Get the category for an event type.
|
Get the category for an event type.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user