git repos / SagoImageBrowser

blame: README.md

normal view · raw

c0882fd1 Poul Sander 2026-02-23 19:00 1
# SagoImageBrowser
c0882fd1 Poul Sander 2026-02-23 19:00 2
c0882fd1 Poul Sander 2026-02-23 19:00 3
A Qt6-based image browser application for viewing and managing image collections.
c0882fd1 Poul Sander 2026-02-23 19:00 4
c0882fd1 Poul Sander 2026-02-23 19:00 5
## Features
c0882fd1 Poul Sander 2026-02-23 19:00 6
ce844ce8 Poul Sander 2026-06-10 18:04 7
- Browse images in a directory tree with file system navigation
ce844ce8 Poul Sander 2026-06-10 18:04 8
- Multi-threaded, cached thumbnail generation for a responsive UI
ce844ce8 Poul Sander 2026-06-10 18:04 9
- Single image view mode with keyboard-driven zoom, pan, fit and navigation
ce844ce8 Poul Sander 2026-06-10 18:04 10
- Fullscreen viewing
ce844ce8 Poul Sander 2026-06-10 18:04 11
- EXIF/IPTC metadata panel (camera, exposure, ISO, focal length, dimensions, …)
ce844ce8 Poul Sander 2026-06-10 18:04 12
- Geo location with a clickable OpenStreetMap link when an image is geotagged
ce844ce8 Poul Sander 2026-06-10 18:04 13
- Edit image captions (written to the IPTC Caption-Abstract tag)
ce844ce8 Poul Sander 2026-06-10 18:04 14
- Lossless 90° rotation (updates the EXIF orientation tag, pixel data untouched)
ce844ce8 Poul Sander 2026-06-10 18:04 15
- Move images to trash and delete files
ce844ce8 Poul Sander 2026-06-10 18:04 16
- Right-click context menus (including copying file paths), also in fullscreen
ce844ce8 Poul Sander 2026-06-10 18:04 17
- Configurable keyboard shortcuts
ce844ce8 Poul Sander 2026-06-10 18:04 18
- Preferences for background color, thumbnail cache size, dock locking and layout
ce844ce8 Poul Sander 2026-06-10 18:04 19
- Path entry field with autocomplete
ce844ce8 Poul Sander 2026-06-10 18:04 20
- Translations (Danish included)
ce844ce8 Poul Sander 2026-06-10 18:04 21
- Supports every image format provided by the installed Qt image plugins
c0882fd1 Poul Sander 2026-02-23 19:00 22
c0882fd1 Poul Sander 2026-02-23 19:00 23
## Requirements
c0882fd1 Poul Sander 2026-02-23 19:00 24
c0882fd1 Poul Sander 2026-02-23 19:00 25
- C++17 or later
c0882fd1 Poul Sander 2026-02-23 19:00 26
- CMake 3.21+
ce844ce8 Poul Sander 2026-06-10 18:04 27
- Qt6 (Widgets and LinguistTools components)
ce844ce8 Poul Sander 2026-06-10 18:04 28
- Git and a network connection — Exiv2 (v0.28.8) is fetched and statically linked
ce844ce8 Poul Sander 2026-06-10 18:04 29
  at configure time via CMake `FetchContent`
c0882fd1 Poul Sander 2026-02-23 19:00 30
c0882fd1 Poul Sander 2026-02-23 19:00 31
## Building
c0882fd1 Poul Sander 2026-02-23 19:00 32
c0882fd1 Poul Sander 2026-02-23 19:00 33
### Prerequisites
c0882fd1 Poul Sander 2026-02-23 19:00 34
c0882fd1 Poul Sander 2026-02-23 19:00 35
Install Qt6 development files:
c0882fd1 Poul Sander 2026-02-23 19:00 36
c0882fd1 Poul Sander 2026-02-23 19:00 37
```bash
c0882fd1 Poul Sander 2026-02-23 19:00 38
# On Ubuntu/Debian
ce844ce8 Poul Sander 2026-06-10 18:04 39
sudo apt-get install qt6-base-dev qt6-tools-dev
c0882fd1 Poul Sander 2026-02-23 19:00 40
c0882fd1 Poul Sander 2026-02-23 19:00 41
# On macOS with Homebrew
c0882fd1 Poul Sander 2026-02-23 19:00 42
brew install qt6
c0882fd1 Poul Sander 2026-02-23 19:00 43
```
c0882fd1 Poul Sander 2026-02-23 19:00 44
c0882fd1 Poul Sander 2026-02-23 19:00 45
### Build Steps
c0882fd1 Poul Sander 2026-02-23 19:00 46
c0882fd1 Poul Sander 2026-02-23 19:00 47
```bash
c0882fd1 Poul Sander 2026-02-23 19:00 48
cd SagoImageBrowser
ce844ce8 Poul Sander 2026-06-10 18:04 49
cmake -B build
ce844ce8 Poul Sander 2026-06-10 18:04 50
cmake --build build
c0882fd1 Poul Sander 2026-02-23 19:00 51
```
c0882fd1 Poul Sander 2026-02-23 19:00 52
ce844ce8 Poul Sander 2026-06-10 18:04 53
The compiled executable will be at `./build/SagoImageBrowser`.
ce844ce8 Poul Sander 2026-06-10 18:04 54
ce844ce8 Poul Sander 2026-06-10 18:04 55
### Installing
ce844ce8 Poul Sander 2026-06-10 18:04 56
ce844ce8 Poul Sander 2026-06-10 18:04 57
```bash
ce844ce8 Poul Sander 2026-06-10 18:04 58
cmake --install build
ce844ce8 Poul Sander 2026-06-10 18:04 59
```
ce844ce8 Poul Sander 2026-06-10 18:04 60
ce844ce8 Poul Sander 2026-06-10 18:04 61
This installs the executable, a `.desktop` entry and the application icon.
c0882fd1 Poul Sander 2026-02-23 19:00 62
c0882fd1 Poul Sander 2026-02-23 19:00 63
## Running
c0882fd1 Poul Sander 2026-02-23 19:00 64
c0882fd1 Poul Sander 2026-02-23 19:00 65
```bash
ce844ce8 Poul Sander 2026-06-10 18:04 66
./build/SagoImageBrowser [path]
ce844ce8 Poul Sander 2026-06-10 18:04 67
```
ce844ce8 Poul Sander 2026-06-10 18:04 68
ce844ce8 Poul Sander 2026-06-10 18:04 69
An optional directory or image path can be passed on the command line.
ce844ce8 Poul Sander 2026-06-10 18:04 70
ce844ce8 Poul Sander 2026-06-10 18:04 71
## Tests
ce844ce8 Poul Sander 2026-06-10 18:04 72
ce844ce8 Poul Sander 2026-06-10 18:04 73
A small test for the EXIF reader is built alongside the application:
ce844ce8 Poul Sander 2026-06-10 18:04 74
ce844ce8 Poul Sander 2026-06-10 18:04 75
```bash
ce844ce8 Poul Sander 2026-06-10 18:04 76
./build/test_exifreader
c0882fd1 Poul Sander 2026-02-23 19:00 77
```
c0882fd1 Poul Sander 2026-02-23 19:00 78
c0882fd1 Poul Sander 2026-02-23 19:00 79
## Project Structure
c0882fd1 Poul Sander 2026-02-23 19:00 80
c0882fd1 Poul Sander 2026-02-23 19:00 81
```
c0882fd1 Poul Sander 2026-02-23 19:00 82
src/
ce844ce8 Poul Sander 2026-06-10 18:04 83
  ├── main.cpp                  # Application entry point
ce844ce8 Poul Sander 2026-06-10 18:04 84
  ├── mainwindow.h/cpp          # Main application window
ce844ce8 Poul Sander 2026-06-10 18:04 85
  ├── imagemodel.h/cpp          # Image list/grid data model
ce844ce8 Poul Sander 2026-06-10 18:04 86
  ├── fsdirmodel.h/cpp          # Directory tree model
ce844ce8 Poul Sander 2026-06-10 18:04 87
  ├── imageviewwidget.h/cpp     # Single-image display widget (zoom/pan)
ce844ce8 Poul Sander 2026-06-10 18:04 88
  ├── thumbnailworker.h/cpp     # Background thumbnail generation
ce844ce8 Poul Sander 2026-06-10 18:04 89
  ├── thumbnailcache.h/cpp      # Thumbnail caching
ce844ce8 Poul Sander 2026-06-10 18:04 90
  ├── thumbnaildelegate.h/cpp   # Thumbnail rendering in the view
ce844ce8 Poul Sander 2026-06-10 18:04 91
  ├── exifreader.h/cpp          # EXIF/IPTC reading, caption writing, rotation
ce844ce8 Poul Sander 2026-06-10 18:04 92
  ├── preferencesdialog.h/cpp   # Preferences dialog
ce844ce8 Poul Sander 2026-06-10 18:04 93
  ├── shortcutmanager.h/cpp     # Configurable keyboard shortcuts
ce844ce8 Poul Sander 2026-06-10 18:04 94
  └── pathcompletermodel.h/cpp  # Autocomplete for the path field
ce844ce8 Poul Sander 2026-06-10 18:04 95
test/                           # Unit tests
ce844ce8 Poul Sander 2026-06-10 18:04 96
translations/                   # Qt translation files (.ts)
ce844ce8 Poul Sander 2026-06-10 18:04 97
extra/                          # Desktop entry and icons
ce844ce8 Poul Sander 2026-06-10 18:04 98
CMakeLists.txt                  # Build configuration
c0882fd1 Poul Sander 2026-02-23 19:00 99
```
c0882fd1 Poul Sander 2026-02-23 19:00 100
c0882fd1 Poul Sander 2026-02-23 19:00 101
## License
c0882fd1 Poul Sander 2026-02-23 19:00 102
14cf904f Poul Sander 2026-06-22 18:18 103
GPL 3.0 or later, see `LICENSE` file for details.
14cf904f Poul Sander 2026-06-22 18:18 104
14cf904f Poul Sander 2026-06-22 18:18 105
Some files might have more liberal licenses, see individual file headers for details.
14cf904f Poul Sander 2026-06-22 18:18 106
1970-01-01 00:00 107