caecc60c7b
Items 1–12 of the interface review: - Larger UI font (UI_FONT_SIZE) across widgets, menus, dialogs, Treeview rows. - DRK-red header bar; window title shows entry count; runtime-drawn red-cross icon (also written to data/icon.png for the launcher). - Status bar colour-coded by severity; transient messages auto-clear after 8 s, queue-count messages stay. - Tab 1: more form spacing, digits-only PLZ, explicit "Auswahl entfernen" + Delete key for queue rows, confirm on "Warteschlange leeren", modal on duplicate save. - Tab 2: raw lat/lon columns replaced by one "Karte" column (checkmark / red "fehlt"); ▲/▼ arrow on the active sort column; hint line always shows the saved-entry count. - "Karte öffnen" with no coordinates shows a dialog, not just a status line. - Window size/position remembered between sessions (data/window.json). Verified by building and driving the window under Homebrew Python 3.12 / Tk 9; non-GUI smoke tests still pass. Docs updated (changelog, overview, improvements, data-model, setup, dev-notes). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
107 lines
2.5 KiB
Markdown
107 lines
2.5 KiB
Markdown
# Setup & running
|
||
|
||
Target machine: **Linux Mint laptop**, single non-technical user. The goal is
|
||
that day-to-day use is a **double-click**, with the terminal only needed once
|
||
during install.
|
||
|
||
## 1. System packages
|
||
|
||
Tkinter is not bundled with the system Python on Mint and must be installed
|
||
separately:
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install python3-tk python3-venv python3-pip
|
||
```
|
||
|
||
## 2. Get the code
|
||
|
||
Put the project folder somewhere stable, e.g. `~/Apps/DRK_Blutspende_Orte`.
|
||
|
||
## 3. Create a virtual environment and install dependencies
|
||
|
||
```bash
|
||
cd ~/Apps/DRK_Blutspende_Orte
|
||
python3 -m venv .venv
|
||
.venv/bin/pip install -r requirements.txt
|
||
```
|
||
|
||
`requirements.txt`:
|
||
|
||
```
|
||
ttkbootstrap==1.10.1
|
||
geopy>=2.4.1
|
||
folium>=0.17.0
|
||
pandas>=2.2.0
|
||
```
|
||
|
||
> Only `ttkbootstrap` is pinned exactly. For a machine you hand to someone else,
|
||
> consider pinning all four (see [improvements.md](improvements.md#5-packaging--distribution)).
|
||
|
||
## 4. Run it
|
||
|
||
```bash
|
||
.venv/bin/python app.py
|
||
```
|
||
|
||
The window should open. `data/orte.csv` is created automatically on first run if
|
||
it is missing.
|
||
|
||
## 5. Make it a double-click launcher
|
||
|
||
### Launcher script
|
||
|
||
Create `run.sh` in the project root:
|
||
|
||
```bash
|
||
#!/usr/bin/env bash
|
||
cd "$(dirname "$0")"
|
||
exec .venv/bin/python app.py
|
||
```
|
||
|
||
```bash
|
||
chmod +x run.sh
|
||
```
|
||
|
||
### Desktop entry
|
||
|
||
Create `~/.local/share/applications/drk-blutspende-orte.desktop`:
|
||
|
||
```ini
|
||
[Desktop Entry]
|
||
Type=Application
|
||
Name=DRK Blutspende – Arbeitsorte
|
||
Comment=Einsatzorte protokollieren und auf der Karte anzeigen
|
||
Exec=/home/USER/Apps/DRK_Blutspende_Orte/run.sh
|
||
Icon=/home/USER/Apps/DRK_Blutspende_Orte/data/icon.png
|
||
Terminal=false
|
||
Categories=Utility;
|
||
```
|
||
|
||
Replace `USER` with the real username. The app writes a simple red-cross
|
||
`data/icon.png` on first run; drop in the real DRK logo at that path if you have
|
||
one. The entry then shows up in the Mint menu and can be pinned to the panel or
|
||
the desktop.
|
||
|
||
## Python / Tk version
|
||
|
||
Python 3.9+ is fine (the code uses `from __future__ import annotations`). The
|
||
system Python on current Mint releases is well above that.
|
||
|
||
`ttkbootstrap` needs **Tk 8.6 or newer**. Linux Mint's `python3-tk` provides
|
||
that. The macOS CommandLineTools Python used during development ships Tk 8.5 and
|
||
**cannot run the GUI** — see [dev-notes.md](dev-notes.md).
|
||
|
||
## Updating
|
||
|
||
```bash
|
||
cd ~/Apps/DRK_Blutspende_Orte
|
||
git pull # once the project is in git
|
||
.venv/bin/pip install -r requirements.txt
|
||
```
|
||
|
||
## Data location
|
||
|
||
All state is in `data/orte.csv` next to `app.py`. To back up the app, copy that
|
||
one file. To move to a new laptop, copy the whole folder and redo steps 1 & 3.
|