mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-25 21:58:38 -05:00
Merge branch 'release-2.5.0'
This commit is contained in:
commit
2f24d0b47c
@ -71,7 +71,7 @@ message (STATUS "******************************************************")
|
|||||||
|
|
||||||
include (set_build_type)
|
include (set_build_type)
|
||||||
# RC 0 or omitted is a development build, GA is a General Availability release build
|
# RC 0 or omitted is a development build, GA is a General Availability release build
|
||||||
set_build_type (RC 5)
|
set_build_type (RC 6)
|
||||||
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
|
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -735,7 +735,7 @@ bool Configuration::monitor_last_used () const {return m_->rig_is_dummy_ || m_->
|
|||||||
bool Configuration::log_as_RTTY () const {return m_->log_as_RTTY_;}
|
bool Configuration::log_as_RTTY () const {return m_->log_as_RTTY_;}
|
||||||
bool Configuration::report_in_comments () const {return m_->report_in_comments_;}
|
bool Configuration::report_in_comments () const {return m_->report_in_comments_;}
|
||||||
bool Configuration::prompt_to_log () const {return m_->prompt_to_log_;}
|
bool Configuration::prompt_to_log () const {return m_->prompt_to_log_;}
|
||||||
bool Configuration::autoLog() const {return m_->autoLog_;}
|
bool Configuration::autoLog() const {return m_->autoLog_ && m_->bSpecialOp_;}
|
||||||
bool Configuration::decodes_from_top () const {return m_->decodes_from_top_;}
|
bool Configuration::decodes_from_top () const {return m_->decodes_from_top_;}
|
||||||
bool Configuration::insert_blank () const {return m_->insert_blank_;}
|
bool Configuration::insert_blank () const {return m_->insert_blank_;}
|
||||||
bool Configuration::DXCC () const {return m_->DXCC_;}
|
bool Configuration::DXCC () const {return m_->DXCC_;}
|
||||||
|
@ -23,7 +23,7 @@ DecodedText::DecodedText (QString const& the_string)
|
|||||||
, is_standard_ {false}
|
, is_standard_ {false}
|
||||||
{
|
{
|
||||||
// discard appended AP info
|
// discard appended AP info
|
||||||
clean_string_.replace (QRegularExpression {R"(^(.*?)(?:\?\s)?a[0-9].*$)"}, "\\1");
|
clean_string_.replace (QRegularExpression {R"(^(.*?)(?:\?\s)?(?:a|q)[0-9].*$)"}, "\\1");
|
||||||
|
|
||||||
// qDebug () << "DecodedText: the_string:" << the_string << "Nbsp pos:" << the_string.indexOf (QChar::Nbsp);
|
// qDebug () << "DecodedText: the_string:" << the_string << "Nbsp pos:" << the_string.indexOf (QChar::Nbsp);
|
||||||
if (message_.length() >= 1)
|
if (message_.length() >= 1)
|
||||||
|
@ -443,7 +443,7 @@ void EqualizationToolsDialog::impl::plot_current ()
|
|||||||
plot_.graph (3)->rescaleValueAxis ();
|
plot_.graph (3)->rescaleValueAxis ();
|
||||||
|
|
||||||
QFileInfo refspec_file_info {data_directory_.absoluteFilePath ("refspec.dat")};
|
QFileInfo refspec_file_info {data_directory_.absoluteFilePath ("refspec.dat")};
|
||||||
std::ifstream refspec_file (refspec_file_info.absoluteFilePath ().toLatin1 ().constData (), std::ifstream::in);
|
std::ifstream refspec_file (refspec_file_info.absoluteFilePath ().toLocal8Bit ().constData (), std::ifstream::in);
|
||||||
unsigned n;
|
unsigned n;
|
||||||
if (refspec_file >> amp_poly_low_ >> amp_poly_high_ >> n)
|
if (refspec_file >> amp_poly_low_ >> amp_poly_high_ >> n)
|
||||||
{
|
{
|
||||||
@ -499,7 +499,7 @@ void EqualizationToolsDialog::impl::plot_phase ()
|
|||||||
, "Phase Coefficient Files (*.pcoeff)");
|
, "Phase Coefficient Files (*.pcoeff)");
|
||||||
if (!phase_file_name.size ()) return;
|
if (!phase_file_name.size ()) return;
|
||||||
|
|
||||||
std::ifstream phase_file (phase_file_name.toLatin1 ().constData (), std::ifstream::in);
|
std::ifstream phase_file (phase_file_name.toLocal8Bit ().constData (), std::ifstream::in);
|
||||||
int n;
|
int n;
|
||||||
float chi;
|
float chi;
|
||||||
float rmsdiff;
|
float rmsdiff;
|
||||||
|
33
NEWS
33
NEWS
@ -12,8 +12,28 @@
|
|||||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.5.0-rc6
|
||||||
|
Sept 6, 2021
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
||||||
|
in the package since WSJT-X 2.5.0-rc5 include the following
|
||||||
|
enhancements and defect repairs:
|
||||||
|
|
||||||
|
MAP65:
|
||||||
|
- There are no functional changes to MAP65 in this release.
|
||||||
|
|
||||||
|
WSJT-X:
|
||||||
|
- Repair a file handle leak in wsprd (tnx Phil, KA9Q).
|
||||||
|
- Better handling of the Tx1 buttons when changing special operating
|
||||||
|
modes.
|
||||||
|
- Q65 mode now supports contest special operating modes.
|
||||||
|
- Repair an issue when non-ASCII characters used in account names.
|
||||||
|
- Repair a regression that prevented WSPR band-hopping working when
|
||||||
|
the Tx percentage is zero.
|
||||||
|
|
||||||
Release: WSJT-X 2.5.0-rc5
|
Release: WSJT-X 2.5.0-rc5
|
||||||
Aug 6, 2021
|
Aug 5, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
||||||
@ -21,13 +41,14 @@ in the package since WSJT-X 2.5.0-rc4 include the following
|
|||||||
enhancements and defect repairs:
|
enhancements and defect repairs:
|
||||||
|
|
||||||
MAP65:
|
MAP65:
|
||||||
- Avoid widening of FTol when double-clicking lower waterfall
|
- When you double-click on lower waterfall, Ftol is set to 100
|
||||||
- Disable early decoding pass when reading from disk
|
only if it is currently set to a higher value.
|
||||||
- Suppressed duplicate decodes must also be at the same frequency
|
- Early decoding pass is skipped when data are read from disk.
|
||||||
|
- Duplicate decodes are suppressed only when at the same frequency.
|
||||||
|
|
||||||
WSJT-X:
|
WSJT-X:
|
||||||
- Repair a regression that caused some i3=4 messages to be encoded as
|
- Repair a regression that caused some messages involving compound
|
||||||
free text
|
or nonstandard callsigns to be encoded as free text
|
||||||
|
|
||||||
Release: WSJT-X 2.5.0-rc4
|
Release: WSJT-X 2.5.0-rc4
|
||||||
Aug 2, 2021
|
Aug 2, 2021
|
||||||
|
@ -12,8 +12,28 @@
|
|||||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.5.0-rc6
|
||||||
|
Sept 6, 2021
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
||||||
|
in the package since WSJT-X 2.5.0-rc5 include the following
|
||||||
|
enhancements and defect repairs:
|
||||||
|
|
||||||
|
MAP65:
|
||||||
|
- There are no functional changes to MAP65 in this release.
|
||||||
|
|
||||||
|
WSJT-X:
|
||||||
|
- Repair a file handle leak in wsprd (tnx Phil, KA9Q).
|
||||||
|
- Better handling of the Tx1 buttons when changing special operating
|
||||||
|
modes.
|
||||||
|
- Q65 mode now supports contest special operating modes.
|
||||||
|
- Repair an issue when non-ASCII characters used in account names.
|
||||||
|
- Repair a regression that prevented WSPR band-hopping working when
|
||||||
|
the Tx percentage is zero.
|
||||||
|
|
||||||
Release: WSJT-X 2.5.0-rc5
|
Release: WSJT-X 2.5.0-rc5
|
||||||
Aug 6, 2021
|
Aug 5, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
||||||
@ -21,16 +41,17 @@ in the package since WSJT-X 2.5.0-rc4 include the following
|
|||||||
enhancements and defect repairs:
|
enhancements and defect repairs:
|
||||||
|
|
||||||
MAP65:
|
MAP65:
|
||||||
- Avoid widening of FTol when double-clicking lower waterfall
|
- When you double-click on lower waterfall, Ftol is set to 100
|
||||||
- Disable early decoding pass when reading from disk
|
only if it is currently set to a higher value.
|
||||||
- Suppressed duplicate decodes must also be at the same frequency
|
- Early decoding pass is skipped when data are read from disk.
|
||||||
|
- Duplicate decodes are suppressed only when at the same frequency.
|
||||||
|
|
||||||
WSJT-X:
|
WSJT-X:
|
||||||
- Repair a regression that caused some i3=4 messages to be encoded as
|
- Repair a regression that caused some messages involving compound
|
||||||
free text
|
or nonstandard callsigns to be encoded as free text
|
||||||
|
|
||||||
Release: WSJT-X 2.5.0-rc4
|
Release: WSJT-X 2.5.0-rc4
|
||||||
Aug 2, 2021
|
Aug 1, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
Remember that the WSJT-X 2.5.0 package includes MAP65 3.0.0. Changes
|
||||||
|
@ -12,8 +12,8 @@ subroutine calibrate(data_dir,iz,a,b,rms,sigmaa,sigmab,irc)
|
|||||||
real*8 fd(NZ),deltaf(NZ),r(NZ),rmsd(NZ)
|
real*8 fd(NZ),deltaf(NZ),r(NZ),rmsd(NZ)
|
||||||
integer nn(NZ)
|
integer nn(NZ)
|
||||||
|
|
||||||
infile=trim(data_dir)//'fmt.all'
|
infile=trim(data_dir)//'/'//'fmt.all'
|
||||||
outfile=trim(data_dir)//'fcal2.out'
|
outfile=trim(data_dir)//'/'//'fcal2.out'
|
||||||
|
|
||||||
open(10,file=trim(infile),status='old',err=996)
|
open(10,file=trim(infile),status='old',err=996)
|
||||||
open(12,file=trim(outfile),status='unknown',err=997)
|
open(12,file=trim(outfile),status='unknown',err=997)
|
||||||
|
@ -20,7 +20,7 @@ subroutine hspec(id2,k,nutc0,ntrpdepth,nrxfreq,ntol,bmsk144, &
|
|||||||
|
|
||||||
parameter (JZ=703)
|
parameter (JZ=703)
|
||||||
character*80 line1
|
character*80 line1
|
||||||
character*512 datadir
|
character*(*) datadir
|
||||||
character*12 mycall,hiscall
|
character*12 mycall,hiscall
|
||||||
integer*2 id2(0:120*12000-1)
|
integer*2 id2(0:120*12000-1)
|
||||||
logical*1 bmsk144,bshmsg,btrain,bswl
|
logical*1 bmsk144,bshmsg,btrain,bswl
|
||||||
|
@ -9,7 +9,7 @@ subroutine msk144signalquality(cframe,snr,freq,t0,softbits,msg,dxcall, &
|
|||||||
character*8 date
|
character*8 date
|
||||||
character*10 time
|
character*10 time
|
||||||
character*5 zone
|
character*5 zone
|
||||||
character*512 datadir
|
character*(*) datadir
|
||||||
|
|
||||||
complex cframe(864)
|
complex cframe(864)
|
||||||
complex cross(864)
|
complex cross(864)
|
||||||
@ -191,9 +191,7 @@ subroutine msk144signalquality(cframe,snr,freq,t0,softbits,msg,dxcall, &
|
|||||||
write(pcoeff_filename,'(i2.2,i2.2,i2.2,"_",i2.2,i2.2,i2.2)') &
|
write(pcoeff_filename,'(i2.2,i2.2,i2.2,"_",i2.2,i2.2,i2.2)') &
|
||||||
values(1)-2000,values(2),values(3),values(5),values(6),values(7)
|
values(1)-2000,values(2),values(3),values(5),values(6),values(7)
|
||||||
pcoeff_filename=trim(trained_dxcall)//"_"//trim(pcoeff_filename)//".pcoeff"
|
pcoeff_filename=trim(trained_dxcall)//"_"//trim(pcoeff_filename)//".pcoeff"
|
||||||
l1=index(datadir,char(0))-1
|
pcoeff_filename=datadir//'/'//trim(pcoeff_filename)
|
||||||
datadir(l1+1:l1+1)="/"
|
|
||||||
pcoeff_filename=datadir(1:l1+1)//trim(pcoeff_filename)
|
|
||||||
!write(*,*) 'trained - writing coefficients to: ',pcoeff_filename
|
!write(*,*) 'trained - writing coefficients to: ',pcoeff_filename
|
||||||
open(17,file=pcoeff_filename,status='new')
|
open(17,file=pcoeff_filename,status='new')
|
||||||
write(17,'(i4,2f10.2,3i5,5e25.16)') navg,sqrt(chisqr),rmsdiff,NFREQLOW,NFREQHIGH,nterms,a
|
write(17,'(i4,2f10.2,3i5,5e25.16)') navg,sqrt(chisqr),rmsdiff,NFREQLOW,NFREQHIGH,nterms,a
|
||||||
|
@ -19,7 +19,7 @@ subroutine mskrtd(id2,nutc0,tsec,ntol,nrxfreq,ndepth,mycall,hiscall, &
|
|||||||
character*80 line !Formatted line with UTC dB T Freq Msg
|
character*80 line !Formatted line with UTC dB T Freq Msg
|
||||||
character*12 mycall,hiscall
|
character*12 mycall,hiscall
|
||||||
character*37 recent_shmsgs(NSHMEM)
|
character*37 recent_shmsgs(NSHMEM)
|
||||||
character*512 datadir
|
character*(*) datadir
|
||||||
|
|
||||||
complex cdat(NFFT1) !Analytic signal
|
complex cdat(NFFT1) !Analytic signal
|
||||||
complex c(NSPM) !Coherently averaged complex data
|
complex c(NSPM) !Coherently averaged complex data
|
||||||
|
@ -677,6 +677,7 @@ unsigned long writec2file(char *c2filename, int trmin, double freq
|
|||||||
}
|
}
|
||||||
nwrite = fwrite(buffer, sizeof(float), 2*45000, fp);
|
nwrite = fwrite(buffer, sizeof(float), 2*45000, fp);
|
||||||
free(buffer);
|
free(buffer);
|
||||||
|
fclose(fp);
|
||||||
if( nwrite == 2*45000 ) {
|
if( nwrite == 2*45000 ) {
|
||||||
return nwrite;
|
return nwrite;
|
||||||
} else {
|
} else {
|
||||||
|
@ -18,7 +18,7 @@ void getfile(QString fname, bool xpol, int dbDgrd)
|
|||||||
|
|
||||||
memset(id,0,2*npts);
|
memset(id,0,2*npts);
|
||||||
char name[80];
|
char name[80];
|
||||||
strcpy(name,fname.toLatin1());
|
strcpy(name,fname.toLocal8Bit());
|
||||||
FILE* fp=fopen(name,"rb");
|
FILE* fp=fopen(name,"rb");
|
||||||
|
|
||||||
if(fp != NULL) {
|
if(fp != NULL) {
|
||||||
@ -61,7 +61,7 @@ void savetf2(QString fname, bool xpol)
|
|||||||
|
|
||||||
qint16* buf=(qint16*)malloc(2*npts);
|
qint16* buf=(qint16*)malloc(2*npts);
|
||||||
char name[80];
|
char name[80];
|
||||||
strcpy(name,fname.toLatin1());
|
strcpy(name,fname.toLocal8Bit());
|
||||||
FILE* fp=fopen(name,"wb");
|
FILE* fp=fopen(name,"wb");
|
||||||
|
|
||||||
if(fp != NULL) {
|
if(fp != NULL) {
|
||||||
|
@ -19,7 +19,7 @@ int main(int argc, char *argv[])
|
|||||||
QApplication a {argc, argv};
|
QApplication a {argc, argv};
|
||||||
// Override programs executable basename as application name.
|
// Override programs executable basename as application name.
|
||||||
a.setApplicationName ("MAP65");
|
a.setApplicationName ("MAP65");
|
||||||
a.setApplicationVersion ("3.0.0-rc5");
|
a.setApplicationVersion ("3.0.0-rc6");
|
||||||
// switch off as we share an Info.plist file with WSJT-X
|
// switch off as we share an Info.plist file with WSJT-X
|
||||||
a.setAttribute (Qt::AA_DontUseNativeMenuBar);
|
a.setAttribute (Qt::AA_DontUseNativeMenuBar);
|
||||||
MainWindow w;
|
MainWindow w;
|
||||||
|
@ -3209,7 +3209,7 @@ Haz doble clic para alternar el uso del mensaje TX1 para iniciar un QSO con una
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="1958"/>
|
<location filename="../widgets/mainwindow.ui" line="1958"/>
|
||||||
<source>Tx &1</source>
|
<source>Tx &1</source>
|
||||||
<translation>Tx &1</translation>
|
<translation>TX &1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="1961"/>
|
<location filename="../widgets/mainwindow.ui" line="1961"/>
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -118,8 +118,8 @@ auto Astro::astroUpdate(QDateTime const& t, QString const& mygrid, QString const
|
|||||||
&azmoondx, &elmoondx, &ntsky, &m_dop, &m_dop00, &ramoon, &decmoon,
|
&azmoondx, &elmoondx, &ntsky, &m_dop, &m_dop00, &ramoon, &decmoon,
|
||||||
&dgrd, &poloffset, &xnr, &techo, &width1, &width2,
|
&dgrd, &poloffset, &xnr, &techo, &width1, &width2,
|
||||||
bTx,
|
bTx,
|
||||||
AzElFileName.toLatin1().data(),
|
AzElFileName.toLocal8Bit ().constData (),
|
||||||
jpleph.toLatin1().data());
|
jpleph.toLocal8Bit ().constData ());
|
||||||
|
|
||||||
if(!hisgrid.size ()) {
|
if(!hisgrid.size ()) {
|
||||||
azmoondx=0.0;
|
azmoondx=0.0;
|
||||||
@ -229,7 +229,7 @@ auto Astro::astroUpdate(QDateTime const& t, QString const& mygrid, QString const
|
|||||||
&dgrd, &poloffset, &xnr, &techo, &width1, &width2,
|
&dgrd, &poloffset, &xnr, &techo, &width1, &width2,
|
||||||
bTx,
|
bTx,
|
||||||
nullptr, // don't overwrite azel.dat
|
nullptr, // don't overwrite azel.dat
|
||||||
jpleph.toLatin1().data());
|
jpleph.toLocal8Bit ().constData ());
|
||||||
FrequencyDelta offset {0};
|
FrequencyDelta offset {0};
|
||||||
switch (m_DopplerMethod)
|
switch (m_DopplerMethod)
|
||||||
{
|
{
|
||||||
|
@ -98,7 +98,8 @@ extern "C" {
|
|||||||
|
|
||||||
void hspec_(short int d2[], int* k, int* nutc0, int* ntrperiod, int* nrxfreq, int* ntol,
|
void hspec_(short int d2[], int* k, int* nutc0, int* ntrperiod, int* nrxfreq, int* ntol,
|
||||||
bool* bmsk144, bool* btrain, double const pcoeffs[], int* ingain,
|
bool* bmsk144, bool* btrain, double const pcoeffs[], int* ingain,
|
||||||
char mycall[], char hiscall[], bool* bshmsg, bool* bswl, char ddir[], float green[],
|
char const * mycall, char const * hiscall, bool* bshmsg, bool* bswl,
|
||||||
|
char const * ddir, float green[],
|
||||||
float s[], int* jh, float *pxmax, float *rmsNoGain, char line[],
|
float s[], int* jh, float *pxmax, float *rmsNoGain, char line[],
|
||||||
fortran_charlen_t, fortran_charlen_t, fortran_charlen_t, fortran_charlen_t);
|
fortran_charlen_t, fortran_charlen_t, fortran_charlen_t, fortran_charlen_t);
|
||||||
|
|
||||||
@ -150,7 +151,7 @@ extern "C" {
|
|||||||
|
|
||||||
void wspr_downsample_(short int d2[], int* k);
|
void wspr_downsample_(short int d2[], int* k);
|
||||||
|
|
||||||
int savec2_(char* fname, int* TR_seconds, double* dial_freq, fortran_charlen_t);
|
int savec2_(char const * fname, int* TR_seconds, double* dial_freq, fortran_charlen_t);
|
||||||
|
|
||||||
void avecho_( short id2[], int* dop, int* nfrit, int* nqual, float* f1,
|
void avecho_( short id2[], int* dop, int* nfrit, int* nqual, float* f1,
|
||||||
float* level, float* sigdb, float* snr, float* dfreq,
|
float* level, float* sigdb, float* snr, float* dfreq,
|
||||||
@ -171,7 +172,7 @@ extern "C" {
|
|||||||
|
|
||||||
void fix_contest_msg_(char* MyGrid, char* msg, fortran_charlen_t, fortran_charlen_t);
|
void fix_contest_msg_(char* MyGrid, char* msg, fortran_charlen_t, fortran_charlen_t);
|
||||||
|
|
||||||
void calibrate_(char data_dir[], int* iz, double* a, double* b, double* rms,
|
void calibrate_(char const * data_dir, int* iz, double* a, double* b, double* rms,
|
||||||
double* sigmaa, double* sigmab, int* irc, fortran_charlen_t);
|
double* sigmaa, double* sigmab, int* irc, fortran_charlen_t);
|
||||||
|
|
||||||
void foxgen_();
|
void foxgen_();
|
||||||
@ -919,9 +920,8 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
|||||||
proc_jt9.start(QDir::toNativeSeparators (m_appDir) + QDir::separator () +
|
proc_jt9.start(QDir::toNativeSeparators (m_appDir) + QDir::separator () +
|
||||||
"jt9", jt9_args, QIODevice::ReadWrite | QIODevice::Unbuffered);
|
"jt9", jt9_args, QIODevice::ReadWrite | QIODevice::Unbuffered);
|
||||||
|
|
||||||
QString fname {QDir::toNativeSeparators(m_config.writeable_data_dir ().absoluteFilePath ("wsjtx_wisdom.dat"))};
|
auto fname {QDir::toNativeSeparators(m_config.writeable_data_dir ().absoluteFilePath ("wsjtx_wisdom.dat"))};
|
||||||
QByteArray cfname=fname.toLocal8Bit();
|
fftwf_import_wisdom_from_filename (fname.toLocal8Bit ());
|
||||||
fftwf_import_wisdom_from_filename(cfname);
|
|
||||||
|
|
||||||
m_ntx = 6;
|
m_ntx = 6;
|
||||||
ui->txrb6->setChecked(true);
|
ui->txrb6->setChecked(true);
|
||||||
@ -1075,9 +1075,8 @@ void MainWindow::on_the_minute ()
|
|||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
{
|
{
|
||||||
m_astroWidget.reset ();
|
m_astroWidget.reset ();
|
||||||
QString fname {QDir::toNativeSeparators(m_config.writeable_data_dir ().absoluteFilePath ("wsjtx_wisdom.dat"))};
|
auto fname {QDir::toNativeSeparators(m_config.writeable_data_dir ().absoluteFilePath ("wsjtx_wisdom.dat"))};
|
||||||
QByteArray cfname=fname.toLocal8Bit();
|
fftwf_export_wisdom_to_filename (fname.toLocal8Bit ());
|
||||||
fftwf_export_wisdom_to_filename(cfname);
|
|
||||||
m_audioThread.quit ();
|
m_audioThread.quit ();
|
||||||
m_audioThread.wait ();
|
m_audioThread.wait ();
|
||||||
remove_child_from_event_filter (this);
|
remove_child_from_event_filter (this);
|
||||||
@ -1428,10 +1427,7 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
static float s[NSMAX];
|
static float s[NSMAX];
|
||||||
char line[80];
|
char line[80];
|
||||||
int k(frames);
|
int k(frames);
|
||||||
QString fname {QDir::toNativeSeparators(m_config.writeable_data_dir ().absoluteFilePath ("refspec.dat"))};
|
auto fname {QDir::toNativeSeparators(m_config.writeable_data_dir ().absoluteFilePath ("refspec.dat")).toLocal8Bit ()};
|
||||||
QByteArray bafname = fname.toLatin1();
|
|
||||||
const char *c_fname = bafname.data();
|
|
||||||
int len=fname.length();
|
|
||||||
|
|
||||||
if(m_diskData) {
|
if(m_diskData) {
|
||||||
dec_data.params.ndiskdat=1;
|
dec_data.params.ndiskdat=1;
|
||||||
@ -1443,7 +1439,7 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
m_bUseRef=m_wideGraph->useRef();
|
m_bUseRef=m_wideGraph->useRef();
|
||||||
if(!m_diskData) {
|
if(!m_diskData) {
|
||||||
refspectrum_(&dec_data.d2[k-m_nsps/2],&m_bClearRefSpec,&m_bRefSpec,
|
refspectrum_(&dec_data.d2[k-m_nsps/2],&m_bClearRefSpec,&m_bRefSpec,
|
||||||
&m_bUseRef,c_fname,len);
|
&m_bUseRef, fname.constData (), fname.size ());
|
||||||
}
|
}
|
||||||
m_bClearRefSpec=false;
|
m_bClearRefSpec=false;
|
||||||
|
|
||||||
@ -1598,14 +1594,11 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
this, m_fnameWE, &dec_data.d2[0], samples, m_config.my_callsign(),
|
this, m_fnameWE, &dec_data.d2[0], samples, m_config.my_callsign(),
|
||||||
m_config.my_grid(), m_mode, m_nSubMode, m_freqNominal, m_hisCall, m_hisGrid)));
|
m_config.my_grid(), m_mode, m_nSubMode, m_freqNominal, m_hisCall, m_hisGrid)));
|
||||||
if (m_mode=="WSPR") {
|
if (m_mode=="WSPR") {
|
||||||
QString c2name_string {m_fnameWE + ".c2"};
|
auto c2name {(m_fnameWE + ".c2").toLocal8Bit ()};
|
||||||
int len1=c2name_string.length();
|
|
||||||
char c2name[80];
|
|
||||||
strcpy(c2name,c2name_string.toLatin1 ().constData ());
|
|
||||||
int nsec=120;
|
int nsec=120;
|
||||||
int nbfo=1500;
|
int nbfo=1500;
|
||||||
double f0m1500=m_freqNominal/1000000.0 + nbfo - 1500;
|
double f0m1500=m_freqNominal/1000000.0 + nbfo - 1500;
|
||||||
int err = savec2_(c2name,&nsec,&f0m1500,len1);
|
int err = savec2_(c2name.constData (),&nsec,&f0m1500, c2name.size ());
|
||||||
if (err!=0) MessageBox::warning_message (this, tr ("Error saving c2 file"), c2name);
|
if (err!=0) MessageBox::warning_message (this, tr ("Error saving c2 file"), c2name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1721,17 +1714,14 @@ void MainWindow::fastSink(qint64 frames)
|
|||||||
// ::memcpy(dec_data.params.hiscall,(Radio::base_callsign (hisCall) + " ").toLatin1 ().constData (), sizeof dec_data.params.hiscall);
|
// ::memcpy(dec_data.params.hiscall,(Radio::base_callsign (hisCall) + " ").toLatin1 ().constData (), sizeof dec_data.params.hiscall);
|
||||||
::memcpy(dec_data.params.hiscall,(hisCall + " ").toLatin1 ().constData (), sizeof dec_data.params.hiscall);
|
::memcpy(dec_data.params.hiscall,(hisCall + " ").toLatin1 ().constData (), sizeof dec_data.params.hiscall);
|
||||||
::memcpy(dec_data.params.mygrid, (m_config.my_grid()+" ").toLatin1(), sizeof dec_data.params.mygrid);
|
::memcpy(dec_data.params.mygrid, (m_config.my_grid()+" ").toLatin1(), sizeof dec_data.params.mygrid);
|
||||||
QString dataDir;
|
auto data_dir {m_config.writeable_data_dir ().absolutePath ().toLocal8Bit ()};
|
||||||
dataDir = m_config.writeable_data_dir ().absolutePath ();
|
|
||||||
char ddir[512];
|
|
||||||
::strncpy(ddir,dataDir.toLatin1(), sizeof (ddir) - 1);
|
|
||||||
float pxmax = 0;
|
float pxmax = 0;
|
||||||
float rmsNoGain = 0;
|
float rmsNoGain = 0;
|
||||||
int ftol = ui->sbFtol->value ();
|
int ftol = ui->sbFtol->value ();
|
||||||
hspec_(dec_data.d2,&k,&nutc0,&nTRpDepth,&RxFreq,&ftol,&bmsk144,
|
hspec_(dec_data.d2,&k,&nutc0,&nTRpDepth,&RxFreq,&ftol,&bmsk144,
|
||||||
&m_bTrain,m_phaseEqCoefficients.constData(),&m_inGain,&dec_data.params.mycall[0],
|
&m_bTrain,m_phaseEqCoefficients.constData(),&m_inGain,&dec_data.params.mycall[0],
|
||||||
&dec_data.params.hiscall[0],&bshmsg,&bswl,
|
&dec_data.params.hiscall[0],&bshmsg,&bswl,
|
||||||
&ddir[0],fast_green,fast_s,&fast_jh,&pxmax,&rmsNoGain,&line[0],12,12,512,80);
|
data_dir.constData (),fast_green,fast_s,&fast_jh,&pxmax,&rmsNoGain,&line[0],12,12,data_dir.size (),80);
|
||||||
float px = fast_green[fast_jh];
|
float px = fast_green[fast_jh];
|
||||||
QString t;
|
QString t;
|
||||||
t = t.asprintf(" Rx noise: %5.1f ",px);
|
t = t.asprintf(" Rx noise: %5.1f ",px);
|
||||||
@ -1891,7 +1881,10 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog
|
|||||||
ui->actionEnable_AP_JT65->setVisible(false);
|
ui->actionEnable_AP_JT65->setVisible(false);
|
||||||
ui->actionAuto_Clear_Avg->setVisible(false);
|
ui->actionAuto_Clear_Avg->setVisible(false);
|
||||||
}
|
}
|
||||||
if(m_config.special_op_id()!=nContest0) ui->tx1->setEnabled(true);
|
if(m_config.special_op_id()!=nContest0) {
|
||||||
|
ui->tx1->setEnabled(true);
|
||||||
|
ui->txb1->setEnabled(true);
|
||||||
|
}
|
||||||
chkFT4();
|
chkFT4();
|
||||||
if(SpecOp::EU_VHF==m_config.special_op_id() and m_config.my_grid().size()<6) {
|
if(SpecOp::EU_VHF==m_config.special_op_id() and m_config.my_grid().size()<6) {
|
||||||
MessageBox::information_message (this,
|
MessageBox::information_message (this,
|
||||||
@ -2540,16 +2533,13 @@ void MainWindow::on_actionFast_Graph_triggered()
|
|||||||
|
|
||||||
void MainWindow::on_actionSolve_FreqCal_triggered()
|
void MainWindow::on_actionSolve_FreqCal_triggered()
|
||||||
{
|
{
|
||||||
QString dpath{QDir::toNativeSeparators(m_config.writeable_data_dir().absolutePath()+"/")};
|
auto data_dir {QDir::toNativeSeparators(m_config.writeable_data_dir().absolutePath()).toLocal8Bit ()};
|
||||||
char data_dir[512];
|
|
||||||
int len=dpath.length();
|
|
||||||
int iz,irc;
|
int iz,irc;
|
||||||
double a,b,rms,sigmaa,sigmab;
|
double a,b,rms,sigmaa,sigmab;
|
||||||
strncpy(data_dir,dpath.toLatin1(),len);
|
calibrate_(data_dir.constData (),&iz,&a,&b,&rms,&sigmaa,&sigmab,&irc,data_dir.size ());
|
||||||
calibrate_(data_dir,&iz,&a,&b,&rms,&sigmaa,&sigmab,&irc,len);
|
|
||||||
QString t2;
|
QString t2;
|
||||||
if(irc==-1) t2="Cannot open " + dpath + "fmt.all";
|
if(irc==-1) t2="Cannot open " + data_dir + "/fmt.all";
|
||||||
if(irc==-2) t2="Cannot open " + dpath + "fcal2.out";
|
if(irc==-2) t2="Cannot open " + data_dir + "/fcal2.out";
|
||||||
if(irc==-3) t2="Insufficient data in fmt.all";
|
if(irc==-3) t2="Insufficient data in fmt.all";
|
||||||
if(irc==-4) t2 = tr ("Invalid data in fmt.all at line %1").arg (iz);
|
if(irc==-4) t2 = tr ("Invalid data in fmt.all at line %1").arg (iz);
|
||||||
if(irc>0 or rms>1.0) t2="Check fmt.all for possible bad data.";
|
if(irc>0 or rms>1.0) t2="Check fmt.all for possible bad data.";
|
||||||
@ -4029,33 +4019,10 @@ void MainWindow::guiUpdate()
|
|||||||
&m_currentMessageType, 22, 22);
|
&m_currentMessageType, 22, 22);
|
||||||
if(m_mode=="JT65") gen65_(message, &ichk, msgsent, const_cast<int *> (itone),
|
if(m_mode=="JT65") gen65_(message, &ichk, msgsent, const_cast<int *> (itone),
|
||||||
&m_currentMessageType, 22, 22);
|
&m_currentMessageType, 22, 22);
|
||||||
if(m_mode=="Q65") {
|
|
||||||
int i3=-1;
|
|
||||||
int n3=-1;
|
|
||||||
genq65_(message,&ichk,msgsent,const_cast<int *>(itone),&i3,&n3,37,37);
|
|
||||||
int nsps=1800;
|
|
||||||
if(m_TRperiod==30) nsps=3600;
|
|
||||||
if(m_TRperiod==60) nsps=7200;
|
|
||||||
if(m_TRperiod==120) nsps=16000;
|
|
||||||
if(m_TRperiod==300) nsps=41472;
|
|
||||||
int nsps4=4*nsps; //48000 Hz sampling
|
|
||||||
int nsym=85;
|
|
||||||
float fsample=48000.0;
|
|
||||||
int nwave=(nsym+2)*nsps4;
|
|
||||||
int icmplx=0;
|
|
||||||
int hmod=1;
|
|
||||||
float f0=ui->TxFreqSpinBox->value()-m_XIT;
|
|
||||||
genwave_(const_cast<int *>(itone),&nsym,&nsps4,&nwave,
|
|
||||||
&fsample,&hmod,&f0,&icmplx,foxcom_.wave,foxcom_.wave);
|
|
||||||
}
|
|
||||||
if(m_mode=="WSPR") genwspr_(message, msgsent, const_cast<int *> (itone),
|
if(m_mode=="WSPR") genwspr_(message, msgsent, const_cast<int *> (itone),
|
||||||
22, 22);
|
22, 22);
|
||||||
if(m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4"
|
if(m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4"
|
||||||
or m_mode=="FST4" or m_mode=="FST4W") {
|
or m_mode=="FST4" or m_mode=="FST4W" || "Q65" == m_mode) {
|
||||||
char MyCall[6];
|
|
||||||
char MyGrid[6];
|
|
||||||
::memcpy(MyCall, (m_config.my_callsign()+" ").toLatin1(), sizeof MyCall);
|
|
||||||
::memcpy(MyGrid, (m_config.my_grid()+" ").toLatin1(), sizeof MyGrid);
|
|
||||||
if(m_mode=="MSK144") {
|
if(m_mode=="MSK144") {
|
||||||
genmsk_128_90_(message, &ichk, msgsent, const_cast<int *> (itone),
|
genmsk_128_90_(message, &ichk, msgsent, const_cast<int *> (itone),
|
||||||
&m_currentMessageType, 37, 37);
|
&m_currentMessageType, 37, 37);
|
||||||
@ -4147,6 +4114,25 @@ void MainWindow::guiUpdate()
|
|||||||
|
|
||||||
QString t = QString::fromStdString(message).trimmed();
|
QString t = QString::fromStdString(message).trimmed();
|
||||||
}
|
}
|
||||||
|
if(m_mode=="Q65") {
|
||||||
|
int i3=-1;
|
||||||
|
int n3=-1;
|
||||||
|
genq65_(message,&ichk,msgsent,const_cast<int *>(itone),&i3,&n3,37,37);
|
||||||
|
int nsps=1800;
|
||||||
|
if(m_TRperiod==30) nsps=3600;
|
||||||
|
if(m_TRperiod==60) nsps=7200;
|
||||||
|
if(m_TRperiod==120) nsps=16000;
|
||||||
|
if(m_TRperiod==300) nsps=41472;
|
||||||
|
int nsps4=4*nsps; //48000 Hz sampling
|
||||||
|
int nsym=85;
|
||||||
|
float fsample=48000.0;
|
||||||
|
int nwave=(nsym+2)*nsps4;
|
||||||
|
int icmplx=0;
|
||||||
|
int hmod=1;
|
||||||
|
float f0=ui->TxFreqSpinBox->value()-m_XIT;
|
||||||
|
genwave_(const_cast<int *>(itone),&nsym,&nsps4,&nwave,
|
||||||
|
&fsample,&hmod,&f0,&icmplx,foxcom_.wave,foxcom_.wave);
|
||||||
|
}
|
||||||
|
|
||||||
if(SpecOp::EU_VHF==m_config.special_op_id()) {
|
if(SpecOp::EU_VHF==m_config.special_op_id()) {
|
||||||
if(m_ntx==2) m_xSent=ui->tx2->text().right(13);
|
if(m_ntx==2) m_xSent=ui->tx2->text().right(13);
|
||||||
@ -4216,9 +4202,13 @@ void MainWindow::guiUpdate()
|
|||||||
{
|
{
|
||||||
logQSOTimer.start(0);
|
logQSOTimer.start(0);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cease_auto_Tx_after_QSO ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool b=(m_mode=="FT8" or m_mode=="FT4") and ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isEnabled () && ui->cbAutoSeq->isChecked ();
|
bool b=("FT8"==m_mode or "FT4"==m_mode or "Q65"==m_mode) and ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isEnabled () && ui->cbAutoSeq->isChecked ();
|
||||||
if(is_73 and (m_config.disable_TX_on_73() or b)) {
|
if(is_73 and (m_config.disable_TX_on_73() or b)) {
|
||||||
m_nextCall=""; //### Temporary: disable use of "TU;" messages;
|
m_nextCall=""; //### Temporary: disable use of "TU;" messages;
|
||||||
if(m_nextCall!="") {
|
if(m_nextCall!="") {
|
||||||
@ -4326,7 +4316,7 @@ void MainWindow::guiUpdate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_mode=="FT8" or m_mode=="MSK144" or m_mode=="FT4") {
|
if(m_mode=="FT8" or m_mode=="MSK144" or m_mode=="FT4" || "Q65" == m_mode) {
|
||||||
if(ui->txrb1->isEnabled() and
|
if(ui->txrb1->isEnabled() and
|
||||||
(SpecOp::NA_VHF==m_config.special_op_id() or
|
(SpecOp::NA_VHF==m_config.special_op_id() or
|
||||||
SpecOp::FIELD_DAY==m_config.special_op_id() or
|
SpecOp::FIELD_DAY==m_config.special_op_id() or
|
||||||
@ -5003,7 +4993,12 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
m_nextCall=""; //### Temporary: disable use of "TU;" message
|
m_nextCall=""; //### Temporary: disable use of "TU;" message
|
||||||
if(SpecOp::RTTY == m_config.special_op_id() and m_nextCall!="") {
|
if(SpecOp::RTTY == m_config.special_op_id() and m_nextCall!="") {
|
||||||
// We're in RTTY contest and have "nextCall" queued up: send a "TU; ..." message
|
// We're in RTTY contest and have "nextCall" queued up: send a "TU; ..." message
|
||||||
logQSOTimer.start(0);
|
if (m_config.prompt_to_log() || m_config.autoLog()) {
|
||||||
|
logQSOTimer.start(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cease_auto_Tx_after_QSO ();
|
||||||
|
}
|
||||||
ui->tx3->setText(ui->tx3->text().remove("TU; "));
|
ui->tx3->setText(ui->tx3->text().remove("TU; "));
|
||||||
useNextCall();
|
useNextCall();
|
||||||
QString t="TU; " + ui->tx3->text();
|
QString t="TU; " + ui->tx3->text();
|
||||||
@ -5014,7 +5009,12 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
&& SpecOp::NONE < m_config.special_op_id () && SpecOp::FOX > m_config.special_op_id ()
|
&& SpecOp::NONE < m_config.special_op_id () && SpecOp::FOX > m_config.special_op_id ()
|
||||||
&& ("RR73" == word_3 || 73 == word_3_as_number))
|
&& ("RR73" == word_3 || 73 == word_3_as_number))
|
||||||
{
|
{
|
||||||
logQSOTimer.start(0);
|
if (m_config.prompt_to_log() || m_config.autoLog()) {
|
||||||
|
logQSOTimer.start(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cease_auto_Tx_after_QSO ();
|
||||||
|
}
|
||||||
m_ntx=6;
|
m_ntx=6;
|
||||||
ui->txrb6->setChecked(true);
|
ui->txrb6->setChecked(true);
|
||||||
}
|
}
|
||||||
@ -5032,7 +5032,12 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
}
|
}
|
||||||
else if (ROGERS == m_QSOProgress)
|
else if (ROGERS == m_QSOProgress)
|
||||||
{
|
{
|
||||||
logQSOTimer.start(0);
|
if (m_config.prompt_to_log() || m_config.autoLog()) {
|
||||||
|
logQSOTimer.start(0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cease_auto_Tx_after_QSO ();
|
||||||
|
}
|
||||||
m_ntx=6;
|
m_ntx=6;
|
||||||
ui->txrb6->setChecked(true);
|
ui->txrb6->setChecked(true);
|
||||||
}
|
}
|
||||||
@ -5056,7 +5061,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
}
|
}
|
||||||
} else if((m_QSOProgress >= REPORT
|
} else if((m_QSOProgress >= REPORT
|
||||||
|| (m_QSOProgress >= REPLYING &&
|
|| (m_QSOProgress >= REPLYING &&
|
||||||
(m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4")))
|
(m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4" || "Q65" == m_mode)))
|
||||||
&& word_3.startsWith ('R')) {
|
&& word_3.startsWith ('R')) {
|
||||||
m_ntx=4;
|
m_ntx=4;
|
||||||
m_QSOProgress = ROGERS;
|
m_QSOProgress = ROGERS;
|
||||||
@ -5278,7 +5283,7 @@ void MainWindow::genCQMsg ()
|
|||||||
|
|
||||||
QString t=ui->tx6->text();
|
QString t=ui->tx6->text();
|
||||||
QStringList tlist=t.split(" ");
|
QStringList tlist=t.split(" ");
|
||||||
if((m_mode=="FT4" or m_mode=="FT8" or m_mode=="MSK144") and
|
if((m_mode=="FT4" or m_mode=="FT8" or m_mode=="MSK144" || "Q65" == m_mode) and
|
||||||
SpecOp::NONE != m_config.special_op_id() and
|
SpecOp::NONE != m_config.special_op_id() and
|
||||||
( tlist.at(1)==my_callsign or
|
( tlist.at(1)==my_callsign or
|
||||||
tlist.at(2)==my_callsign ) and
|
tlist.at(2)==my_callsign ) and
|
||||||
@ -5736,7 +5741,7 @@ void MainWindow::msgtype(QString t, QLineEdit* tx) //msgtype()
|
|||||||
//### Check this stuff ###
|
//### Check this stuff ###
|
||||||
if(itype==7 and m_config.enable_VHF_features() and m_mode=="JT65") shortMsg=true;
|
if(itype==7 and m_config.enable_VHF_features() and m_mode=="JT65") shortMsg=true;
|
||||||
if(m_mode=="MSK144" and t.mid(0,1)=="<") text=false;
|
if(m_mode=="MSK144" and t.mid(0,1)=="<") text=false;
|
||||||
if((m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4") and
|
if((m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4" || "Q65" == m_mode) and
|
||||||
SpecOp::NA_VHF==m_config.special_op_id()) {
|
SpecOp::NA_VHF==m_config.special_op_id()) {
|
||||||
int i0=t.trimmed().length()-7;
|
int i0=t.trimmed().length()-7;
|
||||||
if(t.mid(i0,3)==" R ") text=false;
|
if(t.mid(i0,3)==" R ") text=false;
|
||||||
@ -5866,7 +5871,7 @@ void MainWindow::on_genStdMsgsPushButton_clicked() //genStdMsgs button
|
|||||||
genStdMsgs(m_rpt);
|
genStdMsgs(m_rpt);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_logQSOButton_clicked() //Log QSO button
|
void MainWindow::cease_auto_Tx_after_QSO ()
|
||||||
{
|
{
|
||||||
if (SpecOp::FOX != m_config.special_op_id ()
|
if (SpecOp::FOX != m_config.special_op_id ()
|
||||||
&& ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isEnabled () && ui->cbAutoSeq->isChecked ())
|
&& ui->cbAutoSeq->isVisible () && ui->cbAutoSeq->isEnabled () && ui->cbAutoSeq->isChecked ())
|
||||||
@ -5876,6 +5881,11 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button
|
|||||||
// to be a robot.
|
// to be a robot.
|
||||||
auto_tx_mode (false);
|
auto_tx_mode (false);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_logQSOButton_clicked() //Log QSO button
|
||||||
|
{
|
||||||
|
cease_auto_Tx_after_QSO ();
|
||||||
|
|
||||||
if (!m_hisCall.size ()) {
|
if (!m_hisCall.size ()) {
|
||||||
MessageBox::warning_message (this, tr ("Warning: DX Call field is empty."));
|
MessageBox::warning_message (this, tr ("Warning: DX Call field is empty."));
|
||||||
@ -6040,7 +6050,7 @@ void MainWindow::displayWidgets(qint64 n)
|
|||||||
}
|
}
|
||||||
ui->pbBestSP->setVisible(m_mode=="FT4");
|
ui->pbBestSP->setVisible(m_mode=="FT4");
|
||||||
b=false;
|
b=false;
|
||||||
if(m_mode=="FT4" or m_mode=="FT8") {
|
if(m_mode=="FT4" or m_mode=="FT8" || "Q65" == m_mode) {
|
||||||
b=SpecOp::EU_VHF==m_config.special_op_id() or
|
b=SpecOp::EU_VHF==m_config.special_op_id() or
|
||||||
( SpecOp::RTTY==m_config.special_op_id() and
|
( SpecOp::RTTY==m_config.special_op_id() and
|
||||||
(m_config.RTTY_Exchange()=="DX" or m_config.RTTY_Exchange()=="#") );
|
(m_config.RTTY_Exchange()=="DX" or m_config.RTTY_Exchange()=="#") );
|
||||||
@ -6461,6 +6471,8 @@ void MainWindow::on_actionQ65_triggered()
|
|||||||
if(SpecOp::NA_VHF==m_config.special_op_id()) t0="NA VHF";
|
if(SpecOp::NA_VHF==m_config.special_op_id()) t0="NA VHF";
|
||||||
if(SpecOp::EU_VHF==m_config.special_op_id()) t0="EU VHF";
|
if(SpecOp::EU_VHF==m_config.special_op_id()) t0="EU VHF";
|
||||||
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0="Field Day";
|
if(SpecOp::FIELD_DAY==m_config.special_op_id()) t0="Field Day";
|
||||||
|
if(SpecOp::RTTY==m_config.special_op_id()) t0+="RTTY";
|
||||||
|
if(SpecOp::WW_DIGI==m_config.special_op_id()) t0+="WW_DIGI";
|
||||||
if(t0=="") {
|
if(t0=="") {
|
||||||
ui->labDXped->setVisible(false);
|
ui->labDXped->setVisible(false);
|
||||||
} else {
|
} else {
|
||||||
@ -8139,9 +8151,9 @@ void MainWindow::WSPR_scheduling ()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
m_WSPR_tx_next = false;
|
m_WSPR_tx_next = false;
|
||||||
if (!ui->sbTxPercent->isEnabled () || !ui->sbTxPercent->value ())
|
if (!ui->sbTxPercent->isEnabled ())
|
||||||
{
|
{
|
||||||
return; // don't schedule if %age disabled or zero
|
return; // don't schedule if %age disabled
|
||||||
}
|
}
|
||||||
if (m_config.is_transceiver_online () // need working rig control for hopping
|
if (m_config.is_transceiver_online () // need working rig control for hopping
|
||||||
&& !m_config.is_dummy_rig ()
|
&& !m_config.is_dummy_rig ()
|
||||||
|
@ -779,6 +779,7 @@ private:
|
|||||||
void writeFoxQSO (QString const& msg);
|
void writeFoxQSO (QString const& msg);
|
||||||
void to_jt9(qint32 n, qint32 istart, qint32 idone);
|
void to_jt9(qint32 n, qint32 istart, qint32 idone);
|
||||||
bool is77BitMode () const;
|
bool is77BitMode () const;
|
||||||
|
void cease_auto_Tx_after_QSO ();
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int killbyname(const char* progName);
|
extern int killbyname(const char* progName);
|
||||||
|
Loading…
Reference in New Issue
Block a user