022c(gui): Load almanac dialog with palette quick-fill #40

Merged
ykp merged 1 commit from feat/022c-almanac-gui into main 2026-10-01 20:15:48 +02:00
Owner

Step 022c — bring almanac support into the GUI (follows #38/#39).

Dialog (Settings tab, Load almanac…):

  • Source dropdown (CelesTrak GPS Yuma/SEM) + Fetch in a background thread (after(100, ...) polling; UI stays live; failures keep the previous document)
  • From file… imports local Yuma/SEM/JSON sniffed by content
  • status line: fetched|cached|file: N healthy / M satellites (source, week W)
  • Visibility filter: lat/lon/min-elev/when + Filter visible checkbox (same math as almanac --visible)
  • Apply to GPS/GLONASS checkboxes, enabled only for covered systems

Apply semantics:

  • targets from new widget-free almanac_apply_targets() helper (healthy ids, visible filter via core.visibility, explicit GLONASS channel map, healthy-only fallback for element-less docs)
  • applies to currently checked signals of the system, else first Tier-1 signal (GLONASS CDMA is Tier 2, never auto-checked)
  • satellites pre-checked in the 021 palettes; _commit_grid(chan_map=...) keeps explicit GLONASS channels (R2 (k-4) → 2:-9) in spec strings; first applied grid opened
  • unhealthy satellites stay available but unchecked

Locked during generation (dialog + entry button). No new dependencies; no network at startup; fetch monkeypatched in tests.

Tests: tests/test_gui_almanac.py — headless helper/apply tests + 2 gui-marked dialog flows (fetch+visible apply, file+GLONASS channels). Full suite green, ruff clean.

Step 022c — bring almanac support into the GUI (follows #38/#39). **Dialog** (Settings tab, **Load almanac…**): - Source dropdown (CelesTrak GPS Yuma/SEM) + **Fetch** in a background thread (`after(100, ...)` polling; UI stays live; failures keep the previous document) - **From file…** imports local Yuma/SEM/JSON sniffed by content - status line: `fetched|cached|file: N healthy / M satellites (source, week W)` - Visibility filter: lat/lon/min-elev/when + *Filter visible* checkbox (same math as `almanac --visible`) - **Apply to** GPS/GLONASS checkboxes, enabled only for covered systems **Apply semantics**: - targets from new widget-free `almanac_apply_targets()` helper (healthy ids, visible filter via `core.visibility`, explicit GLONASS channel map, healthy-only fallback for element-less docs) - applies to currently checked signals of the system, else first Tier-1 signal (GLONASS CDMA is Tier 2, never auto-checked) - satellites pre-checked in the 021 palettes; `_commit_grid(chan_map=...)` keeps explicit GLONASS channels (`R2 (k-4)` → `2:-9`) in spec strings; first applied grid opened - unhealthy satellites stay available but unchecked Locked during generation (dialog + entry button). No new dependencies; no network at startup; fetch monkeypatched in tests. **Tests**: `tests/test_gui_almanac.py` — headless helper/apply tests + 2 gui-marked dialog flows (fetch+visible apply, file+GLONASS channels). Full suite green, ruff clean.
022c(gui): Load almanac dialog with palette quick-fill
All checks were successful
ci / test (3.14) (push) Successful in 2m0s
ci / test (3.12) (push) Successful in 2m11s
ci / test (3.9) (push) Successful in 2m54s
ci / test (3.12) (pull_request) Successful in 2m51s
ci / test (3.14) (pull_request) Successful in 2m43s
ci / test (3.9) (pull_request) Successful in 2m43s
eb88f87e5e
- Load almanac… button + modeless dialog: source dropdown (CelesTrak
  Yuma/SEM), background-thread fetch polled via after(), From file…
  import (Yuma/SEM/JSON sniffed), cache indicator
- visibility filter (lat/lon/min-elev/when) mirroring `almanac --visible`
- Apply to GPS/GLONASS (enabled per document coverage): applies targets
  to checked signals else first Tier-1 signal, commits via
  _commit_grid(chan_map=...) so explicit GLONASS channels survive
- almanac_apply_targets() widget-free helper; unhealthy sats stay
  unchecked; dialog + entry button locked during generation
- gui/controllers: almanac_apply_targets; core/almanac: public source
  URL constants (cli aliases kept)
- tests/test_gui_almanac.py: headless helper tests + gui-marked dialog
  flows (fetch monkeypatched, network-free)
- docs/done/022c-almanac-gui.md work order archive
ykp merged commit 248ae26e1a into main 2026-10-01 20:15:48 +02:00
ykp deleted branch feat/022c-almanac-gui 2026-10-01 20:15:48 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ykp/gengnss!40
No description provided.