mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 19:45:09 +00:00
Add AGC picker to VfoOverlay DSP row
AGC button in DSP row shows current mode (FAST/MED/SLOW/LONG/OFF). Click toggles a picker row below; selecting a mode closes it, fires OnAGCChange, and syncs MainForm BtnAGCMode buttons and DSP engine. Overlay height expands 136→159 px while picker is open. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+18
-3
@@ -665,6 +665,7 @@ type
|
||||
procedure PositionVfoOverlay;
|
||||
procedure OnModeFilterSelect(Mode: Integer; FilterBW: Integer);
|
||||
procedure OnVfoOverlayDSPChange(NRMode, NBMode: Integer; SNBOn, ANFOn: Boolean);
|
||||
procedure OnVfoOverlayAGCChange(AGCMode: Integer);
|
||||
procedure PbSpectrumDblClick(Sender: TObject);
|
||||
procedure TrkDriveChange(Sender: TObject);
|
||||
procedure TrkVolumeChange(Sender: TObject);
|
||||
@@ -1330,6 +1331,7 @@ begin
|
||||
FVfoOverlay := TVfoOverlay.Create(Self);
|
||||
FVfoOverlay.OnSelect := OnModeFilterSelect;
|
||||
FVfoOverlay.OnDSPChange := OnVfoOverlayDSPChange;
|
||||
FVfoOverlay.OnAGCChange := OnVfoOverlayAGCChange;
|
||||
FVfoOverlay.Visible := False;
|
||||
FPanelHidden := False;
|
||||
FShowSpectrum := True;
|
||||
@@ -5397,9 +5399,9 @@ begin
|
||||
BtnHidePanel.Caption := '▶';
|
||||
FVfoOverlay.Parent := PanelRight;
|
||||
FVfoOverlay.Width := 260;
|
||||
FVfoOverlay.Height := 136;
|
||||
FVfoOverlay.Height := 136; // OVL_H_NORM — расширяется сам при открытии AGC-пикера
|
||||
FVfoOverlay.SetState(FMode, FFilterBW, FVfoA, FLastSMeter);
|
||||
FVfoOverlay.SetDSPState(BtnNR.Tag, BtnNB.Tag, BtnSNB.Tag <> 0, BtnANF.Tag <> 0);
|
||||
FVfoOverlay.SetDSPState(BtnNR.Tag, BtnNB.Tag, BtnSNB.Tag <> 0, BtnANF.Tag <> 0, FAGCMode);
|
||||
FVfoOverlay.Visible := True;
|
||||
FVfoOverlay.BringToFront;
|
||||
PositionVfoOverlay;
|
||||
@@ -5463,7 +5465,7 @@ begin
|
||||
if Assigned(FVfoOverlay) and FVfoOverlay.Visible then
|
||||
begin
|
||||
FVfoOverlay.SetState(FMode, FFilterBW, FVfoA, FLastSMeter);
|
||||
FVfoOverlay.SetDSPState(BtnNR.Tag, BtnNB.Tag, BtnSNB.Tag <> 0, BtnANF.Tag <> 0);
|
||||
FVfoOverlay.SetDSPState(BtnNR.Tag, BtnNB.Tag, BtnSNB.Tag <> 0, BtnANF.Tag <> 0, FAGCMode);
|
||||
PositionVfoOverlay; // перепозиционируем при смене LSB↔USB
|
||||
end;
|
||||
end;
|
||||
@@ -5477,6 +5479,19 @@ begin
|
||||
ApplyNoiseFilterButtonsToDSP;
|
||||
end;
|
||||
|
||||
procedure TMainForm.OnVfoOverlayAGCChange(AGCMode: Integer);
|
||||
const
|
||||
AGCModes: array[0..4] of TWDSPAGCMode = (agcFast, agcMedium, agcSlow, agcLong, agcOff);
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
FAGCMode := AGCMode;
|
||||
for I := 0 to 4 do StyleButton(BtnAGCMode[I], I = AGCMode);
|
||||
if FWDSPReady then
|
||||
FDSPEngine.SetAGC(AGCModes[AGCMode], 50.0);
|
||||
FBandCache[FCurrentBand].AGCMode := FAGCMode;
|
||||
end;
|
||||
|
||||
procedure TMainForm.BtnSpanClick(Sender: TObject);
|
||||
var
|
||||
NewRate: Integer;
|
||||
|
||||
Reference in New Issue
Block a user