diff --git a/Configuration.cpp b/Configuration.cpp index 4afa9dfe7..1ca9ae25a 100644 --- a/Configuration.cpp +++ b/Configuration.cpp @@ -230,7 +230,7 @@ namespace |IL|IN|KS|KY|LA|LAX|MAR|MB|MDC |ME|MI|MN|MO|MS|MT|NC|ND|NE|NFL |NH|NL|NLI|NM|NNJ|NNY|NT|NTX|NV - |OH|OK|ONE|ONN|ONS|OR|ORG|PAC + |OH|OK|ONE|ONN|ONS|OR|ORG|PAC|PE |PR|QC|RI|SB|SC|SCV|SD|SDG|SF |SFL|SJV|SK|SNJ|STX|SV|TN|UT|VA |VI|VT|WCF|WI|WMA|WNY|WPA|WTX diff --git a/NEWS b/NEWS index c72ecb1b7..097282e70 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,32 @@ Copyright 2001 - 2020 by Joe Taylor, K1JT. + Release: WSJT-X 2.2.2 + June 22, 2020 + --------------------- + +WSJT-X v2.2.2 is a bug fix release, mainly to incorporate the new RAC +section PE into the FT8/FT4/MSK144 Contest Mode for Field Day. + + - Stations intending to operate in Field Day (FD) are urged to + upgrade to this release, without it you cannot set your section to + PE, and of equal importance you cannot decode contest messages from + stations who are operating from PE without this upgrade. + + - FT8 decoder speeded up in Normal and Fast modes. This change gives + a speed of decoding closer to that of v2.1.2 without compromising + the number of decodes. It is particularly targeted for slower + single board computer users such as the Raspberry Pi Model 3 or + similar. + + - Thanks to our user interface language translation contributors for + many improvements to the translated strings. + + - The DX Grid field is now cleared automatically when the DX Call + field is changed. Care should be taken to complete entry of a + callsign before entering a grid square. + + Release: WSJT-X 2.2.1 June 6, 2020 --------------------- diff --git a/Network/MessageClient.cpp b/Network/MessageClient.cpp index d33b2a636..a71beee6e 100644 --- a/Network/MessageClient.cpp +++ b/Network/MessageClient.cpp @@ -425,28 +425,23 @@ MessageClient::MessageClient (QString const& id, QString const& version, QString { #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) connect (&*m_, static_cast (&impl::error) - , [this] (impl::SocketError e) - { -#if defined (Q_OS_WIN) - if (e != impl::NetworkError // take this out when Qt 5.5 - // stops doing this - // spuriously - && e != impl::ConnectionRefusedError) // not - // interested - // in this with - // UDP socket + , [this] (impl::SocketError e) { #else - Q_UNUSED (e); + connect (&*m_, &impl::errorOccurred, [this] (impl::SocketError e) { +#endif +#if defined (Q_OS_WIN) + // take this out when Qt 5.5 stops doing this spuriously + if (e != impl::NetworkError + // not interested in this with UDP socket + && e != impl::ConnectionRefusedError) +#else + Q_UNUSED (e); #endif { Q_EMIT error (m_->errorString ()); } }); -#else - connect (&*m_, &impl::errorOccurred, [this] (impl::SocketError) { - Q_EMIT error (m_->errorString ()); - }); -#endif + set_server (server); } @@ -573,7 +568,7 @@ void MessageClient::qso_logged (QDateTime time_off, QString const& dx_call, QStr , QString const& comments, QString const& name, QDateTime time_on , QString const& operator_call, QString const& my_call , QString const& my_grid, QString const& exchange_sent - , QString const& exchange_rcvd) + , QString const& exchange_rcvd, QString const& propmode) { if (m_->server_port_ && !m_->server_string_.isEmpty ()) { @@ -582,8 +577,8 @@ void MessageClient::qso_logged (QDateTime time_off, QString const& dx_call, QStr out << time_off << dx_call.toUtf8 () << dx_grid.toUtf8 () << dial_frequency << mode.toUtf8 () << report_sent.toUtf8 () << report_received.toUtf8 () << tx_power.toUtf8 () << comments.toUtf8 () << name.toUtf8 () << time_on << operator_call.toUtf8 () << my_call.toUtf8 () << my_grid.toUtf8 () - << exchange_sent.toUtf8 () << exchange_rcvd.toUtf8 (); - TRACE_UDP ("time off:" << time_off << "DX:" << dx_call << "DX grid:" << dx_grid << "dial:" << dial_frequency << "mode:" << mode << "sent:" << report_sent << "rcvd:" << report_received << "pwr:" << tx_power << "comments:" << comments << "name:" << name << "time on:" << time_on << "op:" << operator_call << "DE:" << my_call << "DE grid:" << my_grid << "exch sent:" << exchange_sent << "exch rcvd:" << exchange_rcvd); + << exchange_sent.toUtf8 () << exchange_rcvd.toUtf8 () << propmode.toUtf8 (); + TRACE_UDP ("time off:" << time_off << "DX:" << dx_call << "DX grid:" << dx_grid << "dial:" << dial_frequency << "mode:" << mode << "sent:" << report_sent << "rcvd:" << report_received << "pwr:" << tx_power << "comments:" << comments << "name:" << name << "time on:" << time_on << "op:" << operator_call << "DE:" << my_call << "DE grid:" << my_grid << "exch sent:" << exchange_sent << "exch rcvd:" << exchange_rcvd << "prop_mode:" << propmode); m_->send_message (out, message); } } diff --git a/Network/MessageClient.hpp b/Network/MessageClient.hpp index 20f39b019..797149fc6 100644 --- a/Network/MessageClient.hpp +++ b/Network/MessageClient.hpp @@ -69,7 +69,8 @@ public: , QString const& report_received, QString const& tx_power, QString const& comments , QString const& name, QDateTime time_on, QString const& operator_call , QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd); + , QString const& exchange_sent, QString const& exchange_rcvd + , QString const& propmode); // ADIF_record argument should be valid ADIF excluding any end // of record marker diff --git a/Network/NetworkMessage.hpp b/Network/NetworkMessage.hpp index 3c5c9268f..c484efb23 100644 --- a/Network/NetworkMessage.hpp +++ b/Network/NetworkMessage.hpp @@ -308,6 +308,7 @@ * My grid utf8 * Exchange sent utf8 * Exchange received utf8 + * ADIF Propagation mode utf8 * * The QSO logged message is sent to the server(s) when the * WSJT-X user accepts the "Log QSO" dialog by clicking the "OK" diff --git a/Release_Notes.txt b/Release_Notes.txt index 8dd95d486..871d893c5 100644 --- a/Release_Notes.txt +++ b/Release_Notes.txt @@ -13,6 +13,32 @@ Copyright 2001 - 2020 by Joe Taylor, K1JT. + Release: WSJT-X 2.2.2 + June 22, 2020 + --------------------- + +WSJT-X v2.2.2 is a bug fix release, mainly to incorporate the new RAC +section PE into the FT8/FT4/MSK144 Contest Mode for Field Day. + + - Stations intending to operate in Field Day (FD) are urged to + upgrade to this release, without it you cannot set your section to + PE, and of equal importance you cannot decode contest messages from + stations who are operating from PE without this upgrade. + + - FT8 decoder speeded up in Normal and Fast modes. This change gives + a speed of decoding closer to that of v2.1.2 without compromising + the number of decodes. It is particularly targeted for slower + single board computer users such as the Raspberry Pi Model 3 or + similar. + + - Thanks to our user interface language translation contributors for + many improvements to the translated strings. + + - The DX Grid field is now cleared automatically when the DX Call + field is changed. Care should be taken to complete entry of a + callsign before entering a grid square. + + Release: WSJT-X 2.2.1 June 6, 2020 --------------------- diff --git a/UDPExamples/MessageAggregatorMainWindow.cpp b/UDPExamples/MessageAggregatorMainWindow.cpp index 6245918a9..ba034b0e2 100644 --- a/UDPExamples/MessageAggregatorMainWindow.cpp +++ b/UDPExamples/MessageAggregatorMainWindow.cpp @@ -25,8 +25,9 @@ namespace QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Operator"), QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "My Call"), QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "My Grid"), - QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Exchange Sent"), - QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Exchange Rcvd"), + QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Exch Sent"), + QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Exch Rcvd"), + QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Prop"), QT_TRANSLATE_NOOP ("MessageAggregatorMainWindow", "Comments"), }; } @@ -212,7 +213,8 @@ void MessageAggregatorMainWindow::log_qso (QString const& /*id*/, QDateTime time , QString const& tx_power, QString const& comments , QString const& name, QDateTime time_on, QString const& operator_call , QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd) + , QString const& exchange_sent, QString const& exchange_rcvd + , QString const& prop_mode) { QList row; row << new QStandardItem {time_on.toString ("dd-MMM-yyyy hh:mm:ss")} @@ -230,6 +232,7 @@ void MessageAggregatorMainWindow::log_qso (QString const& /*id*/, QDateTime time << new QStandardItem {my_grid} << new QStandardItem {exchange_sent} << new QStandardItem {exchange_rcvd} + << new QStandardItem {prop_mode} << new QStandardItem {comments}; log_->appendRow (row); log_table_view_->resizeColumnsToContents (); diff --git a/UDPExamples/MessageAggregatorMainWindow.hpp b/UDPExamples/MessageAggregatorMainWindow.hpp index 29f762d3d..045f4e945 100644 --- a/UDPExamples/MessageAggregatorMainWindow.hpp +++ b/UDPExamples/MessageAggregatorMainWindow.hpp @@ -33,7 +33,7 @@ public: , QString const& report_received, QString const& tx_power, QString const& comments , QString const& name, QDateTime time_on, QString const& operator_call , QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd); + , QString const& exchange_sent, QString const& exchange_rcvd, QString const& prop_mode); private: void add_client (QString const& id, QString const& version, QString const& revision); diff --git a/UDPExamples/MessageServer.cpp b/UDPExamples/MessageServer.cpp index 59907d521..42a9689ef 100644 --- a/UDPExamples/MessageServer.cpp +++ b/UDPExamples/MessageServer.cpp @@ -345,9 +345,10 @@ void MessageServer::impl::parse_message (QHostAddress const& sender, port_type s QByteArray my_grid; QByteArray exchange_sent; QByteArray exchange_rcvd; + QByteArray prop_mode; in >> time_off >> dx_call >> dx_grid >> dial_frequency >> mode >> report_sent >> report_received >> tx_power >> comments >> name >> time_on >> operator_call >> my_call >> my_grid - >> exchange_sent >> exchange_rcvd; + >> exchange_sent >> exchange_rcvd >> prop_mode; if (check_status (in) != Fail) { Q_EMIT self_->qso_logged (id, time_off, QString::fromUtf8 (dx_call), QString::fromUtf8 (dx_grid) @@ -356,7 +357,7 @@ void MessageServer::impl::parse_message (QHostAddress const& sender, port_type s , QString::fromUtf8 (comments), QString::fromUtf8 (name), time_on , QString::fromUtf8 (operator_call), QString::fromUtf8 (my_call) , QString::fromUtf8 (my_grid), QString::fromUtf8 (exchange_sent) - , QString::fromUtf8 (exchange_rcvd)); + , QString::fromUtf8 (exchange_rcvd), QString::fromUtf8 (prop_mode)); } } break; diff --git a/UDPExamples/MessageServer.hpp b/UDPExamples/MessageServer.hpp index f59c21fe0..184410117 100644 --- a/UDPExamples/MessageServer.hpp +++ b/UDPExamples/MessageServer.hpp @@ -106,7 +106,7 @@ public: , QString const& report_received, QString const& tx_power, QString const& comments , QString const& name, QDateTime time_on, QString const& operator_call , QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd); + , QString const& exchange_sent, QString const& exchange_rcvd, QString const& prop_mode); Q_SIGNAL void decodes_cleared (QString const& id); Q_SIGNAL void logged_ADIF (QString const& id, QByteArray const& ADIF); diff --git a/UDPExamples/UDPDaemon.cpp b/UDPExamples/UDPDaemon.cpp index dea2c68c9..be1b5edeb 100644 --- a/UDPExamples/UDPDaemon.cpp +++ b/UDPExamples/UDPDaemon.cpp @@ -102,7 +102,7 @@ public: , QString const& report_received, QString const& tx_power , QString const& comments, QString const& name, QDateTime time_on , QString const& operator_call, QString const& my_call, QString const& my_grid - , QString const& exchange_sent, QString const& exchange_rcvd) + , QString const& exchange_sent, QString const& exchange_rcvd, QString const& prop_mode) { if (client_id == id_) { @@ -111,12 +111,13 @@ public: << "rpt_rcvd:" << report_received << "Tx_pwr:" << tx_power << "comments:" << comments << "name:" << name << "operator_call:" << operator_call << "my_call:" << my_call << "my_grid:" << my_grid << "exchange_sent:" << exchange_sent - << "exchange_rcvd:" << exchange_rcvd; + << "exchange_rcvd:" << exchange_rcvd << "prop_mode:" << prop_mode; std::cout << QByteArray {80, '-'}.data () << '\n'; - std::cout << tr ("%1: Logged %2 grid: %3 power: %4 sent: %5 recd: %6 freq: %7 time_off: %8 op: %9 my_call: %10 my_grid: %11") + std::cout << tr ("%1: Logged %2 grid: %3 power: %4 sent: %5 recd: %6 freq: %7 time_off: %8 op: %9 my_call: %10 my_grid: %11 exchange_sent: %12 exchange_rcvd: %13 comments: %14 prop_mode: %15") .arg (id_).arg (dx_call).arg (dx_grid).arg (tx_power).arg (report_sent).arg (report_received) .arg (dial_frequency).arg (time_off.toString("yyyy-MM-dd hh:mm:ss.z")).arg (operator_call) - .arg (my_call).arg (my_grid).toStdString () + .arg (my_call).arg (my_grid).arg (exchange_sent).arg (exchange_rcvd) + .arg (comments).arg (prop_mode).toStdString () << std::endl; } } diff --git a/doc/user_guide/en/install-windows.adoc b/doc/user_guide/en/install-windows.adoc index 95708c83d..04b9785ce 100644 --- a/doc/user_guide/en/install-windows.adoc +++ b/doc/user_guide/en/install-windows.adoc @@ -1,7 +1,7 @@ // Status=edited -Download and execute the package file {win32} (WinXP, Vista, Win 7, -Win 8, Win10, 32-bit) or {win64} (Vista, Win 7, Win 8, Win10, 64-bit) +Download and execute the package file {win32} (Win 7, +Win 8, Win10, 32-bit) or {win64} (Win 7, Win 8, Win10, 64-bit) following these instructions: * Install _WSJT-X_ into its own directory, for example `C:\WSJTX` or `C:\WSJT\WSJTX`, rather than the conventional location `C:\Program diff --git a/lib/77bit/packjt77.f90 b/lib/77bit/packjt77.f90 index 9819600d8..c064f7cea 100644 --- a/lib/77bit/packjt77.f90 +++ b/lib/77bit/packjt77.f90 @@ -196,7 +196,7 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) ! the value of nrx is used to decide when mycall13 or dxcall13 should ! be used in place of a callsign from the hashtable ! - parameter (NSEC=84) !Number of ARRL Sections + parameter (NSEC=85) !Number of ARRL Sections parameter (NUSCAN=65) !Number of US states and Canadian provinces parameter (MAXGRID4=32400) integer*8 n58 @@ -228,7 +228,7 @@ subroutine unpack77(c77,nrx,msg,unpk77_success) "ONS","OR ","ORG","PAC","PR ","QC ","RI ","SB ","SC ","SCV", & "SD ","SDG","SF ","SFL","SJV","SK ","SNJ","STX","SV ","TN ", & "UT ","VA ","VI ","VT ","WCF","WI ","WMA","WNY","WPA","WTX", & - "WV ","WWA","WY ","DX "/ + "WV ","WWA","WY ","DX ","PE "/ data cmult/ & "AL ","AK ","AZ ","AR ","CA ","CO ","CT ","DE ","FL ","GA ", & "HI ","ID ","IL ","IN ","IA ","KS ","KY ","LA ","ME ","MD ", & @@ -868,7 +868,7 @@ subroutine pack77_03(nwords,w,i3,n3,c77) ! Check 0.3 and 0.4 (ARRL Field Day exchange) ! Example message: WA9XYZ KA1ABC R 16A EMA 28 28 1 4 3 7 71 - parameter (NSEC=84) !Number of ARRL Sections + parameter (NSEC=85) !Number of ARRL Sections character*13 w(19) character*77 c77 character*6 bcall_1,bcall_2 @@ -883,7 +883,7 @@ subroutine pack77_03(nwords,w,i3,n3,c77) "ONS","OR ","ORG","PAC","PR ","QC ","RI ","SB ","SC ","SCV", & "SD ","SDG","SF ","SFL","SJV","SK ","SNJ","STX","SV ","TN ", & "UT ","VA ","VI ","VT ","WCF","WI ","WMA","WNY","WPA","WTX", & - "WV ","WWA","WY ","DX "/ + "WV ","WWA","WY ","DX ","PE "/ if(nwords.lt.4 .or. nwords.gt.5) return call chkcall(w(1),bcall_1,ok1) diff --git a/lib/fst240/get_fst240_bitmetrics.f90 b/lib/fst240/get_fst240_bitmetrics.f90 index ddefbad68..491158264 100644 --- a/lib/fst240/get_fst240_bitmetrics.f90 +++ b/lib/fst240/get_fst240_bitmetrics.f90 @@ -58,6 +58,8 @@ subroutine get_fst240_bitmetrics(cd,nss,hmod,nmax,bitmetrics,s4,badsync) is1=0 is2=0 is3=0 + is4=0 + is5=0 badsync=.false. ibmax=0 @@ -74,9 +76,8 @@ subroutine get_fst240_bitmetrics(cd,nss,hmod,nmax,bitmetrics,s4,badsync) if(icos8(k-1).eq.(ip(1)-1)) is5=is5+1 enddo nsync=is1+is2+is3+is4+is5 !Number of correct hard sync symbols, 0-40 - badsync=.false. - if(nsync .lt. 8) then + if(nsync .lt. 16) then badsync=.true. return endif diff --git a/lib/fst240_decode.f90 b/lib/fst240_decode.f90 index c68997bde..9c59492e6 100644 --- a/lib/fst240_decode.f90 +++ b/lib/fst240_decode.f90 @@ -131,7 +131,7 @@ contains norder=2 endif - ! The big fft is done once and is used for calculating the smoothed spectrum +! The big fft is done once and is used for calculating the smoothed spectrum ! and also for downconverting/downsampling each candidate. r_data(1:nfft1)=iwave(1:nfft1) r_data(nfft1+1:nfft1+2)=0.0 @@ -218,6 +218,7 @@ contains candidates(icand,3)=fc_synced candidates(icand,4)=isbest enddo + ! remove duplicate candidates do icand=1,ncand fc=candidates(icand,3) @@ -226,7 +227,7 @@ contains fc2=candidates(ic2,3) isbest2=nint(candidates(ic2,4)) if(ic2.ne.icand .and. fc2.gt.0.0) then - if(abs(fc2-fc).lt.0.05*baud) then ! same frequency + if(abs(fc2-fc).lt.0.10*baud) then ! same frequency if(abs(isbest2-isbest).le.2) then candidates(ic2,3)=-1 endif @@ -243,6 +244,7 @@ contains endif enddo ncand=ic + do icand=1,ncand sync=candidates(icand,2) fc_synced=candidates(icand,3) @@ -269,7 +271,7 @@ contains ns4=count(hbits(229:244).eq.(/0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0/)) ns5=count(hbits(305:320).eq.(/0,0,0,1,1,0,1,1,0,1,0,0,1,1,1,0/)) nsync_qual=ns1+ns2+ns3+ns4+ns5 - if(nsync_qual.lt. 26) cycle !### Value ?? ### + if(nsync_qual.lt. 44) cycle !### Value ?? ### scalefac=2.83 llra( 1: 60)=bitmetrics( 17: 76, 1) @@ -349,7 +351,7 @@ contains iaptype=0 qual=0. fsig=fc_synced - 1.5*hmod*baud -write(21,'(8i4,f7.1,f7.2,3f7.1,1x,a37)') & +write(21,'(i6,7i6,f7.1,f9.2,3f7.1,1x,a37)') & nutc,icand,itry,iaptype,ijitter,ntype,nsync_qual,nharderrors,dmin,sync,xsnr,xdt,fsig,msg call this%callback(nutc,smax1,nsnr,xdt,fsig,msg, & iaptype,qual,ntrperiod) @@ -479,12 +481,14 @@ write(21,'(8i4,f7.1,f7.2,3f7.1,1x,a37)') & complex c_bigfft(0:nfft1/2) integer hmod - integer indx(100) + integer indx(100),im(1) real candidates(100,4) real candidates0(100,4) real snr_cand(100) real s(18000) real s2(18000) + real xdb(-3:3) + data xdb/0.25,0.50,0.75,1.0,0.75,0.50,0.25/ data nfft1z/-1/ save nfft1z @@ -530,27 +534,25 @@ write(21,'(8i4,f7.1,f7.2,3f7.1,1x,a37)') & candidates=0 if(ia.lt.3) ia=3 if(ib.gt.18000-2) ib=18000-2 - do i=ia,ib - if((s2(i).gt.s2(i-2)).and. & - (s2(i).gt.s2(i+2)).and. & - (s2(i).gt.thresh).and.ncand.lt.100) then - ncand=ncand+1 - candidates(ncand,1)=df2*i - candidates(ncand,2)=s2(i) - endif - enddo - snr_cand=0. - snr_cand(1:ncand)=candidates(1:ncand,2) - call indexx(snr_cand,ncand,indx) - nmax=min(ncand,20) - do i=1,nmax - j=indx(ncand+1-i) - candidates0(i,1:4)=candidates(j,1:4) - enddo - ncand=nmax - candidates(1:ncand,1:4)=candidates0(1:ncand,1:4) - candidates(ncand+1:,1:4)=0. + pval=99.99 + do while(ncand.lt.100 .and. pval.gt.thresh) + im=maxloc(s2(ia:ib)) + iploc=ia+im(1)-1 + pval=s2(iploc) + if(s2(iploc).gt.thresh) then + do i=-3,+3 + k=iploc+2*hmod*i + if(k.ge.ia .and. k.le.ib) then + s2(k)=max(0.,s2(k)-0.9*pval*xdb(i)) + endif + enddo + ncand=ncand+1 + candidates(ncand,1)=df2*iploc + candidates(ncand,2)=pval + endif + enddo + return end subroutine get_candidates_fst240 diff --git a/logbook/WorkedBefore.cpp b/logbook/WorkedBefore.cpp index 438243d42..152feeb25 100644 --- a/logbook/WorkedBefore.cpp +++ b/logbook/WorkedBefore.cpp @@ -442,7 +442,7 @@ bool WorkedBefore::add (QString const& call QTextStream out {&file}; if (!file.size ()) { - out << "WSJT-X ADIF Export" << // new file + out << "WSJT-X ADIF Export" << // new file #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) endl #else diff --git a/logbook/logbook.cpp b/logbook/logbook.cpp index 316901f9d..327585110 100644 --- a/logbook/logbook.cpp +++ b/logbook/logbook.cpp @@ -74,7 +74,7 @@ QByteArray LogBook::QSOToADIF (QString const& hisCall, QString const& hisGrid, Q QDateTime const& dateTimeOff, QString const& band, QString const& comments, QString const& name, QString const& strDialFreq, QString const& myCall, QString const& myGrid, QString const& txPower, QString const& operator_call, - QString const& xSent, QString const& xRcvd) + QString const& xSent, QString const& xRcvd, QString const& propmode) { QString t; t = "" + hisCall; @@ -101,6 +101,7 @@ QByteArray LogBook::QSOToADIF (QString const& hisCall, QString const& hisGrid, Q if(comments!="") t += " " + comments; if(name!="") t += " " + name; if(operator_call!="") t+=" " + operator_call; + if(propmode!="") t += " " + propmode; if (xSent.size ()) { auto words = xSent.split (' ' diff --git a/logbook/logbook.h b/logbook/logbook.h index 858bb64d8..de7ffae10 100644 --- a/logbook/logbook.h +++ b/logbook/logbook.h @@ -44,7 +44,7 @@ public: QDateTime const& dateTimeOff, QString const& band, QString const& comments, QString const& name, QString const& strDialFreq, QString const& myCall, QString const& m_myGrid, QString const& m_txPower, QString const& operator_call, - QString const& xSent, QString const& xRcvd); + QString const& xSent, QString const& xRcvd, QString const& propmode); Q_SIGNAL void finished_loading (int worked_before_record_count, QString const& error) const; diff --git a/main.cpp b/main.cpp index 4943f2f02..040225352 100644 --- a/main.cpp +++ b/main.cpp @@ -323,6 +323,7 @@ int main(int argc, char *argv[]) db.exec ("PRAGMA locking_mode=EXCLUSIVE"); int result; + auto const& original_style_sheet = a.styleSheet (); do { #if WSJT_QDEBUG_TO_FILE @@ -387,6 +388,9 @@ int main(int argc, char *argv[]) splash.raise (); QObject::connect (&a, SIGNAL (lastWindowClosed()), &a, SLOT (quit())); result = a.exec(); + + // ensure config switches start with the right style sheet + a.setStyleSheet (original_style_sheet); } while (!result && !multi_settings.exit ()); diff --git a/translations/wsjtx_ca.ts b/translations/wsjtx_ca.ts index b8bdc2fcb..4eeac9ee7 100644 --- a/translations/wsjtx_ca.ts +++ b/translations/wsjtx_ca.ts @@ -898,6 +898,16 @@ Format: Directory + + + File + Fitxer + + + + Progress + + @@ -1450,26 +1460,26 @@ Error: %2 - %3 FrequencyList_v2 - - + + IARU Region Regió IARU - - + + Mode Mode - - + + Frequency Freqüència - - + + Frequency (MHz) Freqüència en MHz @@ -1590,152 +1600,152 @@ Error: %2 - %3 Tipus CAT no admès - + Hamlib error: %1 while %2 Error de Hamlib: %1 mentre %2 - + opening connection to rig connexió d'obertura a l'equip - + getting current frequency obtenir la freqüència actual - + getting current mode obtenir el mode actual - - + + exchanging VFOs intercanviant VFOs - - + + getting other VFO frequency obtenint una altra freqüència de VFO - + getting other VFO mode obtenint un altre mode VFO - + setting current VFO ajustar el VFO actual - + getting frequency obtenint la freqüència - + getting mode obtenint el mode - - + + getting current VFO obtenir VFO actual - - - - + + + + getting current VFO frequency obtenir la freqüència actual del VFO - - - - - - + + + + + + setting frequency ajust de freqüència - - - - + + + + getting current VFO mode obtenir el mode VFO actual - - - - - + + + + + setting current VFO mode ajust del mode VFO actual - - + + setting/unsetting split mode ajustar/desajustar mode dividid (split) - - + + setting split mode ajustar mode dividid (Split) - + setting split TX frequency and mode ajust de freqüència i mode de transmissió dividida (Split) - + setting split TX frequency ajust de freqüència dividida (Split) en TX - + getting split TX VFO mode obtenir el mode dividit (Split) en TX del VFO - + setting split TX VFO mode ajustar del mode dividid (Split) en TX del VFO - + getting PTT state obtenir l'estat del PTT - + setting PTT on activant el PTT - + setting PTT off desactivant el PTT - + setting a configuration item establir un element de configuració - + getting a configuration item obtenir un element de configuració @@ -1946,12 +1956,12 @@ Error(%2): %3 - - - - - - + + + + + + Band Activity Activitat a la banda @@ -1963,11 +1973,11 @@ Error(%2): %3 - - - - - + + + + + Rx Frequency Freqüència de RX @@ -2321,7 +2331,7 @@ en Groc quan és massa baix - + Fast Ràpid @@ -2429,7 +2439,7 @@ No està disponible per als titulars de indicatiu no estàndard. - + Fox Fox @@ -3141,415 +3151,415 @@ La llista es pot mantenir a la configuració (F2). Quant a WSJT-X - + Waterfall Cascada - + Open Obrir - + Ctrl+O Ctrl+O - + Open next in directory Obre el següent directori - + Decode remaining files in directory Descodificar els arxius restants al directori - + Shift+F6 Maj.+F6 - + Delete all *.wav && *.c2 files in SaveDir Esborrar tots els arxius *.wav i *.c2 - + None Cap - + Save all Guardar-ho tot - + Online User Guide Guia d'usuari online - + Keyboard shortcuts Dreceres de teclat - + Special mouse commands Ordres especials del ratolí - + JT9 JT9 - + Save decoded Guarda el descodificat - + Normal Normal - + Deep Profunda - + Monitor OFF at startup Monitor apagat a l’inici - + Erase ALL.TXT Esborrar l'arxiu ALL.TXT - + Erase wsjtx_log.adi Esborrar l'arxiu wsjtx_log.adi - + Convert mode to RTTY for logging Converteix el mode a RTTY després de registrar el QSO - + Log dB reports to Comments Posa els informes de recepció en dB als comentaris - + Prompt me to log QSO Inclòure el QSO al log - + Blank line between decoding periods Línia en blanc entre els períodes de descodificació - + Clear DX Call and Grid after logging Neteja l'indicatiu i la graella de DX després de registrar el QSO - + Display distance in miles Distància en milles - + Double-click on call sets Tx Enable Fes doble clic als conjunts d'indicatius d'activar TX - - + + F7 F7 - + Tx disabled after sending 73 TX desactivat després d’enviar 73 - - + + Runaway Tx watchdog Seguretat de TX - + Allow multiple instances Permetre diverses instàncies - + Tx freq locked to Rx freq TX freq bloquejat a RX freq - + JT65 JT65 - + JT9+JT65 JT9+JT65 - + Tx messages to Rx Frequency window Missatges de TX a la finestra de freqüència de RX - + Gray1 Gris1 - + Show DXCC entity and worked B4 status Mostra l'entitat DXCC i l'estat de B4 treballat - + Astronomical data Dades astronòmiques - + List of Type 1 prefixes and suffixes Llista de prefixos i sufixos de tipus 1 - + Settings... Configuració... - + Local User Guide Guia d'usuari local - + Open log directory Obre el directori del log - + JT4 JT4 - + Message averaging Mitjana de missatges - + Enable averaging Activa la mitjana - + Enable deep search Activa la cerca profunda - + WSPR WSPR - + Echo Graph Gràfic d'Eco - + F8 F8 - + Echo Eco - + EME Echo mode Mode EME Eco - + ISCAT ISCAT - + Fast Graph Gràfic ràpid - + F9 F9 - + &Download Samples ... &Descarrega mostres ... - + <html><head/><body><p>Download sample audio files demonstrating the various modes.</p></body></html> <html><head/><body><p>Descarrega els arxius d’àudio d’exemple mostrant els diversos modes.</p></body></html> - + MSK144 MSK144 - + QRA64 QRA64 - + Release Notes Notes de llançament - + Enable AP for DX Call Habilita AP per al indicatiu de DX - + FreqCal FreqCal - + Measure reference spectrum Mesura l’espectre de referència - + Measure phase response Mesura la resposta en fase - + Erase reference spectrum Esborra l'espectre de referència - + Execute frequency calibration cycle Executa el cicle de calibració de freqüència - + Equalization tools ... Eines d'equalització ... - + WSPR-LF WSPR-LF - + Experimental LF/MF mode Mode experimental LF/MF - + FT8 FT8 - - + + Enable AP Activa AP - + Solve for calibration parameters Resol els paràmetres de calibratge - + Copyright notice Avís de drets d’autor - + Shift+F1 Maj.+F1 - + Fox log Log Fox - + FT8 DXpedition Mode User Guide Guia de l'usuari del mode DXpedition a FT8 - + Reset Cabrillo log ... Restableix el log de Cabrillo ... - + Color highlighting scheme Esquema de ressaltar el color - + Contest Log Log de Concurs - + Export Cabrillo log ... Exporta el log de Cabrillo ... - + Quick-Start Guide to WSJT-X 2.0 Guia d'inici ràpid a WSJT-X 2.0 - + Contest log Log de Concurs - + Erase WSPR hashtable Esborra la taula WSPR - + FT4 FT4 @@ -3560,8 +3570,8 @@ La llista es pot mantenir a la configuració (F2). - - + + Receiving Rebent @@ -3597,21 +3607,21 @@ La llista es pot mantenir a la configuració (F2). - - - - - + + + + - + - + - + - + - + + Message Missatge @@ -3637,22 +3647,22 @@ La llista es pot mantenir a la configuració (F2). - + Improper mode Mode inadequat - + File Open Error Error al obrir l'arxiu - - - - + + + + Cannot open "%1" for append: %2 No es pot obrir "%1" per annexar: %2 @@ -3673,15 +3683,15 @@ La llista es pot mantenir a la configuració (F2). - - + + Single-Period Decodes Descodificacions d'un sol període - - + + Average Decodes Mitjans descodificats @@ -3702,7 +3712,7 @@ La llista es pot mantenir a la configuració (F2). - + Cannot open "%1" for writing: %2 No es pot obrir "%1" per escriure: %2 @@ -3806,32 +3816,32 @@ La llista es pot mantenir a la configuració (F2). No s’obriran més arxius. - + Please choose another Tx frequency. WSJT-X will not knowingly transmit another mode in the WSPR sub-band on 30m. Tria una altra freqüència de TX. El WSJT-X no transmetrà de manera conscient un altre mode a la sub-banda WSPR a 30 m. - + WSPR Guard Band Banda de Guàrdia WSPR - + Please choose another dial frequency. WSJT-X will not operate in Fox mode in the standard FT8 sub-bands. Tria una altra freqüència de treball. WSJT-X no funcionarà en mode Fox a les sub-bandes FT8 estàndard. - + Fox Mode warning Avís de mode Fox - + Last Tx: %1 Últim TX: %1 - + Should you switch to EU VHF Contest mode? To do so, check 'Special operating activity' and @@ -3842,183 +3852,183 @@ Per fer-ho, comprova "Activitat operativa especial" i Concurs EU VHF a la Configuració | Pestanya avançada. - + Should you switch to ARRL Field Day mode? Has de canviar al mode de Field Day de l'ARRL ? - + Should you switch to RTTY contest mode? Has de canviar al mode de concurs RTTY? - - - - + + + + Add to CALL3.TXT Afegeix a CALL3.TXT - + Please enter a valid grid locator Introduïu un locator vàlid - + Cannot open "%1" for read/write: %2 No es pot obrir "%1" per llegir o escriure: %2 - + %1 is already in CALL3.TXT, do you wish to replace it? %1 ja és a CALL3.TXT, vols substituir-lo ? - + Warning: DX Call field is empty. Avís: el camp de indicatiu DX està buit. - + Log file error Error a l'arxiu de log - + Cannot open "%1" No es pot obrir "%1" - + Error sending log to N1MM Error al enviar el log a N1MM - + Write returned "%1" Escriptura retornada "%1" - + Stations calling DXpedition %1 Estacions que criden a DXpedition %1 - + Hound Hound - + Tx Messages Missatges de TX - - - + + + Confirm Erase Confirma Esborrar - + Are you sure you want to erase file ALL.TXT? Estàs segur que vols esborrar l'arxiu ALL.TXT ? - - + + Confirm Reset Confirma que vols Restablir - + Are you sure you want to erase your contest log? Estàs segur que vols esborrar el log del concurs ? - + Doing this will remove all QSO records for the current contest. They will be kept in the ADIF log file but will not be available for export in your Cabrillo log. Si fas això, suprimiràs tots els registres de QSO del concurs actual. Es conservaran a l'arxiu de log ADIF, però no es podran exportar al log de Cabrillo. - + Cabrillo Log saved Log Cabrillo desat - + Are you sure you want to erase file wsjtx_log.adi? Estàs segur que vols esborrar l'arxiu wsjtx_log.adi ? - + Are you sure you want to erase the WSPR hashtable? Estàs segur que vols esborrar la taula del WSPR ? - + VHF features warning Les característiques de VHF tenen un avís - + Tune digital gain Guany de sintonització digital - + Transmit digital gain Guany digital de transmissió - + Prefixes Prefixos - + Network Error Error de xarxa - + Error: %1 UDP server %2:%3 Error: %1 UDP server %2:%3 - + File Error Error a l'arxiu - + Phase Training Disabled Entrenament de fase Desactivat - + Phase Training Enabled Entrenament de fase activat - + WD:%1m WD:%1m - - + + Log File Error Error a l'arxiu de log - + Are you sure you want to clear the QSO queues? Estàs segur que vols esborrar les cues de QSO ? @@ -4148,19 +4158,19 @@ UDP server %2:%3 No s'ha pogut iniciar el servidor COM OmniRig - - + + OmniRig: don't know how to set rig frequency OmniRig: no sé com establir la freqüència de l'equip - - + + OmniRig: timeout waiting for update from rig OmniRig: el temps d'espera a finalitzat per actualitzar des de l'equip - + OmniRig COM/OLE error: %1 at %2: %3 (%4) OmniRig Error COM/OLE: %1 a %2: %3 (%4) @@ -4313,6 +4323,36 @@ Error(%2): %3 Download Samples Descarrega mostres + + + &Abort + + + + + &Refresh + + + + + &Details + + + + + Base URL for samples: + + + + + Only use HTTP: + + + + + Check this is you get SSL/TLS errors + + Input Error diff --git a/translations/wsjtx_es.ts b/translations/wsjtx_es.ts index 34a6c5036..f1e068573 100644 --- a/translations/wsjtx_es.ts +++ b/translations/wsjtx_es.ts @@ -986,6 +986,16 @@ Formato: Directory + + + File + Fichero + + + + Progress + + @@ -1586,26 +1596,26 @@ Error: %2 - %3 FrequencyList_v2 - - + + IARU Region Región IARU - - + + Mode Modo - - + + Frequency Frecuencia - - + + Frequency (MHz) Frecuencia en MHz Frecuencia (MHz) @@ -1738,170 +1748,170 @@ Error: %2 - %3 Tipo CAT no admitido - + Hamlib error: %1 while %2 Error Hamlib: %1 mientras %2 - + opening connection to rig conexión de apertura al equipo abriendo conexión al equipo - + getting current frequency obteniendo frecuencia actual - + getting current mode obteniendo el modo actual obteniendo modo actual - - + + exchanging VFOs intercambiando VFO's - - + + getting other VFO frequency obteniendo otra frecuencia de VFO obteniendo la frecuencia del otro VFO - + getting other VFO mode obteniendo otro modo VFO obteniendo modo del otro VFO - + setting current VFO ajuste al VFO actual ajustando VFO actual - + getting frequency obteniendo frecuencia - + getting mode obteniendo modo - - + + getting current VFO obteniendo el VFO actual obteniendo VFO actual - - - - + + + + getting current VFO frequency obteniendo la frecuencia actual de VFO obteniendo frecuencia del VFO actual - - - - - - + + + + + + setting frequency ajuste de frecuencia ajustando frecuencia - - - - + + + + getting current VFO mode obteniendo modo del VFO actual - - - - - + + + + + setting current VFO mode ajuste del modo VFO actual ajustando modo del VFO actual - - + + setting/unsetting split mode activación/desactivación del modo dividido (split) activar/desactivar modo "Split" - - + + setting split mode activar modo dividido (split) ajustando modo "Split" - + setting split TX frequency and mode Ajuste de frecuencia y modo de transmisión dividida (split) ajustando la frecuencia de TX y modo del "Split" - + setting split TX frequency ajuste de frecuencia dividida en TX ajustando frecuencia de TX del "Split" - + getting split TX VFO mode obteniendo el modo dividido de TX en el VFO obteniendo modo del VFO de TX en "Split" - + setting split TX VFO mode ajuste del modo dividido (split) en TX del VFO ajustando modo del VFO de TX en "Split" - + getting PTT state obteniendo el estado del PTT - + setting PTT on activar el PTT activando PTT - + setting PTT off desactivar el PTT desactivando PTT - + setting a configuration item activar un elemento de configuración ajustando un elemento de configuración - + getting a configuration item obteniendo un elemento de configuración @@ -2138,12 +2148,12 @@ Error(%2): %3 - - - - - - + + + + + + Band Activity Actividad en la banda @@ -2155,11 +2165,11 @@ Error(%2): %3 - - - - - + + + + + Rx Frequency Frecuencia de RX @@ -2551,7 +2561,7 @@ Amarillo cuando esta muy bajo. - + Fast Rápido @@ -2672,7 +2682,7 @@ No está disponible para los titulares de indicativo no estándar. - + Fox Fox "Fox" @@ -3436,441 +3446,441 @@ predefinida. La lista se puede modificar en "Ajustes" (F2).Acerca de WSJT-X - + Waterfall Cascada Cascada (Waterfall) - + Open Abrir - + Ctrl+O Ctrl+O - + Open next in directory Abrir siguiente en el directorio - + Decode remaining files in directory Decodifica los archivos restantes en el directorio - + Shift+F6 Mayúsculas+F6 Mayúsculas+F6 - + Delete all *.wav && *.c2 files in SaveDir Borrar todos los archivos *.wav y *.c2 - + None Ninguno - + Save all Guardar todo - + Online User Guide Guía de usuario en línea - + Keyboard shortcuts Atajos de teclado - + Special mouse commands Comandos especiales del ratón - + JT9 JT9 - + Save decoded Guarda el decodificado Guardar lo decodificado - + Normal Normal - + Deep Profundo - + Monitor OFF at startup Monitor apagado al inicio "Monitor" apagado al inicio - + Erase ALL.TXT Borrar ALL.TXT - + Erase wsjtx_log.adi Borrar el archivo wsjtx_log.adi Borrar archivo wsjtx_log.adi - + Convert mode to RTTY for logging Convierte el modo a RTTY después de registrar el QSO Convierte el modo a RTTY para guardar el QSO - + Log dB reports to Comments Pon los informes de recepción en dB en Comentarios Guardar reportes dB en los Comentarios - + Prompt me to log QSO Pedirme que registre QSO Preguntarme antes de guardar el QSO - + Blank line between decoding periods Línea en blanco entre períodos de decodificación - + Clear DX Call and Grid after logging Borrar Indicativo DX y Locator/Grid DX después de registrar un QSO Borrar Indicativo y Locator del DX después de guardar QSO - + Display distance in miles Mostrar distancia en millas - + Double-click on call sets Tx Enable Haz doble clic en los conjuntos de indicativos de activar TX Doble clic en el indicativo activa la TX - - + + F7 F7 - + Tx disabled after sending 73 Tx deshabilitado después de enviar 73 Dehabilita TX después de enviar 73 - - + + Runaway Tx watchdog Control de TX - + Allow multiple instances Permitir múltiples instancias - + Tx freq locked to Rx freq TX frec bloqueado a RX frec Freq. de TX bloqueda a freq. de RX - + JT65 JT65 - + JT9+JT65 JT9+JT65 - + Tx messages to Rx Frequency window Mensajes de texto a la ventana de frecuencia de RX Mensajes de TX a la ventana de "Frecuencia de RX" - + Gray1 Gris1 - + Show DXCC entity and worked B4 status Mostrar entidad DXCC y estado B4 trabajado Mostrar DXCC y estado B4 trabajado - + Astronomical data Datos astronómicos - + List of Type 1 prefixes and suffixes Lista de prefijos y sufijos de tipo 1 Lista de prefijos y sufijos tipo 1 - + Settings... Configuración Ajustes - + Local User Guide Guía de usuario local - + Open log directory Abrir directorio de log - + JT4 JT4 - + Message averaging Promedio de mensajes - + Enable averaging Habilitar el promedio - + Enable deep search Habilitar búsqueda profunda - + WSPR WSPR - + Echo Graph Gráfico de eco - + F8 F8 - + Echo Echo Eco - + EME Echo mode Modo EME Eco - + ISCAT ISCAT - + Fast Graph Gráfico rápido "Fast Graph" - + F9 F9 - + &Download Samples ... &Descargar muestras ... &Descargar muestras de audio ... - + <html><head/><body><p>Download sample audio files demonstrating the various modes.</p></body></html> <html><head/><body><p>Descarga archivos de audio de muestra que demuestren los distintos modos.</p></body></html> <html><head/><body><p>Descargar archivos de audio de los distintos modos.</p></body></html> - + MSK144 MSK144 - + QRA64 QRA64 - + Release Notes Cambios en la nueva versión - + Enable AP for DX Call Habilitar AP para llamada DX Habilitar AP para indicativo DX - + FreqCal FreqCal - + Measure reference spectrum Medir espectro de referencia - + Measure phase response Medir la respuesta de fase - + Erase reference spectrum Borrar espectro de referencia - + Execute frequency calibration cycle Ejecutar ciclo de calibración de frecuencia - + Equalization tools ... Herramientas de ecualización ... - + WSPR-LF WSPR-LF - + Experimental LF/MF mode Modo experimental LF/MF - + FT8 FT8 - - + + Enable AP Habilitar AP - + Solve for calibration parameters Resolver para parámetros de calibración Resolver parámetros de calibración - + Copyright notice Derechos de Autor - + Shift+F1 Mayúsculas+F1 - + Fox log Log Fox Log "Fox" - + FT8 DXpedition Mode User Guide Guía de usuario del modo FT8 DXpedition (inglés) - + Reset Cabrillo log ... Restablecer log de Cabrillo ... Borrar log Cabrillo - + Color highlighting scheme Esquema de resaltado de color Esquema de resaltado de colores - + Contest Log Log de Concurso - + Export Cabrillo log ... Exportar log de Cabrillo ... Exportar log Cabrillo - + Quick-Start Guide to WSJT-X 2.0 Guía de inicio rápido para WSJT-X 2.0 (inglés) - + Contest log Log de Concurso - + Erase WSPR hashtable Borrar la tabla de WSPR - + FT4 FT4 @@ -3881,8 +3891,8 @@ predefinida. La lista se puede modificar en "Ajustes" (F2). - - + + Receiving Recibiendo @@ -3922,21 +3932,21 @@ Error al cargar datos de usuarios de LotW - - - - - + + + + - + - + - + - + - + + Message Mensaje @@ -3964,23 +3974,23 @@ Error al cargar datos de usuarios de LotW - + Improper mode Modo incorrecto - + File Open Error Error de apertura del archivo Error al abrir archivo - - - - + + + + Cannot open "%1" for append: %2 No puedo abrir "%1" para anexar: %2 No se puedo abrir "%1" para anexar: %2 @@ -4004,15 +4014,15 @@ Error al cargar datos de usuarios de LotW - - + + Single-Period Decodes Decodificaciones de un solo período - - + + Average Decodes Promedio de decodificaciones @@ -4034,7 +4044,7 @@ Error al cargar datos de usuarios de LotW - + Cannot open "%1" for writing: %2 No se puede abrir "%1" para la escritura: %2 No se puede abrir "%1" para escritura: %2 @@ -4151,36 +4161,36 @@ Error al cargar datos de usuarios de LotW No hay más archivos para abrir. - + Please choose another Tx frequency. WSJT-X will not knowingly transmit another mode in the WSPR sub-band on 30m. Por favor, elije otra frecuencia de transmisión. WSJT-X no transmitirá a sabiendas otro modo en la sub-banda WSPR en 30m. Elije otra frecuencia de transmisión. WSJT-X no transmitirá a sabiendas otro modo en la sub-banda WSPR en 30M. - + WSPR Guard Band Banda de Guardia WSPR - + Please choose another dial frequency. WSJT-X will not operate in Fox mode in the standard FT8 sub-bands. Elige otra frecuencia de dial. WSJT-X no funcionará en modo Fox en las sub-bandas FT8 estándar. Por favor elija otra frecuencia. WSJT-X no operá en modo "Fox" en las sub-bandas de FT8 estándar. - + Fox Mode warning Advertencia del modo Fox Advertencia de modo "Fox" - + Last Tx: %1 Última TX: %1 Últ TX: %1 - + Should you switch to EU VHF Contest mode? To do so, check 'Special operating activity' and @@ -4195,37 +4205,37 @@ Para hacerlo, marca "Actividad operativa especial" y luego "Concurso VHF EU" en "Archivo" - "Ajustes" - "Avanzado". - + Should you switch to ARRL Field Day mode? ¿Cambiar al modo ARRL Field Day? - + Should you switch to RTTY contest mode? ¿Cambiar al modo de concurso RTTY? - - - - + + + + Add to CALL3.TXT Añadir a CALL3.TXT - + Please enter a valid grid locator Por favor, introduce un locator/Grid válido Por favor escriba un locator válido - + Cannot open "%1" for read/write: %2 No se puede abrir "%1" para leer/escribir: %2 No se puede abrir "%1" para lectura/escritura: %2 - + %1 is already in CALL3.TXT, do you wish to replace it? %1 @@ -4234,167 +4244,167 @@ ya está en CALL3.TXT, ¿deseas reemplazarlo? ya está en CALL3.TXT, ¿desea reemplazarlo? - + Warning: DX Call field is empty. Advertencia: el campo de Indicativo DX está vacío. Advertencia: el campo Indicativo DX está vacío. - + Log file error Error de archivo de log Error en el archivo de log - + Cannot open "%1" No puedo abrir "%1" No se puede abrir "%1" - + Error sending log to N1MM Error al enviar el log a N1MM - + Write returned "%1" Escritura devuelta "%1" Escritura devuelve "%1" - + Stations calling DXpedition %1 Estaciones que llaman a DXpedition %1 Estaciones llamando a DXpedition %1 - + Hound Hound "Hound" - + Tx Messages Mensajes de TX Mensajes TX - - - + + + Confirm Erase Confirmar borrado - + Are you sure you want to erase file ALL.TXT? ¿Estás seguro de que quiere borrar el archivo ALL.TXT? - - + + Confirm Reset Confirmar reinicio Confirmar restablecer - + Are you sure you want to erase your contest log? ¿Estás seguro de que quieres borrar el log de tú concurso? ¿Está seguro que quiere borrar el log de concurso? - + Doing this will remove all QSO records for the current contest. They will be kept in the ADIF log file but will not be available for export in your Cabrillo log. Hacer esto eliminará todos los registros de QSO para el concurso actual. Se guardarán en el archivo log de ADIF, pero no estarán disponibles para la exportación en tú log de Cabrillo. Hacer esto eliminará todos los QSOs del concurso actual. Se mantendrán en el log ADIF, pero no estarán disponibles para la exportación como log de Cabrillo. - + Cabrillo Log saved Cabrillo Log guardado Log Cabrillo guardado - + Are you sure you want to erase file wsjtx_log.adi? ¿Estás seguro de que quieres borrar el archivo wsjtx_log.adi? ¿Está seguro que quiere borrar el archivo wsjtx_log.adi? - + Are you sure you want to erase the WSPR hashtable? ¿Estás seguro de que quieres borrar la tabla WSPR? ¿Está seguro de que quiere borrar la tabla hash WSPR? - + VHF features warning Advertencia de características VHF - + Tune digital gain Ganancia de sintonización digital Ajustar ganancia digital - + Transmit digital gain Ganancia de transmisión digital Transmitir ganancia digital - + Prefixes Prefijos Prefijos y sufijos tipo 1 - + Network Error Error de red - + Error: %1 UDP server %2:%3 Error: %1 Servidor UDP %2:%3 - + File Error Error en el archivo - + Phase Training Disabled Fase de entrenamiento deshabilitado Entrenamieno de Fase deshabilitado - + Phase Training Enabled Fase de entrenamiento habilitado Entrenamiento de Fase habilitado - + WD:%1m WD:%1m - - + + Log File Error Error de archivo log Error en archivo log - + Are you sure you want to clear the QSO queues? ¿Estás seguro de que quieres borrar las colas QSO? ¿Está seguro que quiere borrar las colas de QSOs? @@ -4539,20 +4549,20 @@ Servidor UDP %2:%3 Error al iniciar servidor COM de OmniRig - - + + OmniRig: don't know how to set rig frequency OmniRig: no sé cómo configurar la frecuencia del equipo - - + + OmniRig: timeout waiting for update from rig OmniRig: el tiempo de espera finalizó en la actualización del equipo OmniRig: el tiempo de espera agotado esperando la actualización del equipo - + OmniRig COM/OLE error: %1 at %2: %3 (%4) Error de OmniRig COM/OLE: %1 a %2: %3 (%4 @@ -4717,6 +4727,36 @@ Error(%2): %3 Download Samples Descargar muestras de audio + + + &Abort + + + + + &Refresh + + + + + &Details + + + + + Base URL for samples: + + + + + Only use HTTP: + + + + + Check this is you get SSL/TLS errors + + Input Error diff --git a/translations/wsjtx_ja.ts b/translations/wsjtx_ja.ts index 490cb83e7..b674e7ebb 100644 --- a/translations/wsjtx_ja.ts +++ b/translations/wsjtx_ja.ts @@ -888,6 +888,16 @@ Format: Directory + + + File + ファイル + + + + Progress + + diff --git a/translations/wsjtx_zh.ts b/translations/wsjtx_zh.ts index 89017e936..21dbcd8d3 100644 --- a/translations/wsjtx_zh.ts +++ b/translations/wsjtx_zh.ts @@ -4173,9 +4173,8 @@ UDP 服务器 %2:%3 QObject - Invalid rig name - \ & / not allowed - 无效的无线电设备名称 - \ & / 不允许 + 无效的无线电设备名称 - \ & / 不允许 diff --git a/translations/wsjtx_zh_HK.ts b/translations/wsjtx_zh_HK.ts index 9d62900e7..df6c510b8 100644 --- a/translations/wsjtx_zh_HK.ts +++ b/translations/wsjtx_zh_HK.ts @@ -4173,7 +4173,6 @@ UDP 服務器 %2:%3 QObject - Invalid rig name - \ & / not allowed 無效的無線電裝置名稱 - \ & / 不允許 diff --git a/widgets/about.cpp b/widgets/about.cpp index b1af01807..cc7f8a337 100644 --- a/widgets/about.cpp +++ b/widgets/about.cpp @@ -20,10 +20,10 @@ CAboutDlg::CAboutDlg(QWidget *parent) : "weak-signal Amateur Radio communication.

" "© 2001-2020 by Joe Taylor, K1JT, Bill Somerville, G4WJS,
" "and Steve Franke, K9AN.

" - "We gratefully acknowledge contributions from AC6SL, AE4JY, DJ0OT,
" - "G3WDG, G4KLA, IV3NWV, IW3RAB, K3WYC, KA6MAL, KA9Q, KB1ZMX,
" - "KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR, VE1SKY, VK3ACF, VK4BDJ,
" - "VK7MO, W4TI, W4TV, and W9MDB.

" + "We gratefully acknowledge contributions from AC6SL, AE4JY,
" + "DF2ET, DJ0OT, G3WDG, G4KLA, IV3NWV, IW3RAB, K3WYC, KA6MAL,
" + "KA9Q, KB1ZMX, KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR, VE1SKY,
" + "VK3ACF, VK4BDJ, VK7MO, W4TI, W4TV, and W9MDB.

" "WSJT-X is licensed under the terms of Version 3
" "of the GNU General Public License (GPL)

" "" diff --git a/widgets/astro.cpp b/widgets/astro.cpp index 122b86eff..b190d4a40 100644 --- a/widgets/astro.cpp +++ b/widgets/astro.cpp @@ -46,7 +46,8 @@ Astro::Astro(QSettings * settings, Configuration const * configuration, QWidget { ui_->setupUi (this); setWindowTitle (QApplication::applicationName () + " - " + tr ("Astronomical Data")); - setStyleSheet ("QWidget {background: white;}"); + setBackgroundRole (QPalette::Base); + setAutoFillBackground (true); connect (ui_->cbDopplerTracking, &QAbstractButton::toggled, ui_->doppler_widget, &QWidget::setVisible); read_settings (); ui_->text_label->clear (); diff --git a/widgets/logqso.cpp b/widgets/logqso.cpp index 187d2618c..7a74b86cf 100644 --- a/widgets/logqso.cpp +++ b/widgets/logqso.cpp @@ -15,6 +15,37 @@ #include "ui_logqso.h" #include "moc_logqso.cpp" +namespace +{ + struct PropMode + { + char const * id_; + char const * name_; + }; + constexpr PropMode prop_modes[] = + { + {"", ""} + , {"AS", QT_TRANSLATE_NOOP ("LogQSO", "Aircraft scatter")} + , {"AUE", QT_TRANSLATE_NOOP ("LogQSO", "Aurora-E")} + , {"AUR", QT_TRANSLATE_NOOP ("LogQSO", "Aurora")} + , {"BS", QT_TRANSLATE_NOOP ("LogQSO", "Back scatter")} + , {"ECH", QT_TRANSLATE_NOOP ("LogQSO", "Echolink")} + , {"EME", QT_TRANSLATE_NOOP ("LogQSO", "Earth-moon-earth")} + , {"ES", QT_TRANSLATE_NOOP ("LogQSO", "Sporadic E")} + , {"F2", QT_TRANSLATE_NOOP ("LogQSO", "F2 Reflection")} + , {"FAI", QT_TRANSLATE_NOOP ("LogQSO", "Field aligned irregularities")} + , {"INTERNET", QT_TRANSLATE_NOOP ("LogQSO", "Internet-assisted")} + , {"ION", QT_TRANSLATE_NOOP ("LogQSO", "Ionoscatter")} + , {"IRL", QT_TRANSLATE_NOOP ("LogQSO", "IRLP")} + , {"MS", QT_TRANSLATE_NOOP ("LogQSO", "Meteor scatter")} + , {"RPT", QT_TRANSLATE_NOOP ("LogQSO", "Non-satellite repeater or transponder")} + , {"RS", QT_TRANSLATE_NOOP ("LogQSO", "Rain scatter")} + , {"SAT", QT_TRANSLATE_NOOP ("LogQSO", "Satellite")} + , {"TEP", QT_TRANSLATE_NOOP ("LogQSO", "Trans-equatorial")} + , {"TR", QT_TRANSLATE_NOOP ("LogQSO", "Troposheric ducting")} + }; +} + LogQSO::LogQSO(QString const& programTitle, QSettings * settings , Configuration const * config, LogBook * log, QWidget *parent) : QDialog {parent, Qt::WindowStaysOnTopHint | Qt::WindowTitleHint | Qt::WindowSystemMenuHint} @@ -25,6 +56,10 @@ LogQSO::LogQSO(QString const& programTitle, QSettings * settings { ui->setupUi(this); setWindowTitle(programTitle + " - Log QSO"); + for (auto const& prop_mode : prop_modes) + { + ui->comboBoxPropMode->addItem (prop_mode.name_, prop_mode.id_); + } loadSettings (); ui->grid->setValidator (new MaidenheadLocatorValidator {this}); } @@ -39,8 +74,15 @@ void LogQSO::loadSettings () restoreGeometry (m_settings->value ("geometry", saveGeometry ()).toByteArray ()); ui->cbTxPower->setChecked (m_settings->value ("SaveTxPower", false).toBool ()); ui->cbComments->setChecked (m_settings->value ("SaveComments", false).toBool ()); + ui->cbPropMode->setChecked (m_settings->value ("SavePropMode", false).toBool ()); m_txPower = m_settings->value ("TxPower", "").toString (); m_comments = m_settings->value ("LogComments", "").toString(); + int prop_index {0}; + if (ui->cbPropMode->isChecked ()) + { + prop_index = ui->comboBoxPropMode->findData (m_settings->value ("PropMode", "").toString()); + } + ui->comboBoxPropMode->setCurrentIndex (prop_index); m_settings->endGroup (); } @@ -50,8 +92,10 @@ void LogQSO::storeSettings () const m_settings->setValue ("geometry", saveGeometry ()); m_settings->setValue ("SaveTxPower", ui->cbTxPower->isChecked ()); m_settings->setValue ("SaveComments", ui->cbComments->isChecked ()); + m_settings->setValue ("SavePropMode", ui->cbPropMode->isChecked ()); m_settings->setValue ("TxPower", m_txPower); m_settings->setValue ("LogComments", m_comments); + m_settings->setValue ("PropMode", ui->comboBoxPropMode->currentData ()); m_settings->endGroup (); } @@ -100,6 +144,10 @@ void LogQSO::initLogQSO(QString const& hisCall, QString const& hisGrid, QString ui->loggedOperator->setText(m_config->opCall()); ui->exchSent->setText (xSent); ui->exchRcvd->setText (xRcvd); + if (!ui->cbPropMode->isChecked ()) + { + ui->comboBoxPropMode->setCurrentIndex (-1); + } using SpOp = Configuration::SpecialOperatingActivity; auto special_op = m_config->special_op_id (); @@ -178,6 +226,7 @@ void LogQSO::accept() } } + auto const& prop_mode = ui->comboBoxPropMode->currentData ().toString (); //Log this QSO to file "wsjtx.log" static QFile f {QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("wsjtx.log")}; if(!f.open(QIODevice::Text | QIODevice::Append)) { @@ -191,7 +240,7 @@ void LogQSO::accept() dateTimeOff.time().toString("hh:mm:ss,") + hisCall + "," + hisGrid + "," + strDialFreq + "," + mode + "," + rptSent + "," + rptRcvd + "," + m_txPower + - "," + m_comments + "," + name; + "," + m_comments + "," + name + "," + prop_mode; QTextStream out(&f); out << logEntry << #if QT_VERSION < QT_VERSION_CHECK(5, 15, 0) @@ -220,6 +269,7 @@ void LogQSO::accept() , m_myGrid , xsent , xrcvd + , prop_mode , m_log->QSOToADIF (hisCall , hisGrid , mode @@ -236,7 +286,8 @@ void LogQSO::accept() , m_txPower , operator_call , xsent - , xrcvd)); + , xrcvd + , prop_mode)); QDialog::accept(); } diff --git a/widgets/logqso.h b/widgets/logqso.h index 739a601f7..f6e8d4fed 100644 --- a/widgets/logqso.h +++ b/widgets/logqso.h @@ -42,7 +42,7 @@ signals: , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call , QString const& my_call, QString const& my_grid , QString const& exchange_sent, QString const& exchange_rcvd - , QByteArray const& ADIF); + , QString const& propmode, QByteArray const& ADIF); protected: void hideEvent (QHideEvent *); diff --git a/widgets/logqso.ui b/widgets/logqso.ui index a03a3028a..7b885cd01 100644 --- a/widgets/logqso.ui +++ b/widgets/logqso.ui @@ -6,8 +6,8 @@ 0 0 - 377 - 287 + 440 + 322 @@ -46,6 +46,9 @@ Qt::AlignCenter + + call + @@ -68,6 +71,9 @@ Qt::AlignCenter + + start_date_time + @@ -103,6 +109,9 @@ Qt::AlignCenter + + end_date_time + @@ -142,6 +151,9 @@ Qt::AlignCenter + + mode + @@ -171,6 +183,9 @@ Qt::AlignCenter + + band + @@ -200,6 +215,9 @@ Qt::AlignCenter + + sent + @@ -229,6 +247,9 @@ Qt::AlignCenter + + rcvd + @@ -258,6 +279,9 @@ Qt::AlignCenter + + grid + @@ -290,6 +314,9 @@ Qt::AlignCenter + + name + @@ -310,6 +337,9 @@ Tx power + + txPower + @@ -339,6 +369,9 @@ Comments + + comments + @@ -369,6 +402,9 @@ Operator + + loggedOperator + @@ -403,6 +439,9 @@ Exch sent + + exchSent + @@ -433,6 +472,9 @@ Rcvd + + exchRcvd + @@ -447,6 +489,30 @@ + + + + + + Prop Mode + + + comboBoxPropMode + + + + + + + + + + Retain + + + + + @@ -486,6 +552,11 @@ cbTxPower comments cbComments + loggedOperator + exchSent + exchRcvd + comboBoxPropMode + cbPropMode diff --git a/widgets/mainwindow.cpp b/widgets/mainwindow.cpp index 5569385c0..71f17093a 100644 --- a/widgets/mainwindow.cpp +++ b/widgets/mainwindow.cpp @@ -5700,7 +5700,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call , QString const& my_call, QString const& my_grid , QString const& exchange_sent, QString const& exchange_rcvd - , QByteArray const& ADIF) + , QString const& propmode, QByteArray const& ADIF) { QString date = QSO_date_on.toString("yyyyMMdd"); if (!m_logBook.add (call, grid, m_config.bands()->find(dial_freq), mode, ADIF)) @@ -5711,7 +5711,7 @@ void MainWindow::acceptQSO (QDateTime const& QSO_date_off, QString const& call, m_messageClient->qso_logged (QSO_date_off, call, grid, dial_freq, mode, rpt_sent, rpt_received , tx_power, comments, name, QSO_date_on, operator_call, my_call, my_grid - , exchange_sent, exchange_rcvd); + , exchange_sent, exchange_rcvd, propmode); m_messageClient->logged_ADIF (ADIF); // Log to N1MM Logger diff --git a/widgets/mainwindow.h b/widgets/mainwindow.h index 157141cdd..e62f7da9a 100644 --- a/widgets/mainwindow.h +++ b/widgets/mainwindow.h @@ -243,7 +243,7 @@ private slots: , QString const& name, QDateTime const& QSO_date_on, QString const& operator_call , QString const& my_call, QString const& my_grid , QString const& exchange_sent, QString const& exchange_rcvd - , QByteArray const& ADIF); + , QString const& propmode, QByteArray const& ADIF); void on_bandComboBox_currentIndexChanged (int index); void on_bandComboBox_activated (int index); void on_readFreq_clicked(); diff --git a/widgets/widgets.pri b/widgets/widgets.pri index 4ff058c66..7a364c4ee 100644 --- a/widgets/widgets.pri +++ b/widgets/widgets.pri @@ -10,7 +10,7 @@ SOURCES += \ widgets/AbstractLogWindow.cpp \ widgets/FrequencyLineEdit.cpp widgets/FrequencyDeltaLineEdit.cpp \ widgets/FoxLogWindow.cpp widgets/CabrilloLogWindow.cpp \ - widgets/HelpTextWindow.cpp + widgets/HelpTextWindow.cpp widgets/RestrictedSpinBox.cpp HEADERS += \ widgets/mainwindow.h widgets/plotter.h \ widgets/about.h widgets/widegraph.h \ @@ -21,7 +21,8 @@ HEADERS += \ widgets/fastplot.h widgets/MessageBox.hpp widgets/colorhighlighting.h \ widgets/ExportCabrillo.h widgets/AbstractLogWindow.hpp \ widgets/FoxLogWindow.hpp widgets/CabrilloLogWindow.hpp \ - widgets/DateTimeEdit.hpp widgets/HelpTextWindow.hpp + widgets/DateTimeEdit.hpp widgets/HelpTextWindow.hpp \ + widgets/RestrictedSpinBox.hpp FORMS += \ widgets/mainwindow.ui widgets/about.ui \