mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-26 06:08:42 -05:00
Merge branch 'release-2.5.0'
This commit is contained in:
commit
fd326893be
@ -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 2)
|
set_build_type (RC 3)
|
||||||
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}")
|
||||||
|
|
||||||
#
|
#
|
||||||
|
19
NEWS
19
NEWS
@ -12,6 +12,25 @@
|
|||||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.5.0-rc3
|
||||||
|
Jul 3, 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-rc2 include the following
|
||||||
|
enhancements and defect repairs:
|
||||||
|
|
||||||
|
MAP65:
|
||||||
|
- Correct two defects that could cause "hung decoder" status
|
||||||
|
- Translate reported frequencies so that |DF| <= 500 Hz for Q65
|
||||||
|
decodes.
|
||||||
|
- Provide access to Release Notes from the Help menu
|
||||||
|
|
||||||
|
WSJT-X:
|
||||||
|
- Repair a long standing defect that caused UDP Protocol Heartbeat
|
||||||
|
messages to not be sent when no other intervening messages are
|
||||||
|
sent.
|
||||||
|
|
||||||
Release: WSJT-X 2.5.0-rc2
|
Release: WSJT-X 2.5.0-rc2
|
||||||
Jun 28, 2021
|
Jun 28, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
|
@ -71,12 +71,12 @@ public:
|
|||||||
void heartbeat ();
|
void heartbeat ();
|
||||||
void closedown ();
|
void closedown ();
|
||||||
StreamStatus check_status (QDataStream const&) const;
|
StreamStatus check_status (QDataStream const&) const;
|
||||||
void send_message (QByteArray const&, bool queue_if_pending = true);
|
void send_message (QByteArray const&, bool queue_if_pending = true, bool allow_duplicates = false);
|
||||||
void send_message (QDataStream const& out, QByteArray const& message, bool queue_if_pending = true)
|
void send_message (QDataStream const& out, QByteArray const& message, bool queue_if_pending = true, bool allow_duplicates = false)
|
||||||
{
|
{
|
||||||
if (OK == check_status (out))
|
if (OK == check_status (out))
|
||||||
{
|
{
|
||||||
send_message (message, queue_if_pending);
|
send_message (message, queue_if_pending, allow_duplicates);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -197,7 +197,7 @@ void MessageClient::impl::start ()
|
|||||||
// clear any backlog
|
// clear any backlog
|
||||||
while (pending_messages_.size ())
|
while (pending_messages_.size ())
|
||||||
{
|
{
|
||||||
send_message (pending_messages_.dequeue (), false);
|
send_message (pending_messages_.dequeue (), true, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -429,7 +429,7 @@ void MessageClient::impl::heartbeat ()
|
|||||||
out << NetworkMessage::Builder::schema_number // maximum schema number accepted
|
out << NetworkMessage::Builder::schema_number // maximum schema number accepted
|
||||||
<< version_.toUtf8 () << revision_.toUtf8 ();
|
<< version_.toUtf8 () << revision_.toUtf8 ();
|
||||||
TRACE_UDP ("schema:" << schema_ << "max schema:" << NetworkMessage::Builder::schema_number << "version:" << version_ << "revision:" << revision_);
|
TRACE_UDP ("schema:" << schema_ << "max schema:" << NetworkMessage::Builder::schema_number << "version:" << version_ << "revision:" << revision_);
|
||||||
send_message (out, message, false);
|
send_message (out, message, false, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -444,13 +444,13 @@ void MessageClient::impl::closedown ()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageClient::impl::send_message (QByteArray const& message, bool queue_if_pending)
|
void MessageClient::impl::send_message (QByteArray const& message, bool queue_if_pending, bool allow_duplicates)
|
||||||
{
|
{
|
||||||
if (server_port_)
|
if (server_port_)
|
||||||
{
|
{
|
||||||
if (!server_.isNull ())
|
if (!server_.isNull ())
|
||||||
{
|
{
|
||||||
if (message != last_message_) // avoid duplicates
|
if (allow_duplicates || message != last_message_) // avoid duplicates
|
||||||
{
|
{
|
||||||
if (is_multicast_address (server_))
|
if (is_multicast_address (server_))
|
||||||
{
|
{
|
||||||
|
@ -12,6 +12,25 @@
|
|||||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.5.0-rc3
|
||||||
|
Jul 3, 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-rc2 include the following
|
||||||
|
enhancements and defect repairs:
|
||||||
|
|
||||||
|
MAP65:
|
||||||
|
- Correct two defects that could cause "hung decoder" status
|
||||||
|
- Translate reported frequencies so that |DF| <= 500 Hz for Q65
|
||||||
|
decodes.
|
||||||
|
- Provide access to Release Notes from the Help menu
|
||||||
|
|
||||||
|
WSJT-X:
|
||||||
|
- Repair a long standing defect that caused UDP Protocol Heartbeat
|
||||||
|
messages to not be sent when no other intervening messages are
|
||||||
|
sent.
|
||||||
|
|
||||||
Release: WSJT-X 2.5.0-rc2
|
Release: WSJT-X 2.5.0-rc2
|
||||||
Jun 28, 2021
|
Jun 28, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
|
@ -453,6 +453,7 @@ subroutine q65_ccf_22(s1,iz,jz,nfqso,ntol,ndepth,ntrperiod,iavg,ipk,jpk, &
|
|||||||
ibest=0
|
ibest=0
|
||||||
lagpk=0
|
lagpk=0
|
||||||
lagbest=0
|
lagbest=0
|
||||||
|
idrift_best=0
|
||||||
do i=ia,ib
|
do i=ia,ib
|
||||||
ccfmax=0.
|
ccfmax=0.
|
||||||
do lag=lag1,lag2
|
do lag=lag1,lag2
|
||||||
|
@ -59,8 +59,9 @@ subroutine q65_loops(c00,npts2,nsps2,nsubmode,ndepth,jpk0, &
|
|||||||
ndt=idt/2
|
ndt=idt/2
|
||||||
if(mod(idt,2).eq.0) ndt=-ndt
|
if(mod(idt,2).eq.0) ndt=-ndt
|
||||||
jpk=jpk0 + nsps2*ndt/16 !tsym/16
|
jpk=jpk0 + nsps2*ndt/16 !tsym/16
|
||||||
if(jpk.lt.0) jpk=0
|
jpk=max(0,jpk)
|
||||||
call spec64(c0,nsps2,mode_q65,jpk,s3,LL,NN)
|
jpk=min(29000,jpk)
|
||||||
|
call spec64(c0,npts2,nsps2,mode_q65,jpk,s3,LL,NN)
|
||||||
call pctile(s3,LL*NN,40,base)
|
call pctile(s3,LL*NN,40,base)
|
||||||
s3=s3/base
|
s3=s3/base
|
||||||
where(s3(1:LL*NN)>s3lim) s3(1:LL*NN)=s3lim
|
where(s3(1:LL*NN)>s3lim) s3(1:LL*NN)=s3lim
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
subroutine spec64(c0,nsps,mode_q65,jpk,s3,LL,NN)
|
subroutine spec64(c0,npts,nsps,mode_q65,jpk,s3,LL,NN)
|
||||||
|
|
||||||
parameter (MAXFFT=20736)
|
parameter (MAXFFT=20736)
|
||||||
!### Fix this:
|
complex c0(0:npts-1) !Complex spectrum of dd()
|
||||||
complex c0(0:1800000-1) !Complex spectrum of dd()
|
|
||||||
complex cs(0:MAXFFT-1) !Complex symbol spectrum
|
complex cs(0:MAXFFT-1) !Complex symbol spectrum
|
||||||
real s3(LL,NN) !Synchronized symbol spectra
|
real s3(LL,NN) !Synchronized symbol spectra
|
||||||
real xbase0(LL),xbase(LL)
|
real xbase0(LL),xbase(LL)
|
||||||
@ -21,7 +20,11 @@ subroutine spec64(c0,nsps,mode_q65,jpk,s3,LL,NN)
|
|||||||
j=j+1
|
j=j+1
|
||||||
ja=(k-1)*nsps + jpk
|
ja=(k-1)*nsps + jpk
|
||||||
jb=ja+nsps-1
|
jb=ja+nsps-1
|
||||||
cs(0:nfft-1)=c0(ja:jb)
|
if(ja.lt.0) ja=0
|
||||||
|
if(jb.gt.npts-1) jb=npts-1
|
||||||
|
nz=jb-ja
|
||||||
|
cs(0:nz)=c0(ja:jb)
|
||||||
|
if(nz.lt.nfft-1) cs(nz+1:)=0.
|
||||||
call four2a(cs,nsps,1,-1,1) !c2c FFT to frequency
|
call four2a(cs,nsps,1,-1,1) !c2c FFT to frequency
|
||||||
do ii=1,LL
|
do ii=1,LL
|
||||||
i=ii-65+mode_q65 !mode_q65 = 1 2 4 8 16 for Q65 A B C D E
|
i=ii-65+mode_q65 !mode_q65 = 1 2 4 8 16 for Q65 A B C D E
|
||||||
|
@ -11,7 +11,7 @@ program m65
|
|||||||
! 13 map65.log
|
! 13 map65.log
|
||||||
! 14
|
! 14
|
||||||
! 15
|
! 15
|
||||||
! 16
|
! 16 tquick log
|
||||||
! 17 saved *.tf2 files
|
! 17 saved *.tf2 files
|
||||||
! 18 test file to be transmitted (wsjtgen.f90)
|
! 18 test file to be transmitted (wsjtgen.f90)
|
||||||
! 19 livecq.txt
|
! 19 livecq.txt
|
||||||
|
@ -37,6 +37,7 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
|||||||
data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/,mousefqso0/-999/
|
data nfile/0/,nutc0/-999/,nid/0/,ip000/1/,ip001/1/,mousefqso0/-999/
|
||||||
save
|
save
|
||||||
|
|
||||||
|
call sec0(0,tquick)
|
||||||
nkhz_center=nint(1000.0*(fcenter-int(fcenter)))
|
nkhz_center=nint(1000.0*(fcenter-int(fcenter)))
|
||||||
mfa=nfa-nkhz_center+48
|
mfa=nfa-nkhz_center+48
|
||||||
mfb=nfb-nkhz_center+48
|
mfb=nfb-nkhz_center+48
|
||||||
@ -381,6 +382,11 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
|||||||
write(*,1013) nsum,nsave
|
write(*,1013) nsum,nsave
|
||||||
1013 format('<QuickDecodeDone>',2i4)
|
1013 format('<QuickDecodeDone>',2i4)
|
||||||
flush(6)
|
flush(6)
|
||||||
|
call sec0(1,tquick)
|
||||||
|
open(16,file='tquick.dat',status='unknown',access='append')
|
||||||
|
write(16,1016) nutc,tquick
|
||||||
|
1016 format(i4.4,f7.1)
|
||||||
|
close(16)
|
||||||
endif
|
endif
|
||||||
if(nqd.eq.1 .and. nagain.eq.1) go to 900
|
if(nqd.eq.1 .and. nagain.eq.1) go to 900
|
||||||
|
|
||||||
@ -481,9 +487,9 @@ subroutine map65a(dd,ss,savg,newdat,nutc,fcenter,ntol,idphi,nfa,nfb, &
|
|||||||
write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
|
write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
|
||||||
nsync2,nutc,decoded,cp,cmode
|
nsync2,nutc,decoded,cp,cmode
|
||||||
1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,4x,a22,2x,a1,3x,a2)
|
1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,4x,a22,2x,a1,3x,a2)
|
||||||
write(21,1016) f0,ndf,dt,npol,nsync2,nutc,decoded,cp, &
|
write(21,1100) f0,ndf,dt,npol,nsync2,nutc,decoded,cp, &
|
||||||
cmode(1:1),cmode(2:2)
|
cmode(1:1),cmode(2:2)
|
||||||
1016 format(f8.3,i5,f5.1,2i4,i5.4,2x,a22,2x,a1,3x,a1,1x,a1)
|
1100 format(f8.3,i5,f5.1,2i4,i5.4,2x,a22,2x,a1,3x,a1,1x,a1)
|
||||||
|
|
||||||
! write(21,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
|
! write(21,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
|
||||||
! nutc,decoded,cp,cmode
|
! nutc,decoded,cp,cmode
|
||||||
|
@ -56,15 +56,16 @@ subroutine polfit(y,npts,a)
|
|||||||
deltaa(j)=deltaa(j)*fn/3.
|
deltaa(j)=deltaa(j)*fn/3.
|
||||||
! write(*,4000) iter,j,a,deltaa,chisq2
|
! write(*,4000) iter,j,a,deltaa,chisq2
|
||||||
!4000 format(2i2,2(2x,3f8.2),f12.5)
|
!4000 format(2i2,2(2x,3f8.2),f12.5)
|
||||||
enddo
|
enddo ! j=1,nterms
|
||||||
chisqr=fchisq_pol(y,npts,a)
|
chisqr=fchisq_pol(y,npts,a)
|
||||||
! write(*,4000) 0,0,a,chisqr
|
! write(*,4000) 0,0,a,chisqr
|
||||||
|
if(chisqr.lt.1.0) exit
|
||||||
if(deltaa(1).lt.0.01*(a(2)-a(1)) .and. deltaa(2).lt.0.01*(a(2)-a(1)) &
|
if(deltaa(1).lt.0.01*(a(2)-a(1)) .and. deltaa(2).lt.0.01*(a(2)-a(1)) &
|
||||||
.and. deltaa(3).lt.1.0) exit
|
.and. deltaa(3).lt.1.0) exit
|
||||||
if(chisqr/chisqr0.gt.0.99) exit
|
if(chisqr/chisqr0.gt.0.99) exit
|
||||||
a(3)=mod(a(3)+360.0,180.0)
|
|
||||||
chisqr0=chisqr
|
chisqr0=chisqr
|
||||||
enddo
|
enddo ! iter
|
||||||
|
a(3)=mod(a(3)+360.0,180.0)
|
||||||
|
|
||||||
return
|
return
|
||||||
end subroutine polfit
|
end subroutine polfit
|
||||||
|
@ -24,7 +24,7 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
|||||||
complex cx(0:MAXFFT2-1),cy(0:MAXFFT2-1),cz(0:MAXFFT2)
|
complex cx(0:MAXFFT2-1),cy(0:MAXFFT2-1),cz(0:MAXFFT2)
|
||||||
logical xpol
|
logical xpol
|
||||||
integer ipk1(1)
|
integer ipk1(1)
|
||||||
real*8 fcenter,freq0
|
real*8 fcenter,freq0,freq1
|
||||||
character*12 mycall0,hiscall0
|
character*12 mycall0,hiscall0
|
||||||
character*12 mycall,hiscall
|
character*12 mycall,hiscall
|
||||||
character*6 mygrid,hisgrid
|
character*6 mygrid,hisgrid
|
||||||
@ -138,7 +138,7 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
|||||||
newdat,nagain,max_drift,mycall,hiscall,hisgrid)
|
newdat,nagain,max_drift,mycall,hiscall,hisgrid)
|
||||||
|
|
||||||
MHz=fcenter
|
MHz=fcenter
|
||||||
freq0=MHz + 0.001*ikhz
|
freq0=MHz + 0.001d0*ikhz
|
||||||
|
|
||||||
if(nsnr0.gt.-99) then
|
if(nsnr0.gt.-99) then
|
||||||
nq65df=nint(1000*(0.001*k0*df+nkhz_center-48.0+1.000-1.27046-ikhz))-nfcal
|
nq65df=nint(1000*(0.001*k0*df+nkhz_center-48.0+1.000-1.27046-ikhz))-nfcal
|
||||||
@ -149,8 +149,13 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
|||||||
if(npol.lt.0) npol=npol+180
|
if(npol.lt.0) npol=npol+180
|
||||||
endif
|
endif
|
||||||
call txpol(xpol,msg0(1:22),mygrid,npol,nxant,ntxpol,cp)
|
call txpol(xpol,msg0(1:22),mygrid,npol,nxant,ntxpol,cp)
|
||||||
|
ikhz1=ikhz
|
||||||
|
ndf=nq65df
|
||||||
|
if(ndf.gt.500) ikhz1=ikhz + (nq65df+500)/1000
|
||||||
|
if(ndf.lt.-500) ikhz1=ikhz + (nq65df-500)/1000
|
||||||
|
ndf=nq65df - 1000*(ikhz1-ikhz)
|
||||||
if(nqd.eq.1 .and. abs(nq65df-mousedf).lt.ntol) then
|
if(nqd.eq.1 .and. abs(nq65df-mousedf).lt.ntol) then
|
||||||
write(line,1020) ikhz,nq65df,npol,nutc,xdt0,nsnr0,msg0(1:27),cq0, &
|
write(line,1020) ikhz1,ndf,npol,nutc,xdt0,nsnr0,msg0(1:27),cq0, &
|
||||||
ntxpol,cp
|
ntxpol,cp
|
||||||
1020 format('!',i3.3,i5,i4,i6.4,f5.1,i5,' : ',a27,a3,i4,1x,a1)
|
1020 format('!',i3.3,i5,i4,i6.4,f5.1,i5,' : ',a27,a3,i4,1x,a1)
|
||||||
write(*,1100) trim(line)
|
write(*,1100) trim(line)
|
||||||
@ -161,12 +166,13 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
|
|||||||
|
|
||||||
cmode=': '
|
cmode=': '
|
||||||
cmode(2:2)=char(ichar('A') + mode_q65-1)
|
cmode(2:2)=char(ichar('A') + mode_q65-1)
|
||||||
write(26,1014) freq0,nq65df,0,0,0,xdt0,npol,0, &
|
freq1=freq0 + 0.001d0*(ikhz1-ikhz)
|
||||||
nsnr0,nutc,msg0(1:22),':',cp,cmode
|
write(26,1014) freq1,ndf,0,0,0,xdt0,npol,0,nsnr0,nutc,msg0(1:22), &
|
||||||
|
':',cp,cmode
|
||||||
1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,4x,a22,1x,2a1,2x,a2)
|
1014 format(f8.3,i5,3i3,f5.1,i4,i3,i4,i5.4,4x,a22,1x,2a1,2x,a2)
|
||||||
|
|
||||||
! Write to file map65_rx.log:
|
! Write to file map65_rx.log:
|
||||||
write(21,1110) freq0,nq65df,xdt0,npol,nsnr0,nutc,msg0(1:28),cq0
|
write(21,1110) freq1,ndf,xdt0,npol,nsnr0,nutc,msg0(1:28),cq0
|
||||||
1110 format(f8.3,i5,f5.1,2i4,i5.4,2x,a28,': A',2x,a3)
|
1110 format(f8.3,i5,f5.1,2i4,i5.4,2x,a28,': A',2x,a3)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -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-rc2");
|
a.setApplicationVersion ("3.0.0-rc3");
|
||||||
// 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;
|
||||||
|
@ -952,8 +952,8 @@ void MainWindow::closeEvent (QCloseEvent * e)
|
|||||||
proc_m65.setReadChannel (QProcess::StandardError);
|
proc_m65.setReadChannel (QProcess::StandardError);
|
||||||
proc_m65.readAll ();
|
proc_m65.readAll ();
|
||||||
|
|
||||||
// allow time for any decode cycle to finish
|
proc_m65.disconnect ();
|
||||||
if (!proc_m65.waitForFinished ()) proc_m65.kill();
|
if (!proc_m65.waitForFinished (1000)) proc_m65.kill();
|
||||||
quitFile.remove();
|
quitFile.remove();
|
||||||
mem_m65.detach();
|
mem_m65.detach();
|
||||||
if (m_astro_window) m_astro_window->close ();
|
if (m_astro_window) m_astro_window->close ();
|
||||||
@ -981,6 +981,13 @@ void MainWindow::stub() //stub()
|
|||||||
msgBox("Not yet implemented.");
|
msgBox("Not yet implemented.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionRelease_Notes_triggered()
|
||||||
|
{
|
||||||
|
QDesktopServices::openUrl(QUrl(
|
||||||
|
"https://www.physics.princeton.edu/pulsar/K1JT/Release_Notes.txt",
|
||||||
|
QUrl::TolerantMode));
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionOnline_Users_Guide_triggered() //Display manual
|
void MainWindow::on_actionOnline_Users_Guide_triggered() //Display manual
|
||||||
{
|
{
|
||||||
QDesktopServices::openUrl(QUrl(
|
QDesktopServices::openUrl(QUrl(
|
||||||
|
@ -76,6 +76,7 @@ private slots:
|
|||||||
void on_tolSpinBox_valueChanged(int arg1);
|
void on_tolSpinBox_valueChanged(int arg1);
|
||||||
void on_actionAstro_Data_triggered();
|
void on_actionAstro_Data_triggered();
|
||||||
void on_stopButton_clicked();
|
void on_stopButton_clicked();
|
||||||
|
void on_actionRelease_Notes_triggered();
|
||||||
void on_actionOnline_Users_Guide_triggered();
|
void on_actionOnline_Users_Guide_triggered();
|
||||||
void on_actionQSG_Q65_triggered();
|
void on_actionQSG_Q65_triggered();
|
||||||
void on_actionQSG_MAP65_v3_triggered();
|
void on_actionQSG_MAP65_v3_triggered();
|
||||||
|
@ -1233,6 +1233,7 @@ p, li { white-space: pre-wrap; }
|
|||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Help</string>
|
<string>Help</string>
|
||||||
</property>
|
</property>
|
||||||
|
<addaction name="actionRelease_Notes"/>
|
||||||
<addaction name="actionOnline_Users_Guide"/>
|
<addaction name="actionOnline_Users_Guide"/>
|
||||||
<addaction name="actionQSG_Q65"/>
|
<addaction name="actionQSG_Q65"/>
|
||||||
<addaction name="actionQSG_MAP65_v3"/>
|
<addaction name="actionQSG_MAP65_v3"/>
|
||||||
@ -1698,6 +1699,11 @@ p, li { white-space: pre-wrap; }
|
|||||||
<string>Q65 Sensitivity in MAP65 3.0</string>
|
<string>Q65 Sensitivity in MAP65 3.0</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
|
<action name="actionRelease_Notes">
|
||||||
|
<property name="text">
|
||||||
|
<string>Release Notes</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
</widget>
|
</widget>
|
||||||
<layoutdefault spacing="6" margin="11"/>
|
<layoutdefault spacing="6" margin="11"/>
|
||||||
<customwidgets>
|
<customwidgets>
|
||||||
|
Loading…
Reference in New Issue
Block a user