Skip to content

at91322/famtree

Repository files navigation

FamTree - Family Tree Manager

A Windows desktop application for managing genealogical data in GEDCOM format. Built in the style of a classic Petzold Win32 application using C++.

Features

Core Functionality

  • GEDCOM Import/Export: Full support for GEDCOM 5.5 and 5.5.1 file formats
  • Multiple Tree Management: Work with multiple family trees simultaneously via the dashboard
  • Person Management: Add, edit, and delete individuals with full biographical data
  • Family Management: Create and manage family units with spouse and children relationships

Tree Visualization

  • Pedigree View: Classic ancestor chart showing parents, grandparents, etc.
  • Descendant View: Shows all descendants of a selected individual
  • Family Group View: Displays family units with parents and children
  • Timeline View: Chronological view of events

Analysis Tools

  • Relationship Calculator: Determine the relationship between any two people
  • Common Ancestor Finder: Find shared ancestors between individuals
  • Search: Full-text search across names, places, dates, and notes
  • Filtering: Filter individuals by surname, dates, places, and living status
  • Statistics: Comprehensive statistics about your family tree

Data Management

  • Auto-save: Configurable automatic saving
  • Backup: Automatic backup creation on save
  • Recent Files: Quick access to recently opened trees
  • Settings: Customizable date formats, name formats, and more

Building

Requirements

  • MinGW-w64 (GCC for Windows)
  • Windows SDK headers (included with MinGW-w64)

Build Commands

# Build release version
make

# Build with debug symbols
make debug

# Clean build artifacts
make clean

# Rebuild everything
make rebuild

Output

The build produces famtree.exe, a standalone Windows executable.

File Structure

famtree/
├── famtree.cpp      # Application entry point and main loop
├── dashboard.cpp/h  # Main dashboard window
├── treeview.cpp/h   # Family tree view window
├── dialogs.cpp/h    # All dialog implementations
├── person.cpp/h     # Person/individual management
├── family.cpp/h     # Family unit management
├── gedcom.cpp/h     # GEDCOM parser and exporter
├── analysis.cpp/h   # Relationship and analysis functions
├── storage.cpp/h    # Settings and file management
├── types.h          # Common type definitions
├── resource.h       # Resource identifiers
├── famtree.rc       # Resource script (menus, dialogs, icons)
├── famtree.ico      # Application icon
├── famtree.manifest # Windows manifest for visual styles
└── Makefile         # Build configuration

Usage

Getting Started

  1. Launch famtree.exe
  2. Click "New Tree" to create a new family tree, or "Import" to import a GEDCOM file
  3. Use the tree window to add persons and families
  4. Save your work as a GEDCOM file for portability

Keyboard Shortcuts

Shortcut Action
Ctrl+N New Tree
Ctrl+O Open Tree
Ctrl+S Save
Ctrl+W Close
Ctrl+F Search
Ctrl+Z Undo
Insert Add Person
Enter Edit Selected
Delete Delete Selected
F5 Refresh View
F1 Help

GEDCOM Compatibility

FamTree supports the following GEDCOM features:

  • Individual records (INDI)
  • Family records (FAM)
  • Source citations (SOUR)
  • Standard events (BIRT, DEAT, MARR, DIV, etc.)
  • Notes and dates with modifiers (ABT, BEF, AFT, etc.)
  • ANSEL, ASCII, and UTF-8 character encodings

Architecture

The application follows classic Win32 programming patterns:

  • Window class registration and message loop in main
  • Separate window procedures for dashboard and tree views
  • Modal dialogs for editing
  • Linked lists for in-memory data storage
  • Registry/INI file for settings persistence

License

Copyright (c) 2025 Alex Thies

See LICENSE.md for details.

Contributing

Contributions are welcome! Please ensure your code:

  • Follows the existing coding style (C with classes, Win32 API)
  • Includes appropriate comments
  • Maintains GEDCOM compatibility
  • Works on Windows 7 and later

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published