mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 20:37:33 +00:00
ui(main): align left panel sliders
This commit is contained in:
+42
-18
@@ -334,6 +334,7 @@ type
|
|||||||
TrkRxGain: TFlatSlider; // manual gain 0..73 dB
|
TrkRxGain: TFlatSlider; // manual gain 0..73 dB
|
||||||
LblRxGain: TLabel; // значение усиления
|
LblRxGain: TLabel; // значение усиления
|
||||||
TrkVolume: TFlatSlider;
|
TrkVolume: TFlatSlider;
|
||||||
|
LblVolume: TLabel;
|
||||||
BtnNR: TFlatButton;
|
BtnNR: TFlatButton;
|
||||||
BtnNB: TFlatButton;
|
BtnNB: TFlatButton;
|
||||||
BtnSNB: TFlatButton;
|
BtnSNB: TFlatButton;
|
||||||
@@ -751,6 +752,7 @@ type
|
|||||||
procedure TrkDriveChange(Sender: TObject);
|
procedure TrkDriveChange(Sender: TObject);
|
||||||
procedure UpdateDriveLabel; // % (openHPSDR) / дБ (Pluto) рядом с ползунком drive
|
procedure UpdateDriveLabel; // % (openHPSDR) / дБ (Pluto) рядом с ползунком drive
|
||||||
procedure TrkVolumeChange(Sender: TObject);
|
procedure TrkVolumeChange(Sender: TObject);
|
||||||
|
procedure UpdateVolumeLabel;
|
||||||
function CalcDriveByte: Byte;
|
function CalcDriveByte: Byte;
|
||||||
function ActiveTXFreqHz: Double;
|
function ActiveTXFreqHz: Double;
|
||||||
function DefaultMicSource: TTXMicSource;
|
function DefaultMicSource: TTXMicSource;
|
||||||
@@ -1603,7 +1605,10 @@ begin
|
|||||||
rfAGCMode:
|
rfAGCMode:
|
||||||
for i := 0 to 4 do StyleButton(BtnAGCMode[i], i = FController.FAGCMode);
|
for i := 0 to 4 do StyleButton(BtnAGCMode[i], i = FController.FAGCMode);
|
||||||
rfVolume:
|
rfVolume:
|
||||||
|
begin
|
||||||
TrkVolume.Position := FController.ActiveVolume; // RX или TX-монитор
|
TrkVolume.Position := FController.ActiveVolume; // RX или TX-монитор
|
||||||
|
UpdateVolumeLabel;
|
||||||
|
end;
|
||||||
rfRxGain:
|
rfRxGain:
|
||||||
UpdateRxGainUI;
|
UpdateRxGainUI;
|
||||||
rfAtten:
|
rfAtten:
|
||||||
@@ -1762,6 +1767,7 @@ begin
|
|||||||
TrkDrive.Position := FController.FDrivePercent; // слайдер ← drive%
|
TrkDrive.Position := FController.FDrivePercent; // слайдер ← drive%
|
||||||
TrkVolume.Position := FController.ActiveVolume; // слайдер ← загруженная громкость (был баг: не синхронизировался)
|
TrkVolume.Position := FController.ActiveVolume; // слайдер ← загруженная громкость (был баг: не синхронизировался)
|
||||||
UpdateDriveLabel; // переключаем единицу %/дБ под бэкенд
|
UpdateDriveLabel; // переключаем единицу %/дБ под бэкенд
|
||||||
|
UpdateVolumeLabel;
|
||||||
if Assigned(FSampleRateOverlay) then
|
if Assigned(FSampleRateOverlay) then
|
||||||
FSampleRateOverlay.SetCurrentRate(FController.FSampleRate);
|
FSampleRateOverlay.SetCurrentRate(FController.FSampleRate);
|
||||||
UpdateNRButton; UpdateNBButton; UpdateSNBButton; UpdateANFButton;
|
UpdateNRButton; UpdateNBButton; UpdateSNBButton; UpdateANFButton;
|
||||||
@@ -1872,6 +1878,9 @@ const
|
|||||||
// Заголовок с отступом (20) + MODE_ROWS рядов с шагом 27 + нижний отступ.
|
// Заголовок с отступом (20) + MODE_ROWS рядов с шагом 27 + нижний отступ.
|
||||||
MODE_PANEL_H = 20 + (MODE_ROWS - 1) * 27 + BTN_SM + 3;
|
MODE_PANEL_H = 20 + (MODE_ROWS - 1) * 27 + BTN_SM + 3;
|
||||||
PLUTO_AGC_H = 64; // высота отдельного Pluto RF-AGC блока (под AGC)
|
PLUTO_AGC_H = 64; // высота отдельного Pluto RF-AGC блока (под AGC)
|
||||||
|
LEFT_SLIDER_LEFT = 56;
|
||||||
|
LEFT_SLIDER_W = LEFT_W - 96;
|
||||||
|
LEFT_SLIDER_VALUE_LEFT = LEFT_W - 38;
|
||||||
TOP_VFO_W = 244;
|
TOP_VFO_W = 244;
|
||||||
TOP_VFO_FREQ_H = 47;
|
TOP_VFO_FREQ_H = 47;
|
||||||
var
|
var
|
||||||
@@ -2161,14 +2170,14 @@ begin
|
|||||||
LblDrv.Font.Size := 8;
|
LblDrv.Font.Size := 8;
|
||||||
|
|
||||||
TrkDrive := TFlatSlider.Create(Self);
|
TrkDrive := TFlatSlider.Create(Self);
|
||||||
TrkDrive.Parent := PanelTX; TrkDrive.Left := 34; TrkDrive.Top := 78;
|
TrkDrive.Parent := PanelTX; TrkDrive.Left := LEFT_SLIDER_LEFT; TrkDrive.Top := 78;
|
||||||
TrkDrive.Width := 120; TrkDrive.Height := 16;
|
TrkDrive.Width := LEFT_SLIDER_W; TrkDrive.Height := 16;
|
||||||
TrkDrive.Min := 0; TrkDrive.Max := 100; TrkDrive.Position := 50;
|
TrkDrive.Min := 0; TrkDrive.Max := 100; TrkDrive.Position := 50;
|
||||||
TrkDrive.OnChange := TrkDriveChange;
|
TrkDrive.OnChange := TrkDriveChange;
|
||||||
|
|
||||||
LblDrvVal := TLabel.Create(Self);
|
LblDrvVal := TLabel.Create(Self);
|
||||||
LblDrvVal.Parent := PanelTX;
|
LblDrvVal.Parent := PanelTX;
|
||||||
LblDrvVal.Left := 158; LblDrvVal.Top := 77;
|
LblDrvVal.Left := LEFT_SLIDER_VALUE_LEFT; LblDrvVal.Top := 77;
|
||||||
LblDrvVal.Font.Color := CLR_TEXT;
|
LblDrvVal.Font.Color := CLR_TEXT;
|
||||||
LblDrvVal.Font.Size := 8;
|
LblDrvVal.Font.Size := 8;
|
||||||
UpdateDriveLabel;
|
UpdateDriveLabel;
|
||||||
@@ -2213,12 +2222,19 @@ begin
|
|||||||
|
|
||||||
MakeLbl(PanelRXBlock, 'VOL', 4, 50);
|
MakeLbl(PanelRXBlock, 'VOL', 4, 50);
|
||||||
TrkVolume := TFlatSlider.Create(Self);
|
TrkVolume := TFlatSlider.Create(Self);
|
||||||
TrkVolume.Parent := PanelRXBlock; TrkVolume.Left := 34; TrkVolume.Top := 50;
|
TrkVolume.Parent := PanelRXBlock; TrkVolume.Left := LEFT_SLIDER_LEFT; TrkVolume.Top := 50;
|
||||||
TrkVolume.Width := LEFT_W - 38; TrkVolume.Height := 16;
|
TrkVolume.Width := LEFT_SLIDER_W; TrkVolume.Height := 16;
|
||||||
TrkVolume.Min := 0; TrkVolume.Max := 100;
|
TrkVolume.Min := 0; TrkVolume.Max := 100;
|
||||||
TrkVolume.Position := FController.FVolume;
|
TrkVolume.Position := FController.ActiveVolume;
|
||||||
TrkVolume.OnChange := TrkVolumeChange;
|
TrkVolume.OnChange := TrkVolumeChange;
|
||||||
|
|
||||||
|
LblVolume := TLabel.Create(Self);
|
||||||
|
LblVolume.Parent := PanelRXBlock;
|
||||||
|
LblVolume.Left := LEFT_SLIDER_VALUE_LEFT; LblVolume.Top := 50;
|
||||||
|
LblVolume.Font.Color := CLR_TEXT;
|
||||||
|
LblVolume.Font.Size := 8;
|
||||||
|
UpdateVolumeLabel;
|
||||||
|
|
||||||
BtnNR := MakeBtn(PanelRXBlock, 'NR',
|
BtnNR := MakeBtn(PanelRXBlock, 'NR',
|
||||||
LeftPanelButtonLeft(LEFT_W, 5, 0), 74,
|
LeftPanelButtonLeft(LEFT_W, 5, 0), 74,
|
||||||
LeftPanelButtonWidth(LEFT_W, 5, 0), BTN_SM, BtnNRClick);
|
LeftPanelButtonWidth(LEFT_W, 5, 0), BTN_SM, BtnNRClick);
|
||||||
@@ -2244,15 +2260,15 @@ begin
|
|||||||
LblAtt.Font.Size := 8;
|
LblAtt.Font.Size := 8;
|
||||||
|
|
||||||
TrkAtt := TFlatSlider.Create(Self);
|
TrkAtt := TFlatSlider.Create(Self);
|
||||||
TrkAtt.Parent := PanelRXBlock; TrkAtt.Left := 34; TrkAtt.Top := 106;
|
TrkAtt.Parent := PanelRXBlock; TrkAtt.Left := LEFT_SLIDER_LEFT; TrkAtt.Top := 106;
|
||||||
TrkAtt.Width := LEFT_W - 76; TrkAtt.Height := 16;
|
TrkAtt.Width := LEFT_SLIDER_W; TrkAtt.Height := 16;
|
||||||
TrkAtt.Min := 0; TrkAtt.Max := 31; // ADC step attenuator, дБ
|
TrkAtt.Min := 0; TrkAtt.Max := 31; // ADC step attenuator, дБ
|
||||||
TrkAtt.Position := FController.FAtten;
|
TrkAtt.Position := FController.FAtten;
|
||||||
TrkAtt.OnChange := TrkAttChange;
|
TrkAtt.OnChange := TrkAttChange;
|
||||||
|
|
||||||
LblAttVal := TLabel.Create(Self);
|
LblAttVal := TLabel.Create(Self);
|
||||||
LblAttVal.Parent := PanelRXBlock;
|
LblAttVal.Parent := PanelRXBlock;
|
||||||
LblAttVal.Left := LEFT_W - 38; LblAttVal.Top := 106;
|
LblAttVal.Left := LEFT_SLIDER_VALUE_LEFT; LblAttVal.Top := 106;
|
||||||
LblAttVal.Font.Color := CLR_TEXT;
|
LblAttVal.Font.Color := CLR_TEXT;
|
||||||
LblAttVal.Font.Size := 8;
|
LblAttVal.Font.Size := 8;
|
||||||
UpdateAttLabel;
|
UpdateAttLabel;
|
||||||
@@ -2297,8 +2313,8 @@ begin
|
|||||||
// AGC level slider
|
// AGC level slider
|
||||||
MakeLbl(PanelAGC, 'THRESH', 4, 44);
|
MakeLbl(PanelAGC, 'THRESH', 4, 44);
|
||||||
TrkAGC := TFlatSlider.Create(Self);
|
TrkAGC := TFlatSlider.Create(Self);
|
||||||
TrkAGC.Parent := PanelAGC; TrkAGC.Left := 56; TrkAGC.Top := 44;
|
TrkAGC.Parent := PanelAGC; TrkAGC.Left := LEFT_SLIDER_LEFT; TrkAGC.Top := 44;
|
||||||
TrkAGC.Width := LEFT_W - 96; TrkAGC.Height := 16;
|
TrkAGC.Width := LEFT_SLIDER_W; TrkAGC.Height := 16;
|
||||||
TrkAGC.Min := 20; TrkAGC.Max := 120; // 20..120 → −20..-120 dBm
|
TrkAGC.Min := 20; TrkAGC.Max := 120; // 20..120 → −20..-120 dBm
|
||||||
TrkAGC.Position := FController.FAGCTop;
|
TrkAGC.Position := FController.FAGCTop;
|
||||||
TrkAGC.Reversed := True;
|
TrkAGC.Reversed := True;
|
||||||
@@ -2306,7 +2322,7 @@ begin
|
|||||||
|
|
||||||
LblAGCTop := TLabel.Create(Self);
|
LblAGCTop := TLabel.Create(Self);
|
||||||
LblAGCTop.Parent := PanelAGC;
|
LblAGCTop.Parent := PanelAGC;
|
||||||
LblAGCTop.Left := LEFT_W - 38; LblAGCTop.Top := 44;
|
LblAGCTop.Left := LEFT_SLIDER_VALUE_LEFT; LblAGCTop.Top := 44;
|
||||||
LblAGCTop.Caption := Format('-%ddB', [FController.FAGCTop]);
|
LblAGCTop.Caption := Format('-%ddB', [FController.FAGCTop]);
|
||||||
LblAGCTop.Font.Color := CLR_TEXT;
|
LblAGCTop.Font.Color := CLR_TEXT;
|
||||||
LblAGCTop.Font.Size := 8;
|
LblAGCTop.Font.Size := 8;
|
||||||
@@ -2341,14 +2357,14 @@ begin
|
|||||||
// Manual gain slider.
|
// Manual gain slider.
|
||||||
MakeLbl(PanelPlutoAGC, 'GAIN', 4, 44);
|
MakeLbl(PanelPlutoAGC, 'GAIN', 4, 44);
|
||||||
TrkRxGain := TFlatSlider.Create(Self);
|
TrkRxGain := TFlatSlider.Create(Self);
|
||||||
TrkRxGain.Parent := PanelPlutoAGC; TrkRxGain.Left := 56; TrkRxGain.Top := 44;
|
TrkRxGain.Parent := PanelPlutoAGC; TrkRxGain.Left := LEFT_SLIDER_LEFT; TrkRxGain.Top := 44;
|
||||||
TrkRxGain.Width := LEFT_W - 96; TrkRxGain.Height := 16;
|
TrkRxGain.Width := LEFT_SLIDER_W; TrkRxGain.Height := 16;
|
||||||
TrkRxGain.Min := 0; TrkRxGain.Max := 73; // AD936x hardwaregain dB
|
TrkRxGain.Min := 0; TrkRxGain.Max := 73; // AD936x hardwaregain dB
|
||||||
TrkRxGain.Position := FController.FRxGainDb;
|
TrkRxGain.Position := FController.FRxGainDb;
|
||||||
TrkRxGain.OnChange := TrkRxGainChange;
|
TrkRxGain.OnChange := TrkRxGainChange;
|
||||||
LblRxGain := TLabel.Create(Self);
|
LblRxGain := TLabel.Create(Self);
|
||||||
LblRxGain.Parent := PanelPlutoAGC;
|
LblRxGain.Parent := PanelPlutoAGC;
|
||||||
LblRxGain.Left := LEFT_W - 38; LblRxGain.Top := 44;
|
LblRxGain.Left := LEFT_SLIDER_VALUE_LEFT; LblRxGain.Top := 44;
|
||||||
LblRxGain.Caption := Format('%ddB', [FController.FRxGainDb]);
|
LblRxGain.Caption := Format('%ddB', [FController.FRxGainDb]);
|
||||||
LblRxGain.Font.Color := CLR_TEXT;
|
LblRxGain.Font.Color := CLR_TEXT;
|
||||||
LblRxGain.Font.Size := 8;
|
LblRxGain.Font.Size := 8;
|
||||||
@@ -2431,9 +2447,9 @@ begin
|
|||||||
MakeLbl(PanelRawDev, 'DEVIATION', 4, 2);
|
MakeLbl(PanelRawDev, 'DEVIATION', 4, 2);
|
||||||
TrkRawDev := TFlatSlider.Create(Self);
|
TrkRawDev := TFlatSlider.Create(Self);
|
||||||
TrkRawDev.Parent := PanelRawDev;
|
TrkRawDev.Parent := PanelRawDev;
|
||||||
TrkRawDev.Left := 5;
|
TrkRawDev.Left := 34;
|
||||||
TrkRawDev.Top := 22;
|
TrkRawDev.Top := 22;
|
||||||
TrkRawDev.Width := LEFT_W - 68;
|
TrkRawDev.Width := LEFT_SLIDER_W;
|
||||||
TrkRawDev.Height := 14;
|
TrkRawDev.Height := 14;
|
||||||
TrkRawDev.Min := RAW_FM_DEV_MIN div 50;
|
TrkRawDev.Min := RAW_FM_DEV_MIN div 50;
|
||||||
TrkRawDev.Max := RAW_FM_DEV_MAX div 50;
|
TrkRawDev.Max := RAW_FM_DEV_MAX div 50;
|
||||||
@@ -2467,7 +2483,7 @@ begin
|
|||||||
TrkFMSQ.Parent := PanelFMSQ;
|
TrkFMSQ.Parent := PanelFMSQ;
|
||||||
TrkFMSQ.Left := BtnFMSQ.Left + BtnFMSQ.Width + 3;
|
TrkFMSQ.Left := BtnFMSQ.Left + BtnFMSQ.Width + 3;
|
||||||
TrkFMSQ.Top := 25;
|
TrkFMSQ.Top := 25;
|
||||||
TrkFMSQ.Width := LEFT_W - TrkFMSQ.Left - 30 - 4; // leave 30px for label + margins
|
TrkFMSQ.Width := LEFT_SLIDER_W;
|
||||||
TrkFMSQ.Height := 14;
|
TrkFMSQ.Height := 14;
|
||||||
TrkFMSQ.Min := 0; TrkFMSQ.Max := 100;
|
TrkFMSQ.Min := 0; TrkFMSQ.Max := 100;
|
||||||
TrkFMSQ.Position := FController.FFMSQLevel;
|
TrkFMSQ.Position := FController.FFMSQLevel;
|
||||||
@@ -3215,6 +3231,7 @@ begin
|
|||||||
DL(LblAGCTop, False);
|
DL(LblAGCTop, False);
|
||||||
DL(LblDrv);
|
DL(LblDrv);
|
||||||
DL(LblDrvVal, False);
|
DL(LblDrvVal, False);
|
||||||
|
DL(LblVolume, False);
|
||||||
DL(LblAttVal, False);
|
DL(LblAttVal, False);
|
||||||
DL(LblRxGain, False);
|
DL(LblRxGain, False);
|
||||||
DL(LblRawDev, False);
|
DL(LblRawDev, False);
|
||||||
@@ -8495,6 +8512,13 @@ procedure TMainForm.TrkVolumeChange(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
if FSyncingFromController then Exit;
|
if FSyncingFromController then Exit;
|
||||||
FController.SetVolume(TrkVolume.Position);
|
FController.SetVolume(TrkVolume.Position);
|
||||||
|
UpdateVolumeLabel;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TMainForm.UpdateVolumeLabel;
|
||||||
|
begin
|
||||||
|
if LblVolume <> nil then
|
||||||
|
LblVolume.Caption := Format('%d%%', [FController.ActiveVolume]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user