2 Commits

Author SHA1 Message Date
5860b3d25c Improve code quality across the codebase
- Add comprehensive type hints to MyTimeline.py methods
  - Add type hints to __init__, change_db, and tooltip formatting methods
  - Use Any for Gramps-specific types that aren't easily importable

- Refactor generate_demo_family.py to use ElementTree
  - Replace string concatenation with xml.etree.ElementTree for proper XML generation
  - Add compatibility handling for Python < 3.9 (ET.indent)
  - Add EventData, PersonData, and FamilyData dataclasses for better structure
  - Add comprehensive type hints to all functions

- Extract magic numbers to named constants
  - Add constants for UI dimensions, timeline heights, dialog sizes
  - Add constants for date calculations and genealogical year ranges
  - Improve code readability and maintainability

- Refactor duplicated code in filter dialog handlers
  - Extract common checkbox handler logic into reusable methods
  - Create _make_group_toggle_handler and _make_child_toggle_handler
  - Eliminate code duplication between event type and family filters

- Improve shell scripts with better error handling
  - Add validation for Gramps installation
  - Improve error messages with actionable troubleshooting steps
  - Use set -euo pipefail for better error detection
  - Add better user guidance in error scenarios
2025-11-29 22:49:16 +01:00
ce75cd55bb Convert plugin to Event-based view and improve filter dialog
- Convert plugin from Family-based to Event-based view
  * Change category from Families to Events
  * Update navigation_type to 'Event'
  * Replace FamilyBookmarks with EventBookmarks
  * Rewrite collect_events() to show all events in database
  * Update goto_handle() to work with event handles

- Update filter dialog to show families with members
  * Restructure person filter page with expandable families
  * Each family shows father, mother, and children
  * Add helper method to generate family display names

- Restore person connection lines
  * Re-enable visual connections between events of selected person
  * Clicking an event selects the person and shows connections

- Add uninstall script
  * Remove plugin files and backup directories
  * Clean up any plugin files in subdirectories
2025-11-29 21:42:10 +01:00