Add a fan-dipole wizard, completing the wizard suite - #5
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
The fourth design wizard on the shared framework, now that
FanDipoleModelexists (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.py—BandPicker+ heightLengthSpinBox, 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