A lightweight Windows desktop application for managing time-based events on a visual timeline. Built with pure Win32 API.
- Visual Timeline: 24-hour timeline starting from 8:00 AM with 10-minute slots
- Event Management: Add, edit, and delete timeline entries with custom durations
- Zoom: Scale the timeline from 50% to 300% using
Shift + Mouse WheelorShift + Arrow Keys - Scrolling: Drag to scroll, or use
A/Dkeys for horizontal navigation - Auto-tracking: Timeline automatically scrolls to show current time
- Overlap Detection: Visual feedback (diagonal stripes) when time slots overlap
- Smart Display: Event blocks show time range only when space permits (3+ slots)
- Past Time Indicator: Grayed-out area indicates past, unavailable time slots
| Key | Action |
|---|---|
A |
Scroll left |
D |
Scroll right |
Shift + Left/Right |
Zoom in/out |
Shift + Mouse Wheel |
Zoom in/out |
Escape |
Cancel current operation |
- Windows 7 or later
- No additional runtime dependencies required
- GCC (MinGW) with C++17 support
- Windows SDK
g++ -o sundial.exe main.cpp -std=c++17 -O2 -lgdi32 -luser32 -lcomdlg32 -lcomctl32 -municode -mwindows -finput-charset=UTF-8 -fexec-charset=UTF-8 -static
Or use the provided build script:
.\build.bat- Run
sundial.exe - Add Event: Right-click on the timeline to open the dialog, then drag to select a time range
- Edit Event: Left-click on an existing event block
- Delete Event: Click on an event and select "Delete" when prompted
- Scroll: Click and drag or use
A/Dkeys - Zoom: Hold
Shiftand use mouse wheel or arrow keys
sundial/
├── main.cpp # Main application source code
├── README.md # This file
└── LICENSE # MIT License
Data is saved to %APPDATA%\sundial\data.txt in a simple text format.
MIT License - See LICENSE for details.
Contributions are welcome! Please feel free to submit a Pull Request.