Fix FM step change from web UI; add FM grid to web spectrum/ruler

Web UI: stepSel.onchange now sends fm_step command to server when in FM
mode; option values stay in Hz so tuneStep works unchanged.
WebServer: add fm_step command handler and OnFMStep callback.
MainForm: wire WebOnFMStep -> SyncWebFMStep -> SetFMStep + SaveCurrentBand.

Web spectrum/ruler: vertical FM-step grid lines in drawSpec; FM-aligned
ticks and labels in drawRuler with auto label-density (short ticks between
labeled lines, measureText-based labelMult to prevent overlap).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-18 22:52:33 +03:00
co-authored by Claude Sonnet 4.6
parent 7b4ea733a2
commit 203d9d0f05
3 changed files with 49 additions and 3 deletions
+16
View File
@@ -564,6 +564,7 @@ type
procedure WebOnFreqA(Hz: Double);
procedure WebOnAttn(Idx: Integer);
procedure WebOnTun(On_: Boolean);
procedure WebOnFMStep(Idx: Integer);
procedure WebOnMic(Samples: PSingle; Count: Integer);
procedure WebOnXvtrBand(Idx: Integer);
// Synchronize-обёртки (выполняются в UI-потоке)
@@ -593,6 +594,7 @@ type
procedure SyncWebFreqA;
procedure SyncWebAttn;
procedure SyncWebTun;
procedure SyncWebFMStep;
// --- CAT callbacks -------------------------------------------------------
function CATGetVfoA: Double;
function CATGetVfoB: Double;
@@ -1257,6 +1259,7 @@ begin
FWebServer.OnFreqA := WebOnFreqA;
FWebServer.OnAttn := WebOnAttn;
FWebServer.OnTun := WebOnTun;
FWebServer.OnFMStep := WebOnFMStep;
FWebServer.OnWebMic := WebOnMic;
FWebServer.OnXvtrBand := WebOnXvtrBand;
if FWebEnabled then FWebServer.Start;
@@ -5851,6 +5854,19 @@ begin
FNetwork.SetStepAtten(FAtten * 10);
end;
procedure TMainForm.WebOnFMStep(Idx: Integer);
begin
FWebSyncInt := Idx;
FWebSyncM := SyncWebFMStep;
TThread.Synchronize(nil, FWebSyncM);
end;
procedure TMainForm.SyncWebFMStep;
begin
SetFMStep(Max(0, Min(FM_STEP_COUNT - 1, FWebSyncInt)));
SaveCurrentBand;
end;
procedure TMainForm.WebOnTun(On_: Boolean);
begin
FWebSyncBool := On_;