mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
samplerate button
This commit is contained in:
+96
-13
@@ -355,6 +355,8 @@ type
|
||||
procedure BuildUI;
|
||||
procedure ApplyDarkTheme;
|
||||
procedure StyleButton(B: TFlatButton; Active: Boolean = False);
|
||||
procedure StyleSpanButton(B: TFlatButton; Active: Boolean = False);
|
||||
procedure PositionSpanOverlayButtons;
|
||||
procedure UpdateVfoDisplay;
|
||||
function FormatFreq(Hz: Double): string;
|
||||
function ScaleX(X, Total, Width: Integer): Integer;
|
||||
@@ -687,12 +689,12 @@ begin
|
||||
// SampleRate — глобальный, не per-band. Не восстанавливаем из диапазона.
|
||||
// Обновляем только FSpanHz для отображения (берём текущий FSampleRate)
|
||||
FSpanHz := FSampleRate;
|
||||
StyleButton(BtnSpan48k, FSampleRate = 48000);
|
||||
StyleButton(BtnSpan96k, FSampleRate = 96000);
|
||||
StyleButton(BtnSpan192k, FSampleRate = 192000);
|
||||
StyleButton(BtnSpan384k, FSampleRate = 384000);
|
||||
StyleButton(BtnSpan768k, FSampleRate = 768000);
|
||||
StyleButton(BtnSpan1536k, FSampleRate = 1536000);
|
||||
StyleSpanButton(BtnSpan48k, FSampleRate = 48000);
|
||||
StyleSpanButton(BtnSpan96k, FSampleRate = 96000);
|
||||
StyleSpanButton(BtnSpan192k, FSampleRate = 192000);
|
||||
StyleSpanButton(BtnSpan384k, FSampleRate = 384000);
|
||||
StyleSpanButton(BtnSpan768k, FSampleRate = 768000);
|
||||
StyleSpanButton(BtnSpan1536k, FSampleRate = 1536000);
|
||||
|
||||
// --- VFO A: центрируем на новой частоте, сбрасываем shift ---
|
||||
FCenterFreq := B.VfoA; // DDC = центр диапазона
|
||||
@@ -1255,7 +1257,12 @@ begin
|
||||
BtnSpan384k.Tag := 384000;
|
||||
BtnSpan768k.Tag := 768000;
|
||||
BtnSpan1536k.Tag := 1536000;
|
||||
StyleButton(BtnSpan192k, True);
|
||||
StyleSpanButton(BtnSpan48k, False);
|
||||
StyleSpanButton(BtnSpan96k, False);
|
||||
StyleSpanButton(BtnSpan192k, True);
|
||||
StyleSpanButton(BtnSpan384k, False);
|
||||
StyleSpanButton(BtnSpan768k, False);
|
||||
StyleSpanButton(BtnSpan1536k, False);
|
||||
|
||||
// Waterfall AGC + Noise Floor кнопки справа в той же панели
|
||||
BtnWfAGC := MakeBtn(PanelSpanButtons, 'WF AGC', 379, 3, 62, BTN_SM, BtnWfAGCClick);
|
||||
@@ -1294,6 +1301,16 @@ begin
|
||||
PbWaterfall.OnMouseMove := PbWaterfallMouseMove;
|
||||
PbWaterfall.OnMouseUp := PbWaterfallMouseUp;
|
||||
|
||||
// SPAN кнопки как оверлей на спектре (в стиле web)
|
||||
BtnSpan48k.Parent := PanelRight;
|
||||
BtnSpan96k.Parent := PanelRight;
|
||||
BtnSpan192k.Parent := PanelRight;
|
||||
BtnSpan384k.Parent := PanelRight;
|
||||
BtnSpan768k.Parent := PanelRight;
|
||||
BtnSpan1536k.Parent := PanelRight;
|
||||
LblSpan.Visible := False;
|
||||
PositionSpanOverlayButtons;
|
||||
|
||||
// Initial layout
|
||||
ResizeSpectrumPanels;
|
||||
end;
|
||||
@@ -1364,6 +1381,7 @@ begin
|
||||
PbSpectrum.SetBounds(0, TopOff, RW, SH);
|
||||
PbRuler.SetBounds (0, TopOff + SH, RW, 18);
|
||||
PbWaterfall.SetBounds(0, TopOff + SH + 18, RW, WH);
|
||||
PositionSpanOverlayButtons;
|
||||
|
||||
// Обновляем переменные размеров
|
||||
FSpectrumWidth := RW;
|
||||
@@ -1448,6 +1466,71 @@ begin
|
||||
B.Font.Size := 8;
|
||||
end;
|
||||
|
||||
procedure TMainForm.StyleSpanButton(B: TFlatButton; Active: Boolean);
|
||||
begin
|
||||
B.Active := Active;
|
||||
B.ClrNorm := TColor($0013191B);
|
||||
B.ClrActive := TColor($001E3C1E);
|
||||
B.ClrHot := TColor($001E2D1E);
|
||||
B.ClrBorder := TColor($005A7A5A);
|
||||
B.ClrText := TColor($0090B890);
|
||||
B.ClrTextAct := TColor($00AAFFAA);
|
||||
B.Font.Name := 'Courier New';
|
||||
B.Font.Size := 7;
|
||||
end;
|
||||
|
||||
procedure TMainForm.PositionSpanOverlayButtons;
|
||||
const
|
||||
BTN_TOP = 6;
|
||||
GAP = 3;
|
||||
W48 = 40;
|
||||
W96 = 40;
|
||||
W192 = 44;
|
||||
W384 = 44;
|
||||
W768 = 44;
|
||||
W1536 = 50;
|
||||
HBTN = 18;
|
||||
var
|
||||
X, NeedW, BaseX, BaseY: Integer;
|
||||
begin
|
||||
if (PbSpectrum = nil) or (BtnSpan48k = nil) then Exit;
|
||||
NeedW := W48 + W96 + W192 + W384 + W768 + W1536 + GAP * 5 + 8;
|
||||
if PbSpectrum.Width < NeedW then
|
||||
begin
|
||||
BtnSpan48k.Visible := False;
|
||||
BtnSpan96k.Visible := False;
|
||||
BtnSpan192k.Visible := False;
|
||||
BtnSpan384k.Visible := False;
|
||||
BtnSpan768k.Visible := False;
|
||||
BtnSpan1536k.Visible := False;
|
||||
Exit;
|
||||
end;
|
||||
|
||||
BaseX := PbSpectrum.Left;
|
||||
BaseY := PbSpectrum.Top;
|
||||
X := BaseX + 56;
|
||||
BtnSpan48k.SetBounds(X, BaseY + BTN_TOP, W48, HBTN); Inc(X, W48 + GAP);
|
||||
BtnSpan96k.SetBounds(X, BaseY + BTN_TOP, W96, HBTN); Inc(X, W96 + GAP);
|
||||
BtnSpan192k.SetBounds(X, BaseY + BTN_TOP, W192, HBTN); Inc(X, W192 + GAP);
|
||||
BtnSpan384k.SetBounds(X, BaseY + BTN_TOP, W384, HBTN); Inc(X, W384 + GAP);
|
||||
BtnSpan768k.SetBounds(X, BaseY + BTN_TOP, W768, HBTN); Inc(X, W768 + GAP);
|
||||
BtnSpan1536k.SetBounds(X, BaseY + BTN_TOP, W1536, HBTN);
|
||||
|
||||
BtnSpan48k.Visible := True;
|
||||
BtnSpan96k.Visible := True;
|
||||
BtnSpan192k.Visible := True;
|
||||
BtnSpan384k.Visible := True;
|
||||
BtnSpan768k.Visible := True;
|
||||
BtnSpan1536k.Visible := True;
|
||||
|
||||
BtnSpan48k.BringToFront;
|
||||
BtnSpan96k.BringToFront;
|
||||
BtnSpan192k.BringToFront;
|
||||
BtnSpan384k.BringToFront;
|
||||
BtnSpan768k.BringToFront;
|
||||
BtnSpan1536k.BringToFront;
|
||||
end;
|
||||
|
||||
// ===========================================================================
|
||||
// VFO
|
||||
// ===========================================================================
|
||||
@@ -3651,12 +3734,12 @@ begin
|
||||
DDCRate := NewRate div 1000;
|
||||
|
||||
// Обновляем кнопки сразу — UI отзывчив
|
||||
StyleButton(BtnSpan48k, FSampleRate = 48000);
|
||||
StyleButton(BtnSpan96k, FSampleRate = 96000);
|
||||
StyleButton(BtnSpan192k, FSampleRate = 192000);
|
||||
StyleButton(BtnSpan384k, FSampleRate = 384000);
|
||||
StyleButton(BtnSpan768k, FSampleRate = 768000);
|
||||
StyleButton(BtnSpan1536k, FSampleRate = 1536000);
|
||||
StyleSpanButton(BtnSpan48k, FSampleRate = 48000);
|
||||
StyleSpanButton(BtnSpan96k, FSampleRate = 96000);
|
||||
StyleSpanButton(BtnSpan192k, FSampleRate = 192000);
|
||||
StyleSpanButton(BtnSpan384k, FSampleRate = 384000);
|
||||
StyleSpanButton(BtnSpan768k, FSampleRate = 768000);
|
||||
StyleSpanButton(BtnSpan1536k, FSampleRate = 1536000);
|
||||
Application.ProcessMessages;
|
||||
|
||||
FBandCache[FCurrentBand].SpanHz := FSpanHz; // для обратной совместимости
|
||||
|
||||
+1
-1
@@ -307,7 +307,7 @@
|
||||
"span_hz" : 1.9200000000000000E+005
|
||||
},
|
||||
"3" : {
|
||||
"vfo_a" : 7.1100000000000000E+006,
|
||||
"vfo_a" : 7.1250000000000000E+006,
|
||||
"vfo_b" : 7.1000000000000000E+006,
|
||||
"mode" : 0,
|
||||
"filter_idx" : 5,
|
||||
|
||||
Reference in New Issue
Block a user