[hamradio-commits] [qsstv] 01/04: New upstream version 9.1.8+repack

Dave Hibberd hibby-guest at moszumanska.debian.org
Tue Sep 6 19:25:27 UTC 2016


This is an automated email from the git hooks/post-receive script.

hibby-guest pushed a commit to branch master
in repository qsstv.

commit b2ba6a8afead98d397119a992f30d4bc22bd4eab
Author: Hibby <d at vehibberd.com>
Date:   Tue Sep 6 20:10:18 2016 +0100

    New upstream version 9.1.8+repack
---
 qsstv/appglobal.cpp                                |    3 +-
 qsstv/appglobal.h                                  |    3 +-
 qsstv/config/configdialog.cpp                      |   10 +
 qsstv/config/cwconfig.cpp                          |   10 +-
 qsstv/config/cwconfig.h                            |    2 +-
 qsstv/config/cwconfig.ui                           |   27 -
 qsstv/config/directoriesconfig.cpp                 |    4 +-
 qsstv/config/rigconfig.cpp                         |   10 +-
 qsstv/config/rigconfig.ui                          |   70 +-
 qsstv/config/soundconfig.cpp                       |   15 +-
 qsstv/config/soundconfig.h                         |    3 +-
 qsstv/config/soundconfig.ui                        |   21 +-
 qsstv/config/waterfallconfig.cpp                   |   20 +
 qsstv/config/waterfallconfig.h                     |    2 +
 qsstv/config/waterfallconfig.ui                    |   16 +-
 qsstv/documentation/manual/images/config4.png      |  Bin 76666 -> 87050 bytes
 qsstv/documentation/manual/images/config5.png      |  Bin 80058 -> 83564 bytes
 qsstv/documentation/manual/images/statusbar.png    |  Bin 6902 -> 5573 bytes
 qsstv/documentation/manual/manual.txt              |   36 +-
 .../manual/manual/{_copying.html => Copying.html}  |   12 +-
 .../manual/manual/{_r_x_d_r_m.html => RXDRM.html}  |   14 +-
 .../manual/{_r_x_s_s_t_v.html => RXSSTV.html}      |   12 +-
 .../manual/manual/{_t_x_d_r_m.html => TXDRM.html}  |   18 +-
 .../manual/{_t_x_s_s_t_v.html => TXSSTV.html}      |   12 +-
 qsstv/documentation/manual/manual/_copying.html    |    2 +-
 qsstv/documentation/manual/manual/_r_x_d_r_m.html  |    2 +-
 .../documentation/manual/manual/_r_x_s_s_t_v.html  |    2 +-
 qsstv/documentation/manual/manual/_t_x_d_r_m.html  |    2 +-
 .../documentation/manual/manual/_t_x_s_s_t_v.html  |    2 +-
 qsstv/documentation/manual/manual/changelog.html   |   38 +-
 qsstv/documentation/manual/manual/config4.png      |  Bin 76666 -> 87050 bytes
 qsstv/documentation/manual/manual/config5.png      |  Bin 80058 -> 83564 bytes
 qsstv/documentation/manual/manual/credits.html     |   10 +-
 qsstv/documentation/manual/manual/editor.html      |   10 +-
 .../documentation/manual/manual/externalprog.html  |   10 +-
 qsstv/documentation/manual/manual/fixdrm.html      |   10 +-
 qsstv/documentation/manual/manual/gallery.html     |   10 +-
 .../manual/manual/gettingstarted.html              |   31 +-
 qsstv/documentation/manual/manual/imagepopup.html  |   10 +-
 qsstv/documentation/manual/manual/index.html       |   20 +-
 qsstv/documentation/manual/manual/index.js         |   10 +-
 .../documentation/manual/manual/installation.html  |   10 +-
 qsstv/documentation/manual/manual/navtreedata.js   |    2 +-
 qsstv/documentation/manual/manual/navtreeindex0.js |   10 +-
 qsstv/documentation/manual/manual/pages.html       |   10 +-
 qsstv/documentation/manual/manual/resize.js        |    2 +-
 qsstv/documentation/manual/manual/statusbar.html   |   13 +-
 qsstv/documentation/manual/manual/statusbar.png    |  Bin 6902 -> 5573 bytes
 qsstv/documentation/manual/manual/todo1.html       |   10 +-
 qsstv/documentation/manual/manual/whatsnew.html    |   10 +-
 qsstv/drmtx/common/DRMSignalIO.cpp                 |    6 +-
 qsstv/drmtx/drmtx.cpp                              |   13 +-
 qsstv/dsp/downsamplefilter.cpp                     |    2 +-
 qsstv/dsp/synthes.cpp                              |   15 +-
 qsstv/mainwidgets/gallerywidget.cpp                |   13 +
 qsstv/mainwidgets/gallerywidget.h                  |    1 +
 qsstv/mainwidgets/txfunctions.cpp                  |   26 +-
 qsstv/mainwidgets/txfunctions.h                    |    5 +-
 qsstv/mainwidgets/txwidget.cpp                     |   35 +-
 qsstv/mainwidgets/txwidget.h                       |    5 +-
 qsstv/mainwidgets/txwidget.ui                      |  230 +--
 qsstv/mainwindow.cpp                               |   96 +-
 qsstv/mainwindow.h                                 |    7 +-
 qsstv/mainwindow.ui                                |   27 +
 qsstv/qsstv.pro                                    |   11 +-
 qsstv/rig/rigcontrol.cpp                           |    3 +-
 qsstv/rig/rigcontrolform.cpp                       |  277 ---
 qsstv/rig/rigcontrolform.h                         |   47 -
 qsstv/rig/rigcontrolform.ui                        | 2140 --------------------
 qsstv/sound/calibration.cpp                        |    1 -
 qsstv/sound/soundalsa.cpp                          |   23 +
 qsstv/sound/soundalsa.h                            |    1 +
 qsstv/sound/soundbase.cpp                          |   12 +-
 qsstv/sound/soundbase.h                            |    5 +-
 qsstv/sound/soundpulse.cpp                         |    4 +
 qsstv/sound/soundpulse.h                           |    1 +
 qsstv/sound/waterfalltext.cpp                      |    6 +-
 qsstv/sstv/modes/modebw.cpp                        |    8 +-
 qsstv/sstv/sstvparam.cpp                           |    2 +-
 qsstv/sstv/sstvrx.cpp                              |    5 +
 qsstv/sstv/sstvtx.cpp                              |  335 +--
 qsstv/sstv/sstvtx.h                                |    2 +
 qsstv/sstv/syncprocessor.cpp                       |   11 +
 qsstv/sstv/syncprocessor.h                         |    1 +
 qsstv/utils/filewatcher.cpp                        |   19 +
 qsstv/utils/filewatcher.h                          |   18 +
 qsstv/widgets/extviewer.cpp                        |    2 +-
 qsstv/widgets/imageviewer.cpp                      |   17 +-
 qsstv/widgets/imageviewer.h                        |    5 +
 qsstv/widgets/testpatternselection.cpp             |   22 +
 qsstv/widgets/testpatternselection.h               |   25 +
 qsstv/widgets/testpatternselection.ui              |  149 ++
 92 files changed, 1213 insertions(+), 2976 deletions(-)

diff --git a/qsstv/appglobal.cpp b/qsstv/appglobal.cpp
index a2c3595..7d09e3c 100644
--- a/qsstv/appglobal.cpp
+++ b/qsstv/appglobal.cpp
@@ -7,7 +7,7 @@
 
 const QString MAJORVERSION  = "9.1";
 const QString CONFIGVERSION = "9.0";
-const QString MINORVERSION  = ".5";
+const QString MINORVERSION  = ".8";
 const QString LOGVERSION = ("qsstv."+MAJORVERSION+MINORVERSION+".log");
 const QString ORGANIZATION = "ON4QZ";
 const QString APPLICATION  = ("qsstv_" +CONFIGVERSION);
@@ -34,6 +34,7 @@ waterfallText *waterfallPtr;
 rigControl *rigControllerPtr;
 xmlInterface *xmlIntfPtr;
 logBook *logBookPtr;
+fileWatcher *fileWatcherPtr;
 
 bool useHybrid;
 
diff --git a/qsstv/appglobal.h b/qsstv/appglobal.h
index 7509270..7ec871e 100644
--- a/qsstv/appglobal.h
+++ b/qsstv/appglobal.h
@@ -14,6 +14,7 @@ class rigControl;
 class xmlInterface;
 class logBook;
 class dispatcher;
+class fileWatcher;
 
 enum etransmissionMode {TRXSSTV,TRXDRM,TRXNOMODE};
 
@@ -37,7 +38,7 @@ extern QSplashScreen *splashPtr;
 extern QString splashStr;
 extern dispatcher *dispatcherPtr;
 extern QStatusBar *statusBarPtr;
-
+extern fileWatcher *fileWatcherPtr;
 
 extern rxWidget *rxWidgetPtr;
 extern txWidget *txWidgetPtr;
diff --git a/qsstv/config/configdialog.cpp b/qsstv/config/configdialog.cpp
index fec1bf6..cf5381e 100644
--- a/qsstv/config/configdialog.cpp
+++ b/qsstv/config/configdialog.cpp
@@ -2,6 +2,8 @@
 #include "ui_configdialog.h"
 #include "gallerywidget.h"
 #include "mainwindow.h"
+#include "txwidget.h"
+#include "filewatcher.h"
 
 
 configDialog::configDialog(QWidget *parent) :
@@ -73,6 +75,14 @@ int configDialog::exec()
       {
         galleryWidgetPtr->changedMatrix();
       }
+    if(ui->drmProfilesWidget->hasChanged())
+      {
+        txWidgetPtr->reloadProfiles();
+      }
+    if(ui->directoryWidget->hasChanged())
+      {
+        fileWatcherPtr->init();
+      }
     mainWindowPtr->setSSTVDRMPushButton(transmissionModeIndex==TRXDRM);
 
     return QDialog::Accepted;
diff --git a/qsstv/config/cwconfig.cpp b/qsstv/config/cwconfig.cpp
index d6667f9..ca79f88 100644
--- a/qsstv/config/cwconfig.cpp
+++ b/qsstv/config/cwconfig.cpp
@@ -4,7 +4,7 @@
 QString cwText;
 int cwTone;
 int cwWPM;
-bool enableCW;
+//bool enableCW;
 
 cwConfig::cwConfig(QWidget *parent) :  baseConfig(parent), ui(new Ui::cwConfig)
 {
@@ -23,7 +23,7 @@ void cwConfig::readSettings()
   cwText=qSettings.value("cwtext","").toString();
   cwTone=qSettings.value("cwtone",800).toInt();
   cwWPM=qSettings.value("cwWPM",12).toInt();
-  enableCW=qSettings.value("enableCW",false).toBool();
+//  enableCW=qSettings.value("enableCW",false).toBool();
   qSettings.endGroup();
   setParams();
 }
@@ -37,7 +37,7 @@ void cwConfig::writeSettings()
   qSettings.setValue("cwtext",cwText);
   qSettings.setValue("cwtone",cwTone);
   qSettings.setValue("cwWPM",cwWPM);
-  qSettings.setValue("enableCW",enableCW);
+//  qSettings.setValue("enableCW",enableCW);
   qSettings.endGroup();
 }
 
@@ -49,7 +49,7 @@ void cwConfig::getParams()
   getValue(cwText,ui->cwTextLineEdit);
   getValue(cwTone,ui->cwToneSpinBox);
   getValue(cwWPM,ui->cwWPMSpinBox);
-  getValue(enableCW,ui->enableCWCheckBox);
+//  getValue(enableCW,ui->enableCWCheckBox);
   changed=false;
   if(cwTextCopy!=cwText
      || cwToneCopy!=cwTone
@@ -62,6 +62,6 @@ void cwConfig::setParams()
   setValue(cwText,ui->cwTextLineEdit);
   setValue(cwTone,ui->cwToneSpinBox);
   setValue(cwWPM,ui->cwWPMSpinBox);
-  setValue(enableCW,ui->enableCWCheckBox);
+//  setValue(enableCW,ui->enableCWCheckBox);
 
 }
diff --git a/qsstv/config/cwconfig.h b/qsstv/config/cwconfig.h
index 44dd9e1..9ca1bde 100644
--- a/qsstv/config/cwconfig.h
+++ b/qsstv/config/cwconfig.h
@@ -6,7 +6,7 @@
 extern QString cwText;
 extern int cwTone;
 extern int cwWPM;
-extern bool enableCW;
+//extern bool enableCW;
 
 
 namespace Ui {
diff --git a/qsstv/config/cwconfig.ui b/qsstv/config/cwconfig.ui
index a78977f..eca045a 100644
--- a/qsstv/config/cwconfig.ui
+++ b/qsstv/config/cwconfig.ui
@@ -15,33 +15,6 @@
   </property>
   <layout class="QVBoxLayout" name="verticalLayout">
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QCheckBox" name="enableCWCheckBox">
-       <property name="layoutDirection">
-        <enum>Qt::RightToLeft</enum>
-       </property>
-       <property name="text">
-        <string>Enable CW</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-    </layout>
-   </item>
-   <item>
     <layout class="QHBoxLayout" name="_3">
      <property name="spacing">
       <number>6</number>
diff --git a/qsstv/config/directoriesconfig.cpp b/qsstv/config/directoriesconfig.cpp
index c0b4834..a8d0d3b 100644
--- a/qsstv/config/directoriesconfig.cpp
+++ b/qsstv/config/directoriesconfig.cpp
@@ -125,9 +125,9 @@ void directoriesConfig::createDir(QString path)
 {
   QDir dd(path);
   if(!dd.exists())
-  {
+    {
       dd.mkpath(path);
-  }
+    }
 }
 
 
diff --git a/qsstv/config/rigconfig.cpp b/qsstv/config/rigconfig.cpp
index f39ab98..867cc35 100644
--- a/qsstv/config/rigconfig.cpp
+++ b/qsstv/config/rigconfig.cpp
@@ -108,7 +108,8 @@ void rigConfig::getParams()
   getValue(cp->activeDTR,ui->DTRCheckBox);
   getValue(cp->nactiveRTS,ui->nRTSCheckBox);
   getValue(cp->nactiveDTR,ui->nDTRCheckBox);
-  if(ui->catRadioButton->isChecked()) cp->pttType=RIG_PTT_RIG;
+  if(ui->catVoiceRadioButton->isChecked()) cp->pttType=RIG_PTT_RIG;
+  if(ui->catDataRadioButton->isChecked()) cp->pttType=RIG_PTT_RIG_MICDATA;
   if(ui->rtsRadioButton->isChecked()) cp->pttType=RIG_PTT_SERIAL_RTS;
   if(ui->dtrRadioButton->isChecked()) cp->pttType=RIG_PTT_SERIAL_DTR;
   getValue(cp->txOnDelay,ui->txOnDelayDoubleSpinBox);
@@ -161,7 +162,10 @@ void rigConfig::setParams()
   switch(cp->pttType)
     {
     case RIG_PTT_RIG:
-      setValue(true,ui->catRadioButton);
+      setValue(true,ui->catVoiceRadioButton);
+    break;
+    case RIG_PTT_RIG_MICDATA:
+      setValue(true,ui->catDataRadioButton);
     break;
     case RIG_PTT_SERIAL_RTS:
       setValue(true,ui->rtsRadioButton);
@@ -170,7 +174,7 @@ void rigConfig::setParams()
       setValue(true,ui->dtrRadioButton);
     break;
     default:
-      setValue(true,ui->catRadioButton);
+      setValue(true,ui->catVoiceRadioButton);
     break;
     }
   if(cp->enableCAT && cp->enableSerialPTT)
diff --git a/qsstv/config/rigconfig.ui b/qsstv/config/rigconfig.ui
index 00e7d5c..6de4aca 100644
--- a/qsstv/config/rigconfig.ui
+++ b/qsstv/config/rigconfig.ui
@@ -22,7 +22,16 @@
    <property name="spacing">
     <number>2</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>1</number>
+   </property>
+   <property name="topMargin">
+    <number>1</number>
+   </property>
+   <property name="rightMargin">
+    <number>1</number>
+   </property>
+   <property name="bottomMargin">
     <number>1</number>
    </property>
    <item>
@@ -452,7 +461,16 @@
       <property name="spacing">
        <number>2</number>
       </property>
-      <property name="margin">
+      <property name="leftMargin">
+       <number>1</number>
+      </property>
+      <property name="topMargin">
+       <number>1</number>
+      </property>
+      <property name="rightMargin">
+       <number>1</number>
+      </property>
+      <property name="bottomMargin">
        <number>1</number>
       </property>
       <item>
@@ -999,7 +1017,16 @@
       <property name="spacing">
        <number>2</number>
       </property>
-      <property name="margin">
+      <property name="leftMargin">
+       <number>1</number>
+      </property>
+      <property name="topMargin">
+       <number>1</number>
+      </property>
+      <property name="rightMargin">
+       <number>1</number>
+      </property>
+      <property name="bottomMargin">
        <number>1</number>
       </property>
       <item>
@@ -1476,9 +1503,15 @@
            </widget>
           </item>
           <item>
-           <widget class="QRadioButton" name="catRadioButton">
+           <widget class="QRadioButton" name="catVoiceRadioButton">
+            <property name="enabled">
+             <bool>true</bool>
+            </property>
+            <property name="toolTip">
+             <string extracomment="PTT with voice port as input"/>
+            </property>
             <property name="text">
-             <string>CAT Command</string>
+             <string>CAT (Voice port)</string>
             </property>
             <property name="checked">
              <bool>true</bool>
@@ -1486,6 +1519,22 @@
            </widget>
           </item>
           <item>
+           <widget class="QRadioButton" name="catDataRadioButton">
+            <property name="enabled">
+             <bool>true</bool>
+            </property>
+            <property name="toolTip">
+             <string/>
+            </property>
+            <property name="whatsThis">
+             <string/>
+            </property>
+            <property name="text">
+             <string>CAT (Data port)</string>
+            </property>
+           </widget>
+          </item>
+          <item>
            <widget class="QRadioButton" name="rtsRadioButton">
             <property name="text">
              <string>RTS</string>
@@ -1983,7 +2032,16 @@
       <property name="spacing">
        <number>2</number>
       </property>
-      <property name="margin">
+      <property name="leftMargin">
+       <number>1</number>
+      </property>
+      <property name="topMargin">
+       <number>1</number>
+      </property>
+      <property name="rightMargin">
+       <number>1</number>
+      </property>
+      <property name="bottomMargin">
        <number>1</number>
       </property>
       <item>
diff --git a/qsstv/config/soundconfig.cpp b/qsstv/config/soundconfig.cpp
index a893877..65f4de3 100644
--- a/qsstv/config/soundconfig.cpp
+++ b/qsstv/config/soundconfig.cpp
@@ -33,7 +33,8 @@ double rxClock;
 double txClock;
 bool pulseSelected;
 bool alsaSelected;
-bool pttToneRightChannel;
+bool swapChannel;
+bool pttToneOtherChannel;
 QString inputAudioDevice;
 QString outputAudioDevice;
 soundBase::edataSrc soundRoutingInput;
@@ -71,7 +72,8 @@ void soundConfig::readSettings()
   outputAudioDevice=qSettings.value("outputAudioDevice","default").toString();
   alsaSelected=qSettings.value("alsaSelected",false).toBool();
   pulseSelected=qSettings.value("pulseSelected",false).toBool();
-  pttToneRightChannel=qSettings.value("pttToneRightChannel",false).toBool();
+  swapChannel=qSettings.value("swapChannel",false).toBool();
+  pttToneOtherChannel=qSettings.value("pttToneOtherChannel",false).toBool();
   soundRoutingInput=  (soundBase::edataSrc)qSettings.value("soundRoutingInput",  0 ).toInt();
   soundRoutingOutput= (soundBase::edataDst)qSettings.value("soundRoutingOutput", 0 ).toInt();
   recordingSize= qSettings.value("recordingSize", 100 ).toInt();
@@ -90,7 +92,8 @@ void soundConfig::writeSettings()
   qSettings.setValue("outputAudioDevice",outputAudioDevice);
   qSettings.setValue("alsaSelected",alsaSelected);
   qSettings.setValue("pulseSelected",pulseSelected);
-  qSettings.setValue("pttToneRightChannel",pttToneRightChannel);
+  qSettings.setValue("swapChannel",swapChannel);
+  qSettings.setValue("pttToneOtherChannel",pttToneOtherChannel);
   qSettings.setValue ("soundRoutingInput", soundRoutingInput );
   qSettings.setValue ("soundRoutingOutput",soundRoutingOutput );
   qSettings.setValue ("recordingSize",recordingSize );
@@ -106,7 +109,8 @@ void soundConfig::setParams()
   setValue(outputAudioDevice,ui->outputPCMNameComboBox);
   setValue(alsaSelected,ui->alsaRadioButton);
   setValue(pulseSelected,ui->pulseRadioButton);
-  setValue(pttToneRightChannel,ui->pttToneCheckBox);
+  setValue(swapChannel,ui->swapChannelCheckBox);
+  setValue(pttToneOtherChannel,ui->pttToneCheckBox);
   if(soundRoutingInput==soundBase::SNDINCARD) ui->inFromCard->setChecked(true);
   else if (soundRoutingInput==soundBase::SNDINFROMFILE) ui->inFromFile->setChecked(true);
   else ui->inRecordFromCard->setChecked(true);
@@ -132,7 +136,8 @@ void soundConfig::getParams()
   getValue(outputAudioDevice,ui->outputPCMNameComboBox);
   getValue(alsaSelected,ui->alsaRadioButton);
   getValue(pulseSelected,ui->pulseRadioButton);
-  getValue(pttToneRightChannel,ui->pttToneCheckBox);
+  getValue(swapChannel,ui->swapChannelCheckBox);
+  getValue(pttToneOtherChannel,ui->pttToneCheckBox);
 
   if (ui->inFromCard->isChecked()) soundRoutingInput=soundBase::SNDINCARD;
   else if(ui->inFromFile->isChecked()) soundRoutingInput=soundBase::SNDINFROMFILE;
diff --git a/qsstv/config/soundconfig.h b/qsstv/config/soundconfig.h
index 64366e9..7112898 100644
--- a/qsstv/config/soundconfig.h
+++ b/qsstv/config/soundconfig.h
@@ -9,7 +9,8 @@ extern double rxClock;
 extern double txClock;
 extern bool pulseSelected;
 extern bool alsaSelected;
-extern bool pttToneRightChannel;
+extern bool swapChannel;
+extern bool pttToneOtherChannel;
 extern QString inputAudioDevice;
 extern QString outputAudioDevice;
 extern soundBase::edataSrc soundRoutingInput;
diff --git a/qsstv/config/soundconfig.ui b/qsstv/config/soundconfig.ui
index 078923e..1e6c84d 100644
--- a/qsstv/config/soundconfig.ui
+++ b/qsstv/config/soundconfig.ui
@@ -250,11 +250,22 @@
     </layout>
    </item>
    <item>
-    <widget class="QCheckBox" name="pttToneCheckBox">
-     <property name="text">
-      <string>PTT tone on right audio channel</string>
-     </property>
-    </widget>
+    <layout class="QHBoxLayout" name="horizontalLayout_5">
+     <item>
+      <widget class="QCheckBox" name="swapChannelCheckBox">
+       <property name="text">
+        <string>Swap left and right channel</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="pttToneCheckBox">
+       <property name="text">
+        <string>PTT tone on other audio channel</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
    </item>
    <item>
     <layout class="QHBoxLayout" name="_5">
diff --git a/qsstv/config/waterfallconfig.cpp b/qsstv/config/waterfallconfig.cpp
index 2b4aba3..ce91a59 100644
--- a/qsstv/config/waterfallconfig.cpp
+++ b/qsstv/config/waterfallconfig.cpp
@@ -9,12 +9,15 @@ QString fixWF;
 QString bsrWF;
 QString wfFont;
 int wfFontSize;
+bool wfBold;
+QString sampleString;
 
 waterfallConfig::waterfallConfig(QWidget *parent) : baseConfig(parent),  ui(new Ui::waterfallConfig)
 {
   ui->setupUi(this);
   connect(ui->fontComboBox,SIGNAL(currentIndexChanged(QString)),SLOT(slotFontChanged()));
   connect(ui->sizeSpinBox,SIGNAL(valueChanged(int)),SLOT(slotFontChanged()));
+  connect(ui->boldCheckBox,SIGNAL(clicked(bool)),SLOT(slotFontChanged()));
 }
 
 waterfallConfig::~waterfallConfig()
@@ -33,6 +36,8 @@ void waterfallConfig::readSettings()
   bsrWF=qSettings.value("bsrWF","BSR").toString();
   wfFont=qSettings.value("wfFont","Arial").toString();
   wfFontSize=qSettings.value("wfFontSize",12).toInt();
+  wfBold=qSettings.value("wfBold",false).toBool();
+  sampleString=qSettings.value("sampleString","Sample Text").toString();
   qSettings.endGroup();
   setParams();
 }
@@ -48,6 +53,9 @@ void waterfallConfig::writeSettings()
   qSettings.setValue("bsrWF",bsrWF);
   qSettings.setValue("wfFont",wfFont);
   qSettings.setValue("wfFontSize",wfFontSize);
+  qSettings.setValue("wfBold",wfBold);
+  qSettings.setValue("sampleString",sampleString);
+
   qSettings.endGroup();
 }
 
@@ -59,6 +67,8 @@ void waterfallConfig::getParams()
   getValue(bsrWF,ui->bsrTextEdit);
   getValue(wfFont,ui->fontComboBox);
   getValue(wfFontSize,ui->sizeSpinBox);
+  getValue(wfBold,ui->boldCheckBox);
+  getValue(sampleString,ui->sampleLineEdit);
 }
 
 void waterfallConfig::setParams()
@@ -67,14 +77,24 @@ void waterfallConfig::setParams()
   setValue(endPicWF,ui->endPicTextEdit);
   setValue(fixWF,ui->fixTextEdit);
   setValue(bsrWF,ui->bsrTextEdit);
+  ui->fontComboBox->blockSignals(true);
+  ui->sizeSpinBox->blockSignals(true);
+  setValue(sampleString,ui->sampleLineEdit);
   setValue(wfFont,ui->fontComboBox);
   setValue(wfFontSize,ui->sizeSpinBox);
+  ui->fontComboBox->blockSignals(false);
+  ui->sizeSpinBox->blockSignals(false);
+  setValue(wfBold,ui->boldCheckBox);
+  slotFontChanged();
+
+
 }
 
 void waterfallConfig::slotFontChanged()
 {
   getParams();
   QFont f(wfFont);
+  f.setBold(wfBold);
   f.setPixelSize(wfFontSize);
   ui->sampleLineEdit->setFont(f);
 }
diff --git a/qsstv/config/waterfallconfig.h b/qsstv/config/waterfallconfig.h
index f10c94e..a6ec976 100644
--- a/qsstv/config/waterfallconfig.h
+++ b/qsstv/config/waterfallconfig.h
@@ -9,6 +9,8 @@ extern QString fixWF;
 extern QString bsrWF;
 extern QString wfFont;
 extern int wfFontSize;
+extern bool wfBold;
+
 
 
 namespace Ui {
diff --git a/qsstv/config/waterfallconfig.ui b/qsstv/config/waterfallconfig.ui
index 5ed8a19..44ce1d7 100644
--- a/qsstv/config/waterfallconfig.ui
+++ b/qsstv/config/waterfallconfig.ui
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>609</width>
-    <height>551</height>
+    <width>865</width>
+    <height>648</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -153,7 +153,7 @@
     </layout>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0,1">
+    <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
       <widget class="QLabel" name="fontLabel">
        <property name="text">
@@ -182,6 +182,16 @@
       </widget>
      </item>
      <item>
+      <widget class="QCheckBox" name="boldCheckBox">
+       <property name="layoutDirection">
+        <enum>Qt::RightToLeft</enum>
+       </property>
+       <property name="text">
+        <string>Bold</string>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QLabel" name="sampleLabel">
        <property name="text">
         <string>Sample</string>
diff --git a/qsstv/documentation/manual/images/config4.png b/qsstv/documentation/manual/images/config4.png
index d93d128..887ae2b 100644
Binary files a/qsstv/documentation/manual/images/config4.png and b/qsstv/documentation/manual/images/config4.png differ
diff --git a/qsstv/documentation/manual/images/config5.png b/qsstv/documentation/manual/images/config5.png
index 383973e..709b761 100644
Binary files a/qsstv/documentation/manual/images/config5.png and b/qsstv/documentation/manual/images/config5.png differ
diff --git a/qsstv/documentation/manual/images/statusbar.png b/qsstv/documentation/manual/images/statusbar.png
index 3018aab..99a2ee6 100644
Binary files a/qsstv/documentation/manual/images/statusbar.png and b/qsstv/documentation/manual/images/statusbar.png differ
diff --git a/qsstv/documentation/manual/manual.txt b/qsstv/documentation/manual/manual.txt
index c858b2f..22676b3 100644
--- a/qsstv/documentation/manual/manual.txt
+++ b/qsstv/documentation/manual/manual.txt
@@ -76,6 +76,28 @@ QSSTV 9.1.x has the following new features compared to QSSTV 8.2.x
 
 \page changelog Change log
 
+\li 20160703 QSSTV 9.1.8
+ - The program uses jp2 files for sending images in DRM mode. The file extensions where not correct. ->fixed
+ - changes of the configuration do not need a restart of the program anymore (adding templates, stock images, DRM Profiles)
+ - images in the gallery are now resized.
+ - added menu option To Tx in Gallery Images RX and TX.
+ - image in viewer is zoomed when resized while keeping aspect ratio.
+ - Screen size reduced to 791x684 for use with smaller screens.
+ - Added voice/data port selection for PTT (thanks to David VK3DCU)
+
+
+\li 20160701 QSSTV 9.1.7
+ - Normally the audio is generated on the left channel. There is now an option in the soundconfig
+ to swap left and right channel. Some radios like the TS590 are using the right audio channel via USB (test done by PE1DFQ - Gerard).
+ - On request from Michael DL3YAP: Added CW ID button to manually send the CW ID as specified in the CW config.
+ - Name of ID button in the lower status bar changed to WF ID (waterfall ID) to avoid confusion with CW ID.
+ - Fixed bug: Waterfall font size was not correctly saved.
+ - Added "Bold" option for Waterfall font.
+
+
+\li 20160628 QSSTV 9.1.6
+ - ftp transfer crashes when transmitting in hybrid mode-> solved
+
 \li 20160416 QSSTV 9.1.5
  - upload received images to ftp server (sstv and drm) gave file error -> solved
 
@@ -249,7 +271,7 @@ Push the push button to select the colour selector.
 - ALSA Input Audio Device : depending on your hardware (e.g. default,hw:0,0)
 - ALSA Output Audio Device : depending on your hardware (e.g. default,hw:0,0)
 - PulseAudio: native pulse audio interface
-Note: <b> Most distributions use Pulse Audio interface.. You can select the audio card settings through the audio applet by right clicking on the Speaker icon and selecting the Sound Preferences</b>
+<br>Note: <b> Most distributions use Pulse Audio interface.. You can select the audio card settings through the audio applet by right clicking on the Speaker icon and selecting the Sound Preferences</b>
 - RX Clock frequency : clock used while receiving SSTV images,(see also \ref calib)
 - TX Clock frequency : clock used while transmitting SSTV images,(see also \ref calib)
 - Sound Input routing
@@ -261,7 +283,11 @@ Note: <b> Most distributions use Pulse Audio interface.. You can select the audi
    - To sound card: default
    - Playback: playback a wav-file (use 48000 samples per second recording in mono or stereo)
    - Playback and record: playback the sound and record at the same time.
-<br>
+ - Swap left and right channel
+    - If selected, audio will be sent on the right audio channel instead of the left channel (e.g Kenwood tranceivers using USB sound interfaces)
+ - PTT tone on other audio channel
+    - A tone will be sent on the right channel to enable PTT. If the above "Swap left and right channel" is selected, it will be sent on the left channel.
+<br><br>
 Note: To playback an audio file, be sure the format is of type wav and has a samplerate of 48000 samples/second. You can always open the file with audacity and export the file to adapt the type and/or
  samplerate<br>
 
@@ -285,6 +311,9 @@ You cannot select both +RTS and -RTS or +DTR and -DTR at the same time.
  - PTT Serial Port: serial port (e.g. /dev/ttyS0) only used if  "Enable PTT serial Interface" is selected
  - PTT Control via: If the radio uses a CAT command to activate Transmission then select "CAT". If you have a radio that does not support such a CAT command, you can
 let Hamlib use the RTS or DTR on the serial port specified by "PTT Serial Port".
+- There are 2 CAT ports:
+    -CAT (voice port): the normal setting
+    -CAT (data port): to be used with some kenwood tranceivers(e.g. kenwood TS-480) to force data port instead of audio port (source: David  VK3DCU)
 Example: IC-706MKIIG via a cat interface such as interfaceOne.
 \anchor flrigconfig
 - Enable XMLRPC
@@ -464,7 +493,8 @@ The %%m will be substituted by your callsign and the %%s by the average SNR of t
 <br>There are two modes: EasyPal and Compatible. EasyPal mode is more advanced and is normally used as EasyPal is the de facto standard on Windows and QSSTV also uses this mode in BSR reception.
 <br>Note: BSR is greyed out in SSTV.
 <br><br>
--  ID: send callsign in waterfall - this is a short-cut to send your own callsign in the waterfall
+- WF ID: send callsign in waterfall - this is a short-cut to send your own callsign in the waterfall
+- CW ID: send callsign in CW
 <br><br>
 - PTT indicator: turns red while the PTT is activated.
 
diff --git a/qsstv/documentation/manual/manual/_copying.html b/qsstv/documentation/manual/manual/Copying.html
similarity index 90%
copy from qsstv/documentation/manual/manual/_copying.html
copy to qsstv/documentation/manual/manual/Copying.html
index 3d4d0c3..8d8ba81 100644
--- a/qsstv/documentation/manual/manual/_copying.html
+++ b/qsstv/documentation/manual/manual/Copying.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Copying</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +53,7 @@
   </div>
 </div>
 <script type="text/javascript">
-$(document).ready(function(){initNavTree('_copying.html','');});
+$(document).ready(function(){initNavTree('Copying.html','');});
 </script>
 <div id="doc-content">
 <div class="header">
@@ -68,9 +68,9 @@ $(document).ready(function(){initNavTree('_copying.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/_r_x_d_r_m.html b/qsstv/documentation/manual/manual/RXDRM.html
similarity index 93%
copy from qsstv/documentation/manual/manual/_r_x_d_r_m.html
copy to qsstv/documentation/manual/manual/RXDRM.html
index 7914ab9..095e8fd 100644
--- a/qsstv/documentation/manual/manual/_r_x_d_r_m.html
+++ b/qsstv/documentation/manual/manual/RXDRM.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Receive DRM Window</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +53,7 @@
   </div>
 </div>
 <script type="text/javascript">
-$(document).ready(function(){initNavTree('_r_x_d_r_m.html','');});
+$(document).ready(function(){initNavTree('RXDRM.html','');});
 </script>
 <div id="doc-content">
 <div class="header">
@@ -122,16 +122,16 @@ $(document).ready(function(){initNavTree('_r_x_d_r_m.html','');});
 <p> Spectrum:<br />
  You can select the spectrum or the waterfall by clicking in this window. In DRM the waterfall gives you better view. The three markers above the waterfall indicate the position of the pilot frequencies. This helps tuning the radio to the correct frequency. <br />
 <br />
- (8) see <a class="el" href="_r_x_s_s_t_v.html">Receive SSTV Window</a> </p>
+ (8) see <a class="el" href="RXSSTV.html">Receive SSTV Window</a> </p>
 </div></div><!-- contents -->
 </div><!-- doc-content -->
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/_r_x_s_s_t_v.html b/qsstv/documentation/manual/manual/RXSSTV.html
similarity index 94%
copy from qsstv/documentation/manual/manual/_r_x_s_s_t_v.html
copy to qsstv/documentation/manual/manual/RXSSTV.html
index fdc0730..7a3872b 100644
--- a/qsstv/documentation/manual/manual/_r_x_s_s_t_v.html
+++ b/qsstv/documentation/manual/manual/RXSSTV.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Receive SSTV Window</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +53,7 @@
   </div>
 </div>
 <script type="text/javascript">
-$(document).ready(function(){initNavTree('_r_x_s_s_t_v.html','');});
+$(document).ready(function(){initNavTree('RXSSTV.html','');});
 </script>
 <div id="doc-content">
 <div class="header">
@@ -112,9 +112,9 @@ $(document).ready(function(){initNavTree('_r_x_s_s_t_v.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/_t_x_d_r_m.html b/qsstv/documentation/manual/manual/TXDRM.html
similarity index 89%
copy from qsstv/documentation/manual/manual/_t_x_d_r_m.html
copy to qsstv/documentation/manual/manual/TXDRM.html
index 18897eb..fba95bf 100644
--- a/qsstv/documentation/manual/manual/_t_x_d_r_m.html
+++ b/qsstv/documentation/manual/manual/TXDRM.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Transmit DRM Window</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +53,7 @@
   </div>
 </div>
 <script type="text/javascript">
-$(document).ready(function(){initNavTree('_t_x_d_r_m.html','');});
+$(document).ready(function(){initNavTree('TXDRM.html','');});
 </script>
 <div id="doc-content">
 <div class="header">
@@ -64,7 +64,7 @@ $(document).ready(function(){initNavTree('_t_x_d_r_m.html','');});
 <div class="textblock"><div class="image">
 <img src="transmitdrm.png" alt="transmitdrm.png"/>
 </div>
-<p>see also <a class="el" href="_t_x_s_s_t_v.html#sstvMenu">sstvMenu</a> under SSTV TX</p>
+<p>see also <a class="el" href="TXSSTV.html#sstvMenu">sstvMenu</a> under SSTV TX</p>
 <ul>
 <li><div class="image">
 <img src="binary.png" alt="binary.png"/>
@@ -75,7 +75,7 @@ $(document).ready(function(){initNavTree('_t_x_d_r_m.html','');});
 </div>
  When this check-box is checked, the image is transmitted in hybrid mode.</li>
 </ul>
-<p>For the other icons and actions see also <a class="el" href="_t_x_s_s_t_v.html">Transmit SSTV Window</a> <br />
+<p>For the other icons and actions see also <a class="el" href="TXSSTV.html">Transmit SSTV Window</a> <br />
  <br />
  Mode Selection </p><div class="image">
 <img src="txdrm_options.png" alt="txdrm_options.png"/>
@@ -95,7 +95,7 @@ $(document).ready(function(){initNavTree('_t_x_d_r_m.html','');});
 <img src="txdrm_status.png" alt="txdrm_status.png"/>
 </div>
 <p>The TX progress-bar indicates the progress of the transmission.</p>
-<p>see also <a class="el" href="_t_x_s_s_t_v.html#Control">Control</a> under SSTV TX</p><ul>
+<p>see also <a class="el" href="TXSSTV.html#Control">Control</a> under SSTV TX</p><ul>
 <li>Last received image will be updated automatically as new images are received. They can be inserted if you use a template containing an "image replay object" see also <a class="el" href="editor.html">Editor</a> <br />
 </li>
 <li>Compression <br />
@@ -115,9 +115,9 @@ Avoid to send huge images (especially if you're not in hybrid mode).<br />
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/_t_x_s_s_t_v.html b/qsstv/documentation/manual/manual/TXSSTV.html
similarity index 95%
copy from qsstv/documentation/manual/manual/_t_x_s_s_t_v.html
copy to qsstv/documentation/manual/manual/TXSSTV.html
index f75fcc7..10ea526 100644
--- a/qsstv/documentation/manual/manual/_t_x_s_s_t_v.html
+++ b/qsstv/documentation/manual/manual/TXSSTV.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Transmit SSTV Window</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -53,7 +53,7 @@
   </div>
 </div>
 <script type="text/javascript">
-$(document).ready(function(){initNavTree('_t_x_s_s_t_v.html','');});
+$(document).ready(function(){initNavTree('TXSSTV.html','');});
 </script>
 <div id="doc-content">
 <div class="header">
@@ -140,9 +140,9 @@ $(document).ready(function(){initNavTree('_t_x_s_s_t_v.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/_copying.html b/qsstv/documentation/manual/manual/_copying.html
index 3d4d0c3..f87169f 100644
--- a/qsstv/documentation/manual/manual/_copying.html
+++ b/qsstv/documentation/manual/manual/_copying.html
@@ -68,7 +68,7 @@ $(document).ready(function(){initNavTree('_copying.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 8 2016 14:33:50 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
   </ul>
diff --git a/qsstv/documentation/manual/manual/_r_x_d_r_m.html b/qsstv/documentation/manual/manual/_r_x_d_r_m.html
index 7914ab9..f00ae49 100644
--- a/qsstv/documentation/manual/manual/_r_x_d_r_m.html
+++ b/qsstv/documentation/manual/manual/_r_x_d_r_m.html
@@ -129,7 +129,7 @@ $(document).ready(function(){initNavTree('_r_x_d_r_m.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 8 2016 14:33:50 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
   </ul>
diff --git a/qsstv/documentation/manual/manual/_r_x_s_s_t_v.html b/qsstv/documentation/manual/manual/_r_x_s_s_t_v.html
index fdc0730..45f918f 100644
--- a/qsstv/documentation/manual/manual/_r_x_s_s_t_v.html
+++ b/qsstv/documentation/manual/manual/_r_x_s_s_t_v.html
@@ -112,7 +112,7 @@ $(document).ready(function(){initNavTree('_r_x_s_s_t_v.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 8 2016 14:33:50 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
   </ul>
diff --git a/qsstv/documentation/manual/manual/_t_x_d_r_m.html b/qsstv/documentation/manual/manual/_t_x_d_r_m.html
index 18897eb..e7d9f1d 100644
--- a/qsstv/documentation/manual/manual/_t_x_d_r_m.html
+++ b/qsstv/documentation/manual/manual/_t_x_d_r_m.html
@@ -115,7 +115,7 @@ Avoid to send huge images (especially if you're not in hybrid mode).<br />
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 8 2016 14:33:50 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
   </ul>
diff --git a/qsstv/documentation/manual/manual/_t_x_s_s_t_v.html b/qsstv/documentation/manual/manual/_t_x_s_s_t_v.html
index f75fcc7..d3308bd 100644
--- a/qsstv/documentation/manual/manual/_t_x_s_s_t_v.html
+++ b/qsstv/documentation/manual/manual/_t_x_s_s_t_v.html
@@ -140,7 +140,7 @@ $(document).ready(function(){initNavTree('_t_x_s_s_t_v.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 8 2016 14:33:50 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
     <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
   </ul>
diff --git a/qsstv/documentation/manual/manual/changelog.html b/qsstv/documentation/manual/manual/changelog.html
index e129eb6..5f80d03 100644
--- a/qsstv/documentation/manual/manual/changelog.html
+++ b/qsstv/documentation/manual/manual/changelog.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Change log</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -62,6 +62,34 @@ $(document).ready(function(){initNavTree('changelog.html','');});
 </div><!--header-->
 <div class="contents">
 <div class="textblock"><ul>
+<li>20160703 QSSTV 9.1.8<ul>
+<li>The program uses jp2 files for sending images in DRM mode. The file extensions where not correct. ->fixed</li>
+<li>changes of the configuration do not need a restart of the program anymore (adding templates, stock images, DRM Profiles)</li>
+<li>images in the gallery are now resized.</li>
+<li>added menu option To Tx in Gallery Images RX and TX.</li>
+<li>image in viewer is zoomed when resized while keeping aspect ratio.</li>
+<li>Screen size reduced to 791x684 for use with smaller screens.</li>
+<li>Added voice/data port selection for PTT (thanks to David VK3DCU)</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>20160701 QSSTV 9.1.7<ul>
+<li>Normally the audio is generated on the left channel. There is now an option in the soundconfig to swap left and right channel. Some radios like the TS590 are using the right audio channel via USB (test done by PE1DFQ - Gerard).</li>
+<li>On request from Michael DL3YAP: Added CW ID button to manually send the CW ID as specified in the CW config.</li>
+<li>Name of ID button in the lower status bar changed to WF ID (waterfall ID) to avoid confusion with CW ID.</li>
+<li>Fixed bug: Waterfall font size was not correctly saved.</li>
+<li>Added "Bold" option for Waterfall font.</li>
+</ul>
+</li>
+</ul>
+<ul>
+<li>20160628 QSSTV 9.1.6<ul>
+<li>ftp transfer crashes when transmitting in hybrid mode-> solved</li>
+</ul>
+</li>
+</ul>
+<ul>
 <li>20160416 QSSTV 9.1.5<ul>
 <li>upload received images to ftp server (sstv and drm) gave file error -> solved</li>
 </ul>
@@ -152,9 +180,9 @@ $(document).ready(function(){initNavTree('changelog.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/config4.png b/qsstv/documentation/manual/manual/config4.png
index d93d128..887ae2b 100644
Binary files a/qsstv/documentation/manual/manual/config4.png and b/qsstv/documentation/manual/manual/config4.png differ
diff --git a/qsstv/documentation/manual/manual/config5.png b/qsstv/documentation/manual/manual/config5.png
index 383973e..709b761 100644
Binary files a/qsstv/documentation/manual/manual/config5.png and b/qsstv/documentation/manual/manual/config5.png differ
diff --git a/qsstv/documentation/manual/manual/credits.html b/qsstv/documentation/manual/manual/credits.html
index b9c1238..c3c17e9 100644
--- a/qsstv/documentation/manual/manual/credits.html
+++ b/qsstv/documentation/manual/manual/credits.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Credits</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -89,9 +89,9 @@ reference: <a href="http://vk4aes.com/">http://vk4aes.com/</a> </p>
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/editor.html b/qsstv/documentation/manual/manual/editor.html
index d650561..1122384 100644
--- a/qsstv/documentation/manual/manual/editor.html
+++ b/qsstv/documentation/manual/manual/editor.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Editor</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -194,9 +194,9 @@ You can enter multiple lines of text. Click OK, the window will be hidden and yo
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/externalprog.html b/qsstv/documentation/manual/manual/externalprog.html
index 24b6862..42c7f73 100644
--- a/qsstv/documentation/manual/manual/externalprog.html
+++ b/qsstv/documentation/manual/manual/externalprog.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: External Programs</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -104,9 +104,9 @@ $(document).ready(function(){initNavTree('externalprog.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/fixdrm.html b/qsstv/documentation/manual/manual/fixdrm.html
index a37d398..8e6f1bd 100644
--- a/qsstv/documentation/manual/manual/fixdrm.html
+++ b/qsstv/documentation/manual/manual/fixdrm.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Sending FIX in DRM</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -74,9 +74,9 @@ $(document).ready(function(){initNavTree('fixdrm.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/gallery.html b/qsstv/documentation/manual/manual/gallery.html
index cc4febb..36774d6 100644
--- a/qsstv/documentation/manual/manual/gallery.html
+++ b/qsstv/documentation/manual/manual/gallery.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Gallery</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -80,9 +80,9 @@ $(document).ready(function(){initNavTree('gallery.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/gettingstarted.html b/qsstv/documentation/manual/manual/gettingstarted.html
index ccd33a9..7ecb832 100644
--- a/qsstv/documentation/manual/manual/gettingstarted.html
+++ b/qsstv/documentation/manual/manual/gettingstarted.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Getting Started</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -144,7 +144,8 @@ This information can also be used in templates (see also <a class="el" href="edi
 <ul>
 <li>ALSA Input Audio Device : depending on your hardware (e.g. default,hw:0,0)</li>
 <li>ALSA Output Audio Device : depending on your hardware (e.g. default,hw:0,0)</li>
-<li>PulseAudio: native pulse audio interface Note: <b> Most distributions use Pulse Audio interface.. You can select the audio card settings through the audio applet by right clicking on the Speaker icon and selecting the Sound Preferences</b></li>
+<li>PulseAudio: native pulse audio interface <br />
+Note: <b> Most distributions use Pulse Audio interface.. You can select the audio card settings through the audio applet by right clicking on the Speaker icon and selecting the Sound Preferences</b></li>
 <li>RX Clock frequency : clock used while receiving SSTV images,(see also <a class="el" href="gettingstarted.html#calib">Calibration</a>)</li>
 <li>TX Clock frequency : clock used while transmitting SSTV images,(see also <a class="el" href="gettingstarted.html#calib">Calibration</a>)</li>
 <li>Sound Input routing<ul>
@@ -157,12 +158,23 @@ This information can also be used in templates (see also <a class="el" href="edi
 <li>Sound Output routing<ul>
 <li>To sound card: default</li>
 <li>Playback: playback a wav-file (use 48000 samples per second recording in mono or stereo)</li>
-<li>Playback and record: playback the sound and record at the same time. <br />
- Note: To playback an audio file, be sure the format is of type wav and has a samplerate of 48000 samples/second. You can always open the file with audacity and export the file to adapt the type and/or samplerate<br />
+<li>Playback and record: playback the sound and record at the same time.</li>
+</ul>
 </li>
 </ul>
 </li>
 </ul>
+<ul>
+<li>Swap left and right channel<ul>
+<li>If selected, audio will be sent on the right audio channel instead of the left channel (e.g Kenwood tranceivers using USB sound interfaces)</li>
+</ul>
+</li>
+<li>PTT tone on other audio channel<ul>
+<li>A tone will be sent on the right channel to enable PTT. If the above "Swap left and right channel" is selected, it will be sent on the left channel. <br />
+<br />
+ Note: To playback an audio file, be sure the format is of type wav and has a samplerate of 48000 samples/second. You can always open the file with audacity and export the file to adapt the type and/or samplerate<br />
+</li>
+</ul>
 </li>
 </ul>
 <ul>
@@ -184,9 +196,10 @@ This information can also be used in templates (see also <a class="el" href="edi
 <li>Serial Port/host: either the serial port (e.g. /dev/ttyUSB0) or the host address (e.g. localhost:4532)</li>
 <li>Handshake, Parity, Data bits, Stop bits, Baud rate: serial port settings</li>
 <li>PTT Serial Port: serial port (e.g. /dev/ttyS0) only used if "Enable PTT serial Interface" is selected</li>
-<li>PTT Control via: If the radio uses a CAT command to activate Transmission then select "CAT". If you have a radio that does not support such a CAT command, you can let Hamlib use the RTS or DTR on the serial port specified by "PTT Serial Port". Example: IC-706MKIIG via a cat interface such as interfaceOne. <a class="anchor" id="flrigconfig"></a></li>
+<li>PTT Control via: If the radio uses a CAT command to activate Transmission then select "CAT". If you have a radio that does not support such a CAT command, you can let Hamlib use the RTS or DTR on the serial port specified by "PTT Serial Port".</li>
 </ul>
 </li>
+<li>There are 2 CAT ports: -CAT (voice port): the normal setting -CAT (data port): to be used with some kenwood tranceivers(e.g. kenwood TS-480) to force data port instead of audio port (source: David VK3DCU) Example: IC-706MKIIG via a cat interface such as interfaceOne. <a class="anchor" id="flrigconfig"></a></li>
 <li>Enable XMLRPC This allows you to connect to the Flrig program using the XMLRPC protocol. Flrig will handle all the communication with the transceiver (including PTT).</li>
 <li>TX Delay: The program will wait for the selected delay before transmitting any audio.</li>
 </ul>
@@ -357,9 +370,9 @@ remote           local      st poll reach  delay   offset    disp
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/imagepopup.html b/qsstv/documentation/manual/manual/imagepopup.html
index f8b3899..166de00 100644
--- a/qsstv/documentation/manual/manual/imagepopup.html
+++ b/qsstv/documentation/manual/manual/imagepopup.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Image Viewer</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -84,9 +84,9 @@ $(document).ready(function(){initNavTree('imagepopup.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/index.html b/qsstv/documentation/manual/manual/index.html
index 3760865..a97a019 100644
--- a/qsstv/documentation/manual/manual/index.html
+++ b/qsstv/documentation/manual/manual/index.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: QSSTV 9.1</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li class="current"><a href="index.html"><span>Main Page</span></a></li>
@@ -74,17 +74,17 @@ Introduction</h1>
 <li><a class="el" href="gettingstarted.html">Getting Started</a></li>
 <li><a class="el" href="statusbar.html">Statusbar</a></li>
 <li><a class="el" href="imagepopup.html">Image Viewer</a></li>
-<li><a class="el" href="_r_x_s_s_t_v.html">Receive SSTV Window</a></li>
-<li><a class="el" href="_t_x_s_s_t_v.html">Transmit SSTV Window</a></li>
-<li><a class="el" href="_r_x_d_r_m.html">Receive DRM Window</a></li>
-<li><a class="el" href="_t_x_d_r_m.html">Transmit DRM Window</a></li>
+<li><a class="el" href="RXSSTV.html">Receive SSTV Window</a></li>
+<li><a class="el" href="TXSSTV.html">Transmit SSTV Window</a></li>
+<li><a class="el" href="RXDRM.html">Receive DRM Window</a></li>
+<li><a class="el" href="TXDRM.html">Transmit DRM Window</a></li>
 <li><a class="el" href="fixdrm.html">Sending FIX in DRM</a></li>
 <li><a class="el" href="gallery.html">Gallery</a></li>
 <li><a class="el" href="editor.html">Editor</a></li>
 <li><a class="el" href="externalprog.html">External Programs</a></li>
 <li><a class="el" href="todo1.html">To Do</a></li>
 <li><a class="el" href="credits.html">Credits</a></li>
-<li><a class="el" href="_copying.html">Copying</a></li>
+<li><a class="el" href="Copying.html">Copying</a></li>
 </ul>
 <p>73's Johan ON4QZ </p>
 </div></div><!-- contents -->
@@ -92,9 +92,9 @@ Introduction</h1>
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/index.js b/qsstv/documentation/manual/manual/index.js
index 6d2edb5..2a58eef 100644
--- a/qsstv/documentation/manual/manual/index.js
+++ b/qsstv/documentation/manual/manual/index.js
@@ -15,15 +15,15 @@ var index =
     ] ],
     [ "Statusbar", "statusbar.html", null ],
     [ "Image Viewer", "imagepopup.html", null ],
-    [ "Receive SSTV Window", "_r_x_s_s_t_v.html", null ],
-    [ "Transmit SSTV Window", "_t_x_s_s_t_v.html", null ],
-    [ "Receive DRM Window", "_r_x_d_r_m.html", null ],
-    [ "Transmit DRM Window", "_t_x_d_r_m.html", null ],
+    [ "Receive SSTV Window", "RXSSTV.html", null ],
+    [ "Transmit SSTV Window", "TXSSTV.html", null ],
+    [ "Receive DRM Window", "RXDRM.html", null ],
+    [ "Transmit DRM Window", "TXDRM.html", null ],
     [ "Sending FIX in DRM", "fixdrm.html", null ],
     [ "Gallery", "gallery.html", null ],
     [ "Editor", "editor.html", null ],
     [ "External Programs", "externalprog.html", null ],
     [ "To Do", "todo1.html", null ],
     [ "Credits", "credits.html", null ],
-    [ "Copying", "_copying.html", null ]
+    [ "Copying", "Copying.html", null ]
 ];
\ No newline at end of file
diff --git a/qsstv/documentation/manual/manual/installation.html b/qsstv/documentation/manual/manual/installation.html
index 493b160..eddde14 100644
--- a/qsstv/documentation/manual/manual/installation.html
+++ b/qsstv/documentation/manual/manual/installation.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Installation</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -105,9 +105,9 @@ Step 4: Run QSSTV</h1>
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/navtreedata.js b/qsstv/documentation/manual/manual/navtreedata.js
index bdb7cbd..944f507 100644
--- a/qsstv/documentation/manual/manual/navtreedata.js
+++ b/qsstv/documentation/manual/manual/navtreedata.js
@@ -7,7 +7,7 @@ var NAVTREE =
 
 var NAVTREEINDEX =
 [
-"_copying.html"
+"Copying.html"
 ];
 
 var SYNCONMSG = 'click to disable panel synchronisation';
diff --git a/qsstv/documentation/manual/manual/navtreeindex0.js b/qsstv/documentation/manual/manual/navtreeindex0.js
index 0c3d587..6a2e1f6 100644
--- a/qsstv/documentation/manual/manual/navtreeindex0.js
+++ b/qsstv/documentation/manual/manual/navtreeindex0.js
@@ -1,10 +1,10 @@
 var NAVTREEINDEX0 =
 {
-"_copying.html":[0,17],
-"_r_x_d_r_m.html":[0,9],
-"_r_x_s_s_t_v.html":[0,7],
-"_t_x_d_r_m.html":[0,10],
-"_t_x_s_s_t_v.html":[0,8],
+"Copying.html":[0,17],
+"RXDRM.html":[0,9],
+"RXSSTV.html":[0,7],
+"TXDRM.html":[0,10],
+"TXSSTV.html":[0,8],
 "changelog.html":[0,2],
 "credits.html":[0,16],
 "editor.html":[0,13],
diff --git a/qsstv/documentation/manual/manual/pages.html b/qsstv/documentation/manual/manual/pages.html
index f8950cb..b8658fa 100644
--- a/qsstv/documentation/manual/manual/pages.html
+++ b/qsstv/documentation/manual/manual/pages.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Related Pages</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -70,9 +70,9 @@ $(document).ready(function(){initNavTree('pages.html','');});
 <!-- start footer part -->
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/resize.js b/qsstv/documentation/manual/manual/resize.js
index 304fcb6..2b86c36 100644
--- a/qsstv/documentation/manual/manual/resize.js
+++ b/qsstv/documentation/manual/manual/resize.js
@@ -56,7 +56,7 @@ function resizeHeight()
   var windowHeight = $(window).height() - headerHeight - footerHeight;
   content.css({height:windowHeight + "px"});
   navtree.css({height:windowHeight + "px"});
-  sidenav.css({height:windowHeight + "px",top: headerHeight+"px"});
+  sidenav.css({height:windowHeight + "px"});
 }
 
 function initResizable()
diff --git a/qsstv/documentation/manual/manual/statusbar.html b/qsstv/documentation/manual/manual/statusbar.html
index fd8209d..7d30148 100644
--- a/qsstv/documentation/manual/manual/statusbar.html
+++ b/qsstv/documentation/manual/manual/statusbar.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: Statusbar</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -85,7 +85,8 @@ There are two modes: EasyPal and Compatible. EasyPal mode is more advanced and i
 Note: BSR is greyed out in SSTV. <br />
 <br />
 </li>
-<li>ID: send callsign in waterfall - this is a short-cut to send your own callsign in the waterfall <br />
+<li>WF ID: send callsign in waterfall - this is a short-cut to send your own callsign in the waterfall</li>
+<li>CW ID: send callsign in CW <br />
 <br />
 </li>
 <li>PTT indicator: turns red while the PTT is activated. </li>
@@ -96,9 +97,9 @@ Note: BSR is greyed out in SSTV. <br />
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/statusbar.png b/qsstv/documentation/manual/manual/statusbar.png
index 3018aab..99a2ee6 100644
Binary files a/qsstv/documentation/manual/manual/statusbar.png and b/qsstv/documentation/manual/manual/statusbar.png differ
diff --git a/qsstv/documentation/manual/manual/todo1.html b/qsstv/documentation/manual/manual/todo1.html
index 645cab5..eee863b 100644
--- a/qsstv/documentation/manual/manual/todo1.html
+++ b/qsstv/documentation/manual/manual/todo1.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: To Do</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -72,9 +72,9 @@ $(document).ready(function(){initNavTree('todo1.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/documentation/manual/manual/whatsnew.html b/qsstv/documentation/manual/manual/whatsnew.html
index 4023a2b..c49e769 100644
--- a/qsstv/documentation/manual/manual/whatsnew.html
+++ b/qsstv/documentation/manual/manual/whatsnew.html
@@ -3,7 +3,7 @@
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.9.1"/>
+<meta name="generator" content="Doxygen 1.8.11"/>
 <title>QSSTV: What's New</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -24,7 +24,7 @@
 <table cellspacing="0" cellpadding="0">
  <tbody>
  <tr style="height: 56px;">
-  <td style="padding-left: 0.5em;">
+  <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">QSSTV
     <span id="projectnumber">9.1</span>
    </div>
@@ -34,7 +34,7 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.9.1 -->
+<!-- Generated by Doxygen 1.8.11 -->
   <div id="navrow1" class="tabs">
     <ul class="tablist">
       <li><a href="index.html"><span>Main Page</span></a></li>
@@ -82,9 +82,9 @@ $(document).ready(function(){initNavTree('whatsnew.html','');});
 <div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
   <ul>
     <li class="navelem"><a class="el" href="index.html">QSSTV 9.1</a></li>
-    <li class="footer">Generated on Sat Apr 16 2016 17:32:52 for QSSTV by
+    <li class="footer">Generated on Fri Jul 22 2016 14:16:33 for QSSTV by
     <a href="http://www.doxygen.org/index.html">
-    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.9.1 </li>
+    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
   </ul>
 </div>
 </body>
diff --git a/qsstv/drmtx/common/DRMSignalIO.cpp b/qsstv/drmtx/common/DRMSignalIO.cpp
index 04b7309..f766664 100644
--- a/qsstv/drmtx/common/DRMSignalIO.cpp
+++ b/qsstv/drmtx/common/DRMSignalIO.cpp
@@ -57,7 +57,11 @@ void CTransmitData::ProcessDataInternal(CParameter&)
       switch (eOutputFormat)
         {
         case OF_REAL_VAL:
-          vecsDataOut[iCurIndex] = vecsDataOut[iCurIndex + 1] = sCurOutReal;
+//          vecsDataOut[iCurIndex]  = sCurOutReal;
+          vecsDataOut[iCurIndex]  = sCurOutReal;
+          vecsDataOut[iCurIndex + 1] = 0;
+
+
           //                  (short) 15000.0*sin(pi*1500.0*i/48000.0) ; //  pa0mbo 1500 Hz test signaal
           //                printf("%d %d \n", i/2 , vecsDataOut[iCurIndex]);
         break;
diff --git a/qsstv/drmtx/drmtx.cpp b/qsstv/drmtx/drmtx.cpp
index 3fa469a..5810e86 100644
--- a/qsstv/drmtx/drmtx.cpp
+++ b/qsstv/drmtx/drmtx.cpp
@@ -55,6 +55,7 @@ bool drmTx::initDRMImage(bool binary,QString fileName)
   QFileInfo finf;
   QFile inf;
   hybridCrypt hc;
+  init();
   setTxParams(drmParams);
   // we need to save it as a jpg file
   if(binary)
@@ -99,6 +100,7 @@ bool drmTx::initDRMImage(bool binary,QString fileName)
           {
               return false;
           }
+          txList.last().extension="jp2";
         }
 
       rsType=(eRSType)txList.last().drmParams.reedSolomon;
@@ -145,15 +147,22 @@ bool drmTx::ftpDRMHybrid(QString fn)
   QByteArray testBA;
   QByteArray ba;
   QTemporaryFile ftmp;
+  QFileInfo finf;
+  finf.setFile(fn);
+  QString changedFn;
   ftpInterface ftpIntf("HybridTX");
   hybridCrypt hc;
   ftpIntf.setupConnection(hc.host(),hc.port(),hc.user(),hc.passwd(),hc.dir()+"/"+hybridFtpHybridFilesDirectory);
-  txWidgetPtr->getImageViewerPtr()->copyToBuffer(&ba);
+  if(!txWidgetPtr->getImageViewerPtr()->copyToBuffer(&ba))
+    {
+      return false;
+    }
   if(!ftmp.open()) return false;
   ftmp.write(ba);
   ftmp.close();
+  changedFn=finf.completeBaseName()+".jp2";
 
-  ftpResult=ftpIntf.uploadFile(ftmp.fileName(),fn,true);
+  ftpResult=ftpIntf.uploadFile(ftmp.fileName(),changedFn,true);
   switch(ftpResult)
     {
     case FTPCANCELED:
diff --git a/qsstv/dsp/downsamplefilter.cpp b/qsstv/dsp/downsamplefilter.cpp
index 863159e..fc03514 100644
--- a/qsstv/dsp/downsamplefilter.cpp
+++ b/qsstv/dsp/downsamplefilter.cpp
@@ -183,7 +183,7 @@ void downsampleFilter::downSample4(short int *data)
 
 // rFIR
 // localSamplingrate = 48000.000000
-// number of taps = 181
+// number of taps = 180
 // Band0 Lower=0.000000, Upper=2800.000000, Desired=2.000000, Weight=1.000000
 // Band1 Lower=3500.000000, Upper=24000.000000, Desired=0.000000, Weight=10.000000
 //Coefficients:
diff --git a/qsstv/dsp/synthes.cpp b/qsstv/dsp/synthes.cpp
index d6999f2..e1fc45b 100644
--- a/qsstv/dsp/synthes.cpp
+++ b/qsstv/dsp/synthes.cpp
@@ -140,11 +140,15 @@ SOUNDFRAME synthesizer::filter(double sample)
 //   {
 //      tst+=tst<<16;
 //   }
- if(pttToneRightChannel)
+ if(pttToneOtherChannel)
    {
      ptt=((quint32)toneBuffer[(pttToneCounter++)%TONEBUFLEN])<< 16;
      tst+=ptt;
    }
+ if(swapChannel)
+   {
+     tst=((tst>>16) & 0xFFFF)+(tst<<16);
+   }
  return tst;
 }
 
@@ -163,6 +167,15 @@ void synthesizer::write(double sample)
 // buffer must already contain correct stereo information
 void synthesizer::writeBuffer(quint32 *buffer, int len)
 {
+  int i;
+   if(swapChannel)
+     {
+       for(i=0;i<len;i++)
+        {
+           buffer[i]=((buffer[i]>>16) & 0xFFFF)+(buffer[i]<<16);
+
+        }
+     }
   while((!soundIOPtr->txBuffer.put(buffer,len)) && (soundIOPtr->isPlaying()))
     {
       usleep(2000);
diff --git a/qsstv/mainwidgets/gallerywidget.cpp b/qsstv/mainwidgets/gallerywidget.cpp
index ba92472..d147eb3 100644
--- a/qsstv/mainwidgets/gallerywidget.cpp
+++ b/qsstv/mainwidgets/gallerywidget.cpp
@@ -47,6 +47,19 @@ void galleryWidget::changedMatrix()
   changedMatrix(imageViewer::TEMPLATETHUMB);
 }
 
+void galleryWidget::slotDirChanged(QString dn)
+{
+  if(dn==txStockImagesPath)
+    {
+      ui->txStockMatrix->changed();
+    }
+  if(dn==templatesPath)
+    {
+      ui->templateMatrix->changed();
+      txWidgetPtr->setupTemplatesComboBox();
+    }
+}
+
 
 void galleryWidget::changedMatrix(imageViewer::thumbType itype)
 {
diff --git a/qsstv/mainwidgets/gallerywidget.h b/qsstv/mainwidgets/gallerywidget.h
index cd8bc5f..3fffd7f 100644
--- a/qsstv/mainwidgets/gallerywidget.h
+++ b/qsstv/mainwidgets/gallerywidget.h
@@ -32,6 +32,7 @@ public:
   QString getLastRxImage();
 
 public slots:
+  void slotDirChanged(QString);
 
 
 
diff --git a/qsstv/mainwidgets/txfunctions.cpp b/qsstv/mainwidgets/txfunctions.cpp
index cfd18e5..abf31c5 100644
--- a/qsstv/mainwidgets/txfunctions.cpp
+++ b/qsstv/mainwidgets/txfunctions.cpp
@@ -44,6 +44,7 @@
 #include "mainwindow.h"
 
 
+
 QMutex txMutex;
 
 int templateIndex;
@@ -131,6 +132,7 @@ void txFunctions::run()
             }
           startProgress(drmTxPtr->calcTxTime(waterfallTime));
           addToLog("start of wf",LOGTXFUNC);
+          if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
           waterfallPtr->setText("START BIN");
           synthesPtr->sendWFText();
           addToLog("start of txDrm",LOGTXFUNC);
@@ -158,6 +160,7 @@ void txFunctions::run()
               break;
             }
           startProgress(drmTxPtr->calcTxTime(waterfallTime));
+          if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
           addToLog("start of wf",LOGTXFUNC);
           waterfallPtr->setText(startPicWF);
           synthesPtr->sendWFText();
@@ -181,6 +184,7 @@ void txFunctions::run()
         case TXSENDDRMBSR:
           waitTxOn();
           waterfallTime=waterfallPtr->getDuration(bsrWF);
+          if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
           startProgress(drmTxPtr->calcTxTime(waterfallTime));
           synthesPtr->sendWFText();
           drmTxPtr->start();
@@ -192,6 +196,7 @@ void txFunctions::run()
         case TXSENDDRMFIX:
           waitTxOn();
           waterfallTime=waterfallPtr->getDuration(fixWF);
+          if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
           startProgress(drmTxPtr->calcTxTime(waterfallTime));
           synthesPtr->sendWFText();
           drmTxPtr->start();
@@ -209,17 +214,27 @@ void txFunctions::run()
         case TXSENDDRMTXT:
           waitTxOn();
         break;
-        case TXSENDID:
+        case TXSENDWFID:
           addToLog("Entered TXSENDID",LOGTXFUNC);
           waitTxOn();
           addToLog("after txon TXSENDID",LOGTXFUNC);
           startProgress(waterfallPtr->getDuration());
+          if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
           synthesPtr->sendWFText();
           addToLog("TXSENDID waiting for end",LOGTXFUNC);
           waitEnd();
           addToLog("TXSENDID  end",LOGTXFUNC);
           switchTxState(TXIDLE);
         break;
+
+        case TXSENDCWID:
+           waitTxOn();
+           if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
+           sendCW();
+           waitEnd();
+           switchTxState(TXIDLE);
+        break;
+
         case TXSSTVIMAGE:
           waitTxOn();
           addToLog("Entered SSTVTXIMAGE",LOGTXFUNC);
@@ -279,8 +294,8 @@ void txFunctions::stopThread()
 {
   abort=true;
  if(!isRunning()) return;
-  while(abort)
-    {
+  while(abort && isRunning())
+  {
       qApp->processEvents();
     }
 }
@@ -502,3 +517,8 @@ void txFunctions::switchTxState(etxState newState)
   addToLog(QString("%1 to %2").arg(txStateStr[txState]).arg(txStateStr[newState]),LOGTXFUNC);
   txState=newState;
 }
+
+void txFunctions::txTestPattern(imageViewer *ivPtr,etpSelect sel)
+{
+  sstvTxPtr->createTestPattern(ivPtr,sel);
+}
diff --git a/qsstv/mainwidgets/txfunctions.h b/qsstv/mainwidgets/txfunctions.h
index eda3be8..e8b9c17 100644
--- a/qsstv/mainwidgets/txfunctions.h
+++ b/qsstv/mainwidgets/txfunctions.h
@@ -4,6 +4,7 @@
 #include <QThread>
 #include "appdefs.h"
 #include "drmparams.h"
+#include "testpatternselection.h"
 
 #define SILENCEDELAY 0.600           // send silence after transmission
 
@@ -27,7 +28,8 @@ public:
     TXIDLE,	//!< in idle loop
     TXACTIVE,
     TXSENDTONE,
-    TXSENDID,
+    TXSENDWFID,
+    TXSENDCWID,
     TXSENDDRM,
     TXSENDDRMBINARY,
     TXSENDDRMBSR,
@@ -59,6 +61,7 @@ public:
   etxState getTXState() { return txState;}
   void setDRMTxParams(drmTxParams params);
   //  bool initDRMFIX(txSession *sessionPtr);
+  void txTestPattern(imageViewer *ivPtr, etpSelect sel);
 
 
 private:
diff --git a/qsstv/mainwidgets/txwidget.cpp b/qsstv/mainwidgets/txwidget.cpp
index 5456042..724b541 100644
--- a/qsstv/mainwidgets/txwidget.cpp
+++ b/qsstv/mainwidgets/txwidget.cpp
@@ -20,6 +20,7 @@
 #include "mainwindow.h"
 #include "rigcontrol.h"
 #include "imageviewer.h"
+#include "testpatternselection.h"
 
 
 
@@ -323,12 +324,18 @@ void txWidget::sendBSR()
 }
 
 
-void txWidget::sendID()
+void txWidget::sendWFID()
 {
 
   waterfallPtr->setText(myCallsign);
-  dispatcherPtr->startTX(txFunctions::TXSENDID);
-  addToLog("sendID",LOGTXMAIN);
+  dispatcherPtr->startTX(txFunctions::TXSENDWFID);
+  addToLog("sendWFID",LOGTXMAIN);
+}
+
+void txWidget::sendCWID()
+{
+  dispatcherPtr->startTX(txFunctions::TXSENDCWID);
+  addToLog("sendWFID",LOGTXMAIN);
 }
 
 void txWidget::sendWfText()
@@ -337,7 +344,7 @@ void txWidget::sendWfText()
   if((wf.exec()==QDialog::Accepted)&&(!wf.text().isEmpty()))
     {
       waterfallPtr->setText(wf.text());
-      dispatcherPtr->startTX(txFunctions::TXSENDID);
+      dispatcherPtr->startTX(txFunctions::TXSENDWFID);
       addToLog("sendID",LOGTXMAIN);
     }
 }
@@ -449,13 +456,6 @@ void txWidget::applyTemplate()
   txFunctionsPtr->applyTemplate(imageViewerPtr,galleryWidgetPtr->getTemplateFileName(ui->templatesComboBox->currentIndex()));
 }
 
-//void 	txWidget::setImage(QImage *im)
-//{
-//  if(imageViewerPtr->openImage(*im))
-//    {
-//      applyTemplate();
-//    }
-//}
 
 void 	txWidget::setImage(QString fn)
 {
@@ -642,6 +642,14 @@ void txWidget::slotProfileChanged(int i)
   setParams();
 }
 
+void txWidget::reloadProfiles()
+{
+  int index;
+  index= ui->drmProfileComboBox->currentIndex();
+  setProfileNames();
+  slotProfileChanged(index);
+}
+
 void txWidget::setProfileNames()
 {
   QString tmp;
@@ -674,6 +682,11 @@ void txWidget::slotBinary()
 }
 
 
+void txWidget::txTestPattern(etpSelect sel)
+{
+  txFunctionsPtr->txTestPattern(imageViewerPtr,sel);
+}
+
 
 
 
diff --git a/qsstv/mainwidgets/txwidget.h b/qsstv/mainwidgets/txwidget.h
index ed947b7..ed247bf 100644
--- a/qsstv/mainwidgets/txwidget.h
+++ b/qsstv/mainwidgets/txwidget.h
@@ -37,6 +37,7 @@ public:
   txFunctions *functionsPtr() {return txFunctionsPtr;}
   imageViewer *getImageViewerPtr(){ return imageViewerPtr;}
   QString getPreviewFilename();
+  void txTestPattern(etpSelect sel);
 
   void setDRMNotifyText(QString txt) {      
       //ui->txNotificationList->clear();                 
@@ -50,6 +51,7 @@ public:
   bool prepareText(QString txt);
   void copyProfile(drmTxParams d);
   void setProfileNames();
+  void reloadProfiles();
   void changeTransmissionMode(int rxtxMode);
 
 
@@ -57,7 +59,8 @@ public:
   //  void sendFIX();
   void sendBSR();
   void sendWfText();
-  void sendID();
+  void sendWFID();
+  void sendCWID();
 
 public slots:
   void slotGetParams();
diff --git a/qsstv/mainwidgets/txwidget.ui b/qsstv/mainwidgets/txwidget.ui
index 7c1342f..98569e8 100644
--- a/qsstv/mainwidgets/txwidget.ui
+++ b/qsstv/mainwidgets/txwidget.ui
@@ -18,24 +18,12 @@
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QHBoxLayout" name="horizontalLayout_9" stretch="2,0">
-   <property name="spacing">
-    <number>2</number>
-   </property>
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>0</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
-    <number>0</number>
-   </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_9" stretch="1,0">
    <item>
     <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,1,0">
+     <property name="spacing">
+      <number>2</number>
+     </property>
      <item>
       <layout class="QHBoxLayout" name="horizontalLayout_5" stretch="0,0,0,0,0,0,0,1,0,3,0,0">
        <property name="spacing">
@@ -315,7 +303,7 @@
     </layout>
    </item>
    <item>
-    <layout class="QVBoxLayout" name="verticalLayout_3">
+    <layout class="QVBoxLayout" name="verticalLayout">
      <property name="spacing">
       <number>2</number>
      </property>
@@ -776,7 +764,7 @@
         </palette>
        </property>
        <property name="currentIndex">
-        <number>1</number>
+        <number>0</number>
        </property>
        <widget class="QWidget" name="sstvTXTab">
         <attribute name="title">
@@ -846,42 +834,11 @@
         <attribute name="title">
          <string>DRM</string>
         </attribute>
-        <layout class="QVBoxLayout" name="verticalLayout">
+        <layout class="QVBoxLayout" name="verticalLayout_3">
          <item>
           <layout class="QGridLayout" name="gridLayout_2">
-           <property name="spacing">
-            <number>2</number>
-           </property>
-           <item row="2" column="2">
-            <widget class="QComboBox" name="drmTxInterleaveComboBox">
-             <item>
-              <property name="text">
-               <string>Short</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>Long</string>
-              </property>
-             </item>
-            </widget>
-           </item>
-           <item row="1" column="2">
-            <widget class="QComboBox" name="drmTxProtectionComboBox">
-             <item>
-              <property name="text">
-               <string>High</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>Low</string>
-              </property>
-             </item>
-            </widget>
-           </item>
-           <item row="0" column="3">
-            <widget class="QLabel" name="drmQAMLabel">
+           <item row="0" column="0">
+            <widget class="QLabel" name="drmModeLabel">
              <property name="minimumSize">
               <size>
                <width>30</width>
@@ -889,7 +846,7 @@
               </size>
              </property>
              <property name="text">
-              <string>QAM</string>
+              <string>Mode</string>
              </property>
              <property name="alignment">
               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@@ -899,7 +856,7 @@
              </property>
             </widget>
            </item>
-           <item row="0" column="2">
+           <item row="0" column="1">
             <widget class="QComboBox" name="drmTxModeComboBox">
              <item>
               <property name="text">
@@ -918,27 +875,8 @@
              </item>
             </widget>
            </item>
-           <item row="2" column="3">
-            <widget class="QLabel" name="drmReadSolomonLabel">
-             <property name="minimumSize">
-              <size>
-               <width>30</width>
-               <height>0</height>
-              </size>
-             </property>
-             <property name="text">
-              <string>Rs</string>
-             </property>
-             <property name="alignment">
-              <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-             </property>
-             <property name="wordWrap">
-              <bool>false</bool>
-             </property>
-            </widget>
-           </item>
-           <item row="2" column="0">
-            <widget class="QLabel" name="drmInterleavelabel">
+           <item row="0" column="2">
+            <widget class="QLabel" name="drmQAMLabel">
              <property name="minimumSize">
               <size>
                <width>30</width>
@@ -946,7 +884,7 @@
               </size>
              </property>
              <property name="text">
-              <string>Interleave</string>
+              <string>QAM</string>
              </property>
              <property name="alignment">
               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@@ -956,7 +894,7 @@
              </property>
             </widget>
            </item>
-           <item row="0" column="4" colspan="2">
+           <item row="0" column="3">
             <widget class="QComboBox" name="drmTxQAMComboBox">
              <item>
               <property name="text">
@@ -975,51 +913,41 @@
              </item>
             </widget>
            </item>
-           <item row="1" column="4" colspan="2">
-            <widget class="QComboBox" name="drmTxBandwidthComboBox">
-             <item>
-              <property name="text">
-               <string>2.2 KHz</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>2.5 KHz</string>
-              </property>
-             </item>
+           <item row="1" column="0">
+            <widget class="QLabel" name="drmProtectionLabel">
+             <property name="minimumSize">
+              <size>
+               <width>30</width>
+               <height>0</height>
+              </size>
+             </property>
+             <property name="text">
+              <string>Prot.</string>
+             </property>
+             <property name="alignment">
+              <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+             </property>
+             <property name="wordWrap">
+              <bool>false</bool>
+             </property>
             </widget>
            </item>
-           <item row="2" column="4" colspan="2">
-            <widget class="QComboBox" name="drmTxReedSolomonComboBox">
-             <item>
-              <property name="text">
-               <string>None</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>RS1</string>
-              </property>
-             </item>
-             <item>
-              <property name="text">
-               <string>RS2</string>
-              </property>
-             </item>
+           <item row="1" column="1">
+            <widget class="QComboBox" name="drmTxProtectionComboBox">
              <item>
               <property name="text">
-               <string>RS3</string>
+               <string>High</string>
               </property>
              </item>
              <item>
               <property name="text">
-               <string>RS4</string>
+               <string>Low</string>
               </property>
              </item>
             </widget>
            </item>
-           <item row="1" column="0">
-            <widget class="QLabel" name="drmProtectionLabel">
+           <item row="1" column="2">
+            <widget class="QLabel" name="drmBandwidthLabel">
              <property name="minimumSize">
               <size>
                <width>30</width>
@@ -1027,7 +955,7 @@
               </size>
              </property>
              <property name="text">
-              <string>Prot.</string>
+              <string>BW</string>
              </property>
              <property name="alignment">
               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@@ -1037,8 +965,22 @@
              </property>
             </widget>
            </item>
-           <item row="0" column="0">
-            <widget class="QLabel" name="drmModeLabel">
+           <item row="1" column="3">
+            <widget class="QComboBox" name="drmTxBandwidthComboBox">
+             <item>
+              <property name="text">
+               <string>2.2 KHz</string>
+              </property>
+             </item>
+             <item>
+              <property name="text">
+               <string>2.5 KHz</string>
+              </property>
+             </item>
+            </widget>
+           </item>
+           <item row="2" column="0">
+            <widget class="QLabel" name="drmInterleavelabel">
              <property name="minimumSize">
               <size>
                <width>30</width>
@@ -1046,7 +988,7 @@
               </size>
              </property>
              <property name="text">
-              <string>Mode</string>
+              <string>Interleave</string>
              </property>
              <property name="alignment">
               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@@ -1056,8 +998,22 @@
              </property>
             </widget>
            </item>
-           <item row="1" column="3">
-            <widget class="QLabel" name="drmBandwidthLabel">
+           <item row="2" column="1">
+            <widget class="QComboBox" name="drmTxInterleaveComboBox">
+             <item>
+              <property name="text">
+               <string>Short</string>
+              </property>
+             </item>
+             <item>
+              <property name="text">
+               <string>Long</string>
+              </property>
+             </item>
+            </widget>
+           </item>
+           <item row="2" column="2">
+            <widget class="QLabel" name="drmReadSolomonLabel">
              <property name="minimumSize">
               <size>
                <width>30</width>
@@ -1065,7 +1021,7 @@
               </size>
              </property>
              <property name="text">
-              <string>BW</string>
+              <string>Rs</string>
              </property>
              <property name="alignment">
               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
@@ -1075,6 +1031,35 @@
              </property>
             </widget>
            </item>
+           <item row="2" column="3">
+            <widget class="QComboBox" name="drmTxReedSolomonComboBox">
+             <item>
+              <property name="text">
+               <string>None</string>
+              </property>
+             </item>
+             <item>
+              <property name="text">
+               <string>RS1</string>
+              </property>
+             </item>
+             <item>
+              <property name="text">
+               <string>RS2</string>
+              </property>
+             </item>
+             <item>
+              <property name="text">
+               <string>RS3</string>
+              </property>
+             </item>
+             <item>
+              <property name="text">
+               <string>RS4</string>
+              </property>
+             </item>
+            </widget>
+           </item>
            <item row="3" column="0">
             <widget class="QLabel" name="drmProfileLabel">
              <property name="text">
@@ -1085,7 +1070,7 @@
              </property>
             </widget>
            </item>
-           <item row="3" column="2">
+           <item row="3" column="1" colspan="3">
             <widget class="QComboBox" name="drmProfileComboBox"/>
            </item>
           </layout>
@@ -1176,6 +1161,9 @@
      </item>
      <item>
       <layout class="QGridLayout" name="gridLayout">
+       <property name="spacing">
+        <number>2</number>
+       </property>
        <item row="0" column="0">
         <widget class="QLabel" name="toCallLabel">
          <property name="minimumSize">
@@ -1315,7 +1303,7 @@
          <property name="maximumSize">
           <size>
            <width>16777215</width>
-           <height>60</height>
+           <height>50</height>
           </size>
          </property>
         </widget>
@@ -1345,7 +1333,7 @@
          <property name="maximumSize">
           <size>
            <width>16777215</width>
-           <height>60</height>
+           <height>50</height>
           </size>
          </property>
         </widget>
@@ -1375,7 +1363,7 @@
          <property name="maximumSize">
           <size>
            <width>16777215</width>
-           <height>60</height>
+           <height>50</height>
           </size>
          </property>
         </widget>
diff --git a/qsstv/mainwindow.cpp b/qsstv/mainwindow.cpp
index 437434a..9441e75 100644
--- a/qsstv/mainwindow.cpp
+++ b/qsstv/mainwindow.cpp
@@ -39,11 +39,13 @@
 #include "scope/scopeoffset.h"
 #include "rxfunctions.h"
 #include "logbook.h"
+#include "testpatternselection.h"
 #include <QFont>
 #include <QCloseEvent>
 #include <QMessageBox>
 #include <QScreen>
 #include <QApplication>
+#include "filewatcher.h"
 
 
 /**
@@ -58,7 +60,8 @@ mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent),  ui(new Ui::MainW
   bsrPushButton=new QPushButton("BSR",this);
 
   freqComboBox=new QComboBox(this);
-  idPushButton=new QPushButton("ID",this);
+  idPushButton=new QPushButton("WF ID",this);
+  cwPushButton=new QPushButton("CW ID",this);
   QFont f;
 
   freqDisplay = new QLabel(this);
@@ -91,6 +94,7 @@ mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent),  ui(new Ui::MainW
   ui->statusBar->addPermanentWidget(wfTextPushButton);
   ui->statusBar->addPermanentWidget(bsrPushButton);
   ui->statusBar->addPermanentWidget(idPushButton);
+  ui->statusBar->addPermanentWidget(cwPushButton);
   ui->statusBar->addPermanentWidget(&pttText);
   ui->statusBar->addPermanentWidget(pttIcon);
   statusBarPtr=statusBar(); // must be after setup UI
@@ -99,6 +103,7 @@ mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent),  ui(new Ui::MainW
 
   // setting up pointers
   soundIOPtr=NULL;
+  fileWatcherPtr=NULL;
 
 
   rxWidgetPtr=ui->rxWindow;
@@ -121,14 +126,15 @@ mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent),  ui(new Ui::MainW
   connect(ui->actionAboutQSSTV, SIGNAL(triggered()),SLOT(slotAboutQSSTV()));
   connect(ui->actionAboutQt, SIGNAL(triggered()),SLOT(slotAboutQt()));
   connect(ui->actionUsersGuide, SIGNAL(triggered()),SLOT(slotDocumentation()));
-  connect(idPushButton, SIGNAL(clicked()), this, SLOT(slotSendID()));
+  connect(idPushButton, SIGNAL(clicked()), this, SLOT(slotSendWFID()));
+  connect(cwPushButton, SIGNAL(clicked()), this, SLOT(slotSendCWID()));
   connect(bsrPushButton, SIGNAL(clicked()), this, SLOT(slotSendBSR()));
   connect(freqComboBox,SIGNAL(activated(int)),SLOT(slotSetFrequency(int)));
   connect(wfTextPushButton, SIGNAL(clicked()), this, SLOT(slotSendWfText()));
   connect(rxWidgetPtr,SIGNAL(modeSwitch(int)),this, SLOT(slotModeChange(int)));
   connect(txWidgetPtr,SIGNAL(modeSwitch(int)),this, SLOT(slotModeChange(int)));
 
- #ifdef ENABLELOGGING
+#ifdef ENABLELOGGING
   connect(ui->actionLogSettings, SIGNAL(triggered()),SLOT(slotLogSettings()));
   connect(ui->actionResetLog, SIGNAL(triggered()),SLOT(slotResetLog()));
 #else
@@ -141,7 +147,11 @@ mainWindow::mainWindow(QWidget *parent) : QMainWindow(parent),  ui(new Ui::MainW
   connect(ui->actionShowSyncScopeNarrow, SIGNAL(triggered()),SLOT(slotShowSyncScopeNarrow()));
   connect(ui->actionShowSyncScopeWide, SIGNAL(triggered()),SLOT(slotShowSyncScopeWide()));
   connect(ui->actionScopeOffset,SIGNAL(triggered()),this, SLOT(slotScopeOffset()));
+  connect(ui->actionClearScope,SIGNAL(triggered()),this, SLOT(slotClearScope()));
   connect(ui->actionDumpSamplesPerLine,SIGNAL(triggered()),this, SLOT(slotDumpSamplesPerLine()));
+  connect(ui->actionTxTestPattern,SIGNAL(triggered()),this, SLOT(slotTxTestPattern()));
+
+
 
 #else
   ui->menuOptions->removeAction(ui->actionDumpSamplesPerLine);
@@ -192,6 +202,8 @@ void mainWindow::init()
       splashPtr->showMessage(splashStr ,Qt::AlignLeft,Qt::white);
     }
   startTimer(1000);
+  if(fileWatcherPtr==NULL) fileWatcherPtr=new fileWatcher;
+  fileWatcherPtr->init();
 }
 
 void mainWindow::restartSound(bool inStartUp)
@@ -245,7 +257,7 @@ void mainWindow::readSettings()
   transmissionModeIndex=(etransmissionMode)qSettings.value("transmissionModeIndex",0).toInt();
   qSettings.endGroup();
   ui->spectrumFrame->readSettings();
-//  configDialogPtr->readSettings();
+  //  configDialogPtr->readSettings();
   logFilePtr->readSettings();
 
 }
@@ -397,16 +409,19 @@ void mainWindow::slotSendBSR()
 }
 
 
-void mainWindow::slotSendID()
+void mainWindow::slotSendWFID()
 {
-  txWidgetPtr->sendID();
+  txWidgetPtr->sendWFID();
 }
 
-
+void mainWindow::slotSendCWID()
+{
+  txWidgetPtr->sendCWID();
+}
 
 void mainWindow::slotSendWfText()
 {
- txWidgetPtr->sendWfText();
+  txWidgetPtr->sendWfText();
 }
 
 void mainWindow::slotSetFrequency(int freqIndex)
@@ -439,12 +454,12 @@ void mainWindow::slotSetFrequency(int freqIndex)
 
 void mainWindow::timerEvent(QTimerEvent *)
 {
-    double fr;
-    if(rigControllerPtr->getFrequency(fr))
-      {
-    fr/=1000000.;
-    if(fr>1) freqDisplay->setText(QString::number(fr,'f',6));
-      }
+  double fr;
+  if(rigControllerPtr->getFrequency(fr))
+    {
+      fr/=1000000.;
+      if(fr>1) freqDisplay->setText(QString::number(fr,'f',6));
+    }
 }
 
 void mainWindow::cleanUpCache(QString dirPath)
@@ -463,27 +478,27 @@ void mainWindow::cleanUpCache(QString dirPath)
   cacheFileList = dirCache.entryInfoList();
   // get a orgiriginal filelist
   for(i=0;i<cacheFileList.count();i++)
-  {
-    found=false;
-    for(j=0;j<orgFileList.count();j++)
     {
+      found=false;
+      for(j=0;j<orgFileList.count();j++)
+        {
 
-      if(cacheFileList.at(i).baseName()==QString(orgFileList.at(j).baseName()+orgFileList.at(j).created().toString()))
-      {
-        found=true;
-        break;
-      }
+          if(cacheFileList.at(i).baseName()==QString(orgFileList.at(j).baseName()+orgFileList.at(j).created().toString()))
+            {
+              found=true;
+              break;
+            }
+        }
+      if(!found)
+        {
+          removeFileList.append(cacheFileList.at(i));
+        }
     }
-   if(!found)
-   {
-     removeFileList.append(cacheFileList.at(i));
-   }
-  }
   for(i=0;i<removeFileList.count();i++)
-  {
-    QFile fi(removeFileList.at(i).absoluteFilePath());
-    fi.remove();
-  }
+    {
+      QFile fi(removeFileList.at(i).absoluteFilePath());
+      fi.remove();
+    }
 }
 
 
@@ -507,12 +522,29 @@ void mainWindow::slotScopeOffset()
   dataScopeOffset=rxWidgetPtr->functionsPtr()->setOffset(dataScopeOffset,true);
 }
 
+
+
 void mainWindow::slotDumpSamplesPerLine()
 {
   dumpSamplesPerLine();
 }
 
+void mainWindow::slotClearScope()
+{
+  scopeViewerData->clear();
+  scopeViewerSyncNarrow->clear();
+  scopeViewerSyncWide->clear();
+}
 
-
+void mainWindow::slotTxTestPattern()
+{
+  etpSelect sel;
+  testPatternSelection tpsel;
+  if(tpsel.exec()==QDialog::Accepted)
+    {
+      sel=tpsel.getSelection();
+      txWidgetPtr->txTestPattern(sel);
+    }
+}
 
 #endif
diff --git a/qsstv/mainwindow.h b/qsstv/mainwindow.h
index abc5c2e..75c2405 100644
--- a/qsstv/mainwindow.h
+++ b/qsstv/mainwindow.h
@@ -37,18 +37,22 @@ private slots:
   void slotDocumentation();
   void slotCalibrate();
   void slotModeChange(int);
-  void slotSendID();
+  void slotSendWFID();
+  void slotSendCWID();
   void slotSendBSR();
   void slotSendWfText();
   void slotSetFrequency(int freqIndex);
 
 
+
 #ifndef QT_NO_DEBUG
   void slotShowDataScope();
   void slotShowSyncScopeNarrow();
   void slotShowSyncScopeWide();
   void slotScopeOffset();
+  void slotClearScope();
   void slotDumpSamplesPerLine();
+  void slotTxTestPattern();
 
 #endif
 
@@ -64,6 +68,7 @@ private:
   QPushButton *fixPushButton;
   QPushButton *bsrPushButton;
   QPushButton *idPushButton;
+  QPushButton *cwPushButton;
   QComboBox *freqComboBox;
   QLabel pttText;
   QLabel *pttIcon;
diff --git a/qsstv/mainwindow.ui b/qsstv/mainwindow.ui
index 5689e5b..2153cc4 100644
--- a/qsstv/mainwindow.ui
+++ b/qsstv/mainwindow.ui
@@ -26,6 +26,21 @@
   </property>
   <widget class="QWidget" name="centralwidget">
    <layout class="QHBoxLayout" name="horizontalLayout">
+    <property name="spacing">
+     <number>1</number>
+    </property>
+    <property name="leftMargin">
+     <number>1</number>
+    </property>
+    <property name="topMargin">
+     <number>1</number>
+    </property>
+    <property name="rightMargin">
+     <number>1</number>
+    </property>
+    <property name="bottomMargin">
+     <number>1</number>
+    </property>
     <item>
      <widget class="QTabWidget" name="maintabWidget">
       <property name="font">
@@ -174,6 +189,7 @@
      <string>File</string>
     </property>
     <addaction name="actionExit"/>
+    <addaction name="actionTxTestPattern"/>
    </widget>
    <widget class="QMenu" name="menuOptions">
     <property name="title">
@@ -202,6 +218,7 @@
     <addaction name="actionShowSyncScopeNarrow"/>
     <addaction name="actionShowSyncScopeWide"/>
     <addaction name="actionScopeOffset"/>
+    <addaction name="actionClearScope"/>
    </widget>
    <addaction name="menuFile"/>
    <addaction name="menuOptions"/>
@@ -287,6 +304,16 @@
     <string>Show Sync Scope Wide</string>
    </property>
   </action>
+  <action name="actionTxTestPattern">
+   <property name="text">
+    <string>TX Test Pattern</string>
+   </property>
+  </action>
+  <action name="actionClearScope">
+   <property name="text">
+    <string>Clear</string>
+   </property>
+  </action>
  </widget>
  <customwidgets>
   <customwidget>
diff --git a/qsstv/qsstv.pro b/qsstv/qsstv.pro
index fc4980e..fb7ddf9 100644
--- a/qsstv/qsstv.pro
+++ b/qsstv/qsstv.pro
@@ -177,7 +177,9 @@ SOURCES += main.cpp\
     utils/fftcalc.cpp \
     config/hybridnotifyconfig.cpp \
     utils/jp2io.cpp \
-    utils/color.cpp
+    utils/color.cpp \
+    widgets/testpatternselection.cpp \
+    utils/filewatcher.cpp
 
 
 HEADERS  += mainwindow.h \
@@ -345,7 +347,9 @@ HEADERS  += mainwindow.h \
     utils/fftcalc.h \
     config/hybridnotifyconfig.h \
     utils/jp2io.h \
-    utils/color.h
+    utils/color.h \
+    widgets/testpatternselection.h \
+    utils/filewatcher.h
 
 
 FORMS += mainwindow.ui \
@@ -386,7 +390,8 @@ FORMS += mainwindow.ui \
     drmrx/fixform.ui \
     config/frequencyselectwidget.ui \
     editor/canvassizeform.ui \
-    config/hybridnotifyconfig.ui
+    config/hybridnotifyconfig.ui \
+    widgets/testpatternselection.ui
 
  LIBS += -lasound \
          -lpulse \
diff --git a/qsstv/rig/rigcontrol.cpp b/qsstv/rig/rigcontrol.cpp
index 7e515a1..13f19c9 100644
--- a/qsstv/rig/rigcontrol.cpp
+++ b/qsstv/rig/rigcontrol.cpp
@@ -221,7 +221,8 @@ bool rigControl::setPTT(bool on)
 {
     int retcode;
     ptt_t ptt;
-    if(on) ptt=RIG_PTT_ON; else ptt=RIG_PTT_OFF;
+    /* Hamlib will fall back to RIG_PTT_ON if RIG_PTT_ON_DATA is not available in current hamlib configuration */	
+    if(on) ptt=RIG_PTT_ON_DATA; else ptt=RIG_PTT_OFF;
     if(!rigControlEnabled) return false;
     retcode = rig_set_ptt (my_rig, RIG_VFO_CURR,ptt);
     if (retcode != RIG_OK ) {errorMessage(retcode,"setPTT"); return false; }
diff --git a/qsstv/rig/rigcontrolform.cpp b/qsstv/rig/rigcontrolform.cpp
deleted file mode 100644
index 150ef21..0000000
--- a/qsstv/rig/rigcontrolform.cpp
+++ /dev/null
@@ -1,277 +0,0 @@
-#include "rigcontrolform.h"
-#include "appglobal.h"
-#include "ui_rigcontrolform.h"
-#include "configparams.h"
-#include "utils/supportfunctions.h"
-#include "rigparams.h"
-#include "rigcontrol.h"
-#include <QSettings>
-#include <QMessageBox>
-
-rigControlForm::rigControlForm(QWidget *parent) :
-  QWidget(parent),
-  ui(new Ui::rigControlForm)
-{
-  ui->setupUi(this);
-  connect(ui->enableCATCheckBox,SIGNAL(clicked()),SLOT(slotEnableCAT()));
-  connect(ui->enablePTTCheckBox,SIGNAL(clicked()),SLOT(slotEnablePTT()));
-  connect(ui->enableXMLRPCCheckBox,SIGNAL(clicked()),SLOT(slotEnableXMLRPC()));
-  connect(ui->restartPushButton,SIGNAL(clicked()),SLOT(slotRestart()));
-  connect(ui->RTSCheckBox,SIGNAL(clicked()),SLOT(slotCheckPTT0()));
-  connect(ui->DTRCheckBox,SIGNAL(clicked()),SLOT(slotCheckPTT1()));
-  connect(ui->nRTSCheckBox,SIGNAL(clicked()),SLOT(slotCheckPTT2()));
-  connect(ui->nDTRCheckBox,SIGNAL(clicked()),SLOT(slotCheckPTT3()));
-  rigController=NULL;
-}
-
-
-rigControlForm::~rigControlForm()
-{
-  delete ui;
-}
-
-void rigControlForm::attachRigController(rigControl *rigCtrl)
-{
-  rigController=rigCtrl;
-}
-
-void rigControlForm::readSettings()
-{
-  cp=rigController->params();
-  QSettings qSettings;
-  qSettings.beginGroup(cp->configLabel);
-  cp->serialPort=qSettings.value("serialPort","/dev/ttyS0").toString();
-  cp->radioModel=qSettings.value("radioModel","dummy").toString();
-  cp->civAddress=qSettings.value("civAddress","").toString();
-  cp->baudrate=qSettings.value("baudrate",9600).toInt();
-  cp->parity=qSettings.value("parity","None").toString();
-  cp->stopbits=qSettings.value("stopbits",1).toInt();
-  cp->databits=qSettings.value("databits",8).toInt();
-  cp->handshake=qSettings.value("handshake","None").toString();
-  cp->enableCAT=qSettings.value("enableCAT",0).toBool();
-  cp->enableSerialPTT=qSettings.value("enableSerialPTT",0).toBool();
-  cp->pttSerialPort=qSettings.value("pttSerialPort","/dev/ttyS0").toString();
-  cp->activeRTS=qSettings.value("activeRTS",1).toBool();
-  cp->activeDTR=qSettings.value("activeDTR",0).toBool();
-  cp->nactiveRTS=qSettings.value("nactiveRTS",1).toBool();
-  cp->nactiveDTR=qSettings.value("nactiveDTR",0).toBool();
-
-  cp->enableXMLRPC=qSettings.value("enableXMLRPC",0).toBool();
-  cp->XMLRPCPort=qSettings.value("XMLRPCPort","7362").toInt();
-
-  cp->txOnDelay=qSettings.value("txOnDelay",0.0).toDouble();
-
-  cp->pttType=(ptt_type_t)qSettings.value("pttType",(int)RIG_PTT_RIG).toInt();
-  qSettings.endGroup();
-  setParams();
-}
-
-void rigControlForm::writeSettings()
-{
-  getParams();
-  QSettings qSettings;
-  qSettings.beginGroup(cp->configLabel);
-  qSettings.setValue("serialPort",cp->serialPort);
-  qSettings.setValue("radioModel",cp->radioModel);
-  qSettings.setValue("civAddress",cp->civAddress);
-  qSettings.setValue("baudrate",cp->baudrate);
-  qSettings.setValue("parity",cp->parity);
-  qSettings.setValue("stopbits",cp->stopbits);
-  qSettings.setValue("databits",cp->databits);
-  qSettings.setValue("handshake",cp->handshake);
-  qSettings.setValue("enableCAT",cp->enableCAT);
-  qSettings.setValue("enableSerialPTT",cp->enableSerialPTT);
-  qSettings.setValue("pttSerialPort",cp->pttSerialPort);
-  qSettings.setValue("activeRTS",cp->activeRTS);
-  qSettings.setValue("activeDTR",cp->activeDTR);
-  qSettings.setValue("nactiveRTS",cp->nactiveRTS);
-  qSettings.setValue("nactiveDTR",cp->nactiveDTR);
-  qSettings.setValue("pttType",(int) cp->pttType);
-
-  qSettings.setValue("enableXMLRPC",cp->enableXMLRPC);
-  qSettings.setValue("XMLRPCPort",cp->XMLRPCPort);
-  qSettings.setValue("txOnDelay",cp->txOnDelay);
-  qSettings.endGroup();
-}
-
-void rigControlForm::setParams()
-{
-  if(rigController->getRadioList(ui->radioModelComboBox)) setValue(cp->radioModel,ui->radioModelComboBox);
-  setValue(cp->serialPort,ui->serialPortLineEdit);
-  setValue(cp->civAddress,ui->civAddressLineEdit);
-  setValue(cp->baudrate,ui->baudrateComboBox);
-  setValue(cp->parity,ui->parityComboBox);
-  setValue(cp->stopbits,ui->stopbitsComboBox);
-  setValue(cp->databits,ui->databitsComboBox);
-  setValue(cp->handshake,ui->handshakeComboBox);
-  setValue(cp->enableCAT,ui->enableCATCheckBox);
-  setValue(cp->enableSerialPTT,ui->enablePTTCheckBox);
-  setValue(cp->pttSerialPort,ui->pttSerialPortLineEdit);
-  if(cp->activeRTS) cp->nactiveRTS=false;
-  if(cp->activeDTR) cp->nactiveDTR=false;
-
-  setValue(cp->activeRTS,ui->RTSCheckBox);
-  setValue(cp->activeDTR,ui->DTRCheckBox);
-  setValue(cp->nactiveRTS,ui->nRTSCheckBox);
-  setValue(cp->nactiveDTR,ui->nDTRCheckBox);
-  switch(cp->pttType)
-    {
-    case RIG_PTT_RIG:
-      setValue(true,ui->catRadioButton);
-    break;
-    case RIG_PTT_SERIAL_RTS:
-      setValue(true,ui->rtsRadioButton);
-    break;
-    case RIG_PTT_SERIAL_DTR:
-      setValue(true,ui->dtrRadioButton);
-    break;
-    default:
-      setValue(true,ui->catRadioButton);
-    break;
-    }
-  if(cp->enableCAT && cp->enableSerialPTT)
-    {
-      if(cp->serialPort==cp->pttSerialPort)
-        {
-          cp->enableSerialPTT=false;
-        }
-    }
-  setValue(cp->enableSerialPTT,ui->enablePTTCheckBox);
-  setValue(cp->txOnDelay,ui->txOnDelayDoubleSpinBox);
-  setValue(cp->enableXMLRPC,ui->enableXMLRPCCheckBox);
-  setValue(cp->XMLRPCPort,ui->XMLRPCPortLineEdit);
-
-
-}
-
-void rigControlForm::getParams()
-{
-  getValue(cp->serialPort,ui->serialPortLineEdit);
-  if(ui->radioModelComboBox->count()!=0) getValue(cp->radioModel,ui->radioModelComboBox);
-  getValue(cp->civAddress,ui->civAddressLineEdit);
-  getValue(cp->baudrate,ui->baudrateComboBox);
-  getValue(cp->parity,ui->parityComboBox);
-  getValue(cp->stopbits,ui->stopbitsComboBox);
-  getValue(cp->databits,ui->databitsComboBox);
-  getValue(cp->handshake,ui->handshakeComboBox);
-  getValue(cp->enableCAT,ui->enableCATCheckBox);
-  getValue(cp->enableSerialPTT,ui->enablePTTCheckBox);
-  getValue(cp->pttSerialPort,ui->pttSerialPortLineEdit);
-  getValue(cp->activeRTS,ui->RTSCheckBox);
-  getValue(cp->activeDTR,ui->DTRCheckBox);
-  getValue(cp->nactiveRTS,ui->nRTSCheckBox);
-  getValue(cp->nactiveDTR,ui->nDTRCheckBox);
-  if(ui->catRadioButton->isChecked()) cp->pttType=RIG_PTT_RIG;
-  if(ui->rtsRadioButton->isChecked()) cp->pttType=RIG_PTT_SERIAL_RTS;
-  if(ui->dtrRadioButton->isChecked()) cp->pttType=RIG_PTT_SERIAL_DTR;
-  getValue(cp->txOnDelay,ui->txOnDelayDoubleSpinBox);
-  getValue(cp->enableXMLRPC,ui->enableXMLRPCCheckBox);
-  getValue(cp->XMLRPCPort,ui->XMLRPCPortLineEdit);
-}
-
-void rigControlForm::slotEnableCAT()
-{
-  if(ui->enableCATCheckBox->isChecked() && ui->enablePTTCheckBox->isChecked())
-    {
-      if(ui->pttSerialPortLineEdit->text()==ui->serialPortLineEdit->text())
-        {
-          QMessageBox::critical(this,"Configuration error",
-                                "The PTT serialport must be different from the CAT serial port if both are enabled");
-          ui->enablePTTCheckBox->setChecked(false);
-        }
-
-    }
-  if(ui->enableCATCheckBox->isChecked())
-    {
-      ui->enableXMLRPCCheckBox->setChecked(false);
-      rigController->init();
-    }
-  else
-    {
-      rigController->disable();
-    }
-  getParams();
-}
-
-
-
-void rigControlForm::slotEnablePTT()
-{
-  if(ui->enableCATCheckBox->isChecked() && ui->enablePTTCheckBox->isChecked())
-    {
-      if(ui->pttSerialPortLineEdit->text()==ui->serialPortLineEdit->text())
-        {
-          QMessageBox::critical(this,"Configuration error",
-                                "The PTT serialport must be different from the CAT serial port if both are enabled");
-          ui->enablePTTCheckBox->setChecked(false);
-          return;
-        }
-
-    }
-  if(ui->enablePTTCheckBox->isChecked())
-    {
-      ui->enableXMLRPCCheckBox->setChecked(false);
-    }
-  getParams();
-}
-
-void rigControlForm::slotEnableXMLRPC()
-{
-  ui->enableCATCheckBox->setChecked(false);
-  ui->enablePTTCheckBox->setChecked(false);
-}
-
-void rigControlForm::slotRestart()
-{
-  getParams();
-  if(ui->enableCATCheckBox->isChecked())
-    {
-      if(rigController->init())
-        {
-          ui->restartPushButton->setStyleSheet("background-color: green");
-        }
-      else
-        {
-          ui->restartPushButton->setStyleSheet("background-color: red");
-        }
-    }
-}
-
-
-void rigControlForm::slotCheckPTT0()
-{
-  checkPTT(0,ui->RTSCheckBox->isChecked());
-}
-void rigControlForm::slotCheckPTT1()
-{checkPTT(1,ui->DTRCheckBox->isChecked());
-}
-void rigControlForm::slotCheckPTT2()
-{
-  checkPTT(2,ui->nRTSCheckBox->isChecked());
-}
-void rigControlForm::slotCheckPTT3()
-{
-  checkPTT(3,ui->nDTRCheckBox->isChecked());
-}
-
-void rigControlForm::checkPTT(int p,bool b)
-{
-  if(!b) return;
-  switch (p)
-    {
-    case 0:
-      setValue(false,ui->nRTSCheckBox);
-    break;
-    case 1:
-      setValue(false,ui->nDTRCheckBox);
-    break;
-    case 2:
-      setValue(false,ui->RTSCheckBox);
-    break;
-    case 3:
-      setValue(false,ui->DTRCheckBox);
-    break;
-
-    }
-}
-
diff --git a/qsstv/rig/rigcontrolform.h b/qsstv/rig/rigcontrolform.h
deleted file mode 100644
index 68c93ec..0000000
--- a/qsstv/rig/rigcontrolform.h
+++ /dev/null
@@ -1,47 +0,0 @@
-#ifndef RIGCONTROLFORM_H
-#define RIGCONTROLFORM_H
-
-#include <QWidget>
-#include "rigcontrol.h"
-
-
-namespace Ui {
-class rigControlForm;
-}
-
-class rigControlForm : public QWidget
-{
-  Q_OBJECT
-  
-public:
-  explicit rigControlForm(QWidget *parent = 0);
-  ~rigControlForm();
-  void attachRigController(rigControl *rigCtrl);
-  void readSettings();
-  void writeSettings();
-
-  bool needsRestart() { return changed;}
-
-
-public slots:
-  void slotEnableCAT();
-  void slotEnablePTT();
-  void slotEnableXMLRPC();
-  void slotRestart();
-  void slotCheckPTT0();
-  void slotCheckPTT1();
-  void slotCheckPTT2();
-  void slotCheckPTT3();
-  
-private:
-
-  Ui::rigControlForm *ui;
-  bool changed;
-  void getParams();
-  void setParams();
-  scatParams *cp;
-  rigControl *rigController;
-  void checkPTT(int p,bool b);
-};
-
-#endif // RIGCONTROLFORM_H
diff --git a/qsstv/rig/rigcontrolform.ui b/qsstv/rig/rigcontrolform.ui
deleted file mode 100644
index 3895b35..0000000
--- a/qsstv/rig/rigcontrolform.ui
+++ /dev/null
@@ -1,2140 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>rigControlForm</class>
- <widget class="QWidget" name="rigControlForm">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>673</width>
-    <height>764</height>
-   </rect>
-  </property>
-  <property name="font">
-   <font>
-    <pointsize>9</pointsize>
-   </font>
-  </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout_5">
-   <property name="margin">
-    <number>1</number>
-   </property>
-   <item>
-    <widget class="QGroupBox" name="groupBox_2">
-     <property name="palette">
-      <palette>
-       <active>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </active>
-       <inactive>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </inactive>
-       <disabled>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </disabled>
-      </palette>
-     </property>
-     <property name="autoFillBackground">
-      <bool>true</bool>
-     </property>
-     <property name="title">
-      <string>Special Serial Port</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_2">
-      <property name="spacing">
-       <number>2</number>
-      </property>
-      <property name="margin">
-       <number>1</number>
-      </property>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_10">
-        <item>
-         <widget class="QCheckBox" name="enablePTTCheckBox">
-          <property name="text">
-           <string>Enable PTT serial Interface</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_8">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item>
-         <widget class="QLabel" name="serialInterfaceTextLabel_4">
-          <property name="minimumSize">
-           <size>
-            <width>60</width>
-            <height>0</height>
-           </size>
-          </property>
-          <property name="text">
-           <string>PTT Serial Port</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-          </property>
-          <property name="wordWrap">
-           <bool>false</bool>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLineEdit" name="pttSerialPortLineEdit">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_15">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_8"/>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_7">
-        <item>
-         <widget class="QCheckBox" name="RTSCheckBox">
-          <property name="text">
-           <string>+RTS</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QCheckBox" name="DTRCheckBox">
-          <property name="text">
-           <string>+DTR</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QCheckBox" name="nRTSCheckBox">
-          <property name="text">
-           <string>-RTS</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QCheckBox" name="nDTRCheckBox">
-          <property name="text">
-           <string>-DTR</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_11">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox">
-     <property name="palette">
-      <palette>
-       <active>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </active>
-       <inactive>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </inactive>
-       <disabled>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </disabled>
-      </palette>
-     </property>
-     <property name="autoFillBackground">
-      <bool>true</bool>
-     </property>
-     <property name="title">
-      <string>Hamlib Control</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_3">
-      <property name="spacing">
-       <number>2</number>
-      </property>
-      <property name="margin">
-       <number>1</number>
-      </property>
-      <item>
-       <layout class="QVBoxLayout" name="verticalLayout">
-        <property name="spacing">
-         <number>2</number>
-        </property>
-        <item>
-         <layout class="QHBoxLayout" name="horizontalLayout_9">
-          <item>
-           <widget class="QCheckBox" name="enableCATCheckBox">
-            <property name="text">
-             <string>Enable Hamlib Cat Interface</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <spacer name="horizontalSpacer_2">
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>40</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-         </layout>
-        </item>
-        <item>
-         <layout class="QHBoxLayout" name="horizontalLayout">
-          <item>
-           <layout class="QGridLayout" name="gridLayout_2">
-            <property name="spacing">
-             <number>2</number>
-            </property>
-            <item row="0" column="0">
-             <widget class="QLabel" name="serialInterfaceTextLabel_2">
-              <property name="minimumSize">
-               <size>
-                <width>60</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>Radio Model</string>
-              </property>
-              <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-              <property name="wordWrap">
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="1">
-             <widget class="QComboBox" name="radioModelComboBox">
-              <property name="font">
-               <font>
-                <family>Ubuntu Mono</family>
-                <weight>75</weight>
-                <italic>false</italic>
-                <bold>true</bold>
-                <kerning>false</kerning>
-               </font>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="0">
-             <widget class="QLabel" name="serialInterfaceTextLabel_3">
-              <property name="minimumSize">
-               <size>
-                <width>60</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>CIV Address</string>
-              </property>
-              <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-              <property name="wordWrap">
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="1">
-             <layout class="QHBoxLayout" name="horizontalLayout_2">
-              <item>
-               <widget class="QLineEdit" name="civAddressLineEdit">
-                <property name="maximumSize">
-                 <size>
-                  <width>50</width>
-                  <height>16777215</height>
-                 </size>
-                </property>
-               </widget>
-              </item>
-              <item>
-               <spacer name="horizontalSpacer_4">
-                <property name="orientation">
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="sizeHint" stdset="0">
-                 <size>
-                  <width>40</width>
-                  <height>20</height>
-                 </size>
-                </property>
-               </spacer>
-              </item>
-             </layout>
-            </item>
-            <item row="2" column="0">
-             <widget class="QLabel" name="serialInterfaceTextLabel">
-              <property name="minimumSize">
-               <size>
-                <width>108</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>Serial Port/Host</string>
-              </property>
-              <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-              <property name="wordWrap">
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="1">
-             <widget class="QLineEdit" name="serialPortLineEdit">
-              <property name="sizePolicy">
-               <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-                <horstretch>0</horstretch>
-                <verstretch>0</verstretch>
-               </sizepolicy>
-              </property>
-             </widget>
-            </item>
-            <item row="3" column="0">
-             <widget class="QLabel" name="serialInterfaceTextLabel_6">
-              <property name="minimumSize">
-               <size>
-                <width>60</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>Handshake</string>
-              </property>
-              <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-              <property name="wordWrap">
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="3" column="1">
-             <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,1">
-              <property name="spacing">
-               <number>2</number>
-              </property>
-              <item>
-               <widget class="QComboBox" name="handshakeComboBox">
-                <property name="sizePolicy">
-                 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-                  <horstretch>0</horstretch>
-                  <verstretch>0</verstretch>
-                 </sizepolicy>
-                </property>
-                <item>
-                 <property name="text">
-                  <string>None</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text">
-                  <string>Hardware</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text">
-                  <string>XOn/XOff</string>
-                 </property>
-                </item>
-               </widget>
-              </item>
-              <item>
-               <spacer name="horizontalSpacer_3">
-                <property name="orientation">
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="sizeHint" stdset="0">
-                 <size>
-                  <width>40</width>
-                  <height>20</height>
-                 </size>
-                </property>
-               </spacer>
-              </item>
-             </layout>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <layout class="QGridLayout" name="gridLayout">
-            <item row="0" column="0">
-             <widget class="QLabel" name="serialInterfaceTextLabel_8">
-              <property name="minimumSize">
-               <size>
-                <width>60</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>Parity</string>
-              </property>
-              <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-              <property name="wordWrap">
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="0" column="1">
-             <widget class="QComboBox" name="parityComboBox">
-              <property name="maximumSize">
-               <size>
-                <width>70</width>
-                <height>16777215</height>
-               </size>
-              </property>
-              <item>
-               <property name="text">
-                <string>None</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>Odd</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>Even</string>
-               </property>
-              </item>
-             </widget>
-            </item>
-            <item row="0" column="2">
-             <spacer name="horizontalSpacer_7">
-              <property name="orientation">
-               <enum>Qt::Horizontal</enum>
-              </property>
-              <property name="sizeHint" stdset="0">
-               <size>
-                <width>40</width>
-                <height>20</height>
-               </size>
-              </property>
-             </spacer>
-            </item>
-            <item row="1" column="0">
-             <widget class="QLabel" name="serialInterfaceTextLabel_9">
-              <property name="minimumSize">
-               <size>
-                <width>60</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>Databits</string>
-              </property>
-              <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-              <property name="wordWrap">
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="1" column="1" colspan="2">
-             <layout class="QHBoxLayout" name="horizontalLayout_4">
-              <item>
-               <widget class="QComboBox" name="databitsComboBox">
-                <item>
-                 <property name="text">
-                  <string>7</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text">
-                  <string>8</string>
-                 </property>
-                </item>
-               </widget>
-              </item>
-              <item>
-               <spacer name="horizontalSpacer">
-                <property name="orientation">
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="sizeHint" stdset="0">
-                 <size>
-                  <width>40</width>
-                  <height>20</height>
-                 </size>
-                </property>
-               </spacer>
-              </item>
-             </layout>
-            </item>
-            <item row="2" column="0">
-             <widget class="QLabel" name="serialPortTextLabel">
-              <property name="minimumSize">
-               <size>
-                <width>60</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>Baudrate</string>
-              </property>
-              <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-              <property name="wordWrap">
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="2" column="1">
-             <widget class="QComboBox" name="baudrateComboBox">
-              <property name="maximumSize">
-               <size>
-                <width>70</width>
-                <height>16777215</height>
-               </size>
-              </property>
-              <property name="currentIndex">
-               <number>5</number>
-              </property>
-              <item>
-               <property name="text">
-                <string>300</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>600</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>1200</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>2400</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>4800</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>9600</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>19200</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>38400</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>57600</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>115200</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>230400</string>
-               </property>
-              </item>
-              <item>
-               <property name="text">
-                <string>460800</string>
-               </property>
-              </item>
-             </widget>
-            </item>
-            <item row="3" column="0">
-             <widget class="QLabel" name="stopbitsTextLabel">
-              <property name="minimumSize">
-               <size>
-                <width>60</width>
-                <height>0</height>
-               </size>
-              </property>
-              <property name="text">
-               <string>StopBits</string>
-              </property>
-              <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-              <property name="wordWrap">
-               <bool>false</bool>
-              </property>
-             </widget>
-            </item>
-            <item row="3" column="1" colspan="2">
-             <layout class="QHBoxLayout" name="horizontalLayout_5">
-              <item>
-               <widget class="QComboBox" name="stopbitsComboBox">
-                <item>
-                 <property name="text">
-                  <string>1</string>
-                 </property>
-                </item>
-                <item>
-                 <property name="text">
-                  <string>2</string>
-                 </property>
-                </item>
-               </widget>
-              </item>
-              <item>
-               <spacer name="horizontalSpacer_6">
-                <property name="orientation">
-                 <enum>Qt::Horizontal</enum>
-                </property>
-                <property name="sizeHint" stdset="0">
-                 <size>
-                  <width>40</width>
-                  <height>20</height>
-                 </size>
-                </property>
-               </spacer>
-              </item>
-             </layout>
-            </item>
-           </layout>
-          </item>
-         </layout>
-        </item>
-        <item>
-         <layout class="QHBoxLayout" name="horizontalLayout_11">
-          <item>
-           <widget class="QLabel" name="label">
-            <property name="text">
-             <string>PTT Control via:</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QRadioButton" name="catRadioButton">
-            <property name="text">
-             <string>CAT Command</string>
-            </property>
-            <property name="checked">
-             <bool>true</bool>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QRadioButton" name="rtsRadioButton">
-            <property name="text">
-             <string>RTS</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QRadioButton" name="dtrRadioButton">
-            <property name="text">
-             <string>DTR</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <spacer name="horizontalSpacer_12">
-            <property name="orientation">
-             <enum>Qt::Horizontal</enum>
-            </property>
-            <property name="sizeHint" stdset="0">
-             <size>
-              <width>40</width>
-              <height>20</height>
-             </size>
-            </property>
-           </spacer>
-          </item>
-         </layout>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_6">
-        <item>
-         <spacer name="horizontalSpacer_9">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item>
-         <widget class="QPushButton" name="restartPushButton">
-          <property name="text">
-           <string>Restart CAT Interface</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_10">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="groupBox_3">
-     <property name="palette">
-      <palette>
-       <active>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </active>
-       <inactive>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </inactive>
-       <disabled>
-        <colorrole role="WindowText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Button">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Light">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Midlight">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>231</red>
-           <green>231</green>
-           <blue>231</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Dark">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Mid">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>139</red>
-           <green>139</green>
-           <blue>139</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Text">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="BrightText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>255</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ButtonText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>104</red>
-           <green>104</green>
-           <blue>104</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Base">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Window">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="Shadow">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="AlternateBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>208</red>
-           <green>208</green>
-           <blue>208</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipBase">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>255</red>
-           <green>255</green>
-           <blue>220</blue>
-          </color>
-         </brush>
-        </colorrole>
-        <colorrole role="ToolTipText">
-         <brush brushstyle="SolidPattern">
-          <color alpha="255">
-           <red>0</red>
-           <green>0</green>
-           <blue>0</blue>
-          </color>
-         </brush>
-        </colorrole>
-       </disabled>
-      </palette>
-     </property>
-     <property name="autoFillBackground">
-      <bool>true</bool>
-     </property>
-     <property name="title">
-      <string>XMLRPC Interface</string>
-     </property>
-     <layout class="QVBoxLayout" name="verticalLayout_4">
-      <property name="spacing">
-       <number>2</number>
-      </property>
-      <property name="margin">
-       <number>1</number>
-      </property>
-      <item>
-       <layout class="QHBoxLayout" name="horizontalLayout_13">
-        <item>
-         <widget class="QCheckBox" name="enableXMLRPCCheckBox">
-          <property name="text">
-           <string>Enable XMLRPC Interface</string>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_14">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-        <item>
-         <widget class="QLabel" name="serialInterfaceTextLabel_5">
-          <property name="minimumSize">
-           <size>
-            <width>60</width>
-            <height>0</height>
-           </size>
-          </property>
-          <property name="text">
-           <string>Port</string>
-          </property>
-          <property name="alignment">
-           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-          </property>
-          <property name="wordWrap">
-           <bool>false</bool>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <widget class="QLineEdit" name="XMLRPCPortLineEdit">
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-         </widget>
-        </item>
-        <item>
-         <spacer name="horizontalSpacer_5">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-          <property name="sizeHint" stdset="0">
-           <size>
-            <width>40</width>
-            <height>20</height>
-           </size>
-          </property>
-         </spacer>
-        </item>
-       </layout>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_12">
-     <item>
-      <widget class="QLabel" name="serialPortTextLabel_2">
-       <property name="minimumSize">
-        <size>
-         <width>60</width>
-         <height>0</height>
-        </size>
-       </property>
-       <property name="text">
-        <string>TX on Delay</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-       <property name="wordWrap">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QDoubleSpinBox" name="txOnDelayDoubleSpinBox">
-       <property name="decimals">
-        <number>1</number>
-       </property>
-       <property name="maximum">
-        <double>5.000000000000000</double>
-       </property>
-       <property name="singleStep">
-        <double>0.100000000000000</double>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QLabel" name="serialPortTextLabel_3">
-       <property name="minimumSize">
-        <size>
-         <width>60</width>
-         <height>0</height>
-        </size>
-       </property>
-       <property name="text">
-        <string>in seconds</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-       <property name="wordWrap">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer name="horizontalSpacer_13">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <spacer name="verticalSpacer">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-     <property name="sizeHint" stdset="0">
-      <size>
-       <width>20</width>
-       <height>17</height>
-      </size>
-     </property>
-    </spacer>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/qsstv/sound/calibration.cpp b/qsstv/sound/calibration.cpp
index c6e00c7..d14bf92 100644
--- a/qsstv/sound/calibration.cpp
+++ b/qsstv/sound/calibration.cpp
@@ -31,7 +31,6 @@
 
 #define ITERATIONS 8000
 
-
 /**
  * \class calibration
  *
diff --git a/qsstv/sound/soundalsa.cpp b/qsstv/sound/soundalsa.cpp
index b069c0d..f78bf35 100644
--- a/qsstv/sound/soundalsa.cpp
+++ b/qsstv/sound/soundalsa.cpp
@@ -130,6 +130,8 @@ int soundAlsa::read(int &countAvailable)
 int soundAlsa::write(uint numFrames)
 {
   int error,framesWritten;
+  snd_pcm_sframes_t availp;
+  snd_pcm_sframes_t delayp;
   if((framesWritten =  snd_pcm_writei ( playbackHandle, tempTXBuffer, numFrames))<0)
   {
     alsaErrorHandler(framesWritten,"Error in writing to "+inputAudioDevice);
@@ -158,9 +160,30 @@ int soundAlsa::write(uint numFrames)
   {
     errorHandler("Sound write error",QString("Frames written = %1").arg(framesWritten));
   }
+  snd_pcm_avail_delay 	( playbackHandle,&availp,&delayp);
+  addToLog(QString("latency %1 %2").arg(availp).arg(delayp),LOGSOUND);
   return framesWritten;
 }
 
+void soundAlsa::waitPlaybackEnd()
+{
+
+//  int i;
+//  snd_pcm_sframes_t availp;
+//  snd_pcm_sframes_t delayp;
+
+  addToLog("waitPlaybackend",LOGSOUND);
+  snd_pcm_drain(playbackHandle);
+  addToLog("drain end",LOGSOUND);
+//  for(i=0;i<20;i++)
+//  {
+//  snd_pcm_avail_delay 	( playbackHandle,&availp,&delayp);
+//  addToLog(QString("latency%1 %2 %3").arg(i+1).arg(availp).arg(delayp),LOGSOUND);
+//  msleep(200);
+//  }
+}
+
+
 
 void soundAlsa::flushCapture()
 {
diff --git a/qsstv/sound/soundalsa.h b/qsstv/sound/soundalsa.h
index 0dd6f5c..09669d7 100644
--- a/qsstv/sound/soundalsa.h
+++ b/qsstv/sound/soundalsa.h
@@ -23,6 +23,7 @@ protected:
   void flushCapture();
   void flushPlayback();
   void closeDevices();
+  void waitPlaybackEnd();
 
 private:
   bool setupSoundParams(bool isCapture);
diff --git a/qsstv/sound/soundbase.cpp b/qsstv/sound/soundbase.cpp
index 96b9f41..9da6e1c 100644
--- a/qsstv/sound/soundbase.cpp
+++ b/qsstv/sound/soundbase.cpp
@@ -96,16 +96,17 @@ void soundBase::run()
         {
           prebuf=false;
           switchPlaybackState(PBRUNNING);
-          addToLog("playback started",LOGPERFORM);
+          addToLog("playback started",LOGSOUND);
         }
       break;
       case PBRUNNING:
         if (play()==0)
         {
-          addToLog(QString("playback stopped: delay=%1").arg(delay),LOGPERFORM);
+          addToLog(QString("playback stopped: delay=%1").arg(delay),LOGSOUND);
+          waitPlaybackEnd();
           msleep(delay);
           waveOut.close();
-          addToLog("playback stopped",LOGPERFORM);
+          addToLog("playback stopped",LOGSOUND);
           switchPlaybackState(PBINIT);
         }
         msleep(0);
@@ -221,6 +222,7 @@ bool soundBase::calibrate(bool isCapture)
   calibrationTime=0;
   ucalibrationTime=0;
   leadInCounter=0;
+  prevFrames=0;
   if (!isRunning()) start();
   if (isCapture)
   {
@@ -377,7 +379,9 @@ int soundBase::play()
   }
   txBuffer.copyNoCheck(tempTXBuffer,numFrames);
   addToLog(QString("frames to write: %1 at %2 buffered:%3").arg(numFrames).arg(txBuffer.getReadIndex()).arg(txBuffer.count()),LOGSOUND);
-  framesWritten=write(numFrames);
+
+//  framesWritten=write(numFrames);
+  framesWritten=write(DOWNSAMPLESIZE);
   addToLog(QString("frames written: %1").arg(framesWritten),LOGSOUND);
   if(framesWritten<0)
     {
diff --git a/qsstv/sound/soundbase.h b/qsstv/sound/soundbase.h
index 07f9e80..3a3bad0 100644
--- a/qsstv/sound/soundbase.h
+++ b/qsstv/sound/soundbase.h
@@ -24,9 +24,9 @@
 
 
 #define PERIODSIZE (DOWNSAMPLESIZE)
-#define BUFFERSIZE (8*DOWNSAMPLESIZE*2)
+#define BUFFERSIZE (8*DOWNSAMPLESIZE)
 #define CALIBRATIONSIZE (PERIODSIZE)
-#define CALIBRATIONLEADIN 20
+#define CALIBRATIONLEADIN 80
 
 
 class soundBase : public QThread
@@ -78,6 +78,7 @@ protected:
   virtual void prepareCapture() {;}
   virtual void preparePlayback() {;}
   virtual void closeDevices()=0;
+  virtual void waitPlaybackEnd()=0;
 
 
   int sampleRate;
diff --git a/qsstv/sound/soundpulse.cpp b/qsstv/sound/soundpulse.cpp
index 2fe081b..7dfef99 100644
--- a/qsstv/sound/soundpulse.cpp
+++ b/qsstv/sound/soundpulse.cpp
@@ -128,6 +128,10 @@ int soundPulse::write(uint numFrames)
   return numFrames;
 }
 
+void soundPulse::waitPlaybackEnd()
+{
+
+}
 
 
 void soundPulse::flushCapture()
diff --git a/qsstv/sound/soundpulse.h b/qsstv/sound/soundpulse.h
index 50e2f81..e1c9e32 100644
--- a/qsstv/sound/soundpulse.h
+++ b/qsstv/sound/soundpulse.h
@@ -26,6 +26,7 @@ protected:
   void flushCapture();
   void flushPlayback();
   void closeDevices();
+  void waitPlaybackEnd();
 private:
   struct stream_data {
     pa_simple*	stream;
diff --git a/qsstv/sound/waterfalltext.cpp b/qsstv/sound/waterfalltext.cpp
index 918622e..f874e54 100644
--- a/qsstv/sound/waterfalltext.cpp
+++ b/qsstv/sound/waterfalltext.cpp
@@ -148,7 +148,8 @@ void waterfallText::setupImage(QString txt)
   image.fill(Qt::black);
   p.begin(&image);
   p.setPen(pen);
-  p.setFont(QFont(wfFont,wfFontSize,QFont::Light));
+  if(wfBold) p.setFont(QFont(wfFont,wfFontSize,QFont::Bold));
+  else p.setFont(QFont(wfFont,wfFontSize,QFont::Light));
   rct=p.boundingRect(QRect(0,0,imageWidth,30),Qt::AlignTop|Qt::AlignCenter,txt);
   p.end();
   height=rct.height();
@@ -157,7 +158,8 @@ void waterfallText::setupImage(QString txt)
   image.fill(Qt::black);
   p.begin(&image);
   p.setPen(pen);
-  p.setFont(QFont(wfFont,wfFontSize,QFont::Light));
+  if(wfBold) p.setFont(QFont(wfFont,wfFontSize,QFont::Bold));
+  else p.setFont(QFont(wfFont,wfFontSize,QFont::Light));
   p.drawText(QRectF(0,0,width,height),Qt::AlignCenter,txt);
   p.end();
   line=image.height();
diff --git a/qsstv/sstv/modes/modebw.cpp b/qsstv/sstv/modes/modebw.cpp
index 48b782f..110119e 100644
--- a/qsstv/sstv/modes/modebw.cpp
+++ b/qsstv/sstv/modes/modebw.cpp
@@ -107,19 +107,19 @@ modeBase::embState modeBW::txSetupLine()
   start=lineTimeTableTX[lineCounter];
   switch(subLine)
 		{
-			case 0:
+      case 1:
         calcPixelPositionTable(GREENLINE,true);
 				pixelArrayPtr=greenArrayPtr;
 				return MBPIXELS;
-			case 1:
+      case 2:
         txFreq=lowerFreq;
 				txDur=(unsigned int)rint(fp);
 				return MBTXGAP;
-			case 2:
+      case 3:
         txFreq=syncFreq;
 				txDur=(unsigned int)rint(syncDuration);
 				return MBTXGAP;
-			case 3:
+      case 0:
         txFreq=lowerFreq;
 				txDur=(unsigned int)rint(bp);
 				return MBTXGAP;
diff --git a/qsstv/sstv/sstvparam.cpp b/qsstv/sstv/sstvparam.cpp
index a561aa7..390b0a6 100644
--- a/qsstv/sstv/sstvparam.cpp
+++ b/qsstv/sstv/sstvparam.cpp
@@ -318,7 +318,7 @@ sSSTVParam SSTVTable[NUMSSTVMODES+1]=
   {"P3"        ,"P3" ,    P3,      203.06420,640,496,496,0x71  ,0.00520,0.00210,0.00080,0.00250,0.00520,0.00104,0.00104,0.00104,0.,1900,400 },
   {"P5"        ,"P5" ,    P5,      304.59600,640,496,496,0x72  ,0.00780,0.00160,0.00160,0.00160,0.00780,0.00160,0.00160,0.00160,0.,1900,400 },
   {"P7"        ,"P7" ,    P7,      406.12800,640,496,496,0xF3  ,0.01040,0.00210,0.00210,0.00210,0.01040,0.00210,0.00210,0.00210,0.,1900,400 },
-  {"B/W 8"     ,"BW8" ,   BW8,       8.02850,160,120,120,0x82  ,0.00600,0.00050,0.00150,0.00000,0.00600,0.00100,0.00100,0.00000,0.,1900,400 },
+  {"B/W 8"     ,"BW8" ,   BW8,       8.02800,160,120,120,0x82  ,0.00600,0.00050,0.00050,0.00000,0.00600,0.00100,0.00050,0.00000,0.,1900,400 },
   {"B/W 12"    ,"BW12" ,  BW12,     12.00100,160,120,120,0x86  ,0.00600,0.00050,0.00150,0.00000,0.00600,0.00100,0.00100,0.00000,0.,1900,400 },
   {"PD50"      ,"PD50",   PD50,     49.68770,320,256,128,0xDD  ,0.02000,0.00000,0.00208,0.00000,0.02000,0.00000,0.00230,0.00000,0.,1900,400 },
   {"PD90"      ,"PD90",   PD90,     89.99500,320,256,128,0x63  ,0.02000,0.00000,0.00208,0.00000,0.02000,0.00000,0.00230,0.00000,0.,1900,400 },
diff --git a/qsstv/sstv/sstvrx.cpp b/qsstv/sstv/sstvrx.cpp
index d4c58c6..283a897 100644
--- a/qsstv/sstv/sstvrx.cpp
+++ b/qsstv/sstv/sstvrx.cpp
@@ -429,9 +429,14 @@ unsigned int sstvRx::setOffset(unsigned int offset,bool ask)
     {
       xOffset=offset*1000;
     }
+  syncNarrowProc.clear();
+  syncWideProc.clear();
+  scopeViewerData->clear();
   syncNarrowProc.setOffset(xOffset);
   syncWideProc.setOffset(xOffset);
   scopeViewerData->setOffset(xOffset);
+
+
   return xOffset/1000;
 }
 #endif
diff --git a/qsstv/sstv/sstvtx.cpp b/qsstv/sstv/sstvtx.cpp
index 0c058e7..99551b2 100644
--- a/qsstv/sstv/sstvtx.cpp
+++ b/qsstv/sstv/sstvtx.cpp
@@ -9,6 +9,7 @@
 #include "txfunctions.h"
 
 
+
 sstvTx::sstvTx()
 {
   currentMode=0;
@@ -30,7 +31,7 @@ void sstvTx::init()
 void sstvTx::sendPreamble()
 {
   addToLog("txFunc:sendPreamble",LOGTXFUNC);
-  if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
+
   synthesPtr->sendTone(0.1,1900.,0,true);
   synthesPtr->sendTone(0.1,1500.,0,true);
   synthesPtr->sendTone(0.1,1900.,0,true);
@@ -52,31 +53,31 @@ void sstvTx::sendVIS()
   int t=txSSTVParam.VISCode;
   addToLog("txFunc:sendVis",LOGTXFUNC);
   if(currentMode->isNarrow())
+  {
+    l=24;
+    synthesPtr->sendTone(0.300,1900,0,true);
+    synthesPtr->sendTone(0.100,2100,0,true);
+    synthesPtr->sendTone(0.022,1900,0,true); // startbit
+    for (i=0;i<l;i++)
     {
-      l=24;
-      synthesPtr->sendTone(0.300,1900,0,true);
-      synthesPtr->sendTone(0.100,2100,0,true);
-      synthesPtr->sendTone(0.022,1900,0,true); // startbit
-      for (i=0;i<l;i++)
-        {
-          if((t&1)==1) synthesPtr->sendTone(0.022,1900,0,true);
-          else synthesPtr->sendTone(0.022,2100,0,true);
-          t>>=1;
-        }
+      if((t&1)==1) synthesPtr->sendTone(0.022,1900,0,true);
+      else synthesPtr->sendTone(0.022,2100,0,true);
+      t>>=1;
     }
+  }
   else
+  {
+    if ((t&0xFF)==0x23) l=16;
+    else l=8;
+    synthesPtr->sendTone(0.030,1200,0,true); // startbit
+    for (i=0;i<l;i++)
     {
-      if ((t&0xFF)==0x23) l=16;
-      else l=8;
-      synthesPtr->sendTone(0.030,1200,0,true); // startbit
-      for (i=0;i<l;i++)
-        {
-          if((t&1)==1) synthesPtr->sendTone(0.030,1100,0,true);
-          else synthesPtr->sendTone(0.030,1300,0,true);
-          t>>=1;
-        }
-      synthesPtr->sendTone(0.030,1200,0,true); // stopbit
+      if((t&1)==1) synthesPtr->sendTone(0.030,1100,0,true);
+      else synthesPtr->sendTone(0.030,1300,0,true);
+      t>>=1;
     }
+    synthesPtr->sendTone(0.030,1200,0,true); // stopbit
+  }
 }
 
 
@@ -84,92 +85,92 @@ void sstvTx::sendVIS()
 bool sstvTx::create(esstvMode m,DSPFLOAT clock)
 {
   if((oldMode==m) && (currentMode!=NULL))
-    {
-      currentMode->init(clock);
-      return true;
-    }
+  {
+    currentMode->init(clock);
+    return true;
+  }
   oldMode=m;
   if(currentMode) delete currentMode;
   currentMode=0;
   switch (m)
-    {
-    case M1:
-    case M2:
-      currentMode=new modeGBR(m,TXSTRIPE,true,false);
-      break;
-    case S1:
-    case S2:
-    case SDX:
-      currentMode=new modeGBR2(m,TXSTRIPE,true,false);
-      break;
-    case R36:
-      currentMode=new modeRobot1(m,TXSTRIPE,true,false);
-      break;
-    case R24:
-    case R72:
-    case MR73:
-    case MR90:
-    case MR115:
-    case MR140:
-    case MR175:
-    case ML180:
-    case ML240:
-    case ML280:
-    case ML320:
-      currentMode=new modeRobot2(m,TXSTRIPE,true,false);
-      break;
-    case SC2_60:
-    case SC2_120:
-    case SC2_180:
-    case P3:
-    case P5:
-    case P7:
-    case MC110N:
-    case MC140N:
-    case MC180N:
-      currentMode=new modeRGB(m,TXSTRIPE,true,false);
-      break;
-    case FAX480:
-    case BW8:
-    case BW12:
-      currentMode=new modeBW(m,TXSTRIPE,true,false);
-      break;
-    case AVT24:
-    case AVT90:
-    case AVT94:
-      currentMode=new modeAVT(m,TXSTRIPE,true,false);
-      break;
-    case PD50:
-    case PD90:
-    case PD120:
-    case PD160:
-    case PD180:
-    case PD240:
-    case PD290:
-    case MP73:
-    case MP115:
-    case MP140:
-    case MP175:
-      currentMode=new modePD(m,TXSTRIPE,true,false);
-      break;
+  {
+  case M1:
+  case M2:
+    currentMode=new modeGBR(m,TXSTRIPE,true,false);
+    break;
+  case S1:
+  case S2:
+  case SDX:
+    currentMode=new modeGBR2(m,TXSTRIPE,true,false);
+    break;
+  case R36:
+    currentMode=new modeRobot1(m,TXSTRIPE,true,false);
+    break;
+  case R24:
+  case R72:
+  case MR73:
+  case MR90:
+  case MR115:
+  case MR140:
+  case MR175:
+  case ML180:
+  case ML240:
+  case ML280:
+  case ML320:
+    currentMode=new modeRobot2(m,TXSTRIPE,true,false);
+    break;
+  case SC2_60:
+  case SC2_120:
+  case SC2_180:
+  case P3:
+  case P5:
+  case P7:
+  case MC110N:
+  case MC140N:
+  case MC180N:
+    currentMode=new modeRGB(m,TXSTRIPE,true,false);
+    break;
+  case FAX480:
+  case BW8:
+  case BW12:
+    currentMode=new modeBW(m,TXSTRIPE,true,false);
+    break;
+  case AVT24:
+  case AVT90:
+  case AVT94:
+    currentMode=new modeAVT(m,TXSTRIPE,true,false);
+    break;
+  case PD50:
+  case PD90:
+  case PD120:
+  case PD160:
+  case PD180:
+  case PD240:
+  case PD290:
+  case MP73:
+  case MP115:
+  case MP140:
+  case MP175:
+    currentMode=new modePD(m,TXSTRIPE,true,false);
+    break;
 
-    case MP73N:
-    case MP110N:
-    case MP140N:
-      currentMode=new modePD(m,TXSTRIPE,true,true);
-      break;
-    default:
-      m=NOTVALID;
-      break;
-    }
+  case MP73N:
+  case MP110N:
+  case MP140N:
+    currentMode=new modePD(m,TXSTRIPE,true,true);
+    break;
+  default:
+    m=NOTVALID;
+    break;
+  }
   if (m!=NOTVALID)
-    {
-      initializeSSTVParametersIndex(m,true);
-      QString s=getSSTVModeNameLong(m);
-      addToLog("create: create TX mode",LOGTXFUNC);
-      currentMode->init(clock);
-      return true;
-    }
+  {
+    initializeSSTVParametersIndex(m,true);
+    QString s=getSSTVModeNameLong(m);
+    addToLog("create: create TX mode",LOGTXFUNC);
+    currentMode->init(clock);
+    return true;
+  }
   return false;
 }
 
@@ -194,17 +195,18 @@ double sstvTx::calcTxTime(int overheadTime)
   else tim+=10.*0.03;
   tim+=txSSTVParam.imageTime;
 
-  if(enableCW)
-    {
-      tim+=0.5 ;//CW silence gap
-      initCW(cwText);
-      tim+=getCWDuration();
-      tim+=0.3; // trailer;
-    }
+//  if(enableCW)
+  if(useCW)
+  {
+    tim+=0.5 ;//CW silence gap
+    initCW(cwText);
+    tim+=getCWDuration();
+    tim+=0.3; // trailer;
+  }
   else
-    {
-      tim+=FSKIDTime();
-    }
+  {
+    tim+=FSKIDTime();
+  }
   tim+=overheadTime;
   return tim;
 }
@@ -212,19 +214,20 @@ double sstvTx::calcTxTime(int overheadTime)
 bool sstvTx::sendImage(imageViewer *ivPtr)
 {
   modeBase::eModeBase mb;
+  if(useVOX) synthesPtr->sendTone(1.,1700.,0,false);
   if(txSSTVParam.mode==FAX480)
+  {
+    for (int i=0;i<1220;i++)
     {
-      for (int i=0;i<1220;i++)
-        {
-          synthesPtr->sendTone(0.00205,1500,0,true);
-          synthesPtr->sendTone(0.00205,2300,0,true);
-        }
+      synthesPtr->sendTone(0.00205,1500,0,true);
+      synthesPtr->sendTone(0.00205,2300,0,true);
     }
+  }
   else
-    {
-      sendPreamble();
-      sendVIS();
-    }
+  {
+    sendPreamble();
+    sendVIS();
+  }
   addToLog("txFunc: sendImage",LOGTXFUNC);
   mb=currentMode->transmitImage(ivPtr);
   if(mb==modeBase::MBABORTED) return false;
@@ -250,3 +253,95 @@ bool sstvTx::aborted()
   else return true;
 
 }
+
+void sstvTx::createTestPattern(imageViewer *ivPtr,etpSelect sel)
+{
+  int i,j;
+  QRgb *pixelPtr;
+  int nb=txSSTVParam.numberOfPixels;
+  int nl=txSSTVParam.numberOfDisplayLines;
+  ivPtr->clear();
+  ivPtr->createImage(QSize(nb,nl),imageBackGroundColor,false);
+  switch (sel)
+  {
+  case TPRASTER:
+    for(i=0;i<nl;i++)
+    {
+      pixelPtr=ivPtr->getScanLineAddress(i);
+      if(i<2)
+      {
+        int val=0;;
+        for(j=0;j<nb;j++) pixelPtr[j]=qRgb(val,val,val);
+      }
+      else if(i>=(nl-2))
+      {
+        {
+          int val=0;;
+          for(j=0;j<nb;j++) pixelPtr[j]=qRgb(val,val,val);
+        }
+      }
+
+      else
+      {
+        for(j=0;j<nb/4;j++)
+        {
+          int val=(j%2)*255;
+          pixelPtr[j]=qRgb(val,val,val);
+        }
+        for(;j<nb/2;j++)
+        {
+          int val=((j/2)%2)*255;
+          pixelPtr[j]=qRgb(val,val,val);
+        }
+        for(;j<3*nb/4;j++)
+        {
+          int val=0;
+          pixelPtr[j]=qRgb(val,val,val);
+        }
+        for(;j<nb;j++)
+        {
+          int val=255;
+          pixelPtr[j]=qRgb(val,val,val);
+        }
+
+      }
+    }
+      break;
+  case TPWHITE:
+        for(i=0;i<nl;i++)
+        {
+          pixelPtr=ivPtr->getScanLineAddress(i);
+          for(j=0;j<nb;j++)
+          {
+            int val=255;
+            pixelPtr[j]=qRgb(val,val,val);
+          }
+        }
+        break;
+      case TPBLACK:
+        for(i=0;i<nl;i++)
+        {
+          pixelPtr=ivPtr->getScanLineAddress(i);
+          for(j=0;j<nb;j++)
+          {
+            int val=0;
+            pixelPtr[j]=qRgb(val,val,val);
+          }
+        }
+        break;
+      case TPGRAY:
+        for(i=0;i<nl;i++)
+        {
+          pixelPtr=ivPtr->getScanLineAddress(i);
+          for(j=0;j<nb;j++)
+          {
+            int val=128;
+            pixelPtr[j]=qRgb(val,val,val);
+          }
+        }
+        break;
+
+    }
+  ivPtr->setValidImage(true);
+  ivPtr->displayImage();
+}
diff --git a/qsstv/sstv/sstvtx.h b/qsstv/sstv/sstvtx.h
index 7675376..742caa3 100644
--- a/qsstv/sstv/sstvtx.h
+++ b/qsstv/sstv/sstvtx.h
@@ -1,6 +1,7 @@
 #ifndef SSTVTX_H
 #define SSTVTX_H
 #include "sstvparam.h"
+#include "testpatternselection.h"
 
 
 class modeBase;
@@ -17,6 +18,7 @@ public:
   void abort();
   bool aborted();
   void applyTemplate(QString templateFilename, bool useTemplate, imageViewer *ivPtr);
+  void createTestPattern(imageViewer *ivPtr, etpSelect sel);
 
 
 private:
diff --git a/qsstv/sstv/syncprocessor.cpp b/qsstv/sstv/syncprocessor.cpp
index 4cd2e95..cc56feb 100644
--- a/qsstv/sstv/syncprocessor.cpp
+++ b/qsstv/sstv/syncprocessor.cpp
@@ -1131,4 +1131,15 @@ void syncProcessor::setOffset(unsigned int dataScopeOffset)
   scopeViewerSyncNarrow->setOffset(xOffset);
   scopeViewerSyncWide->setOffset(xOffset);
 }
+
+void syncProcessor::clear()
+{
+  scopeViewerSyncNarrow->clear();
+  scopeViewerSyncWide->clear();
+  xOffset=0;
+  scopeViewerSyncNarrow->setOffset(xOffset);
+  scopeViewerSyncWide->setOffset(xOffset);
+}
+
+
 #endif
diff --git a/qsstv/sstv/syncprocessor.h b/qsstv/sstv/syncprocessor.h
index 171ffbc..5d34386 100644
--- a/qsstv/sstv/syncprocessor.h
+++ b/qsstv/sstv/syncprocessor.h
@@ -137,6 +137,7 @@ public:
     newClock=false;
     return nc;
   }
+  void clear();
   void recalculateMatchArray();
   DSPFLOAT getNewClock() {return modifiedClock;}
   void setEnabled(bool enable) {enabled=enable;}
diff --git a/qsstv/utils/filewatcher.cpp b/qsstv/utils/filewatcher.cpp
new file mode 100644
index 0000000..4936e9a
--- /dev/null
+++ b/qsstv/utils/filewatcher.cpp
@@ -0,0 +1,19 @@
+#include "filewatcher.h"
+#include "configparams.h"
+#include "gallerywidget.h"
+
+fileWatcher::fileWatcher()
+{
+
+}
+
+void fileWatcher::init()
+{
+  if(directories().count()>0)
+    {
+      removePaths(directories());
+    }
+  addPath(txStockImagesPath);
+  addPath(templatesPath);
+  connect(this,SIGNAL(directoryChanged(QString)),galleryWidgetPtr,SLOT(slotDirChanged(QString)));
+}
diff --git a/qsstv/utils/filewatcher.h b/qsstv/utils/filewatcher.h
new file mode 100644
index 0000000..2d66d84
--- /dev/null
+++ b/qsstv/utils/filewatcher.h
@@ -0,0 +1,18 @@
+#ifndef FILEWATCHER_H
+#define FILEWATCHER_H
+
+#include <QObject>
+#include <QFileSystemWatcher>
+
+class fileWatcher : public QFileSystemWatcher
+{
+public:
+  fileWatcher();
+  void init();
+
+signals:
+
+public slots:
+};
+
+#endif // FILEWATCHER_H
diff --git a/qsstv/widgets/extviewer.cpp b/qsstv/widgets/extviewer.cpp
index 40770cd..135e7e6 100644
--- a/qsstv/widgets/extviewer.cpp
+++ b/qsstv/widgets/extviewer.cpp
@@ -19,8 +19,8 @@ extViewer::~extViewer()
 void extViewer::setup(QString fn)
 {
   int fw,fh;
-
   // we want the original image
+  ui->imViewer->stretch=true;
   ui->imViewer->openImage(fn,false,false,false);
   fileName=fn;
   QFileInfo fi(fn);
diff --git a/qsstv/widgets/imageviewer.cpp b/qsstv/widgets/imageviewer.cpp
index 289c503..e308442 100644
--- a/qsstv/widgets/imageviewer.cpp
+++ b/qsstv/widgets/imageviewer.cpp
@@ -82,6 +82,7 @@ imageViewer::imageViewer(QWidget *parent): QLabel(parent)
 
   init(RXIMG);
   activeMovie=false;
+  stretch=false;
   //
 }
 
@@ -112,7 +113,8 @@ bool imageViewer::openImage(QString &filename,QString start,bool ask,bool showMe
   editorScene ed;
   bool success=false;
   bool cacheHit=false;
-  cacheFileName=finf.absolutePath()+"/cache/"+finf.baseName()+finf.created().toString()+".png";
+
+
 
   if(activeMovie)
   {
@@ -133,6 +135,7 @@ bool imageViewer::openImage(QString &filename,QString start,bool ask,bool showMe
 
   if(fromCache)
   {
+    cacheFileName=finf.absolutePath()+"/cache/"+finf.baseName()+finf.created().toString()+".png";
     if(tempImage.load(cacheFileName))
     {
       cacheHit=true;
@@ -188,14 +191,15 @@ bool imageViewer::openImage(QString &filename,QString start,bool ask,bool showMe
       tempImage.setText("orgHeight",QString::number(orgHeight));
       tempImage.save(cacheFileName,"PNG");
     }
+    stretch=true;
     displayedImage=tempImage;
   }
   else
   {
+    sourceImage=tempImage.convertToFormat(QImage::Format_ARGB32_Premultiplied);
     orgWidth=tempImage.width();
     orgHeight=tempImage.height();
-    displayedImage=tempImage;
-    sourceImage=tempImage;
+    displayedImage=sourceImage;
   }
 
   imageFileName=filename;
@@ -318,11 +322,15 @@ void imageViewer::displayImage()
   }
   if(hasScaledContents() || (displayedImage.width()>width()) || (displayedImage.height()>height()) || stretch)
   {
+    QPixmap mp;
+    mp=QPixmap::fromImage(displayedImage.scaled(width()-2,height()-2,Qt::KeepAspectRatio,Qt::SmoothTransformation));
     setPixmap(QPixmap::fromImage(displayedImage.scaled(width()-2,height()-2,Qt::KeepAspectRatio,Qt::SmoothTransformation)));
-
+//    qDebug()<< "mp size" << mp.width() << mp.height() << hasScaledContents() << "display width" << width() << height() << imageFileName;
   }
   else
   {
+//    qDebug()<< "xy" << width() << height() << hasScaledContents();
+
     setPixmap(QPixmap::fromImage(displayedImage));
   }
 
@@ -399,6 +407,7 @@ void imageViewer::setType(thumbType tp)
   case RXDRMTHUMB:
   case TXSSTVTHUMB:
   case TXDRMTHUMB:
+    popup->addAction(toTXAct);
     popup->addAction(printAct);
     popup->addAction(deleteAct);
     popup->addAction(viewAct);
diff --git a/qsstv/widgets/imageviewer.h b/qsstv/widgets/imageviewer.h
index 4c44e12..b106b93 100644
--- a/qsstv/widgets/imageviewer.h
+++ b/qsstv/widgets/imageviewer.h
@@ -66,6 +66,11 @@ public:
 //  void scale( int w, int h);
   QImage * getImagePtr() {return &sourceImage;}
   bool hasValidImage();
+  void setValidImage(bool v)
+  {
+    validImage=v;
+  }
+
   void createImage(QSize sz, QColor fill, bool scale);
   QRgb *getScanLineAddress(int line);
   void copy(imageViewer *src);
diff --git a/qsstv/widgets/testpatternselection.cpp b/qsstv/widgets/testpatternselection.cpp
new file mode 100644
index 0000000..50e832d
--- /dev/null
+++ b/qsstv/widgets/testpatternselection.cpp
@@ -0,0 +1,22 @@
+#include "testpatternselection.h"
+#include "ui_testpatternselection.h"
+
+testPatternSelection::testPatternSelection(QWidget *parent) :
+  QDialog(parent),
+  ui(new Ui::testPatternSelection)
+{
+  ui->setupUi(this);
+}
+
+testPatternSelection::~testPatternSelection()
+{
+  delete ui;
+}
+
+etpSelect testPatternSelection::getSelection()
+{
+ if(ui->rasterRadioButton->isChecked()) return TPRASTER;
+ else if(ui->whiteRadioButton->isChecked()) return TPWHITE;
+ else if(ui->blackRadioButton->isChecked()) return TPBLACK;
+ return TPGRAY;
+}
diff --git a/qsstv/widgets/testpatternselection.h b/qsstv/widgets/testpatternselection.h
new file mode 100644
index 0000000..2611563
--- /dev/null
+++ b/qsstv/widgets/testpatternselection.h
@@ -0,0 +1,25 @@
+#ifndef TESTPATTERNSELECTION_H
+#define TESTPATTERNSELECTION_H
+
+#include <QDialog>
+
+enum etpSelect {TPBLACK,TPWHITE,TPGRAY,TPRASTER};
+
+namespace Ui {
+class testPatternSelection;
+}
+
+class testPatternSelection : public QDialog
+{
+  Q_OBJECT
+
+public:
+  explicit testPatternSelection(QWidget *parent = 0);
+  ~testPatternSelection();
+  etpSelect getSelection();
+
+private:
+  Ui::testPatternSelection *ui;
+};
+
+#endif // TESTPATTERNSELECTION_H
diff --git a/qsstv/widgets/testpatternselection.ui b/qsstv/widgets/testpatternselection.ui
new file mode 100644
index 0000000..b2d003a
--- /dev/null
+++ b/qsstv/widgets/testpatternselection.ui
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>testPatternSelection</class>
+ <widget class="QDialog" name="testPatternSelection">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>184</width>
+    <height>205</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_3">
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Select Test Pattern</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_2">
+      <property name="spacing">
+       <number>2</number>
+      </property>
+      <property name="leftMargin">
+       <number>2</number>
+      </property>
+      <property name="topMargin">
+       <number>2</number>
+      </property>
+      <property name="rightMargin">
+       <number>2</number>
+      </property>
+      <property name="bottomMargin">
+       <number>2</number>
+      </property>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <item>
+         <layout class="QVBoxLayout" name="verticalLayout">
+          <item>
+           <widget class="QRadioButton" name="rasterRadioButton">
+            <property name="text">
+             <string>Raster</string>
+            </property>
+            <property name="autoExclusive">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="whiteRadioButton">
+            <property name="text">
+             <string>White</string>
+            </property>
+            <property name="autoExclusive">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="blackRadioButton">
+            <property name="text">
+             <string>Black</string>
+            </property>
+            <property name="autoExclusive">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QRadioButton" name="grayRadioButton">
+            <property name="text">
+             <string>Gray</string>
+            </property>
+            <property name="autoExclusive">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+        <item>
+         <spacer name="horizontalSpacer">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>testPatternSelection</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>testPatternSelection</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/qsstv.git



More information about the pkg-hamradio-commits mailing list