diff --git a/help/h3.html b/help/h3.html index 0ddaa01..61ba71b 100644 --- a/help/h3.html +++ b/help/h3.html @@ -68,7 +68,13 @@ HTML export

The same as above, only difference is to choose the 'HTML' option.

- How to update Country files:
+

Program version update:

+ Ubuntu 16.04, 17.10, 18.04 users can use CQRLOG’s repository on Launchpad. To add repository to your system, put into terminal this:
+
sudo add-apt-repository ppa:ok2cqr/ppa;sudo apt-get update;sudo apt-get install cqrlog
+
For those who does not use Ubuntu, load install package, or binaries, from: Cqrlog.com download page.
+
The binaries should work in any distribution. Please don't forget to install MySQL server, MySQL client, Hamlib libraries and if LoTW support is desired, trustedqsl package and libssl-devel must be installed.

+

+ How to update Country files:
  1. Unpack and copy all the files into the /ctyfiles folder in your CQRLOG main folder. The purpose of this folder is to store these files only, it is not bound to CQRLOG and @@ -141,7 +147,7 @@ File -> Show QSO list) and choose the File -> Import -> Import qsl managers database.

    A manual update is also possible if you download a recent version from the CQRLOG site - http://www.cqrlog.com.

    + http://www.cqrlog.com.



    The QSL Manager database format is as follows:
    diff --git a/images/attach.png b/images/attach.png
    new file mode 100644
    index 0000000..70017a1
    Binary files /dev/null and b/images/attach.png differ
    diff --git a/src/cqrlog.lpi b/src/cqrlog.lpi
    index b1b9037..cfe7aab 100644
    --- a/src/cqrlog.lpi
    +++ b/src/cqrlog.lpi
    @@ -1,7 +1,7 @@
     
     
       
    -    
    +    
         
           
             
    @@ -19,7 +19,7 @@
           
           
           
    -      
    +      
           
         
         
    @@ -28,12 +28,9 @@
         
           
           
    -      
    -      
         
         
           
    -        
             
             
           
    @@ -43,6 +40,21 @@
               
             
           
    +      
    +      
    +        
    +          
    +            
    +            
    +          
    +          
    +            
    +              
    +              
    +            
    +          
    +        
    +      
         
         
           
    diff --git a/src/dDXCluster.pas b/src/dDXCluster.pas
    index 377de28..466e752 100644
    --- a/src/dDXCluster.pas
    +++ b/src/dDXCluster.pas
    @@ -1130,6 +1130,8 @@ end;
     procedure TdmDXCluster.RunCallAlertCmd(call,band,mode,freq : String);
     var
       AProcess : TProcess;
    +  paramList :TStringList;
    +  index     :integer;
       cmd      : String;
     begin
       cmd := cqrini.ReadString('DXCluster','AlertCmd','');
    @@ -1141,9 +1143,19 @@ begin
           cmd := StringReplace(cmd,'$BAND',band,[rfReplaceAll, rfIgnoreCase]);
           cmd := StringReplace(cmd,'$MODE',mode,[rfReplaceAll, rfIgnoreCase]);
           cmd := StringReplace(cmd,'$FREQ',freq,[rfReplaceAll, rfIgnoreCase]);
    -
    -      AProcess.CommandLine := cmd;
    -      if dmData.DebugLevel>=1 then Writeln('Command line: ',AProcess.CommandLine);
    +      index:=0;
    +      paramList := TStringList.Create;
    +      paramList.Delimiter := ' ';
    +      paramList.DelimitedText := cmd;
    +      AProcess.Parameters.Clear;
    +      while index < paramList.Count do
    +      begin
    +        if (index = 0) then AProcess.Executable := paramList[index]
    +          else AProcess.Parameters.Add(paramList[index]);
    +        inc(index);
    +      end;
    +      paramList.Free;
    +      if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
           AProcess.Execute
         finally
           AProcess.Free
    diff --git a/src/dData.pas b/src/dData.pas
    index 914d7f3..6a87e91 100644
    --- a/src/dData.pas
    +++ b/src/dData.pas
    @@ -876,9 +876,9 @@ begin
       begin
         p := TProcess.Create(nil);
         try
    -      if dmData.DebugLevel>=1 then Writeln('Command: ',p.CommandLine);
    -      p.CommandLine := 'kill '+pid;
    -      if fDebugLevel>=1 then Writeln(p.CommandLine);
    +      p.Executable := 'kill';
    +      p.Parameters.Add(pid);
    +      if (dmData.DebugLevel>=1) or (fDebugLevel>=1) then Writeln('p.Executable: ',p.Executable,' Parameters: ',p.Parameters.Text);
           p.Execute;
           if OnStart then
             Sleep(3000);
    @@ -3377,15 +3377,30 @@ var
       mysqld    : String;
       Connected : Boolean = False;
       Tryies    : Word = 0;
    +  index     :integer;
    +  paramList :TStringList;
    +
     begin
       mysqld := GetMysqldPath;
       PrepareMysqlConfigFile;
       MySQLProcess := TProcess.Create(nil);
    -  MySQLProcess.CommandLine := mysqld+' --defaults-file='+fHomeDir+'database/'+'mysql.cnf'+
    +  MySQLProcess.Executable := mysqld;
    +  index:=0;
    +  paramList := TStringList.Create;
    +  paramList.Delimiter := ' ';
    +  paramList.DelimitedText := (' --defaults-file='+fHomeDir+'database/'+'mysql.cnf'+
                                   ' --datadir='+fHomeDir+'database/'+
                                   ' --socket='+fHomeDir+'database/sock'+
    -                              ' --port=64000';
    -  if fDebugLevel >= 1 then Writeln(MySQLProcess.CommandLine);
    +                              ' --port=64000');
    +  MySQLProcess.Parameters.Clear;
    +  while index < paramList.Count do
    +  begin
    +    MySQLProcess.Parameters.Add(paramList[index]);
    +    inc(index);
    +  end;
    +  paramList.Free;
    +
    +  if dmData.DebugLevel>=1 then Writeln('MySQLProcess.Executable: ',MySQLProcess.Executable,' Parameters: ',MySQLProcess.Parameters.Text);
       MySQLProcess.Execute;
     
       if MainCon.Connected then
    diff --git a/src/dUtils.pas b/src/dUtils.pas
    index dc15c16..3b3bec4 100644
    --- a/src/dUtils.pas
    +++ b/src/dUtils.pas
    @@ -2409,14 +2409,26 @@ end;
     procedure TdmUtils.RunXplanet;
     var
       AProcess: TProcess;
    +  index     :integer;
    +  paramList :TStringList;
     begin
    +  if dmData.DebugLevel>=1 then Writeln('RunXplanet - start');
    +  if (GetXplanetCommand = '') then exit;
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := GetXplanetCommand;
    -    if dmData.DebugLevel >= 1 then
    -      Writeln('Command line: ', AProcess.CommandLine);
    -    if (AProcess.CommandLine = '') then
    -      exit;
    +    index:=0;
    +    paramList := TStringList.Create;
    +    paramList.Delimiter := ' ';
    +    paramList.DelimitedText := GetXplanetCommand;
    +    AProcess.Parameters.Clear;
    +    while index < paramList.Count do
    +    begin
    +      if (index = 0) then AProcess.Executable := paramList[index]
    +        else AProcess.Parameters.Add(paramList[index]);
    +      inc(index);
    +    end;
    +    paramList.Free;
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute;
       finally
         AProcess.Free;
    @@ -2429,10 +2441,10 @@ var
     begin
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := 'killall xplanet';
    +    AProcess.Executable  := 'killall';
    +    AProcess.Parameters.Add('xplanet');
         AProcess.Options := [poNoConsole, poNewProcessGroup];
    -    if dmData.DebugLevel >= 1 then
    -      Writeln('Command line: ', AProcess.CommandLine);
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute;
       finally
         AProcess.Free
    @@ -2503,11 +2515,13 @@ begin
       SetCurrentDir(TargetDir);
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := 'tar -xvzf ' + FileName;
    +    AProcess.Parameters.Clear;
    +    AProcess.Executable := 'tar';
    +    AProcess.Parameters.Add('-xvzf');
    +    AProcess.Parameters.Add(FileName);
         AProcess.Options := [poNoConsole, poNewProcessGroup, poWaitOnExit];
    -    if dmData.DebugLevel >= 1 then
    -      Writeln('Command line: ', AProcess.CommandLine);
    -    try
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
    +   try
           AProcess.Execute;
         except
           Result := False
    @@ -2892,12 +2906,24 @@ end;
     procedure TdmUtils.ExecuteCommand(cmd: string);
     var
       AProcess: TProcess;
    +  index     :integer;
    +  paramList : TStringList;
     begin
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := cmd;
    -    if dmData.DebugLevel >= 1 then
    -      Writeln('Command line: ', AProcess.CommandLine);
    +    index:=0;
    +    paramList := TStringList.Create;
    +    paramList.Delimiter := ' ';
    +    paramList.DelimitedText := cmd;
    +    AProcess.Parameters.Clear;
    +    while index < paramList.Count do
    +    begin
    +      if (index = 0) then AProcess.Executable := paramList[index]
    +        else AProcess.Parameters.Add(paramList[index]);
    +      inc(index);
    +    end;
    +    paramList.Free;
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Options := AProcess.Options + [poWaitOnExit];
         AProcess.Execute
       finally
    @@ -2960,14 +2986,26 @@ end;
     procedure TdmUtils.RunOnBackgroud(path: string);
     var
       AProcess: TProcess;
    +  index     :integer;
    +  paramList : TStringList;
     begin
    +  if dmData.DebugLevel>=1 then Writeln('RunOnBackgroud -start');
    +  if (path = '') then exit;
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := path;
    -    if dmData.DebugLevel >= 1 then
    -      Writeln('Command line: ', AProcess.CommandLine);
    -    if (AProcess.CommandLine = '') then
    -      exit;
    +      index:=0;
    +      paramList := TStringList.Create;
    +      paramList.Delimiter := ' ';
    +      paramList.DelimitedText := path;
    +      AProcess.Parameters.Clear;
    +      while index < paramList.Count do
    +      begin
    +        if (index = 0) then AProcess.Executable := paramList[index]
    +          else AProcess.Parameters.Add(paramList[index]);
    +        inc(index);
    +      end;
    +      paramList.Free;
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute
       finally
         AProcess.Free
    @@ -3308,10 +3346,9 @@ var
     begin
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := cqrini.ReadString('Program', 'WebBrowser', 'firefox') +
    -      ' http://www.qrz.com/db/' + GetIDCall(call);
    -    if dmData.DebugLevel >= 1 then
    -      Writeln('Command line: ', AProcess.CommandLine);
    +    AProcess.Executable := cqrini.ReadString('Program', 'WebBrowser', 'firefox');
    +    AProcess.Parameters.Add('http://www.qrz.com/db/' + GetIDCall(call));
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute
       finally
         AProcess.Free
    @@ -3777,10 +3814,9 @@ var
     begin
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := cqrini.ReadString('Program', 'WebBrowser', 'firefox') +
    -      ' http://www.hamqth.com/' + GetIDCall(call);
    -    if dmData.DebugLevel >= 1 then
    -      Writeln('Command line: ', AProcess.CommandLine);
    +    AProcess.Executable  := cqrini.ReadString('Program', 'WebBrowser', 'firefox');
    +    AProcess.Parameters.Add(' http://www.hamqth.com/' + GetIDCall(call));
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute
       finally
         AProcess.Free
    diff --git a/src/fAbout.lfm b/src/fAbout.lfm
    index 71edc0c..806fe84 100644
    --- a/src/fAbout.lfm
    +++ b/src/fAbout.lfm
    @@ -1,33 +1,49 @@
     object frmAbout: TfrmAbout
    -  Left = 666
    -  Height = 292
    -  Top = 286
    -  Width = 406
    +  Left = 495
    +  Height = 294
    +  Top = 58
    +  Width = 453
       BorderStyle = bsDialog
       Caption = 'About CQRLOG'
    -  ClientHeight = 292
    -  ClientWidth = 406
    +  ClientHeight = 294
    +  ClientWidth = 453
       OnShow = FormShow
    -  LCLVersion = '1.8.2.0'
    +  LCLVersion = '2.0.0.4'
       object PageControl1: TPageControl
    +    AnchorSideLeft.Control = Owner
    +    AnchorSideTop.Control = Owner
    +    AnchorSideRight.Control = Owner
    +    AnchorSideRight.Side = asrBottom
    +    AnchorSideBottom.Control = Owner
    +    AnchorSideBottom.Side = asrBottom
         Left = 0
    -    Height = 292
    +    Height = 294
         Top = 0
    -    Width = 406
    +    Width = 453
         ActivePage = tabAbout
         Align = alClient
         TabIndex = 0
         TabOrder = 0
         object tabAbout: TTabSheet
    +      AnchorSideLeft.Control = PageControl1
    +      AnchorSideTop.Control = PageControl1
    +      AnchorSideRight.Control = PageControl1
    +      AnchorSideRight.Side = asrBottom
    +      AnchorSideBottom.Control = PageControl1
    +      AnchorSideBottom.Side = asrBottom
           Caption = 'About'
    -      ClientHeight = 261
    -      ClientWidth = 402
    +      ClientHeight = 263
    +      ClientWidth = 443
           object Image1: TImage
    +        AnchorSideLeft.Control = tabAbout
    +        AnchorSideTop.Control = tabAbout
             Left = 8
             Height = 128
    -        Top = 8
    +        Top = 6
             Width = 128
             AutoSize = True
    +        BorderSpacing.Left = 8
    +        BorderSpacing.Top = 6
             Picture.Data = {
               1754506F727461626C654E6574776F726B47726170686963D762000089504E47
               0D0A1A0A0000000D4948445200000080000000800806000000C33E61CB00000A
    @@ -825,10 +841,14 @@ object frmAbout: TfrmAbout
             Stretch = True
           end
           object Label1: TLabel
    -        Left = 164
    -        Height = 62
    -        Top = 8
    -        Width = 223
    +        AnchorSideLeft.Control = Image1
    +        AnchorSideLeft.Side = asrBottom
    +        AnchorSideTop.Control = Image1
    +        Left = 184
    +        Height = 64
    +        Top = 6
    +        Width = 250
    +        BorderSpacing.Left = 48
             Caption = 'CQRLOG'
             Font.Height = -54
             Font.Style = [fsBold]
    @@ -836,41 +856,58 @@ object frmAbout: TfrmAbout
             ParentFont = False
           end
           object Bevel1: TBevel
    -        Left = 11
    +        AnchorSideLeft.Control = Image1
    +        AnchorSideTop.Control = Image1
    +        AnchorSideTop.Side = asrBottom
    +        Left = 8
             Height = 8
    -        Top = 136
    -        Width = 437
    +        Top = 137
    +        Width = 426
    +        BorderSpacing.Top = 3
             Shape = bsTopLine
           end
           object Label2: TLabel
    +        AnchorSideLeft.Control = Image1
             Left = 8
             Height = 17
             Top = 152
    -        Width = 58
    +        Width = 54
             Caption = 'Authors:'
             ParentColor = False
           end
           object Label3: TLabel
    -        Left = 75
    +        AnchorSideLeft.Control = Label2
    +        AnchorSideLeft.Side = asrBottom
    +        AnchorSideTop.Control = Label2
    +        Left = 77
             Height = 17
             Top = 152
    -        Width = 312
    +        Width = 304
    +        BorderSpacing.Left = 15
             Caption = 'Petr Hlozek, OK7AN && Martin Kratoska, OK1RR'
             ParentColor = False
           end
           object Label5: TLabel
    +        AnchorSideLeft.Control = Image1
    +        AnchorSideTop.Control = Label2
    +        AnchorSideTop.Side = asrBottom
             Left = 8
             Height = 17
    -        Top = 184
    -        Width = 165
    +        Top = 185
    +        Width = 160
    +        BorderSpacing.Top = 16
             Caption = 'Home page and support:'
             ParentColor = False
           end
           object lblLink: TLabel
    +        AnchorSideLeft.Control = Label5
    +        AnchorSideLeft.Side = asrBottom
    +        AnchorSideTop.Control = Label5
             Left = 184
             Height = 17
    -        Top = 184
    -        Width = 158
    +        Top = 185
    +        Width = 146
    +        BorderSpacing.Left = 16
             Caption = 'http://www.cqrlog.com'
             Font.Color = clBlue
             Font.Style = [fsUnderline]
    @@ -880,8 +917,9 @@ object frmAbout: TfrmAbout
             OnMouseEnter = lblLinkMouseEnter
           end
           object btnChangelog: TButton
    -        Left = 8
    -        Height = 29
    +        AnchorSideLeft.Control = Image1
    +        Left = 9
    +        Height = 33
             Top = 224
             Width = 90
             AutoSize = True
    @@ -892,10 +930,14 @@ object frmAbout: TfrmAbout
             TabOrder = 0
           end
           object btnClose: TButton
    -        Left = 297
    -        Height = 29
    -        Top = 224
    +        AnchorSideTop.Control = btnChangelog
    +        AnchorSideRight.Control = Label1
    +        AnchorSideRight.Side = asrBottom
    +        Left = 343
    +        Height = 33
    +        Top = 225
             Width = 90
    +        Anchors = [akTop, akRight]
             AutoSize = True
             BorderSpacing.Around = 1
             Cancel = True
    @@ -905,20 +947,26 @@ object frmAbout: TfrmAbout
             TabOrder = 1
           end
           object lblVerze: TLabel
    -        Left = 224
    +        AnchorSideTop.Control = Label1
    +        AnchorSideTop.Side = asrBottom
    +        AnchorSideRight.Control = Label1
    +        AnchorSideRight.Side = asrBottom
    +        Left = 271
             Height = 18
    -        Top = 80
    +        Top = 86
             Width = 163
             Alignment = taRightJustify
    +        Anchors = [akTop, akRight]
             AutoSize = False
    +        BorderSpacing.Top = 16
             Caption = 'lblVerze'
             ParentColor = False
           end
         end
         object tabContributors: TTabSheet
           Caption = 'Contributors'
    -      ClientHeight = 261
    -      ClientWidth = 402
    +      ClientHeight = 263
    +      ClientWidth = 443
           object mContributors: TMemo
             Left = 0
             Height = 261
    diff --git a/src/fBigSquareStat.pas b/src/fBigSquareStat.pas
    index 8025338..2680514 100644
    --- a/src/fBigSquareStat.pas
    +++ b/src/fBigSquareStat.pas
    @@ -156,7 +156,6 @@ begin
                                   ' group by lll order by loc';
             dmData.Q1.Open;
     
    -
             db := TBufDataset.Create(nil); //I was not able to clear all records from TBufDataset without this workaround
             try
               db.FieldDefs.Clear;
    diff --git a/src/fContest.pas b/src/fContest.pas
    index 5fbddea..9b90a3a 100644
    --- a/src/fContest.pas
    +++ b/src/fContest.pas
    @@ -160,12 +160,17 @@ procedure TfrmContest.edtCallExit(Sender: TObject);
     begin
       frmNewQSO.edtCall.Text := edtCall.Text;
     
    -  case frmNewQSO.cmbMode.Items[frmNewQSO.cmbMode.ItemIndex] of            //report in NEwQSO changes to 59 to late (after passing cmbMode)
    -  'SSB','AM','FM' : Begin
    -                         edtRSTs.Text := copy(edtRSTs.Text,0,2);
    -                         edtRSTr.Text := copy(edtRSTr.Text,0,2);
    -                    end;
    -  end;
    +  //report in NEwQSO changes to 59 to late (after passing cmbMode)
    +  //NOTE! if mode is not in list program dies! In that case skip next
    +  if frmNewQSO.cmbMode.ItemIndex >=0 then
    +   begin
    +     case frmNewQSO.cmbMode.Items[frmNewQSO.cmbMode.ItemIndex] of
    +          'SSB','AM','FM' : Begin
    +                                 edtRSTs.Text := copy(edtRSTs.Text,0,2);
    +                                 edtRSTr.Text := copy(edtRSTr.Text,0,2);
    +                            end;
    +     end;
    +   end;
     
       frmNewQSO.edtHisRST.Text := edtRSTs.Text + ' ' + edtSTX.Text + ' ' + edtSTX2.Text;
       //so that CW macros work
    diff --git a/src/fGroupEdit.pas b/src/fGroupEdit.pas
    index 0c55524..6b853a4 100644
    --- a/src/fGroupEdit.pas
    +++ b/src/fGroupEdit.pas
    @@ -55,44 +55,44 @@ uses dUtils, dData, dDXCC, fMain;
     procedure TfrmGroupEdit.cmbFieldChange(Sender: TObject);
     begin
       cmbValue.Clear;
    -  cmbValue.ReadOnly := False;
    +  cmbValue.Style:= csDropDown;
       case cmbField.ItemIndex of
          5 : begin
                dmUtils.InsertModes(cmbValue);
    -           cmbValue.ReadOnly := True
    +           cmbValue.Style:=csDropDownList;
              end;
         10 : begin
                dmUtils.InsertQSL_S(cmbValue);
                cmbValue.ItemIndex := 0;
    -           cmbValue.ReadOnly := True
    +           cmbValue.Style:=csDropDownList;
              end;
         11 : begin
                dmUtils.InsertQSL_R(cmbValue);
                cmbValue.ItemIndex := 0;
    -           cmbValue.ReadOnly := True
    +           cmbValue.Style:=csDropDownList;
              end;
      18,28 : begin
                cmbValue.Items.Add('Y');
                cmbValue.Items.Add('N');
                cmbValue.ItemIndex := 0;
    -           cmbValue.ReadOnly  := True
    +           cmbValue.Style:=csDropDownList;
              end;
         19 : begin
                cmbValue.Items.Add('L');
                cmbValue.Items.Add('N');
                cmbValue.ItemIndex := 0;
    -           cmbValue.ReadOnly  := True
    +           cmbValue.Style:=csDropDownList;
              end;
         25 : begin
                dmData.InsertProfiles(cmbValue,False);
                cmbValue.ItemIndex := 0;
    -           cmbValue.ReadOnly  := True
    +           cmbValue.Style:=csDropDownList;
              end;
         30 : begin
                cmbValue.Items.Add('E');
                cmbValue.Items.Add('N');
                cmbValue.ItemIndex := 0;
    -           cmbValue.ReadOnly  := True
    +           cmbValue.Style:=csDropDownList;
              end
        end
     end;
    diff --git a/src/fLoTWExport.pas b/src/fLoTWExport.pas
    index dbfd922..a156642 100644
    --- a/src/fLoTWExport.pas
    +++ b/src/fLoTWExport.pas
    @@ -282,6 +282,8 @@ end;
     procedure TfrmLoTWExport.btnExportSignClick(Sender: TObject);
     var
       tmp : String;
    +  paramList :TStringList;
    +  index,
       res : Integer;
     begin
       MarkAfter := False;
    @@ -316,9 +318,20 @@ begin
       mStat.Lines.Add('Signing adif file ...');
       Application.ProcessMessages;
     
    -  AProcess.CommandLine := StringReplace(edtTqsl.Text,'%f',FileName,[]);
    +  index:=0;
    +  paramList := TStringList.Create;
    +  paramList.Delimiter := ' ';
    +  paramList.DelimitedText := StringReplace(edtTqsl.Text,'%f',FileName,[]);
    +  AProcess.Parameters.Clear;
    +  while index < paramList.Count do
    +  begin
    +    if (index = 0) then AProcess.Executable := paramList[index]
    +      else AProcess.Parameters.Add(paramList[index]);
    +    inc(index);
    +  end;
    +  paramList.Free;
       AProcess.Options := [poUsePipes];
    -  if dmData.DebugLevel >=1 then Writeln(AProcess.CommandLine);
    +  if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
       AProcess.Execute;
     
       grbWebExport.Enabled := False;
    diff --git a/src/fMain.pas b/src/fMain.pas
    index 798aa8b..162627a 100644
    --- a/src/fMain.pas
    +++ b/src/fMain.pas
    @@ -1149,10 +1149,9 @@ var
     begin
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := cqrini.ReadString('Program', 'WebBrowser', 'firefox') +
    -      ' http://www.ik3qar.it/manager/man_result.php?call=' +
    -      dmData.qCQRLOG.Fields[4].AsString;
    -    Writeln('Command line: ', AProcess.CommandLine);
    +    AProcess.Executable := cqrini.ReadString('Program', 'WebBrowser', 'firefox');
    +    AProcess.Parameters.Add('http://www.ik3qar.it/manager/man_result.php?call=' + dmData.qCQRLOG.Fields[4].AsString);
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute
       finally
         AProcess.Free
    diff --git a/src/fMonWsjtx.pas b/src/fMonWsjtx.pas
    index daba420..075e5d0 100644
    --- a/src/fMonWsjtx.pas
    +++ b/src/fMonWsjtx.pas
    @@ -162,11 +162,6 @@ var
       wkdband: Tcolor;
       wkdany: Tcolor;
       wkdnever: Tcolor;
    -  bmHere,
    -  bmBand,
    -  bmAny,
    -  bmNever,
    -  bmExt   :Tbitmap;
       EditedText: string;
       //holds editAlert after finished (loose focus)
       Ssearch, Sfull: string;
    @@ -213,9 +208,9 @@ begin
       AProcess := TProcess.Create(nil);
       try
         AProcess.Executable:=dmData.HomeDir + cAlert;
    +    AProcess.Parameters.Clear;
         AProcess.Parameters.Add(AFile);
    -    if LocalDbg then
    -      Writeln('Command line: ', AProcess.Executable + ' ' + AFile );
    +    if LocalDbg then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute
       finally
         AProcess.Free
    @@ -384,6 +379,31 @@ begin
       dmUtils.SaveWindowPos(frmMonWsjtx);
     
     end;
    + 
    +procedure TfrmMonWsjtx.Setbitmap(bm: TBitmap; col: Tcolor);
    +begin
    + with bm do
    +  Begin
    +    Width  := bmW + 2;
    +    Height := bmH + 2;
    +    with Canvas do
    +     Begin
    +        Brush.Style := bsSolid;
    +        if col = clBlack then Pen.Color := clFuchsia else Pen.Color := clBlack;
    +        Brush.Color := col;
    +        Rectangle(0, 0, bmW, bmH);
    +     end;
    +  end;
    +end;
    +
    +procedure TfrmMonWsjtx.SetAllbitmaps;
    +Begin
    +   Setbitmap(cmHere.Bitmap, wkdhere);
    +   Setbitmap(cmBand.Bitmap, wkdband);
    +   Setbitmap(cmAny.Bitmap, wkdAny);
    +   Setbitmap(cmNever.Bitmap, wkdnever);
    +   Setbitmap(cmCqDX.Bitmap, extCqCall);
    +end;
     
     procedure TfrmMonWsjtx.cmNeverClick(Sender: TObject);
     begin
    @@ -396,7 +416,54 @@ begin
         SetAllbitmaps;
       end;
     end;
    +procedure TfrmMonWsjtx.cmBandClick(Sender: TObject);
    +begin
    +  popColorDlg.Color := wkdBand;
    +  popColorDlg.Title := 'Qso on this band, but not this mode - color';
    +  if popColorDlg.Execute then
    +  begin
    +    wkdBand := (popColorDlg.Color);
    +    cqrini.WriteString('MonWsjtx', 'wkdband', ColorToString(wkdband));
    +    SetAllbitmaps;
    +  end;
     
    +end;
    +
    +procedure TfrmMonWsjtx.cmAnyClick(Sender: TObject);
    +begin
    +  popColorDlg.Color := wkdAny;
    +  popColorDlg.Title := 'Qso on some other band/mode - color';
    +  if popColorDlg.Execute then
    +  begin
    +    wkdAny := (popColorDlg.Color);
    +    cqrini.WriteString('MonWsjtx', 'wkdany', ColorToString(wkdany));
    +    SetAllbitmaps;
    +  end;
    +end;
    +
    +procedure TfrmMonWsjtx.cmHereClick(Sender: TObject);
    +begin
    +  popColorDlg.Color := wkdHere;
    +  popColorDlg.Title := 'Qso on this band and mode - color';
    +  if popColorDlg.Execute then
    +  begin
    +    wkdHere := (popColorDlg.Color);
    +    cqrini.WriteString('MonWsjtx', 'wkdhere', ColorToString(wkdhere));
    +    SetAllbitmaps;
    +  end;
    +end;
    +
    +procedure TfrmMonWsjtx.cmCqDxClick(Sender: TObject);
    +begin
    +  popColorDlg.Color := extCqCall;
    +  popColorDlg.Title := 'Extended CQ (DX, NA, SA ...) - color';
    +  if popColorDlg.Execute then
    +   Begin
    +    extCqCall := (popColorDlg.Color);
    +    cqrini.WriteString('MonWsjtx', 'extCqCall', ColorToString(extCqCall));
    +    SetAllbitmaps;
    +   end;
    +end;
     procedure TfrmMonWsjtx.EditAlertEnter(Sender: TObject);
     begin
       tbAlert.Checked := False;
    @@ -461,42 +528,7 @@ begin
       SendReply(RepFlw);
     end;
     
    -procedure TfrmMonWsjtx.cmBandClick(Sender: TObject);
    -begin
    -  popColorDlg.Color := wkdBand;
    -  popColorDlg.Title := 'Qso on this band, but not this mode - color';
    -  if popColorDlg.Execute then
    -  begin
    -    wkdBand := (popColorDlg.Color);
    -    cqrini.WriteString('MonWsjtx', 'wkdband', ColorToString(wkdband));
    -    SetAllbitmaps;
    -  end;
     
    -end;
    -
    -procedure TfrmMonWsjtx.cmAnyClick(Sender: TObject);
    -begin
    -  popColorDlg.Color := wkdAny;
    -  popColorDlg.Title := 'Qso on some other band/mode - color';
    -  if popColorDlg.Execute then
    -  begin
    -    wkdAny := (popColorDlg.Color);
    -    cqrini.WriteString('MonWsjtx', 'wkdany', ColorToString(wkdany));
    -    SetAllbitmaps;
    -  end;
    -end;
    -
    -procedure TfrmMonWsjtx.cmHereClick(Sender: TObject);
    -begin
    -  popColorDlg.Color := wkdHere;
    -  popColorDlg.Title := 'Qso on this band and mode - color';
    -  if popColorDlg.Execute then
    -  begin
    -    wkdHere := (popColorDlg.Color);
    -    cqrini.WriteString('MonWsjtx', 'wkdhere', ColorToString(wkdhere));
    -    SetAllbitmaps;
    -  end;
    -end;
     
     procedure TfrmMonWsjtx.chknoHistoryChange(Sender: TObject);
     begin
    @@ -825,17 +857,6 @@ begin
       tmrCqPeriod.Enabled := True;
     end;
     
    -procedure TfrmMonWsjtx.cmCqDxClick(Sender: TObject);
    -begin
    -  popColorDlg.Color := extCqCall;
    -  popColorDlg.Title := 'Extended CQ (DX, NA, SA ...) - color';
    -  if popColorDlg.Execute then
    -   Begin
    -    extCqCall := (popColorDlg.Color);
    -    cqrini.WriteString('MonWsjtx', 'extCqCall', ColorToString(extCqCall));
    -    SetAllbitmaps;
    -   end;
    -end;
     
     procedure TfrmMonWsjtx.cmFontClick(Sender: TObject);
     begin
    @@ -864,11 +885,11 @@ begin
       LastWsjtLineTime := '';
       DblClickCall :='';
     
    -  bmHere := TBitmap.Create;
    -  bmBand := TBitmap.Create;
    -  bmAny  := TBitmap.Create;
    -  bmNever := TBitmap.Create;
    -  bmExt := TBitmap.Create;
    +  cmHere.Bitmap := TBitmap.Create;
    +  cmBand.Bitmap := TBitmap.Create;
    +  cmAny.Bitmap  := TBitmap.Create;
    +  cmNever.Bitmap := TBitmap.Create;
    +  cmCqDX.Bitmap := TBitmap.Create;
     
       //DL7OAP
       setDefaultColorSgMonitorAttributes;
    @@ -898,34 +919,6 @@ begin
       frmMonWsjtx.hide;
     end;
     
    -procedure TfrmMonWsjtx.Setbitmap(bm:TBitmap;col:Tcolor);
    -Begin
    -  with bm do
    -  Begin
    -   Width  := bmW;
    -   Height := bmH;
    -    with Canvas do
    -     Begin
    -        Brush.Style := bsSolid;
    -        Brush.Color := Col;
    -        FillRect(0,0,bmW,bmH);
    -     end;
    -  end;
    -end;
    -
    -procedure TfrmMonWsjtx.SetAllbitmaps;
    -Begin
    -   Setbitmap(bmHere, wkdhere);
    -   cmHere.Bitmap := bmHere;
    -   Setbitmap(bmBand, wkdband);
    -   cmBand.Bitmap := bmBand;
    -   Setbitmap(bmAny, wkdAny);
    -   cmAny.Bitmap := bmAny;
    -   Setbitmap(bmNever, wkdnever);
    -   cmNever.Bitmap := bmNever;
    -   Setbitmap(bmExt, extCqCall);
    -   cmCqDX.Bitmap := bmExt;
    -end;
     
     procedure TfrmMonWsjtx.FormShow(Sender: TObject);
     begin
    diff --git a/src/fNewQSO.lfm b/src/fNewQSO.lfm
    index 17ea9ee..b1bba19 100644
    --- a/src/fNewQSO.lfm
    +++ b/src/fNewQSO.lfm
    @@ -1,5 +1,5 @@
     object frmNewQSO: TfrmNewQSO
    -  Left = 282
    +  Left = 156
       Height = 709
       Top = 0
       Width = 809
    @@ -2134,7 +2134,7 @@ object frmNewQSO: TfrmNewQSO
       OnKeyPress = FormKeyPress
       OnShow = FormShow
       OnWindowStateChange = FormWindowStateChange
    -  LCLVersion = '1.8.4.0'
    +  LCLVersion = '2.0.0.4'
       object sbNewQSO: TStatusBar
         AnchorSideLeft.Control = Owner
         AnchorSideRight.Control = Owner
    @@ -2575,90 +2575,70 @@ object frmNewQSO: TfrmNewQSO
             end
             object sbtnAttach: TSpeedButton
               AnchorSideTop.Control = mComment
    -          Left = 423
    +          AnchorSideTop.Side = asrBottom
    +          AnchorSideRight.Control = mComment
    +          AnchorSideRight.Side = asrBottom
    +          Left = 381
               Height = 22
               Hint = 'Call has an attachment'
    -          Top = 255
    +          Top = 338
               Width = 23
    +          Anchors = [akTop, akRight]
    +          BorderSpacing.Top = 3
    +          BorderSpacing.Right = 130
               Glyph.Data = {
    -            C6070000424DC607000000000000360000002800000016000000160000000100
    -            2000000000009007000064000000640000000000000000000000FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C4C5
    -            C8FFA6B0BFFFA0AAB8FFA0AAB8FFA0AAB8FFA0AAB8FFA0AAB8FFA0AAB8FFA0AA
    -            B8FFA0AAB8FFA0AAB8FFA0AAB8FFA0AAB8FF9FAAB9FFA1A9B2FFC9C9CAFFFFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00AAA7A3FF596573FF2D69B3FF386C
    -            ACFF386DAEFF386DAEFF386DAEFF386CAEFF386DAEFF386CAEFF386DAEFF386D
    -            AEFF386DAEFF376BACFF3C71B4FF416591FF94989DFFFFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00979593FF636B70FF93BBE4FF76A3D1FF75A3D2FF75A4
    -            D3FF75A3D2FF75A2D2FF74A3D2FF74A2D2FF75A3D3FF75A4D3FF75A4D2FF71A0
    -            D1FF84ADD7FF96B8DBFF607184FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00979897FF7D8181FFA9C0DBFF7FA7D2FF6F9DCEFF739FD0FF729FCEFF73A0
    -            CEFF729FCFFF729FCEFF739FCFFF739FCFFF739FCEFF729FCDFF76A1CEFF8AB3
    -            DDFF58789DFFBCBDBCFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00807F7CFF7F83
    -            87FF94ACC8FF9EBEE0FF7DA6D1FF7CA6D2FF7DA6D2FF7DA5D2FF7CA5D2FF7CA6
    -            D2FF7DA5D2FF7DA5D3FF7CA6D2FF7DA6D2FF79A3D1FF89ADD5FF93B2D6FF6677
    -            8DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF006A6A67FF898E92FF73879EFFAEC6
    -            DEFF8EB1D7FF83AAD3FF85ABD4FF85A9D4FF85ABD3FF84AAD4FF85AAD4FF85AB
    -            D4FF84ABD4FF85AAD5FF85AAD5FF84AAD3FFA3C2E2FF6583A6FFFFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00656665FF909294FF617386FFA5BCD7FF9EBCDDFF83AA
    -            D3FF89ADD5FF89ADD6FF89ADD5FF89ADD6FF89AED6FF89AED5FF89ADD6FF89AD
    -            D6FF89AED6FF85ABD4FF96B7DAFF88A3C3FFBBBAB8FFFFFFFF00FFFFFF00C5C5
    -            C5FF696B69FFB9B6B2FF687585FF7493BBFFA7C4E1FF7EA6D1FF86ACD5FF86AC
    -            D5FF86ACD5FF86ACD5FF86ACD5FF86ACD5FF86ACD5FF86ACD5FF86ACD5FF86AB
    -            D4FF86ACD5FF91ABCBFF587190FFFFFFFF00FFFFFF00A9A9A8FF747676FFA2A0
    -            9CFF5D697AFF7694BBFFB4CDE7FF8DB0D6FF94B6DAFF94B6DAFF94B6DAFF94B6
    -            DAFF94B6DAFF94B6DAFF94B6DAFF94B5DAFF95B6DAFF96B7DBFF93B5DAFFACC6
    -            E2FF496991FFFFFFFF00FFFFFF00999999FF7D7E7DFFB6B5B2FF6E7680FF728D
    -            AFFFACC7E5FFA0BBDCFFA2BEDEFFA2BEDEFFA2BEDEFFA2BEDEFFA2BEDEFFA3BE
    -            DEFFA4BEDCFFA6C1E1FFA1BCDDFF9BB7D7FF9DB8D8FF9DB8D9FF4D6889FFFFFF
    -            FF00FFFFFF008B8B89FF8C8C8BFF989998FF7E807FFF6A7B90FF436999FF4168
    -            9BFF416799FF416799FF416799FF406798FF3F6699FF416798FF4A6C98FF385D
    -            8CFF466D9FFF5C83B4FF587EB0FF577EB1FF8D96A2FFFFFFFF00FFFFFF007577
    -            75FFA3A3A1FF9D9D9CFF878686FF8B8A87FF928D86FFBABBB9FF8383A8FF8383
    -            A8FFBABBB9FF9E9892FF9D9890FFBABBB9FFDEEAE2FFCDDFD4FFBBE6D8FFD3F3
    -            E9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006D6E6CFFB4B4B8FF9393
    -            93FF858585FF878989FF86888AFFBABBB9FF7878A0FF7777A0FFBABBB9FF5658
    -            57FF575A58FFFBFDFC00669C79FF509C77FF2BB286FF45C69DFFCCEEE4FFFFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00727272FFAAABAEFF7B7B7AFF828282FF8282
    -            81FF828281FFBABBB9FF61618FFF5D5F8DFFBABBB9FFC1C2C1FFC1C2C1FF99C5
    -            A6FF2D9E56FF27A76CFF09C485FF05DB93FF66D9BAFFFFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00646462FFC1C2C1FFB2B2B1FFB2B3B2FFB2B3B2FFB0B1AFFFBABB
    -            B9FF575787FF4C527FFF6CBB91FF6DAC86FF7BAF89FF55A776FF1B9C58FF199C
    -            61FF17C286FF05D88CFF5EDFB9FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00A3A4
    -            A2FF6C6E6BFF717371FF6F7170FF707271FF707271FFBABBB9FF444478FF313C
    -            6AFF21A15FFF1AA35AFF0CAF62FF0DB773FF1DBC7CFF1D9C58FF17B476FF06C6
    -            7FFF72D7B6FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003B3B70FF263161FF23985BFF219C
    -            59FF0FA761FF11B677FF0DB170FF1C9657FF17A764FF04BB71FF75D2B6FFFFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF002C2C63FF161F50FF229E52FF23A454FF0CA75EFF0DB6
    -            74FF4FBD90FFA8D3BEFFB6DAC6FF9FDDBFFFADDACAFFFFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00353568FF192050FF249850FF21A857FF09A85FFF0AAF70FF78C4AAFFFFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00A9CAB7FF86BE9CFF65AB89FF69AE93FFFFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
    -            FF00FFFFFF00FFFFFF00
    +            36040000424D3604000000000000360000002800000010000000100000000100
    +            2000000000000004000064000000640000000000000000000000000000000000
    +            0000000000000000000000000000000000000000000000000000000000000000
    +            00000000000000000000000000000000000000000000281C1A00495252735C72
    +            7494647F82A7627D80A4627D80A4627D80A4627D80A4627D80A4627D80A4627D
    +            80A4627D80A4627D80A560797BAD495354570000001100000000536264C0749C
    +            9EF582B3B6FF80AFB2FF80AFB2FF80AFB2FF80AFB2FF80AFB2FF80AFB2FF80AF
    +            B2FF80AFB2FF80AFB2FF80AFB0FF5D7373AC1802003A000000005D7477B79ADC
    +            DFE7B4FFFFFFB1FFFFFFB1FFFFFFB1FFFFFFB1FFFFFFB1FFFFFFB1FFFFFFB1FF
    +            FFFFB1FFFFFFB2FFFFFFB7FFFFFF759C9CDA3837386F00000000444D4DB78FC9
    +            CFE7AFFEFFFFABF7FFFFABF7FFFFABF7FFFFABF7FFFFABF7FFFFABF7FFFFABF7
    +            FFFFABF7FFFFACF9FFFFB1FFFFFF7FAFB1FF5F7A7C9C00000000323F40B78BC7
    +            CEE7B1FFFFFFACFFFFFFABFFFFFFABFFFFFFABFFFFFFABFFFFFFAAF7FFFFAAF5
    +            FEFFAAF6FEFFAAF6FEFFADFCFFFF96D4DAFF81B3B8AC000000062E4B50B782BE
    +            C5E7A7EBEFFFA6DDD9FFAAD9D2FFAAD8D0FFA9D8D0FFA8DCD8FFA8F1F8FFA9F6
    +            FFFFAAF6FEFFAAF6FEFFABF7FFFFA7F0F8FF96D7DDB500000023366B73B76FA7
    +            AFE790B8B7FF9DA293FFA79076FFAA8D71FFA88D72FFA59D89FFA6E6EBFFA9F7
    +            FFFFABF7FFFFABF7FFFFABF7FEFFACFAFFFF9DE1E8C136353243418B95B75788
    +            8FE77C9FA0FFA7BDB3FFAC977DFFB7997AFFBA9C7CFFB2A48BFFA9E5E9FFACFB
    +            FFFFAFFEFFFFAEFDFFFFAEFDFFFFB0FFFFFFA0E5EBCF5D75766B45919CB7498A
    +            92E7659DA3FF8DBEC0FF8BAFADFF8EB0ACFF90B1ADFF8DB3B0FF89C4CAFF8ACA
    +            D1FF8BCBD2FF8BCBD2FF8BCCD2FF8CC7CDFF7FACB0CE56696A8644868FB74BA8
    +            B4E75BBFCDFF6ECCDAFF6ACEDFFF68CDDEFF68CEDEFF69CFDFFF6ACAD6FF6AC7
    +            D4FF69C6D3FF69C7D4FF6ACDD9FF61949AE1586162985160615240727AB855C9
    +            DAE75DECFFFF59E4F7FF59E4F7FF5AE5F9FF59E4F8FF59E2F5FE59E3F6F559E3
    +            F6F359E4F6F25AE5F8F35BEEFFF93E7C83A811000040000000003D666CBE51B9
    +            C8EA5ADDF0FF58D7E9FF58D8E9FF5BE6F9FF58D8EBFF4EAFBDF440767C923C63
    +            68763D6A6F733D6A6F763D6A707C34494B461C000013000000003855598A468E
    +            97E24B9EAAFF4A9CA7FF4A9CA7FF4BA3AEFF499AA5FF43808ADF333F413C1E00
    +            0018280C071A280E091C270C091E2813110E2F3D3E02000000003444463C4072
    +            7881427B82AB427A81A4427A81A4427A81A740747AA03D666D7A2E2B300B0000
    +            000000000000000000000000000000000000000000002A1F1D00000000000000
    +            00000000000000000000000000000000000000000000000000000000000057D0
    +            DF00230000000000000000000000000000000000000000000000
               }
               OnClick = sbtnAttachClick
               ShowHint = True
               ParentShowHint = False
             end
             object sbtnQSL: TSpeedButton
    -          AnchorSideTop.Control = sbtneQSL
    -          AnchorSideRight.Control = sbtneQSL
    +          AnchorSideTop.Control = mComment
    +          AnchorSideTop.Side = asrBottom
    +          AnchorSideRight.Control = mComment
    +          AnchorSideRight.Side = asrBottom
               Left = 407
               Height = 23
               Hint = 'Call has a QSL image'
               Top = 338
               Width = 23
               Anchors = [akTop, akRight]
    -          BorderSpacing.Right = 3
    +          BorderSpacing.Top = 3
    +          BorderSpacing.Right = 104
               Glyph.Data = {
                 36090000424D3609000000000000360000002800000018000000180000000100
                 2000000000000009000064000000640000000000000000000000FFFFFF00FFFF
    @@ -2740,15 +2720,18 @@ object frmNewQSO: TfrmNewQSO
               ParentShowHint = False
             end
             object sbtnQRZ: TSpeedButton
    -          AnchorSideTop.Control = sbtnHamQTH
    -          AnchorSideRight.Control = sbtnHamQTH
    +          AnchorSideTop.Control = mComment
    +          AnchorSideTop.Side = asrBottom
    +          AnchorSideRight.Control = mComment
    +          AnchorSideRight.Side = asrBottom
               Left = 485
               Height = 23
               Hint = 'Opens qrz.com callsing profile in webbrowser'
               Top = 338
               Width = 23
               Anchors = [akTop, akRight]
    -          BorderSpacing.Right = 3
    +          BorderSpacing.Top = 3
    +          BorderSpacing.Right = 26
               Glyph.Data = {
                 36040000424D3604000000000000360000002800000010000000100000000100
                 2000000000000004000064000000640000000000000000000000F5F2E9FFF5F2
    @@ -2791,15 +2774,18 @@ object frmNewQSO: TfrmNewQSO
             end
             object sbtnLoTW: TSpeedButton
               AnchorSideLeft.Side = asrBottom
    -          AnchorSideTop.Control = sbtnQRZ
    -          AnchorSideRight.Control = sbtnQRZ
    +          AnchorSideTop.Control = mComment
    +          AnchorSideTop.Side = asrBottom
    +          AnchorSideRight.Control = mComment
    +          AnchorSideRight.Side = asrBottom
               Left = 459
               Height = 23
               Hint = 'LoTW user'
               Top = 338
               Width = 23
               Anchors = [akTop, akRight]
    -          BorderSpacing.Right = 3
    +          BorderSpacing.Top = 3
    +          BorderSpacing.Right = 52
               Glyph.Data = {
                 36040000424D3604000000000000360000002800000010000000100000000100
                 2000000000000004000064000000640000000000000000000000FFFFFFFFFFFF
    @@ -3432,15 +3418,18 @@ object frmNewQSO: TfrmNewQSO
             end
             object sbtneQSL: TSpeedButton
               AnchorSideLeft.Side = asrBottom
    -          AnchorSideTop.Control = sbtnLoTW
    -          AnchorSideRight.Control = sbtnLoTW
    +          AnchorSideTop.Control = mComment
    +          AnchorSideTop.Side = asrBottom
    +          AnchorSideRight.Control = mComment
    +          AnchorSideRight.Side = asrBottom
               Left = 433
               Height = 23
               Hint = 'eQSL user'
               Top = 338
               Width = 23
               Anchors = [akTop, akRight]
    -          BorderSpacing.Right = 3
    +          BorderSpacing.Top = 3
    +          BorderSpacing.Right = 78
               Glyph.Data = {
                 36040000424D3604000000000000360000002800000010000000100000000100
                 2000000000000004000064000000640000000000000000000000FFFFFFFFFFFF
    @@ -4461,42 +4450,6 @@ object frmNewQSO: TfrmNewQSO
           end
           object mnuNewQSO: TMenuItem
             Caption = 'New QSO'
    -        Bitmap.Data = {
    -          36040000424D3604000000000000360000002800000010000000100000000100
    -          2000000000000004000064000000640000000000000000000000000000000000
    -          0000000000000000000000000000000000000000000000000000000000000000
    -          00001F6531FF1A6A36FF196B37FF186634FF0D391DFF00000000000000006B6B
    -          6BFF6B6B6BFF6B6B6BFF6B6B6BFF6B6B6BFF6B6B6BFF6B6B6BFF6B6B6BFF416B
    -          50FF288C53FF64BA8DFF95D2B2FF64BA8DFF288C53FF0E3B1EFF704B360096A6
    -          6A0062BC6BFF60B66AFF6EB075FF8FA792FF878E87FFBCBCBCFFBDBDBDFF1F6D
    -          3CFF62BA8BFF60BA87FFFFFFFFFF60B987FF67BC8FFF186835FFC8926C00F7FC
    -          F70067C272FF87CB8FFF78C380FFD9D9D9FF898989FFB9B9B9FFB9B9B9FF317B
    -          4CFF9CD4B6FFFFFFFFFFFFFFFFFFFFFFFFFF95D2B2FF196B37FFCA946E00FFFF
    -          FF00D8F0DB0073C67CFFC1DFC5FFDBDBDBFF858585FFB5B5B5FFB7B7B7FF4687
    -          5EFF90D3B1FF92D6B1FFFFFFFFFF65BC8CFF67BC8FFF186835FFCC976F00FFFF
    -          FF00ECF8EB0070C17AFFEEEEEEFFDCDCDCFF818181FF838383FF848484FF6B8B
    -          77FF61AB81FF95D4B4FFBAE6D0FF6ABB8FFF2D8F57FF0E3B1EFFD19C7300FFFF
    -          FF00FEFEFC00A4B1A5FFEFEFEFFFDEDEDEFFDDDDDDFFDCDCDCFFDBDBDBFFDADA
    -          DAFF9BB7A5FF5F9874FF4F8E66FF4A8A61FF7079500000000000D49E7500FFFF
    -          FF00FEFEFC00B4B4B4FFF0F0F0FFF3C1A2FFF2C09FFFF2BE9BFFF2BB99FFF2BA
    -          96FFF1B895FFECECECFF848484FFFFFFFF00B27C5A0000000000D5A07600FFFF
    -          FF00FDFDFC00BBBBBBFFF1F1F1FFE1E1E1FFE0E0E0FFDFDFDFFFDEDEDEFFDDDD
    -          DDFFDCDCDCFFEDEDEDFF8C8C8CFFFFFFFF00B57E5C0000000000D8A27900FFFF
    -          FF00FDFDFA00C1C1C1FFF1F1F1FFF5C8ACFFF3C7AAFFF3C5A6FFF3C3A3FFF3C0
    -          9FFFF2BE9DFFEEEEEEFF939393FFFFFFFF00B7815E0000000000D9A37900FFFF
    -          FF00FCFBF900C7C7C7FFF2F2F2FFE4E4E4FFE3E3E3FFE2E2E2FFE1E1E1FFE0E0
    -          E0FFDFDFDFFFEFEFEFFF9B9B9BFFFFFFFF00BA85600000000000DBA47A00FFFF
    -          FF00FFFFFF00CDCDCDFFF3F3F3FFF5CCB2FFF5CCB2FFF5CBAFFFF5C9ACFFF3C8
    -          AAFFF3C5A7FFEFEFEFFFA2A2A2FFFFFFFF00BD87630000000000DCA77B00DCA7
    -          7B00DCA77B00D1D1D1FFF3F3F3FFF3F3F3FFF2F2F2FFF2F2F2FFF2F2F2FFF1F1
    -          F1FFF1F1F1FFF0F0F0FFA9A9A9FFDCA77B00C08B660000000000DBAB8400E8B9
    -          9200E8B99200D6D6D6FFD3D3D3FFCFCFCFFFCCCCCCFFC8C8C8FFC4C4C4FFAFAF
    -          AFFF747474FF8E8E8EFFB1B1B1FFE8B99200BF8F6E0000000000472F2200D3A9
    -          8700DCA77B00DCA67A00DAA47A00D8A27900D5A07600D49E7500D29D7300CF9A
    -          72009A9A9AFFCB966F00C9946C00BC937500472F220000000000C803EA00C803
    -          EA00009B0000009B000000000000000000000000000000000000000000000000
    -          00003939E7FF0000000000000000000000000000000000000000
    -        }
             Hint = 'Add new QSO'
             ImageIndex = 0
             ShortCut = 16497
    @@ -4504,42 +4457,6 @@ object frmNewQSO: TfrmNewQSO
           end
           object mnuQSOList: TMenuItem
             Caption = 'Show QSO list'
    -        Bitmap.Data = {
    -          36040000424D3604000000000000360000002800000010000000100000000100
    -          2000000000000004000064000000640000000000000000000000000000000000
    -          0000000000005D170100A6E3C300000C41003C0B0000D4E29D00062A7E000000
    -          0000000000007E2A0600BFF5DA00000F4F00390A0000D3DF9700000F4F00B67C
    -          58FFD39C71FFD19668FFCE9263FFCB8E5EFFC98A5BFFC78756FFC38452FFC384
    -          52FFC38452FFC38452FFC38452FFC38452FF81522EFF000000007BBEE900D7A1
    -          75FFF8F2EDFFF7F0EAFFF6EDE6FFF4EAE2FFF3E7DEFFF1E4DBFFF0E2D8FFF0E2
    -          D8FFF0E2D8FFF0E2D8FFF0E2D8FFF0E2D8FFC4895CFFBFEFBF0027467500D9A4
    -          7AFFF9F3EEFFEBD2BEFFFFFFFFFFEBD3BFFFFFFFFFFFFFFFFFFFFFFFFFFFEAC7
    -          ADFFFFFFFFFFFFFFFFFFFFFFFFFFF0E2D8FFC68C5FFFD7883300000F4F00DDA8
    -          7EFFF9F3EFFFEBD0BAFFEBD0BBFFEBD0BBFFEBD0BBFFEBD0BBFFEBD1BDFFEACD
    -          B5FFEACDB5FFEACDB5FFEACDB5FFF0E2D8FFC68A5CFFAED0AF00BE8E5300DFAA
    -          82FFF9F3EFFFEACEB7FFFFFFFFFFEBD0BBFFFFFFFFFFFFFFFFFFFFFFFFFFEACF
    -          BAFFFBF6F2FFFFFFFFFFFFFFFFFFF0E2D8FFC88D5FFFBFEFBF00DFBB8900E1AE
    -          87FFFAF4F0FFEACBB2FFEACCB3FFEACCB3FFEACCB3FFEACCB3FFEACEB7FFE8C7
    -          ACFFE8C7ACFFE8C8B0FFE8C8AEFFF0E2D8FFC48654FF20070000000F4F00E3B1
    -          8CFFFAF6F1FFEAC9AEFFFFFFFFFFEAC9B0FFFFFFFFFFFFFFFFFFFFFFFFFFE8C7
    -          ACFFFFFFFFFFFFFFFFFFFFFFFFFFF1E5DBFFC68655FF52260C0000000000E5B4
    -          8FFFFAF6F2FFE9C6AAFFE9C6ACFFEAC7ACFFE9C7ADFFE9C9AEFFE9C9B0FFE8C7
    -          ACFFE9C9B0FFE8C8B0FFE8CCB5FFF2E7DEFFC88A59FFBFEFBF0000000000E7B7
    -          94FFFBF7F4FFE9C3A6FFFFFFFFFFE8C4A9FFFFFFFFFFFFFFFFFFFFFFFFFFE8C7
    -          ACFFFFFFFFFFFFFFFFFFFFFFFFFFF7F1EBFFCB8F5FFF00000000000F4F00E9BA
    -          98FFFBF7F4FFE9C3A6FFE9C3A6FFE9C3A6FFE9C3A6FFE9C3A6FFE9C3A6FFE9C3
    -          A6FFE9C3A6FFE9C3A6FFE9C3A6FFFBF7F4FFCE9364FF0000000000000000EBBD
    -          9BFFFBF7F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -          FFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF7F4FFD1976AFFBFEFBF0000000000ECBF
    -          9EFFFBF7F4FF9CD5A5FF98D3A1FF94D09DFF90CE98FF8BCB93FF87C98EFF82C6
    -          89FF7EC384FF7AC180FF76BE7CFFFBF7F4FFD49B6FFF00000000000F4F00DBB2
    -          94FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7
    -          F4FFFBF7F4FFFBF7F4FFFBF7F4FFFBF7F4FFD19C71FF0000000008000000F7E1
    -          D200F1C8ACFFEDC09FFFEBBE9DFFEBBC9AFFE9BA96FFE7B793FFE6B590FFE4B2
    -          8CFFE2AF88FFE0AC84FFDDA980FFDCA57DFFBD8461FFBFEFBF007804EA007804
    -          EA00F855EB00F855EB00E0832300FE75B10000000000C00000007856EB002C56
    -          EB000000000000000000000000004056EB000000000000000000
    -        }
             ImageIndex = 16
             ShortCut = 16463
             OnClick = mnuQSOListClick
    @@ -4840,42 +4757,6 @@ object frmNewQSO: TfrmNewQSO
           end
           object MenuItem19: TMenuItem
             Caption = 'Refresh'
    -        Bitmap.Data = {
    -          36040000424D3604000000000000360000002800000010000000100000000100
    -          200000000000000400006400000064000000000000000000000095648E00A4E6
    -          DD00011046004F1101007DBA8000000F4F004D0F0000FFFDBC00FFFFFF00FFFF
    -          FF00FFFFFF00FFFFFF00BEFEFF00000F4F00030000006D3A1300000004000000
    -          000000000000235328FF2D6B32FF0000000000000000000000005D170100A6E3
    -          C300000C41004F0F0000BFEFBF00000F4F0047110100D7E4A400000000000000
    -          0000525F2AFF5AA462FF58A15EFF37833EFF347E3AFF317A36FF2E7533FF2768
    -          2BFF1D4E20FF102E120039160400E7E59D004C74AF000E1E320054B3E8002652
    -          35FF62AC6AFF85C88DFF85C78BFF82C688FF7FC486FF7CC282FF79C180FF71B9
    -          78FF5FA865FF49914EFF1A4E35FF341F0900D3DF9700062A7D0041210F006A9B
    -          61FF66B06EFF8ACA92FF89CA90FF86C88DFF83C68AFF80C587FF7EC384FF7BC2
    -          81FF6DBB74FF76BE7CFF59A05DFF1B4C23FF25180800D592500090DEE400501A
    -          37007DC283FF67B16FFF64AD6BFF43944BFF408F47FF3C8A43FF398540FF549D
    -          5AFF74BA7AFF79C17FFF77BF7DFF4A914FFF27606C000607110000020F000200
    -          000052260C0085AC6AFF6BAF6FFFFBFFFF008EC2E500041B4F00000000004452
    -          24FF468D4BFF75BB7BFF70BD77FF63AB69FF1E5021FF9F430F0076AFD9000211
    -          3A0000000000060201006E793900F4DFBD00FFFFFF00CDECFF00346CA2000002
    -          0F00234C24FF61A867FF7BC282FF76BC7CFF3A7E43FF346CA2004F0F0000C1EF
    -          BF00B567670074CDE800000525000000000028060000E9D078006766B500BFEF
    -          C10023564AFF64AB6BFF7FC486FF79BE81FF428444FFF4FFFF00000000000000
    -          0000000000000000000000000000000000000000000000000000000000002755
    -          2CFF3A8142FF81C388FF7DC485FF6EB375FF265B2AFF00000000BFF5E900000F
    -          4F005FBA6AFF5CB667FF59B364FF56AE60FF53AA5DFF50A659FF4DA156FF68B1
    -          70FF88C890FF8DCC95FF8BCB92FF5DA564FF193A1C0000000000000000000000
    -          000062BE6DFFA5DAAEFFA2D8ACFFA1D8AAFF9ED6A7FF9CD5A5FF99D4A2FF97D2
    -          9FFF8CCD95FF91CF99FF73B87BFF2D6331FFA3591B00CCE3E800000000000000
    -          000064C170FFA6DBB0FFA6DAAFFFA3D9ADFFA2D8ABFF9FD7A8FF9CD5A5FF94D0
    -          9DFF83C58CFF6CB474FF316A37FF0F211100000000000000000089DFFF000009
    -          320066C472FF64C270FF62BF6EFF60BC6BFF5DB868FF5BB565FF57B062FF4E9E
    -          57FF3B7941FF2348270009120A00000000000000000000000000080000000100
    -          1E0089061C0090061E008A061E00FFFFFF000000000000000000000000000000
    -          0000000000000000000000000000000000004F0F0000FFFFBF001804EA001804
    -          EA00B0493D00B0493D00E0832300E075B10000000000A4000000304A3D00E449
    -          3D00000000000000000000000000F8493D000000000000000000
    -        }
             ImageIndex = 15
           end
         end
    @@ -5048,42 +4929,6 @@ object frmNewQSO: TfrmNewQSO
           RightJustify = True
           object MenuItem17: TMenuItem
             Caption = 'Help index'
    -        Bitmap.Data = {
    -          36040000424D3604000000000000360000002800000010000000100000000100
    -          2000000000000004000064000000640000000000000000000000560151001806
    -          520058015200160653004A02E600290000008888F500B001EA004C02E900D103
    -          EA004E02EA00CF03EB00C00048001314150000040000380000000202F5003604
    -          F6005801E3001606E4006211CE00603B95009E6056FFA16844FFA36642FF925B
    -          50FF7A3490002D134A0054014E001A06500055015000190651000202FE003604
    -          FF000002FF00612C1A00BA7046FFD7BBA3FFE9DACAFFECE0D1FFECE0D1FFE8D8
    -          C8FFD3B59CFF9D614CFFE224B6003904F4000002F4003804F500FE0232009204
    -          3300E92E4100B98159FFE7D5C4FFE5D2BFFFC9A685FFB88E67FFB68A65FFC5A1
    -          80FFE0CCBAFFE3D0BEFFAF6B45FF992790000003B8009004B900920159003D17
    -          5D00BE8368FFEAD8C9FFE3CDBAFFC0946BFFBA8C62FFCFB094FFCFB094FFB789
    -          5FFFB28761FFDAC0AAFFE4D1C0FFA0694FFF171233009004320050031200AB51
    -          4500E4CCB9FFEAD6C5FFC79971FFBF9066FFBF9066FFF7F1ECFFF6F0EAFFB789
    -          5FFFB7895FFFB58963FFE2CEBBFFD9BDA6FFA23E53002703590009000000D6B1
    -          7AFFEFE1D3FFD9B595FFC7986CFFC39569FFC19367FFBF9066FFBF9066FFBB8B
    -          63FFB98A63FFB88A62FFCBA786FFEADCCCFFA9714DFF8A0512001049F300D5AE
    -          92FFF2E4D9FFD1A57AFFC5996BFFC4976AFFC49669FFFAF6F2FFF3EAE1FFC295
    -          6DFFBE8F65FFBE8F64FFC0956DFFEFE3D5FFC08D60FF4849F30056015100D9B2
    -          97FFF2E5DAFFD1A67EFFCC9D71FFC79A6CFFC5986BFFE2CCB6FFF8F3EEFFF6EE
    -          E8FFD9BDA1FFC29468FFC59B71FFF0E2D6FFBE9068FF38000000FE02B700DBA7
    -          A6FFF3E5D9FFDFBB9EFFCFA075FFCD9E72FFF5EBE3FFE4CBB4FFE7D3BFFFFBF8
    -          F6FFE5D3BFFFC4986BFFD6B491FFEEE0D2FFBB8872FF190651000002F4009065
    -          D100F4E3D4FFEFDCCDFFD5A87EFFD0A077FFFBF8F5FFFCF8F5FFFCF8F5FFFBF8
    -          F5FFD1A881FFCFA47BFFEAD5C3FFEAD4C2FFE8549D009304B700FB023600A11F
    -          B400E6B9AAFFF6E9DDFFECD8C6FFD7AC81FFDCBB9AFFF6ECE3FFF5ECE2FFE4C8
    -          AEFFD2A77BFFE6CEBAFFF1E2D5FFCBA19BFFFA18E6003904F400520310008905
    -          110086474800EEC9B1FFF7EADFFFEEDED0FFE3C1A7FFD8AE89FFD7AC86FFDDBB
    -          9CFFEBD6C7FFF3E6D9FFE4B69AFFAC405600FC023400940436005401E6001A06
    -          E8005301E800624A7300DDC1C3FFF9E9DCFFF6E8DDFFF3E5DAFFF3E5DAFFF5E7
    -          DCFFF5E4D6FFDAB49BFFF74139003B04F10054030F008705100009000000E8EE
    -          43000C0000001847F3003E1E1B00D06C5F00DCDCAEFFECCDC0FFE9CBB3FFE5B6
    -          A3FFA367CE003421DE005601E4001806E5005501E5001906E600F803EA0060F0
    -          3E0000000000000000001D0200001F0000000000000040972500640020000000
    -          0000000000000000000003000000C9010000E8AD4500C8983900
    -        }
             ImageIndex = 14
             ShortCut = 32840
             OnClick = MenuItem17Click
    @@ -5922,42 +5767,6 @@ object frmNewQSO: TfrmNewQSO
         end
         object MenuItem84: TMenuItem
           Caption = 'Search on HamQTH.com'
    -      Bitmap.Data = {
    -        36040000424D3604000000000000360000002800000010000000100000000100
    -        2000000000000004000064000000640000000000000000000000F3AA6AFFF19A
    -        50FFF19B51FFF19B51FFF19648FFF9DBC0FFFEFEFEFFFEFDFDFFF8CFACFFF097
    -        4AFFF19B51FFF19B51FFF19A4FFFF4B279FF0000000000000000F2A35FFFEF8A
    -        34FFEB7005FFEC7E20FFEF8D38FFFCEADAFFFFFFFFFFFEFDFDFFF8CEAAFFEF8D
    -        37FFEC7E20FFEB7005FFEF8932FFF5B680FF0000000000000000FFFFFFFFFDF1
    -        E7FFEC7106FFF6BC89FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF6BC89FFEC7106FFFDF2E8FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEC7106FFF5B782FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5B782FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEC7106FFF5B782FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5B782FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEC7106FFF5B782FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5B782FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEC7106FFF5B985FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5B985FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEC7106FFF08F3AFFF3AD6FFFF2A968FFF2A968FFF2A968FFF2A968FFF3AD
    -        6FFFF08F3AFFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEB7106FFEB7207FFEC750DFFEC740CFFEC740CFFEC740CFFEC740CFFEC75
    -        0DFFEB7207FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEB7106FFF5BB88FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5BB88FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEC7106FFF5B782FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5B782FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEC7106FFF5B782FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5B782FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFCE9
    -        D9FFEC7106FFF5B782FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5B782FFEC7106FFFCE9D9FFFFFFFFFF0000000000000000FFFFFFFFFDF2
    -        E9FFEB7006FFF5BC8AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    -        FFFFF5BC8AFFEB7006FFFDF2E9FFFFFFFFFF0000000000000000FCEADAFFED80
    -        1FFFEB7006FFEC7B19FFEE8223FFFBE5D3FFFFFFFFFFFEFDFDFFF8CCA6FFEE84
    -        28FFEC7B19FFEB7006FFED801FFFFCEADAFF0000000000000000FDF4EDFFEF93
    -        42FFF19C53FFF19B52FFF1974AFFFADDC4FFFEFEFEFFFEFDFDFFF8D1AFFFF099
    -        4CFFF19B52FFF19C53FFEF9342FFFDF4EDFF0000000000000000
    -      }
           ImageIndex = 19
           OnClick = MenuItem84Click
         end
    diff --git a/src/fNewQSO.pas b/src/fNewQSO.pas
    index 11c09ba..9bc01d2 100644
    --- a/src/fNewQSO.pas
    +++ b/src/fNewQSO.pas
    @@ -4378,10 +4378,10 @@ var
     begin
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := cqrini.ReadString('Program','WebBrowser','firefox')+
    -                            ' http://www.ik3qar.it/manager/man_result.php?call='+
    -                            dmData.qQSOBefore.Fields[4].AsString;
    -    if dmData.DebugLevel>=1 then Writeln('Command line: ',AProcess.CommandLine);
    +    AProcess.Executable := cqrini.ReadString('Program','WebBrowser','firefox');
    +    AProcess.Parameters.Add('http://www.ik3qar.it/manager/man_result.php?call='+
    +                            dmData.qQSOBefore.Fields[4].AsString);
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute
       finally
         AProcess.Free
    @@ -6294,13 +6294,26 @@ end;
     procedure TfrmNewQSO.RunST(script: String);   //run start stop script
     var
        AProcess: TProcess;
    +   index     : integer;
    +   paramList : TStringList;
     begin
       if not FileExists(dmData.HomeDir + script) then
       exit;
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := 'bash ' + dmData.HomeDir + script;
    -    if dmData.DebugLevel>=1 then Writeln('Command line: ',AProcess.CommandLine);
    +    AProcess.Executable := 'bash';
    +    index:=0;
    +    paramList := TStringList.Create;
    +    paramList.Delimiter := ' ';
    +    paramList.DelimitedText := dmData.HomeDir + script;
    +    AProcess.Parameters.Clear;
    +    while index < paramList.Count do
    +    begin
    +      AProcess.Parameters.Add(paramList[index]);
    +      inc(index);
    +    end;
    +    paramList.Free;
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute
       finally
         AProcess.Free
    @@ -6318,8 +6331,11 @@ begin
       
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := 'bash ' + dmData.HomeDir + cVoiceKeyer  +' '+ key_pressed;
    -    if dmData.DebugLevel>=1 then Writeln('Command line: ',AProcess.CommandLine);
    +    AProcess.Executable := 'bash';
    +    AProcess.Parameters.Clear;
    +    AProcess.Parameters.Add(dmData.HomeDir + cVoiceKeyer);
    +    AProcess.Parameters.Add(key_pressed);
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute
       finally
         AProcess.Free
    @@ -6486,7 +6502,7 @@ begin
                             DisableRemoteMode;
                       mnuRemoteMode.Checked := True;
                       AnyRemoteOn := True;
    -                  lblCall.Caption       := 'Remote mode!';
    +                  lblCall.Caption       := 'Fldigi remote';
                       tmrFldigi.Interval    := cqrini.ReadInteger('fldigi','interval',2)*1000;
                       run                   := cqrini.ReadBool('fldigi','run',False);
                       path                  := cqrini.ReadString('fldigi','path','');
    diff --git a/src/fPreferences.pas b/src/fPreferences.pas
    index 592fcab..f201665 100644
    --- a/src/fPreferences.pas
    +++ b/src/fPreferences.pas
    @@ -1855,6 +1855,8 @@ var
       lat, long: currency;
       AProcess: TProcess;
       proj: string = '';
    +  index: integer;
    +  paramList : TStringList;
     begin
       if not FileExists(edtXplanetPath.Text) then
       begin
    @@ -1880,14 +1882,25 @@ begin
         3: proj := ' -projection rectangular';
       end; //case
     
    -  cmd := edtXplanetPath.Text + ' -config ' + dmData.HomeDir +
    +  cmd :=' -config ' + dmData.HomeDir +
         'xplanet' + PathDelim + 'geoconfig -window ' + myloc +
         ' -glare 28 -light_time -range 2.5 ' + wait + ' ' + geom +
         ' -window_title "CQRLOG - xplanet" ' + proj;
       AProcess := TProcess.Create(nil);
       try
    -    AProcess.CommandLine := cmd;
    -    Writeln('Command line: ', AProcess.CommandLine);
    +    AProcess.Executable := edtXplanetPath.Text;
    +    index:=0;
    +    paramList := TStringList.Create;
    +    paramList.Delimiter := ' ';
    +    paramList.DelimitedText := cmd;
    +    AProcess.Parameters.Clear;
    +    while index < paramList.Count do
    +    begin
    +      AProcess.Parameters.Add(paramList[index]);
    +      inc(index);
    +    end;
    +    paramList.Free;
    +    if dmData.DebugLevel>=1 then Writeln('AProcess.Executable: ',AProcess.Executable,' Parameters: ',AProcess.Parameters.Text);
         AProcess.Execute;
       finally
         AProcess.Free;
    @@ -2407,8 +2420,8 @@ begin
       dmUtils.InsertModes(cmbDefaultMode);
       dmUtils.InsertModes(cmbMode);
       dmUtils.InsertModes(cmbWsjtDefaultMode);
    -  cmbDefaultMode.ReadOnly     := True;
    -  cmbWsjtDefaultMode.ReadOnly := True;
    +  cmbDefaultMode.Style := csDropDownList;
    +  cmbWsjtDefaultMode.Style := csDropDownList;
     
       LoadMebershipCombo;
     
    diff --git a/src/fPropDK0WCY.pas b/src/fPropDK0WCY.pas
    index 4373bef..32c26d2 100644
    --- a/src/fPropDK0WCY.pas
    +++ b/src/fPropDK0WCY.pas
    @@ -7,7 +7,7 @@ interface
     uses
       Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
       StdCtrls, ExtCtrls, ComCtrls, Buttons, httpsend, LCLType, ftpsend,
    -  lazutf8sysutils, lclintf;
    +  LazSysUtils, lclintf;
     
     type
     
    diff --git a/src/fPropagation.pas b/src/fPropagation.pas
    index fa1c35e..977ae51 100644
    --- a/src/fPropagation.pas
    +++ b/src/fPropagation.pas
    @@ -276,7 +276,7 @@ begin
           for j:=0 to data.ChildNodes.Count-1 do
           begin
             if (data.ChildNodes.Item[j].Attributes.Item[0].NodeValue = 'vhf-aurora') then
    -           frmPropagation.vhf_aur := data.ChildNodes.Item[j].FirstChild.NodeValue;
    +           frmPropagation.vhf_aur := String(data.ChildNodes.Item[j].FirstChild.NodeValue);
             if (data.ChildNodes.Item[j].Attributes.Item[0].NodeValue = 'E-Skip') then
             begin
               if (data.ChildNodes.Item[j].Attributes.Item[1].NodeValue = 'europe') then
    diff --git a/src/fSplash.lfm b/src/fSplash.lfm
    index a345fb7..68219e2 100644
    --- a/src/fSplash.lfm
    +++ b/src/fSplash.lfm
    @@ -1,13 +1,13 @@
     object frmSplash: TfrmSplash
    -  Left = 526
    -  Height = 272
    -  Top = 198
    -  Width = 407
    +  Left = 675
    +  Height = 280
    +  Top = 178
    +  Width = 421
       BorderIcons = []
       BorderStyle = bsNone
       Caption = 'Starting CQRLOG ...'
    -  ClientHeight = 272
    -  ClientWidth = 407
    +  ClientHeight = 280
    +  ClientWidth = 421
       Font.Color = clHighlight
       Icon.Data = {
         3E08010000000100010080800000010020002808010016000000280000008000
    @@ -2128,13 +2128,18 @@ object frmSplash: TfrmSplash
       }
       OnCreate = FormCreate
       Position = poDesktopCenter
    -  LCLVersion = '1.8.2.0'
    +  LCLVersion = '2.0.0.4'
       object Image1: TImage
    -    Left = 0
    -    Height = 272
    -    Top = 0
    -    Width = 407
    -    Align = alClient
    +    AnchorSideLeft.Control = Owner
    +    AnchorSideLeft.Side = asrCenter
    +    AnchorSideTop.Control = Owner
    +    AnchorSideTop.Side = asrCenter
    +    AnchorSideRight.Side = asrBottom
    +    AnchorSideBottom.Side = asrBottom
    +    Left = 11
    +    Height = 262
    +    Top = 9
    +    Width = 399
         OnPaint = Image1Paint
         Picture.Data = {
           1754506F727461626C654E6574776F726B4772617068696380AE010089504E47
    diff --git a/src/fSplash.pas b/src/fSplash.pas
    index 0cb2d61..abbcd9d 100644
    --- a/src/fSplash.pas
    +++ b/src/fSplash.pas
    @@ -52,6 +52,7 @@ begin
       Repaint
     end;
     
    +
     procedure TfrmSplash.Image1Paint(Sender: TObject);
     const
       VersionPos: TPoint = (X:320; Y:243);
    @@ -66,7 +67,8 @@ const
          Wordbreak  : False;
          Opaque     : False;
          SystemFont : False;
    -     RightToLeft: False
    +     RightToLeft: False;
    +     EndEllipsis: False
        );
     var
       ATextRect: TRect;
    diff --git a/src/uRigControl.pas b/src/uRigControl.pas
    index d6650e7..f5fc194 100644
    --- a/src/uRigControl.pas
    +++ b/src/uRigControl.pas
    @@ -135,14 +135,26 @@ end;
     
     function TRigControl.StartRigctld : Boolean;
     var
    -  cmd : String;
    +   index     : integer;
    +   paramList : TStringList;
     begin
    -  cmd := fRigCtldPath + ' ' +RigCtldArgs;
     
       if fDebugMode then Writeln('Starting RigCtld ...');
    -  if fDebugMode then Writeln(cmd);
     
    -  rigProcess.CommandLine := cmd;
    +  rigProcess.Executable := fRigCtldPath;
    +  index:=0;
    +  paramList := TStringList.Create;
    +  paramList.Delimiter := ' ';
    +  paramList.DelimitedText := RigCtldArgs;
    +  rigProcess.Parameters.Clear;
    +  while index < paramList.Count do
    +  begin
    +    rigProcess.Parameters.Add(paramList[index]);
    +    inc(index);
    +  end;
    +  paramList.Free;
    +  if fDebugMode then Writeln('rigProcess.Executable: ',rigProcess.Executable,' Parameters: ',rigProcess.Parameters.Text);
    +
       try
         rigProcess.Execute;
         sleep(1500);
    diff --git a/src/uRotControl.pas b/src/uRotControl.pas
    index 3e6214d..f5a5212 100644
    --- a/src/uRotControl.pas
    +++ b/src/uRotControl.pas
    @@ -103,13 +103,24 @@ end;
     
     function TRotControl.StartRotctld : Boolean;
     var
    -  cmd : String;
    +   index     : integer;
    +   paramList : TStringList;
     begin
    -
    -  cmd := fRotCtldPath + ' ' +RotCtldArgs;
       if DebugMode then Writeln('Starting RotCtld ...');
    -  if fDebugMode then Writeln(cmd);
    -  rotProcess.CommandLine := cmd;
    +
    +  rotProcess.Executable := fRotCtldPath;
    +  index:=0;
    +  paramList := TStringList.Create;
    +  paramList.Delimiter := ' ';
    +  paramList.DelimitedText := RotCtldArgs;
    +  rotProcess.Parameters.Clear;
    +  while index < paramList.Count do
    +  begin
    +    rotProcess.Parameters.Add(paramList[index]);
    +    inc(index);
    +  end;
    +  paramList.Free;
    +  if DebugMode then Writeln('rotProcess.Executable: ',rotProcess.Executable,' Parameters: ',rotProcess.Parameters.Text);
     
       try
         rotProcess.Execute;
    diff --git a/voice_keyer/voice_keyer.sh b/voice_keyer/voice_keyer.sh
    index df9826e..425cd95 100755
    --- a/voice_keyer/voice_keyer.sh
    +++ b/voice_keyer/voice_keyer.sh
    @@ -1,7 +1,17 @@
     #!/bin/bash
    -if ! ps aux | grep -q '[m]pg123'
    +
    +FILE="$1.mp3"
    +if [ -e $FILE ]
     then
    -  echo -e '\033a1' | nc -q 1 -u localhost 6789 &
    -  mpg123 ~/.config/cqrlog/voice_keyer/$1.mp3
    -  echo -e '\033a0' | nc -q 1 -u localhost 6789 &
    + echo "Found "$FILE
    + if  ! ps aux | grep -q '[m]pg123'
    +  then
    +   echo "Found mpg123"
    +   echo "PTT on"
    +   echo -e '\033a1' | nc -q 1 -u localhost 6789 &
    +   echo "Play"
    +   mpg123 $FILE
    +   echo "PTT off"
    +   echo -e '\033a0' | nc -q 1 -u localhost 6789 &
    +  fi
     fi