Skip to content

Add a fan-dipole wizard, completing the wizard suite - #5

Merged
skip17331 merged 1 commit into
mainfrom
fan-dipole-wizard
Jun 2, 2026
Merged

Add a fan-dipole wizard, completing the wizard suite#5
skip17331 merged 1 commit into
mainfrom
fan-dipole-wizard

Conversation

@skip17331

Copy link
Copy Markdown
Owner

What

The fourth design wizard on the shared framework, now that FanDipoleModel exists (PR #4). Tick the bands, set the flat-top height; the wizard cuts one half-wave dipole leg per band and fills the fan-dipole height + leg editors.

This completes the original wizard wishlist (trapped dipole, inverted-L, multiband vertical, fan dipole). The Yagi designer remains intentionally parked until per-element Yagi control exists.

How

  • results/fan_dipole_design.py — pure layout: one half-wave leg per band, sorted low→high; rejects fewer than two bands (a fan needs ≥2 legs), non-positive frequencies, or non-positive height.
  • ui/fan_dipole_wizard.pyBandPicker + height LengthSpinBox, defaulting to 40/20/10 m.
  • MainWindow.apply_fan_dipole_design — sets the antenna type, flat-top height, operating frequency (lowest band), and the legs via _fan_dipole_editor.set_legs(...).

Tests

tests/test_fan_dipole_wizard.py (+8): leg layout, lowest-band/sorted ordering, height passthrough, the two-band-minimum and bad-height rejections, the apply hook building a real model, and the dialog + validation flow (one-band → warns and stays open). Suite 485 → 493, green locally.

🤖 Generated with Claude Code

The fourth design wizard on the shared framework, now that FanDipoleModel
exists. The user ticks the bands and sets the flat-top height; the wizard
cuts one half-wave dipole leg per band and fills the fan-dipole height + leg
editors.

  * results/fan_dipole_design.py — one half-wave leg per band; rejects fewer
    than two bands (a fan needs at least two legs).
  * ui/fan_dipole_wizard.py — BandPicker + height, defaulting to 40/20/10 m.
  * MainWindow.apply_fan_dipole_design — sets the type, height, operating
    frequency (lowest band), and legs.

Tests cover the leg layout, the lowest-band/sorted-leg ordering, the
two-band-minimum rejection, the apply hook building a real model, and the
dialog/validation flow. Suite 485 -> 493.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@skip17331
skip17331 merged commit 83a5501 into main Jun 2, 2026
6 of 8 checks passed
@skip17331
skip17331 deleted the fan-dipole-wizard branch June 2, 2026 23:52
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.

1 participant