mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
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:
+11
-24
@@ -342,8 +342,6 @@ type
|
|||||||
BtnSNB: TFlatButton;
|
BtnSNB: TFlatButton;
|
||||||
BtnANF: TFlatButton;
|
BtnANF: TFlatButton;
|
||||||
BtnMute: TFlatButton;
|
BtnMute: TFlatButton;
|
||||||
BtnWfAGC: TFlatButton;
|
|
||||||
BtnWfNF: TFlatButton;
|
|
||||||
|
|
||||||
PanelSMeterRight: TPanel;
|
PanelSMeterRight: TPanel;
|
||||||
PbSMeterRight: TPaintBox;
|
PbSMeterRight: TPaintBox;
|
||||||
@@ -577,8 +575,6 @@ type
|
|||||||
procedure ActivateXvtrBand(Idx: Integer);
|
procedure ActivateXvtrBand(Idx: Integer);
|
||||||
procedure DeactivateXvtr;
|
procedure DeactivateXvtr;
|
||||||
// -------------------------------------------------------------------------
|
// -------------------------------------------------------------------------
|
||||||
procedure BtnWfAGCClick(Sender: TObject);
|
|
||||||
procedure BtnWfNFClick(Sender: TObject);
|
|
||||||
procedure BtnHidePanelClick(Sender: TObject);
|
procedure BtnHidePanelClick(Sender: TObject);
|
||||||
procedure BtnSettingsClick(Sender: TObject);
|
procedure BtnSettingsClick(Sender: TObject);
|
||||||
procedure PositionVfoOverlay;
|
procedure PositionVfoOverlay;
|
||||||
@@ -612,6 +608,7 @@ type
|
|||||||
SpecAvgTimeMS: Double);
|
SpecAvgTimeMS: Double);
|
||||||
procedure ApplyWaterfallParams(WfDet, WfAvgMode: Integer;
|
procedure ApplyWaterfallParams(WfDet, WfAvgMode: Integer;
|
||||||
WfAvgTimeMS, WfHigh, WfLow, WfAGCOffset: Double);
|
WfAvgTimeMS, WfHigh, WfLow, WfAGCOffset: Double);
|
||||||
|
procedure ApplyWfAGCNF(WfAGC, WfNF: Boolean);
|
||||||
procedure ApplyGridParams(RefLevel, Range, GridStep: Double);
|
procedure ApplyGridParams(RefLevel, Range, GridStep: Double);
|
||||||
// Пушит активные grid-параметры (RX или TX в зависимости от FTransmitting)
|
// Пушит активные grid-параметры (RX или TX в зависимости от FTransmitting)
|
||||||
// в FSpecView и сбрасывает кэш сетки. Вызывается при смене RX↔TX и при
|
// в FSpecView и сбрасывает кэш сетки. Вызывается при смене RX↔TX и при
|
||||||
@@ -1646,7 +1643,7 @@ begin
|
|||||||
// RX controls
|
// RX controls
|
||||||
PanelRX := TPanel.Create(Self);
|
PanelRX := TPanel.Create(Self);
|
||||||
PanelRX.Parent := PanelLeft;
|
PanelRX.Parent := PanelLeft;
|
||||||
PanelRX.SetBounds(0, Y, LEFT_W, 150);
|
PanelRX.SetBounds(0, Y, LEFT_W, 122);
|
||||||
PanelRX.BevelOuter := bvNone;
|
PanelRX.BevelOuter := bvNone;
|
||||||
|
|
||||||
// AGC mode — 5 кнопок в ряд
|
// AGC mode — 5 кнопок в ряд
|
||||||
@@ -1692,10 +1689,8 @@ begin
|
|||||||
BtnSNB := MakeBtn(PanelRX, 'SNB', 2*W+6, 96, W, BTN_SM, BtnSNBClick);
|
BtnSNB := MakeBtn(PanelRX, 'SNB', 2*W+6, 96, W, BTN_SM, BtnSNBClick);
|
||||||
BtnANF := MakeBtn(PanelRX, 'ANF', 3*W+8, 96, W, BTN_SM, BtnANFClick);
|
BtnANF := MakeBtn(PanelRX, 'ANF', 3*W+8, 96, W, BTN_SM, BtnANFClick);
|
||||||
BtnMute:= MakeBtn(PanelRX, 'MUTE', 4*W+10, 96, W, BTN_SM, BtnMuteClick);
|
BtnMute:= MakeBtn(PanelRX, 'MUTE', 4*W+10, 96, W, BTN_SM, BtnMuteClick);
|
||||||
BtnWfAGC := MakeBtn(PanelRX, 'WF AGC', 2, 122, (LEFT_W - 6) div 2, BTN_SM, BtnWfAGCClick);
|
|
||||||
BtnWfNF := MakeBtn(PanelRX, 'WF NF', 4 + (LEFT_W - 6) div 2, 122, (LEFT_W - 6) div 2, BTN_SM, BtnWfNFClick);
|
|
||||||
|
|
||||||
Inc(Y, 154);
|
Inc(Y, 126);
|
||||||
|
|
||||||
// S-Meter
|
// S-Meter
|
||||||
|
|
||||||
@@ -2294,8 +2289,6 @@ begin
|
|||||||
StyleButton(BtnSNB, BtnSNB.Active);
|
StyleButton(BtnSNB, BtnSNB.Active);
|
||||||
StyleButton(BtnANF, BtnANF.Active);
|
StyleButton(BtnANF, BtnANF.Active);
|
||||||
StyleButton(BtnMute, BtnMute.Active);
|
StyleButton(BtnMute, BtnMute.Active);
|
||||||
StyleButton(BtnWfAGC, BtnWfAGC.Active);
|
|
||||||
StyleButton(BtnWfNF, BtnWfNF.Active);
|
|
||||||
StyleButton(BtnMOX, BtnMOX.Active);
|
StyleButton(BtnMOX, BtnMOX.Active);
|
||||||
StyleButton(BtnTUN, BtnTUN.Active);
|
StyleButton(BtnTUN, BtnTUN.Active);
|
||||||
|
|
||||||
@@ -3519,8 +3512,8 @@ begin
|
|||||||
BtnNB.Tag := EnsureRange(G_Settings.NBMode, 0, 2); UpdateNBButton;
|
BtnNB.Tag := EnsureRange(G_Settings.NBMode, 0, 2); UpdateNBButton;
|
||||||
BtnSNB.Tag := Ord(G_Settings.SNBEnabled); UpdateSNBButton;
|
BtnSNB.Tag := Ord(G_Settings.SNBEnabled); UpdateSNBButton;
|
||||||
BtnANF.Tag := Ord(G_Settings.ANFEnabled); UpdateANFButton;
|
BtnANF.Tag := Ord(G_Settings.ANFEnabled); UpdateANFButton;
|
||||||
FWfAGCEnabled := G_Settings.WfAGCEnabled; StyleButton(BtnWfAGC, FWfAGCEnabled);
|
FWfAGCEnabled := G_Settings.WfAGCEnabled;
|
||||||
FWfNFEnabled := G_Settings.WfNFEnabled; StyleButton(BtnWfNF, FWfNFEnabled);
|
FWfNFEnabled := G_Settings.WfNFEnabled;
|
||||||
FWfManualHigh := G_Settings.WfManualHigh;
|
FWfManualHigh := G_Settings.WfManualHigh;
|
||||||
FWfManualLow := G_Settings.WfManualLow;
|
FWfManualLow := G_Settings.WfManualLow;
|
||||||
FWfAGCOffset := G_Settings.WfAGCOffset;
|
FWfAGCOffset := G_Settings.WfAGCOffset;
|
||||||
@@ -4728,18 +4721,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TMainForm.BtnWfAGCClick(Sender: TObject);
|
procedure TMainForm.ApplyWfAGCNF(WfAGC, WfNF: Boolean);
|
||||||
begin
|
begin
|
||||||
FWfAGCEnabled := not FWfAGCEnabled;
|
FWfAGCEnabled := WfAGC;
|
||||||
StyleButton(BtnWfAGC, FWfAGCEnabled);
|
FWfNFEnabled := WfNF;
|
||||||
FSpecView.WfAGCEnabled := FWfAGCEnabled;
|
FSpecView.WfAGCEnabled := FWfAGCEnabled;
|
||||||
end;
|
FSpecView.WfNFEnabled := FWfNFEnabled;
|
||||||
|
|
||||||
procedure TMainForm.BtnWfNFClick(Sender: TObject);
|
|
||||||
begin
|
|
||||||
FWfNFEnabled := not FWfNFEnabled;
|
|
||||||
StyleButton(BtnWfNF, FWfNFEnabled);
|
|
||||||
FSpecView.WfNFEnabled := FWfNFEnabled;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.BtnHidePanelClick(Sender: TObject);
|
procedure TMainForm.BtnHidePanelClick(Sender: TObject);
|
||||||
@@ -5116,7 +5103,6 @@ end;
|
|||||||
procedure TMainForm.SyncWebWfAGC;
|
procedure TMainForm.SyncWebWfAGC;
|
||||||
begin
|
begin
|
||||||
FWfAGCEnabled := FWebSyncBool;
|
FWfAGCEnabled := FWebSyncBool;
|
||||||
StyleButton(BtnWfAGC, FWfAGCEnabled);
|
|
||||||
FSpecView.WfAGCEnabled := FWfAGCEnabled;
|
FSpecView.WfAGCEnabled := FWfAGCEnabled;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -5130,7 +5116,6 @@ end;
|
|||||||
procedure TMainForm.SyncWebWfNF;
|
procedure TMainForm.SyncWebWfNF;
|
||||||
begin
|
begin
|
||||||
FWfNFEnabled := FWebSyncBool;
|
FWfNFEnabled := FWebSyncBool;
|
||||||
StyleButton(BtnWfNF, FWfNFEnabled);
|
|
||||||
FSpecView.WfNFEnabled := FWfNFEnabled;
|
FSpecView.WfNFEnabled := FWfNFEnabled;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -6123,6 +6108,7 @@ begin
|
|||||||
SF.OnTXChange := OnTXSettingsChange;
|
SF.OnTXChange := OnTXSettingsChange;
|
||||||
SF.OnAlexChange := OnAlexSettingsChange;
|
SF.OnAlexChange := OnAlexSettingsChange;
|
||||||
SF.OnXvtrChange := OnXvtrSettingsChange;
|
SF.OnXvtrChange := OnXvtrSettingsChange;
|
||||||
|
SF.OnWfAGCNFChange := ApplyWfAGCNF;
|
||||||
end;
|
end;
|
||||||
SF := TSettingsForm(FSettingsForm);
|
SF := TSettingsForm(FSettingsForm);
|
||||||
SF.LoadTXSettings(FTXSettings);
|
SF.LoadTXSettings(FTXSettings);
|
||||||
@@ -6142,6 +6128,7 @@ begin
|
|||||||
// Перечисляем PA устройства
|
// Перечисляем PA устройства
|
||||||
SF.RefreshAudioDevices(FAudioOut, FAudioIn);
|
SF.RefreshAudioDevices(FAudioOut, FAudioIn);
|
||||||
SF.LoadVisibility(FShowSpectrum, FShowWaterfall);
|
SF.LoadVisibility(FShowSpectrum, FShowWaterfall);
|
||||||
|
SF.LoadWfAGCNF(FWfAGCEnabled, FWfNFEnabled);
|
||||||
SF.LoadFPS(FDisplayFPS);
|
SF.LoadFPS(FDisplayFPS);
|
||||||
SF.LoadLightTheme(FLightTheme);
|
SF.LoadLightTheme(FLightTheme);
|
||||||
SF.LoadFreqMhzDigits(FFreqMhzDigits);
|
SF.LoadFreqMhzDigits(FFreqMhzDigits);
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ type
|
|||||||
TOnVisibilityChange = procedure(ShowSpectrum, ShowWaterfall: Boolean) of object;
|
TOnVisibilityChange = procedure(ShowSpectrum, ShowWaterfall: Boolean) of object;
|
||||||
TOnFPSChange = procedure(FPS: Integer) of object;
|
TOnFPSChange = procedure(FPS: Integer) of object;
|
||||||
TOnThemeChange = procedure(LightTheme: Boolean) of object;
|
TOnThemeChange = procedure(LightTheme: Boolean) of object;
|
||||||
|
TOnWfAGCNFChange = procedure(WfAGC, WfNF: Boolean) of object;
|
||||||
TOnCATChange = procedure(
|
TOnCATChange = procedure(
|
||||||
const SerEnabled: array of Boolean;
|
const SerEnabled: array of Boolean;
|
||||||
const SerPort: array of string;
|
const SerPort: array of string;
|
||||||
@@ -101,6 +102,8 @@ type
|
|||||||
FWfHigh: TFloatSpinEdit;
|
FWfHigh: TFloatSpinEdit;
|
||||||
FWfLow: TFloatSpinEdit;
|
FWfLow: TFloatSpinEdit;
|
||||||
FWfAGCOffset: TFloatSpinEdit;
|
FWfAGCOffset: TFloatSpinEdit;
|
||||||
|
FChkWfAGC: TCheckBox;
|
||||||
|
FChkWfNF: TCheckBox;
|
||||||
FEdRefLevel: TEdit;
|
FEdRefLevel: TEdit;
|
||||||
FEdRange: TEdit;
|
FEdRange: TEdit;
|
||||||
FCmbGridStep: TComboBox;
|
FCmbGridStep: TComboBox;
|
||||||
@@ -246,6 +249,7 @@ type
|
|||||||
FOnVisibilityChange: TOnVisibilityChange;
|
FOnVisibilityChange: TOnVisibilityChange;
|
||||||
FOnFPSChange: TOnFPSChange;
|
FOnFPSChange: TOnFPSChange;
|
||||||
FOnThemeChange: TOnThemeChange;
|
FOnThemeChange: TOnThemeChange;
|
||||||
|
FOnWfAGCNFChange: TOnWfAGCNFChange;
|
||||||
FOnFreqMhzDigitsChange: TOnFreqMhzDigitsChange;
|
FOnFreqMhzDigitsChange: TOnFreqMhzDigitsChange;
|
||||||
FOnTXChange: TOnTXSettingsChange;
|
FOnTXChange: TOnTXSettingsChange;
|
||||||
|
|
||||||
@@ -293,6 +297,7 @@ type
|
|||||||
procedure OnWfAvgModeChange(Sender: TObject);
|
procedure OnWfAvgModeChange(Sender: TObject);
|
||||||
procedure OnWfAvgTimeChange(Sender: TObject);
|
procedure OnWfAvgTimeChange(Sender: TObject);
|
||||||
procedure OnWfThresholdChange(Sender: TObject);
|
procedure OnWfThresholdChange(Sender: TObject);
|
||||||
|
procedure OnWfAGCNFChkChange(Sender: TObject);
|
||||||
procedure OnRefLevelChange(Sender: TObject);
|
procedure OnRefLevelChange(Sender: TObject);
|
||||||
procedure OnRangeChange(Sender: TObject);
|
procedure OnRangeChange(Sender: TObject);
|
||||||
procedure OnGridStepChange(Sender: TObject);
|
procedure OnGridStepChange(Sender: TObject);
|
||||||
@@ -349,6 +354,7 @@ type
|
|||||||
procedure LoadTXSettings(const T: TTXSettings);
|
procedure LoadTXSettings(const T: TTXSettings);
|
||||||
procedure LoadAlexSettings(const A: TAlexSettings; BoardType: Integer);
|
procedure LoadAlexSettings(const A: TAlexSettings; BoardType: Integer);
|
||||||
procedure LoadXvtrSettings(const X: TXvtrSettings);
|
procedure LoadXvtrSettings(const X: TXvtrSettings);
|
||||||
|
procedure LoadWfAGCNF(AGC, NF: Boolean);
|
||||||
|
|
||||||
property OnCATChange: TOnCATChange read FOnCATChange write FOnCATChange;
|
property OnCATChange: TOnCATChange read FOnCATChange write FOnCATChange;
|
||||||
property OnAlexChange: TOnAlexChange read FOnAlexChange write FOnAlexChange;
|
property OnAlexChange: TOnAlexChange read FOnAlexChange write FOnAlexChange;
|
||||||
@@ -364,6 +370,7 @@ type
|
|||||||
property OnThemeChange: TOnThemeChange read FOnThemeChange write FOnThemeChange;
|
property OnThemeChange: TOnThemeChange read FOnThemeChange write FOnThemeChange;
|
||||||
property OnFreqMhzDigitsChange: TOnFreqMhzDigitsChange read FOnFreqMhzDigitsChange write FOnFreqMhzDigitsChange;
|
property OnFreqMhzDigitsChange: TOnFreqMhzDigitsChange read FOnFreqMhzDigitsChange write FOnFreqMhzDigitsChange;
|
||||||
property OnTXChange: TOnTXSettingsChange read FOnTXChange write FOnTXChange;
|
property OnTXChange: TOnTXSettingsChange read FOnTXChange write FOnTXChange;
|
||||||
|
property OnWfAGCNFChange: TOnWfAGCNFChange read FOnWfAGCNFChange write FOnWfAGCNFChange;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@@ -934,6 +941,26 @@ begin
|
|||||||
FWfLow := MkFloat(CX, R1 + STEP, SPW, -130.0, -180.0, 0.0, 1.0, OnWfThresholdChange);
|
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);
|
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);
|
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;
|
end;
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
@@ -1911,6 +1938,13 @@ begin FireWaterfallChange; end;
|
|||||||
procedure TSettingsForm.OnWfThresholdChange(Sender: TObject);
|
procedure TSettingsForm.OnWfThresholdChange(Sender: TObject);
|
||||||
begin FireWaterfallChange; end;
|
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);
|
procedure TSettingsForm.OnRefLevelChange(Sender: TObject);
|
||||||
begin FireGridChange; end;
|
begin FireGridChange; end;
|
||||||
|
|
||||||
@@ -1975,6 +2009,17 @@ begin
|
|||||||
end;
|
end;
|
||||||
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);
|
procedure TSettingsForm.OnVisibilityChkChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if FLoading then Exit;
|
if FLoading then Exit;
|
||||||
|
|||||||
Reference in New Issue
Block a user