Skip to content

feat: GUI_V7 - Redesign of the UI#146

Open
Sam1rShaban1 wants to merge 12 commits into
NawfalMotii79:developfrom
Sam1rShaban1:ui/improvement
Open

feat: GUI_V7 - Redesign of the UI#146
Sam1rShaban1 wants to merge 12 commits into
NawfalMotii79:developfrom
Sam1rShaban1:ui/improvement

Conversation

@Sam1rShaban1
Copy link
Copy Markdown

@Sam1rShaban1 Sam1rShaban1 commented May 18, 2026

Summary

Complete PLFM_RADAR GUI (GUI_V7.py) with tactical military/aerospace styling per DESIGN.md.

Changes

Visual / UI

  • Military tactical theme: pitch black (#1a1a1a) background, emerald green (#10b981) accents, uppercase labels, Rajdhani/JetBrains Mono fallback fonts
  • Fullscreen, edge-to-edge panels with zero padding and 1px borders
  • Main view: horizontal PanedWindow — Range-Doppler map fills available width, Targets table clamped to fixed width
  • Colormap changed from hot to jet per DESIGN.md spec
  • Charts/figures enlarged to 16x12

New: RAW INPUTS tab

  • 65/35 horizontal split: hex dump (left) | UART terminal + Packet Inspector (right, 50/50 vertical)
  • Real-time hex dump with offset gutter and ASCII side panel
  • UART terminal with send field and baud rate selector
  • Packet Inspector parses and displays structured radar protocol fields

New: DIAGNOSTICS tab

  • System health cards: USB status, radar state, self-test, temperature, FPGA status, data rate
  • Refresh button with live updates

New: SETTINGS tab

  • Scrollable parameter form with 11 radar config fields
  • Apply button sends settings to STM32 via USB

Bug Fixes

  • Fixed generate_map() method collision: no-arg variant renamed to generate_map_file(), GPS queue calls refresh_map()
  • Fixed coverage_radius / 1000 format string error — pre-calculate before .format() call
  • Fixed improper JSON serialization: replaced str().replace("\", "\"") with json.dumps() to prevent quote injection
  • Added missing methods: setup_diagnostics_tab, setup_settings_tab, apply_settings, start_background_threads, add_log_entry
  • Removed ~600 lines of duplicate method definitions that inflated the file

Housekeeping

  • Updated .gitignore with backup_*, get-pip.py, venv/ patterns
  • Added requirements.txt with all dependencies (scipy, scikit-learn, filterpy, crcmod, pandas)

Verification

Check Result
python3 -m py_compile syntax ✅ Pass
git diff --check whitespace ✅ Clean
GUI regression tests (58 total) ✅ All pass (1 skipped: h5py)
Module imports and instantiates ✅ No import errors

- Military/aerospace tactical theme (pitch black #1a1a1a, emerald green #10b981)
- Fullscreen, edge-to-edge panels, UPPERCASE labels
- RAW INPUTS tab with 65/35 split, hex dump, UART terminal, packet inspector
- 58/58 GUI regression tests pass
- Updated .gitignore with backup/venv patterns
- requirements.txt with all dependencies
@Sam1rShaban1 Sam1rShaban1 changed the title feat: GUI_V7 tactical dashboard styling per DESIGN.md feat: GUI_V7 - Redesign of the UI May 18, 2026
…gging)

- Added setup_diagnostics_tab with system health cards (USB, FPGA, temp, etc.)
- Added setup_settings_tab with scrollable parameter form (11 fields)
- Added apply_settings to send radar config to STM32 via USB
- Added start_background_threads for radar/GPS data processing
- Added add_log_entry with colored terminal output
- Added 'type' and 'range' keys to simulated test data packets
- Fixed unescaped {target.id} and {target.azimuth} in map HTML template
  causing KeyError during .format()
- Replaced nonexistent map_status_label with map_status_text
- Replaced nonexistent gps_label/pitch_label with gps_coords_label/pitch_value_label
- Used hasattr guards for defensive access
@NawfalMotii79
Copy link
Copy Markdown
Owner

@Sam1rShaban1 could you post a gif or a video showing the GUI in action?

- Rewrote update_gui() to match V6: draws range-doppler map from
  processor data, updates targets tree, stats bar, and GPS display
- Added update_targets_list() matching V7's treeview columns
- update_gui now runs at 250ms interval
@Sam1rShaban1
Copy link
Copy Markdown
Author

Sam1rShaban1 commented May 19, 2026

screenrecording-2026-05-19_11-56-46.mp4

This is ran with test_radar_data.csv as mock data.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants