Move WF AGC/NF from main form buttons to Settings → Waterfall checkboxes

Replaced the WF AGC and WF NF toggle buttons in the main panel with
"Waterfall AGC" and "Waterfall NF" checkboxes in the Settings form
Waterfall tab (AGC & Noise Floor group). Settings are global, defaults
remain AGC=on, NF=off.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-15 14:59:10 +03:00
co-authored by Claude Sonnet 4.6
parent e8561dcc18
commit 88ceee824d
2 changed files with 56 additions and 24 deletions
+45
View File
@@ -47,6 +47,7 @@ type
TOnVisibilityChange = procedure(ShowSpectrum, ShowWaterfall: Boolean) of object;
TOnFPSChange = procedure(FPS: Integer) of object;
TOnThemeChange = procedure(LightTheme: Boolean) of object;
TOnWfAGCNFChange = procedure(WfAGC, WfNF: Boolean) of object;
TOnCATChange = procedure(
const SerEnabled: array of Boolean;
const SerPort: array of string;
@@ -101,6 +102,8 @@ type
FWfHigh: TFloatSpinEdit;
FWfLow: TFloatSpinEdit;
FWfAGCOffset: TFloatSpinEdit;
FChkWfAGC: TCheckBox;
FChkWfNF: TCheckBox;
FEdRefLevel: TEdit;
FEdRange: TEdit;
FCmbGridStep: TComboBox;
@@ -246,6 +249,7 @@ type
FOnVisibilityChange: TOnVisibilityChange;
FOnFPSChange: TOnFPSChange;
FOnThemeChange: TOnThemeChange;
FOnWfAGCNFChange: TOnWfAGCNFChange;
FOnFreqMhzDigitsChange: TOnFreqMhzDigitsChange;
FOnTXChange: TOnTXSettingsChange;
@@ -293,6 +297,7 @@ type
procedure OnWfAvgModeChange(Sender: TObject);
procedure OnWfAvgTimeChange(Sender: TObject);
procedure OnWfThresholdChange(Sender: TObject);
procedure OnWfAGCNFChkChange(Sender: TObject);
procedure OnRefLevelChange(Sender: TObject);
procedure OnRangeChange(Sender: TObject);
procedure OnGridStepChange(Sender: TObject);
@@ -349,6 +354,7 @@ type
procedure LoadTXSettings(const T: TTXSettings);
procedure LoadAlexSettings(const A: TAlexSettings; BoardType: Integer);
procedure LoadXvtrSettings(const X: TXvtrSettings);
procedure LoadWfAGCNF(AGC, NF: Boolean);
property OnCATChange: TOnCATChange read FOnCATChange write FOnCATChange;
property OnAlexChange: TOnAlexChange read FOnAlexChange write FOnAlexChange;
@@ -364,6 +370,7 @@ type
property OnThemeChange: TOnThemeChange read FOnThemeChange write FOnThemeChange;
property OnFreqMhzDigitsChange: TOnFreqMhzDigitsChange read FOnFreqMhzDigitsChange write FOnFreqMhzDigitsChange;
property OnTXChange: TOnTXSettingsChange read FOnTXChange write FOnTXChange;
property OnWfAGCNFChange: TOnWfAGCNFChange read FOnWfAGCNFChange write FOnWfAGCNFChange;
end;
implementation
@@ -934,6 +941,26 @@ begin
FWfLow := MkFloat(CX, R1 + STEP, SPW, -130.0, -180.0, 0.0, 1.0, OnWfThresholdChange);
MakeLbl(Grp, 'AGC Offset (dB):', PAD, R1 + 2 * STEP + 5, LW);
FWfAGCOffset := MkFloat(CX, R1 + 2 * STEP, SPW, 0.0, -40.0, 40.0, 0.5, OnWfThresholdChange);
Grp := MakeGroupPanel(FPageWaterfall, 'AGC && Noise Floor', MARGIN, 458, 650, 140);
FChkWfAGC := TCheckBox.Create(Self);
FChkWfAGC.Parent := Grp;
FChkWfAGC.Caption := 'Waterfall AGC';
FChkWfAGC.SetBounds(PAD, R1, 200, 22);
FChkWfAGC.Checked := True;
FChkWfAGC.Font.Color := CLR_TEXT;
FChkWfAGC.Font.Name := UI_FONT;
FChkWfAGC.Font.Size := 9;
FChkWfAGC.OnChange := OnWfAGCNFChkChange;
FChkWfNF := TCheckBox.Create(Self);
FChkWfNF.Parent := Grp;
FChkWfNF.Caption := 'Waterfall NF';
FChkWfNF.SetBounds(PAD, R1 + STEP, 200, 22);
FChkWfNF.Checked := False;
FChkWfNF.Font.Color := CLR_TEXT;
FChkWfNF.Font.Name := UI_FONT;
FChkWfNF.Font.Size := 9;
FChkWfNF.OnChange := OnWfAGCNFChkChange;
end;
// ---------------------------------------------------------------------------
@@ -1911,6 +1938,13 @@ begin FireWaterfallChange; end;
procedure TSettingsForm.OnWfThresholdChange(Sender: TObject);
begin FireWaterfallChange; end;
procedure TSettingsForm.OnWfAGCNFChkChange(Sender: TObject);
begin
if FLoading then Exit;
if not Assigned(FOnWfAGCNFChange) then Exit;
FOnWfAGCNFChange(FChkWfAGC.Checked, FChkWfNF.Checked);
end;
procedure TSettingsForm.OnRefLevelChange(Sender: TObject);
begin FireGridChange; end;
@@ -1975,6 +2009,17 @@ begin
end;
end;
procedure TSettingsForm.LoadWfAGCNF(AGC, NF: Boolean);
begin
FLoading := True;
try
FChkWfAGC.Checked := AGC;
FChkWfNF.Checked := NF;
finally
FLoading := False;
end;
end;
procedure TSettingsForm.OnVisibilityChkChange(Sender: TObject);
begin
if FLoading then Exit;