From ab4aa25cf3e679197a5aa82a70b3e9d503416994 Mon Sep 17 00:00:00 2001 From: "Edson W. R. Pereira" Date: Sun, 28 Apr 2013 14:47:45 +0000 Subject: [PATCH] Corrected GUI layout resizing issues on Linux. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@3237 ab8295b8-cf94-4d9e-aec4-7959e3be5d79 --- mainwindow.cpp | 2 +- mainwindow.ui | 2206 ++++++++++++++++++++++++------------------------ rigclass.cpp | 3 +- rigclass.h | 277 ++++++ wsjtx.pro | 5 +- 5 files changed, 1402 insertions(+), 1091 deletions(-) create mode 100644 rigclass.h diff --git a/mainwindow.cpp b/mainwindow.cpp index 032a2e519..e9900ffd0 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -1,4 +1,4 @@ -//--------------------------------------------------------------- MainWindow +//-------------------------------------------------------------- MainWindow #include "mainwindow.h" #include "ui_mainwindow.h" #include "devsetup.h" diff --git a/mainwindow.ui b/mainwindow.ui index 2ca16edad..a3b236551 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -35,9 +35,12 @@ - + - + + + QLayout::SetDefaultConstraint + @@ -56,7 +59,7 @@ - 300 + 200 100 @@ -284,7 +287,7 @@ p, li { white-space: pre-wrap; } - 300 + 200 100 @@ -503,7 +506,837 @@ p, li { white-space: pre-wrap; } - + + + QLayout::SetMinimumSize + + + + + + 0 + 0 + + + + + 283 + 222 + + + + QFrame::StyledPanel + + + QFrame::Plain + + + 0 + + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + 200 + + + + QTabWidget::West + + + QTabWidget::Triangular + + + 0 + + + + 1 + + + + 6 + + + 4 + + + 1 + + + 0 + + + 0 + + + + + 6 + + + 5 + + + + + + 40 + 16777215 + + + + Qt::LeftToRight + + + Tx 1 + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + true + + + buttonGroup + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + 200 + 0 + + + + + 150 + 24 + + + + + 150 + 16777215 + + + + + Droid Sans + 50 + false + + + + + + + + + + + + 40 + 16777215 + + + + Tx 3 + + + + + + + + 40 + 16777215 + + + + Tx 4 + + + + + + + Next + + + + + + + + 200 + 0 + + + + + 150 + 24 + + + + + 150 + 16777215 + + + + + + + + + 200 + 0 + + + + + 150 + 24 + + + + + 150 + 16777215 + + + + + + + + + 40 + 16777215 + + + + Tx 5 + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + Now + + + Qt::AlignCenter + + + + + + + + 200 + 0 + + + + + 150 + 0 + + + + + 150 + 16777215 + + + + Generate Std Msgs + + + + + + + + 200 + 0 + + + + + 150 + 24 + + + + + 150 + 16777215 + + + + + + + + + 200 + 0 + + + + + 150 + 24 + + + + + 150 + 16777215 + + + + + + + + + 40 + 16777215 + + + + Tx 6 + + + + + + + + 40 + 16777215 + + + + Tx 2 + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + 16 + 0 + + + + + 0 + 20 + + + + + 20 + 16777215 + + + + + + + buttonGroup + + + + + + + + 200 + 0 + + + + + 150 + 24 + + + + + 150 + 16777215 + + + + + + + + + + + 2 + + + + 0 + + + 0 + + + + + 6 + + + 2 + + + 2 + + + + + 2 + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + Calling CQ + + + Qt::AlignCenter + + + + + + + Answer CQ + + + + + + + Send 73 + + + + + + + Call CQ + + + + + + + Send Report + + + + + + + Send RRR + + + + + + + Answer Caller + + + + + + + + 0 + 30 + + + + + 16777215 + 30 + + + + Answering CQ + + + Qt::AlignCenter + + + + + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + true + + + + + + + + 0 + 0 + + + + + 0 + 26 + + + + Gen msg + + + true + + + + + + + + + + + + 0 + 0 + + + + + 150 + 0 + + + + + + + + + 0 + 0 + + + + + 0 + 26 + + + + Free msg + + + + + + + + + + + + + + + + + + + 0 + 0 + + + + + 0 + 23 + + + + + 16777215 + 16777215 + + + + + + + + + 252 + 252 + 252 + + + + + + + 159 + 175 + 213 + + + + + + + + + 252 + 252 + 252 + + + + + + + 159 + 175 + 213 + + + + + + + + + 159 + 175 + 213 + + + + + + + 159 + 175 + 213 + + + + + + + + true + + + DX Grid + + + Qt::AlignCenter + + + 2 + + + @@ -591,8 +1424,71 @@ p, li { white-space: pre-wrap; } + + + + 5 + + + + + + 0 + 0 + + + + + 40 + 16777215 + + + + Report + + + + + + + + 0 + 0 + + + + + 55 + 0 + + + + + 55 + 16777215 + + + + -50 + + + 49 + + + -15 + + + + + + + + 0 + 0 + + 0 @@ -639,723 +1535,39 @@ p, li { white-space: pre-wrap; } - - - - - 0 - 230 - - - - QTabWidget::West - - - QTabWidget::Triangular - - - 0 - - - - 1 - - - - 6 - - - 4 - - - 1 - - - 0 - - - 0 - - - - - 6 - - - 5 - - - - - - 40 - 16777215 - - - - Qt::LeftToRight - - - Tx 1 - - - - - - - - 16 - 0 - - - - - 0 - 20 - - - - - 20 - 16777215 - - - - - - - buttonGroup - - - - - - - - 16 - 0 - - - - - 0 - 20 - - - - - 20 - 16777215 - - - - - - - true - - - buttonGroup - - - - - - - - 16 - 0 - - - - - 0 - 20 - - - - - 20 - 16777215 - - - - - - - buttonGroup - - - - - - - - 200 - 0 - - - - - 150 - 24 - - - - - 150 - 16777215 - - - - - Droid Sans - 50 - false - - - - - - - - - - - - 40 - 16777215 - - - - Tx 3 - - - - - - - - 40 - 16777215 - - - - Tx 4 - - - - - - - Next - - - - - - - - 200 - 0 - - - - - 150 - 24 - - - - - 150 - 16777215 - - - - - - - - - 200 - 0 - - - - - 150 - 24 - - - - - 150 - 16777215 - - - - - - - - - 40 - 16777215 - - - - Tx 5 - - - - - - - - 16 - 0 - - - - - 0 - 20 - - - - - 20 - 16777215 - - - - - - - buttonGroup - - - - - - - Now - - - Qt::AlignCenter - - - - - - - - 200 - 0 - - - - - 150 - 0 - - - - - 150 - 16777215 - - - - Generate Std Msgs - - - - - - - - 200 - 0 - - - - - 150 - 24 - - - - - 150 - 16777215 - - - - - - - - - 200 - 0 - - - - - 150 - 24 - - - - - 150 - 16777215 - - - - - - - - - 40 - 16777215 - - - - Tx 6 - - - - - - - - 40 - 16777215 - - - - Tx 2 - - - - - - - - 16 - 0 - - - - - 0 - 20 - - - - - 20 - 16777215 - - - - - - - buttonGroup - - - - - - - - 16 - 0 - - - - - 0 - 20 - - - - - 20 - 16777215 - - - - - - - buttonGroup - - - - - - - - 200 - 0 - - - - - 150 - 24 - - - - - 150 - 16777215 - - - - - - - - - - - 2 - - - - 0 - - - 0 - - - - - 6 - - - 2 - - - 2 - - - - - 2 - - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - Calling CQ - - - Qt::AlignCenter - - - - - - - Answer CQ - - - - - - - Send 73 - - - - - - - Call CQ - - - - - - - Send Report - - - - - - - Send RRR - - - - - - - Answer Caller - - - - - - - - 0 - 30 - - - - - 16777215 - 30 - - - - Answering CQ - - - Qt::AlignCenter - - - - - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - true - - - - - - - - 0 - 0 - - - - - 0 - 26 - - - - Gen msg - - - true - - - - - - - - - - - - 0 - 0 - - - - - 150 - 0 - - - - - - - - - 0 - 0 - - - - - 0 - 26 - - - - Free msg - - - - - - - - - - - - + 0 0 + + + 0 + 180 + + 42 180 - + 1 - + 60.000000000000000 - + 0.000000000000000 - + 8 - + 0.000000000000000 @@ -1438,7 +1650,7 @@ p, li { white-space: pre-wrap; } - 13 + 5 20 @@ -1454,7 +1666,7 @@ p, li { white-space: pre-wrap; } - 13 + 5 20 @@ -1529,6 +1741,24 @@ p, li { white-space: pre-wrap; } + + + 0 + 0 + + + + + 0 + 23 + + + + + 16777215 + 23 + + true @@ -1545,6 +1775,24 @@ p, li { white-space: pre-wrap; } + + + 0 + 0 + + + + + 0 + 23 + + + + + 16777215 + 23 + + Dist @@ -1591,63 +1839,6 @@ p, li { white-space: pre-wrap; } - - - - 5 - - - - - - 0 - 0 - - - - - 40 - 16777215 - - - - Report - - - - - - - - 0 - 0 - - - - - 55 - 0 - - - - - 55 - 16777215 - - - - -50 - - - 49 - - - -15 - - - - - @@ -1693,330 +1884,10 @@ p, li { white-space: pre-wrap; } - - - - - 0 - 0 - - - - - 74 - 16777215 - - - - - - - - - 252 - 252 - 252 - - - - - - - 170 - 190 - 200 - - - - - - - - - 252 - 252 - 252 - - - - - - - 170 - 190 - 200 - - - - - - - - - 170 - 190 - 200 - - - - - - - 170 - 190 - 200 - - - - - - - - true - - - QFrame::HLine - - - QFrame::Raised - - - 2 - - - - 0 - - - 0 - - - - - 5 - - - - - - 0 - 23 - - - - DX Call - - - Qt::AlignCenter - - - 2 - - - - - - - - 0 - 0 - - - - - 70 - 27 - - - - - 72 - 16777215 - - - - - - - Qt::AlignCenter - - - - - - - - - - - - - 0 - 0 - - - - - 74 - 0 - - - - - 74 - 16777215 - - - - - - - - - 252 - 252 - 252 - - - - - - - 170 - 190 - 200 - - - - - - - - - 252 - 252 - 252 - - - - - - - 170 - 190 - 200 - - - - - - - - - 170 - 190 - 200 - - - - - - - 170 - 190 - 200 - - - - - - - - true - - - QFrame::HLine - - - QFrame::Raised - - - 2 - - - - 0 - - - 0 - - - - - 6 - - - - - - 0 - 23 - - - - - 16777215 - 16777215 - - - - DX Grid - - - Qt::AlignCenter - - - 2 - - - - - - - - 0 - 0 - - - - - 70 - 27 - - - - - 72 - 16777215 - - - - - - - Qt::AlignCenter - - - - - - - - - + 0 0 @@ -2024,13 +1895,13 @@ p, li { white-space: pre-wrap; } 105 - 0 + 60 105 - 16777215 + 60 @@ -2174,6 +2045,170 @@ p, li { white-space: pre-wrap; } + + + + + 0 + 0 + + + + + 0 + 23 + + + + + + + + + 252 + 252 + 252 + + + + + + + 159 + 175 + 213 + + + + + + + + + 252 + 252 + 252 + + + + + + + 159 + 175 + 213 + + + + + + + + + 159 + 175 + 213 + + + + + + + 159 + 175 + 213 + + + + + + + + true + + + DX Call + + + Qt::AlignCenter + + + 2 + + + + + + + + 0 + 0 + + + + + 70 + 27 + + + + + 74 + 16777215 + + + + + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + + 70 + 27 + + + + + 74 + 16777215 + + + + + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + QSizePolicy::Expanding + + + + 2 + 20 + + + + @@ -2186,7 +2221,7 @@ p, li { white-space: pre-wrap; } 0 0 711 - 21 + 25 @@ -2826,8 +2861,6 @@ p, li { white-space: pre-wrap; } autoButton stopTxButton bandComboBox - dxCallEntry - dxGridEntry lookupButton addButton txFirstCheckBox @@ -2864,7 +2897,6 @@ p, li { white-space: pre-wrap; } txb4 txb5 txb6 - tabWidget inGain decodedTextBrowser2 decodedTextBrowser diff --git a/rigclass.cpp b/rigclass.cpp index 3dd318225..f66b10297 100644 --- a/rigclass.cpp +++ b/rigclass.cpp @@ -8,6 +8,7 @@ */ /* + * * Hamlib C++ bindings - main file * Copyright (c) 2001-2003 by Stephane Fillod * @@ -33,7 +34,7 @@ #endif #include -#include +#include "rigclass.h" #define CHECK_RIG(cmd) { int _retval = cmd; if (_retval != RIG_OK) \ THROW(new RigException (_retval)); } diff --git a/rigclass.h b/rigclass.h new file mode 100644 index 000000000..d34811507 --- /dev/null +++ b/rigclass.h @@ -0,0 +1,277 @@ +/* + * Hamlib C++ bindings - API header + * Copyright (c) 2001-2002 by Stephane Fillod + * + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef _RIGCLASS_H +#define _RIGCLASS_H 1 + +#include +#include + + +class BACKEND_IMPEXP Rig { +private: + RIG* theRig; // Global ref. to the rig + +protected: +public: + Rig(rig_model_t rig_model); + + virtual ~Rig(); + + const struct rig_caps *caps; + + // This method open the communication port to the rig + void open(void); + + // This method close the communication port to the rig + void close(void); + + void setConf(token_t token, const char *val); + void setConf(const char *name, const char *val); + void getConf(token_t token, char *val); + void getConf(const char *name, char *val); + token_t tokenLookup(const char *name); + + void setFreq(freq_t freq, vfo_t vfo = RIG_VFO_CURR); + freq_t getFreq(vfo_t vfo = RIG_VFO_CURR); + void setMode(rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); + rmode_t getMode(pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); + void setVFO(vfo_t); + vfo_t getVFO(); + + void setPTT (ptt_t ptt, vfo_t vfo = RIG_VFO_CURR); + ptt_t getPTT (vfo_t vfo = RIG_VFO_CURR); + dcd_t getDCD (vfo_t vfo = RIG_VFO_CURR); + + void setLevel(setting_t level, int vali, vfo_t vfo = RIG_VFO_CURR); + void setLevel(setting_t level, float valf, vfo_t vfo = RIG_VFO_CURR); + void getLevel(setting_t level, int& vali, vfo_t vfo = RIG_VFO_CURR); + void getLevel(setting_t level, float& valf, vfo_t vfo = RIG_VFO_CURR); + int getLevelI(setting_t level, vfo_t vfo = RIG_VFO_CURR); + float getLevelF(setting_t level, vfo_t vfo = RIG_VFO_CURR); + bool hasGetLevel (setting_t level); + bool hasSetLevel (setting_t level); + + void setParm(setting_t parm, int vali); + void setParm(setting_t parm, float valf); + void getParm(setting_t parm, int& vali); + void getParm(setting_t parm, float& valf); + int getParmI(setting_t parm); + float getParmF(setting_t parm); + bool hasGetParm (setting_t parm); + bool hasSetParm (setting_t parm); + + void setFunc (setting_t func, bool status, vfo_t vfo = RIG_VFO_CURR); + bool getFunc (setting_t func, vfo_t vfo = RIG_VFO_CURR); + bool hasGetFunc (setting_t func); + bool hasSetFunc (setting_t func); + + void VFOop(vfo_op_t op, vfo_t vfo = RIG_VFO_CURR); + bool hasVFOop (vfo_op_t op); + + void scan(scan_t scan, int ch, vfo_t vfo = RIG_VFO_CURR); + bool hasScan (scan_t scan); + + const char *getInfo (void); + pbwidth_t passbandNormal (rmode_t); + pbwidth_t passbandNarrow (rmode_t); + pbwidth_t passbandWide (rmode_t); + + void setRptrShift (rptr_shift_t rptr_shift, vfo_t vfo = RIG_VFO_CURR); + rptr_shift_t getRptrShift (vfo_t vfo = RIG_VFO_CURR); + void setRptrOffs (shortfreq_t rptr_offs, vfo_t vfo = RIG_VFO_CURR); + shortfreq_t getRptrOffs (vfo_t vfo = RIG_VFO_CURR); + void setTs (shortfreq_t ts, vfo_t vfo = RIG_VFO_CURR); + shortfreq_t getTs (vfo_t vfo = RIG_VFO_CURR); + + void setCTCSS (tone_t tone, vfo_t vfo = RIG_VFO_CURR); + tone_t getCTCSS (vfo_t vfo = RIG_VFO_CURR); + void setDCS (tone_t code, vfo_t vfo = RIG_VFO_CURR); + tone_t getDCS (vfo_t vfo = RIG_VFO_CURR); + + void setCTCSSsql (tone_t tone, vfo_t vfo = RIG_VFO_CURR); + tone_t getCTCSSsql (vfo_t vfo = RIG_VFO_CURR); + void setDCSsql (tone_t tone, vfo_t vfo = RIG_VFO_CURR); + tone_t getDCSsql (vfo_t vfo = RIG_VFO_CURR); + + + unsigned int power2mW (float power, freq_t freq, rmode_t mode); + float mW2power (unsigned int mwpower, freq_t freq, rmode_t mode); + void setTrn (int trn); + int getTrn (void); + void setBank (int bank, vfo_t vfo = RIG_VFO_CURR); + void setMem (int ch, vfo_t vfo = RIG_VFO_CURR); + int getMem (vfo_t vfo = RIG_VFO_CURR); + + void setChannel (const channel_t *chan); + void getChannel (channel_t *chan); + + void setPowerStat (powerstat_t status); + powerstat_t getPowerStat (void); + rmode_t RngRxModes (freq_t freq); + rmode_t RngTxModes (freq_t freq); + + void setSplitFreq (freq_t tx_freq, vfo_t vfo = RIG_VFO_CURR); + freq_t getSplitFreq (vfo_t vfo = RIG_VFO_CURR); + void setSplitMode(rmode_t, pbwidth_t width = RIG_PASSBAND_NORMAL, vfo_t vfo = RIG_VFO_CURR); + rmode_t getSplitMode(pbwidth_t&, vfo_t vfo = RIG_VFO_CURR); + void setSplitVFO(split_t split, vfo_t vfo = RIG_VFO_CURR, vfo_t tx_vfo = RIG_VFO_CURR); + split_t getSplitVFO(vfo_t &tx_vfo, vfo_t vfo = RIG_VFO_CURR); + + void setRit (shortfreq_t rit, vfo_t vfo = RIG_VFO_CURR); + shortfreq_t getRit (vfo_t vfo = RIG_VFO_CURR); + void setXit (shortfreq_t xit, vfo_t vfo = RIG_VFO_CURR); + shortfreq_t getXit (vfo_t vfo = RIG_VFO_CURR); + + void setAnt (ant_t ant, vfo_t vfo = RIG_VFO_CURR); + ant_t getAnt (vfo_t vfo = RIG_VFO_CURR); + + void sendDtmf (const char *digits, vfo_t vfo = RIG_VFO_CURR); + int recvDtmf (char *digits, vfo_t vfo = RIG_VFO_CURR); + void sendMorse (const char *msg, vfo_t vfo = RIG_VFO_CURR); + + + shortfreq_t getResolution (rmode_t mode); + void reset (reset_t reset); + + // callbacks available in your derived object + virtual int FreqEvent(vfo_t, freq_t, rig_ptr_t) const { + return RIG_OK; + } + virtual int ModeEvent(vfo_t, rmode_t, pbwidth_t, rig_ptr_t) const { + return RIG_OK; + } + virtual int VFOEvent(vfo_t, rig_ptr_t) const { + return RIG_OK; + } + virtual int PTTEvent(vfo_t, ptt_t, rig_ptr_t) const { + return RIG_OK; + } + virtual int DCDEvent(vfo_t, dcd_t, rig_ptr_t) const { + return RIG_OK; + } + + +}; + + + +#ifdef __GNUG__ +# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) +# if HAVE_TYPEINFO +# include +# endif +# endif +#endif + +#if defined(__GNUG__) +# if HAVE_BUILTIN_H || HAVE_GXX_BUILTIN_H || HAVE_GPP_BUILTIN_H +# if ETIP_NEEDS_MATH_H +# if ETIP_NEEDS_MATH_EXCEPTION +# undef exception +# define exception math_exception +# endif +# include +# endif +# undef exception +# define exception builtin_exception +# if HAVE_GPP_BUILTIN_H +# include +# elif HAVE_GXX_BUILTIN_H +# include +# else +# include +# endif +# undef exception +# endif +#elif defined (__SUNPRO_CC) +# include +# include +#else +# include +#endif + + +extern "C" { +#if HAVE_VALUES_H +# include +#endif + +#include +#include +} + +#include +#if !(defined(__GNUG__)||defined(__SUNPRO_CC)) + extern "C" void exit(int); +#endif + +// Forward Declarations + +class BACKEND_IMPEXP RigException +{ +public: + const char *message; + int errorno; + + RigException (const char* msg, int err) + : message(msg), errorno (err) + {}; + + RigException (int err) + : message(rigerror(err)), errorno (err) + {}; + + RigException (const char* msg) + : message(msg), errorno (-RIG_EINTERNAL) + {}; + + virtual ~RigException() + {}; + + void print() const { + std::cerr << "Rig exception: " << message << std::endl; + } + virtual const char *classname() const { + return "Rig"; + } +}; + +inline void THROW(const RigException *e) { +#if defined(__GNUG__) +# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) + (*lib_error_handler)(e?e->classname():"",e?e->message:""); +#else + throw *e; +#endif +#elif defined(__SUNPRO_CC) + genericerror(1, ((e != 0) ? (char *)(e->message) : "")); +#else + if (e) + std::cerr << e->message << endl; + exit(0); +#endif +} + +#define THROWS(s) + + +#endif // _RIGCLASS_H diff --git a/wsjtx.pro b/wsjtx.pro index fe6932d5b..99cbbce30 100644 --- a/wsjtx.pro +++ b/wsjtx.pro @@ -43,7 +43,8 @@ SOURCES += killbyname.cpp HEADERS += mainwindow.h plotter.h soundin.h soundout.h \ about.h devsetup.h widegraph.h getfile.h \ commons.h sleep.h displaytext.h logqso.h \ - psk_reporter.h + psk_reporter.h \ + rigclass.h DEFINES += __cplusplus @@ -55,7 +56,7 @@ RC_FILE = wsjtx.rc unix { INCLUDEPATH += $$quote(/usr/include/qwt-qt4) LIBS += ../wsjtx/lib/libjt9.a -LIBS += -lhamlib++ -lhamlib +LIBS += -lhamlib LIBS += -lportaudio -lgfortran -lfftw3f -lqwt-qt4 }