From f9f4a4369d9bb62323e66d019ee15ac060d4c58f Mon Sep 17 00:00:00 2001 From: OH1KH Date: Fri, 9 Sep 2022 16:29:53 +0300 Subject: [PATCH] Now preferences nearly works. Just TRX cmb loses its text (why) --- src/fPreferences.lfm | 38 +++++++-------- src/fPreferences.pas | 109 ++++++++++++++++++++++--------------------- 2 files changed, 76 insertions(+), 71 deletions(-) diff --git a/src/fPreferences.lfm b/src/fPreferences.lfm index bc0ecd9..5c10446 100644 --- a/src/fPreferences.lfm +++ b/src/fPreferences.lfm @@ -2903,7 +2903,7 @@ object frmPreferences: TfrmPreferences BorderSpacing.Left = 6 BorderSpacing.Top = 6 Caption = ' rotctld ' - ClientHeight = 70 + ClientHeight = 86 ClientWidth = 655 TabOrder = 0 object Label124: TLabel @@ -2951,7 +2951,7 @@ object frmPreferences: TfrmPreferences AnchorSideBottom.Control = pgROTControl AnchorSideBottom.Side = asrBottom Caption = 'Rotor one' - ClientHeight = 361 + ClientHeight = 388 ClientWidth = 647 object gbRot1: TGroupBox AnchorSideLeft.Control = tabRot1 @@ -2963,7 +2963,7 @@ object frmPreferences: TfrmPreferences BorderSpacing.Left = 6 BorderSpacing.Top = 12 Caption = ' Rotor one, desc.:' - ClientHeight = 323 + ClientHeight = 339 ClientWidth = 622 TabOrder = 0 object lblDevice1: TLabel @@ -3090,14 +3090,14 @@ object frmPreferences: TfrmPreferences AnchorSideBottom.Side = asrBottom Left = 6 Height = 161 - Top = 156 + Top = 172 Width = 610 Anchors = [akLeft, akRight, akBottom] BorderSpacing.Left = 6 BorderSpacing.Right = 6 BorderSpacing.Bottom = 6 Caption = 'Rotor one serial parameters' - ClientHeight = 143 + ClientHeight = 159 ClientWidth = 608 TabOrder = 5 object lblSpeed1: TLabel @@ -3409,7 +3409,7 @@ object frmPreferences: TfrmPreferences AnchorSideBottom.Control = tabRot1 AnchorSideBottom.Side = asrBottom Caption = 'Rotor two' - ClientHeight = 361 + ClientHeight = 388 ClientWidth = 647 object gbRot2: TGroupBox AnchorSideLeft.Control = tabRot2 @@ -3909,7 +3909,7 @@ object frmPreferences: TfrmPreferences BorderSpacing.Left = 12 BorderSpacing.Top = 12 Caption = ' Radio' - ClientHeight = 274 + ClientHeight = 290 ClientWidth = 522 TabOrder = 1 object lblMode: TLabel @@ -7089,8 +7089,8 @@ object frmPreferences: TfrmPreferences ParentColor = False end object lblWinSpeed: TLabel - AnchorSideLeft.Control = edtWinPort1 - AnchorSideTop.Control = edtWinPort1 + AnchorSideLeft.Control = edtWinPort + AnchorSideTop.Control = edtWinPort AnchorSideTop.Side = asrBottom Left = 6 Height = 17 @@ -7138,7 +7138,7 @@ object frmPreferences: TfrmPreferences Caption = 'Max speed:' ParentColor = False end - object edtWinPort1: TEdit + object edtWinPort: TEdit AnchorSideLeft.Control = lblWinPort AnchorSideTop.Control = lblWinPort AnchorSideTop.Side = asrBottom @@ -7146,7 +7146,7 @@ object frmPreferences: TfrmPreferences Height = 34 Top = 23 Width = 147 - OnChange = edtWinPort1Change + OnChange = edtWinPortChange TabOrder = 0 end object edtWinSpeed: TSpinEdit @@ -7164,9 +7164,9 @@ object frmPreferences: TfrmPreferences Value = 5 end object chkPotSpeed: TCheckBox - AnchorSideLeft.Control = edtWinPort1 + AnchorSideLeft.Control = edtWinPort AnchorSideLeft.Side = asrBottom - AnchorSideTop.Control = edtWinPort1 + AnchorSideTop.Control = edtWinPort AnchorSideTop.Side = asrCenter AnchorSideRight.Side = asrBottom Left = 162 @@ -7282,7 +7282,7 @@ object frmPreferences: TfrmPreferences Width = 139 TabOrder = 0 end - object edtCWPort1: TEdit + object edtCWPort: TEdit AnchorSideLeft.Control = lblCWPort1 AnchorSideTop.Control = lblCWPort1 AnchorSideTop.Side = asrBottom @@ -7348,7 +7348,7 @@ object frmPreferences: TfrmPreferences end object lblK3NGSpeed: TLabel AnchorSideLeft.Control = lblK3NGPort - AnchorSideTop.Control = edtK3NGPort1 + AnchorSideTop.Control = edtK3NGPort AnchorSideTop.Side = asrBottom Left = 6 Height = 17 @@ -7369,7 +7369,7 @@ object frmPreferences: TfrmPreferences Caption = 'WPM' ParentColor = False end - object edtK3NGPort1: TEdit + object edtK3NGPort: TEdit AnchorSideLeft.Control = lblK3NGPort AnchorSideTop.Control = lblK3NGPort AnchorSideTop.Side = asrBottom @@ -7377,7 +7377,7 @@ object frmPreferences: TfrmPreferences Height = 34 Top = 23 Width = 147 - OnChange = edtWinPort1Change + OnChange = edtWinPortChange TabOrder = 0 end object edtK3NGSpeed: TSpinEdit @@ -7406,7 +7406,7 @@ object frmPreferences: TfrmPreferences TabOrder = 1 end object lblK3NGSerSpeed: TLabel - AnchorSideLeft.Control = edtK3NGPort1 + AnchorSideLeft.Control = edtK3NGPort AnchorSideLeft.Side = asrBottom AnchorSideTop.Control = lblK3NGPort Left = 201 @@ -7561,7 +7561,7 @@ object frmPreferences: TfrmPreferences Width = 120 ItemHeight = 0 Items.Strings = ( - '' + 'None' 'Winkeyer' 'cwdaemon' 'K3NG Key' diff --git a/src/fPreferences.pas b/src/fPreferences.pas index 0b9d84c..52258a2 100644 --- a/src/fPreferences.pas +++ b/src/fPreferences.pas @@ -593,16 +593,16 @@ type edtSunOffset: TEdit; edtOffset: TEdit; edtCWAddress: TEdit; - edtCWPort1: TEdit; + edtCWPort: TEdit; edtPdfFiles: TEdit; - edtWinPort1: TEdit; + edtWinPort: TEdit; edtRecetQSOs: TEdit; edtLoTWPass: TEdit; edtLoTWName: TEdit; edtCWSpeed: TSpinEdit; edtWinMinSpeed: TSpinEdit; edtWinMaxSpeed: TSpinEdit; - edtK3NGPort1: TEdit; + edtK3NGPort: TEdit; edtK3NGSpeed: TSpinEdit; edtFldigiIp: TEdit; edtADIFIp: TEdit; @@ -1083,7 +1083,7 @@ type procedure edtWebBrowserExit(Sender: TObject); procedure edtWinMaxSpeedChange(Sender: TObject); procedure edtWinMinSpeedChange(Sender: TObject); - procedure edtWinPort1Change(Sender: TObject); + procedure edtWinPortChange(Sender: TObject); procedure edtWinSpeedChange(Sender: TObject); procedure edtXplanetLocChange(Sender: TObject); procedure lbPreferencesClick(Sender: TObject); @@ -1124,7 +1124,7 @@ type procedure LoadBandW(RigNr:integer); procedure SaveCWif(RigNr:integer); procedure LoadCWif(RigNr:integer); - procedure InitRigCmb; + procedure InitRigCmb(SetUsedRig:boolean=false); procedure ClearUnUsedRigs; procedure SaveClubSection; procedure LoadMebershipCombo; @@ -1316,14 +1316,7 @@ begin cqrini.WriteBool('TRX','MemModeRelated',chkModeRelatedOnly.Checked); cqrini.WriteInteger('TRX', 'RigCount', edtRigCount.Value); - For int:=1 to edtRigCount.Value do //these should be saved while editing them, but we do it here just for sure - Begin - SaveTRX(int); - SaveBandW(int); - SaveCWif(int); - end; - ClearUnUsedRigs; - frmTRXControl.cmbRigGetItems(nil); + ClearUnUsedRigs; //rigs modes and cw are saved when editing. Just delete unused rigs (model=empty) cqrini.WriteString('ROT', 'RotCtldPath', edtRotCtldPath.Text); @@ -2413,7 +2406,8 @@ begin if cmbCWRadio.ItemIndex<1 then cmbCWRadio.ItemIndex:=1; SaveCWif(CWifLoaded); LoadCWif(cmbCWRadio.ItemIndex); - if cqrini.ReadString('TRX'+IntToStr(cmbCWRadio.ItemIndex), 'model', '')='' then + if (cqrini.ReadString('TRX'+IntToStr(cmbCWRadio.ItemIndex), 'model', '')='') + or (pos('NONE',uppercase(cqrini.ReadString('TRX'+IntToStr(cmbCWRadio.ItemIndex), 'model', '')) )>1) then lblNoRigForCW.Visible:=True else lblNoRigForCW.Visible:=False; @@ -2507,9 +2501,8 @@ begin if cmbRadioNr.ItemIndex<1 then cmbRadioNr.ItemIndex:=1; SaveTRX(RadioNrLoaded); //save edited rig LoadTRX(cmbRadioNr.ItemIndex); //load selected rig - frmTRXControl.cmbRigGetItems(nil); //update rig names - cmbRadioModes.Items:=frmTRXControl.cmbRig.Items; //names to modes tab - cmbCWRadio.Items:=cmbRadioModes.Items; //names to cw tab + InitRigCmb; //load names and set currently edited rig + cmbRadioModes.ItemIndex:= cmbRadioNr.ItemIndex; //select rig in use cmbCWRadio.ItemIndex:=cmbRadioNr.ItemIndex; end; @@ -2660,10 +2653,7 @@ end; procedure TfrmPreferences.edtRigCountChange(Sender: TObject); begin cqrini.WriteInteger('TRX', 'RigCount', edtRigCount.Value); - InitRigCmb; //load selectors - frmTRXControl.cmbRigGetItems(nil); //update rig names - cmbRadioModes.Items:=frmTRXControl.cmbRig.Items; //names to modes tab - cmbCWRadio.Items:=cmbRadioModes.Items; //names to CW tab + InitRigCmb; //load names and set currently edited rig end; procedure TfrmPreferences.TRXParamsChange(Sender: TObject); @@ -2743,7 +2733,7 @@ begin CWKeyerChanged := True end; -procedure TfrmPreferences.edtWinPort1Change(Sender: TObject); +procedure TfrmPreferences.edtWinPortChange(Sender: TObject); begin CWKeyerChanged := True end; @@ -2944,11 +2934,8 @@ begin chkTrxControlDebug.Checked := cqrini.ReadBool('TRX','Debug',False); chkModeRelatedOnly.Checked := cqrini.ReadBool('TRX','MemModeRelated',False); edtRigCount.Value:=cqrini.ReadInteger('TRX', 'RigCount', 2); - InitRigCmb; - frmTRXControl.cmbRigGetItems(nil); //this populates cmb radio names and sets used rig to cmbRig.itemindex - cmbRadioNr.ItemIndex:=frmTRXControl.cmbRig.ItemIndex; + InitRigCmb(true); //define used rig=true LoadTRX(cmbRadioNr.ItemIndex); - cmbRadioNrCloseUp(nil);//this populates radio names to modes and cw LoadBandW(cmbRadioNr.ItemIndex); LoadCWif(cmbRadioNr.ItemIndex); @@ -3464,20 +3451,20 @@ var nr :string; Begin nr:=IntToStr(RigNr); - cmbIfaceType.ItemIndex := cqrini.ReadInteger('CW'+nr, 'Type'+nr, 0); + cmbIfaceType.ItemIndex := cqrini.ReadInteger('CW'+nr, 'Type', 0); cbNoKeyerReset.Checked := cqrini.ReadBool('CW'+nr, 'NoReset', false); - edtWinPort1.Text := cqrini.ReadString('CW'+nr, 'wk_port'+nr, ''); - chkPotSpeed.Checked := cqrini.ReadBool('CW'+nr, 'PotSpeed', False); - edtWinSpeed.Value := cqrini.ReadInteger('CW'+nr, 'wk_speed', 30); - edtCWAddress.Text := cqrini.ReadString('CW'+nr, 'cw_address', 'localhost'); - edtCWPort1.Text := cqrini.ReadString('CW'+nr, 'cw_port'+nr, '6789'); - edtCWSpeed.Value := cqrini.ReadInteger('CW'+nr, 'cw_speed', 30); - edtWinMinSpeed.Value := cqrini.ReadInteger('CW'+nr, 'wk_min', 5); - edtWinMaxSpeed.Value := cqrini.ReadInteger('CW'+nr, 'wk_max', 60); - edtK3NGPort1.Text := cqrini.ReadString('CW'+nr,'K3NGPort'+nr,''); - edtK3NGSerSpeed.Text := IntToStr(cqrini.ReadInteger('CW'+nr,'K3NGSerSpeed',115200)); - edtK3NGSpeed.Text := IntToStr(cqrini.ReadInteger('CW'+nr,'K3NGSpeed',30)); - edtHamLibSpeed.Text := IntToStr(cqrini.ReadInteger('CW'+nr,'HamLibSpeed',30)); + edtWinPort.Text := cqrini.ReadString('CW'+nr, 'wk_port', ''); + chkPotSpeed.Checked := cqrini.ReadBool('CW'+nr, 'PotSpeed', False); + edtWinSpeed.Value := cqrini.ReadInteger('CW'+nr, 'wk_speed', 30); + edtCWAddress.Text := cqrini.ReadString('CW'+nr, 'cw_address', 'localhost'); + edtCWPort.Text := cqrini.ReadString('CW'+nr, 'cw_port', '6789'); + edtCWSpeed.Value := cqrini.ReadInteger('CW'+nr, 'cw_speed', 30); + edtWinMinSpeed.Value := cqrini.ReadInteger('CW'+nr, 'wk_min', 5); + edtWinMaxSpeed.Value := cqrini.ReadInteger('CW'+nr, 'wk_max', 60); + edtK3NGPort.Text := cqrini.ReadString('CW'+nr,'K3NGPort',''); + edtK3NGSerSpeed.Text := IntToStr(cqrini.ReadInteger('CW'+nr,'K3NGSerSpeed',115200)); + edtK3NGSpeed.Text := IntToStr(cqrini.ReadInteger('CW'+nr,'K3NGSpeed',30)); + edtHamLibSpeed.Text := IntToStr(cqrini.ReadInteger('CW'+nr,'HamLibSpeed',30)); CWifLoaded := RigNr; end; procedure TfrmPreferences.SaveCWif(RigNr:integer); @@ -3488,40 +3475,52 @@ Begin nr:=IntToStr(RigNr); cqrini.WriteInteger('CW'+nr, 'Type', cmbIfaceType.ItemIndex); cqrini.WriteBool('CW'+nr, 'NoReset', cbNoKeyerReset.Checked); - cqrini.WriteString('CW'+nr, 'wk_port', edtWinPort1.Text); + cqrini.WriteString('CW'+nr, 'wk_port', edtWinPort.Text); cqrini.WriteBool('CW'+nr, 'PotSpeed', chkPotSpeed.Checked); cqrini.WriteInteger('CW'+nr, 'wk_speed', edtWinSpeed.Value); cqrini.WriteString('CW'+nr, 'cw_address', edtCWAddress.Text); - cqrini.WriteString('CW'+nr, 'cw_port', edtCWPort1.Text); + cqrini.WriteString('CW'+nr, 'cw_port', edtCWPort.Text); cqrini.WriteInteger('CW'+nr, 'cw_speed', edtCWSpeed.Value); cqrini.WriteInteger('CW'+nr, 'wk_min', edtWinMinSpeed.Value); cqrini.WriteInteger('CW'+nr, 'wk_max', edtWinMaxSpeed.Value); - cqrini.WriteString('CW'+nr,'K3NGPort',edtK3NGPort1.Text); + cqrini.WriteString('CW'+nr,'K3NGPort',edtK3NGPort.Text); cqrini.WriteInteger('CW'+nr,'K3NGSerSpeed',StrToInt(edtK3NGSerSpeed.Text)); cqrini.WriteInteger('CW'+nr,'K3NGSpeed',StrToInt(edtK3NGSpeed.Text)); cqrini.WriteInteger('CW'+nr,'HamLibSpeed',StrToInt(edtHamLibSpeed.Text)); end; -procedure TfrmPreferences.InitRigCmb; //initialize radio selectors (without names) in TRXControl, CW and Modes +procedure TfrmPreferences.InitRigCmb(SetUsedRig:boolean=false); //initialize radio selectors in TRXControl, CW and Modes var //set itemindexes to used rig f : integer; s : string; Begin - cmbRadioNr.Clear; + cmbRadioNr.Items.Clear; cmbRadioNr.Items.Add(''); - cmbRadioModes.Clear; + cmbRadioModes.Items.Clear; //zero position is empty cmbRadioModes.Items.Add(''); - cmbCWRadio.Clear; + cmbCWRadio.Items.Clear; cmbCWRadio.Items.Add(''); - for f:=1 to edtRigCount.Value do + for f:=1 to cqrini.ReadInteger('TRX', 'RigCount', 2) do Begin + s:=IntToStr(f); cmbRadioNr.Items.Add(IntToStr(f)); - cmbRadioModes.Items.Add(IntToStr(f)); - cmbCWRadio.Items.Add(IntToStr(f)); + cmbRadioModes.Items.Add(IntToStr(f)+' '+cqrini.ReadString('TRX'+s, 'Desc', '')); + cmbCWRadio.Items.Add(IntToStr(f)+' '+cqrini.ReadString('TRX'+s, 'Desc', '')); end; - cmbRadioNr.ItemIndex:=cqrini.ReadInteger('TRX', 'RigInUse', 1); - cmbRadioModes.ItemIndex:=cmbRadioNr.ItemIndex; - cmbCWRadio.ItemIndex:=cmbRadioNr.ItemIndex; + + if not ( cqrini.ReadInteger('TRX', 'RigInUse', 1) in [ 1..edtRigCount.Value] ) then + begin + cqrini.WriteInteger('TRX', 'RigInUse', 1); //used rig was deleted (rig count changed) + SetUsedRig:=true; + end; + + if SetUsedRig then + begin + cmbRadioNr.ItemIndex:=cqrini.ReadInteger('TRX', 'RigInUse', 1); + cmbRadioModes.ItemIndex:=cmbRadioNr.ItemIndex; + cmbCWRadio.ItemIndex:=cmbRadioNr.ItemIndex; + end; + end; procedure TfrmPreferences.ClearUnUsedRigs; var @@ -3547,6 +3546,12 @@ Begin end; until (f=edtRigCount.Value); end; + + if not ( cqrini.ReadInteger('TRX', 'RigInUse', 1) in [ 1..edtRigCount.Value] ) then + cqrini.WriteInteger('TRX', 'RigInUse', 1); //used rig was deleted + + frmTRXControl.cmbRigGetItems(nil); //update TRXControl rig names before returning + //6 is max rig count set by edtRigCount:Tspinedit //if you change it you must change also fConfigStorage.pas //TRX, CW and Band lists