mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -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)
 | 
			
		||||
# 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}")
 | 
			
		||||
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										19
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								NEWS
									
									
									
									
									
								
							@ -12,6 +12,25 @@
 | 
			
		||||
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
 | 
			
		||||
	               Jun 28, 2021
 | 
			
		||||
	        -------------------------
 | 
			
		||||
 | 
			
		||||
@ -71,12 +71,12 @@ public:
 | 
			
		||||
  void heartbeat ();
 | 
			
		||||
  void closedown ();
 | 
			
		||||
  StreamStatus check_status (QDataStream const&) const;
 | 
			
		||||
  void send_message (QByteArray const&, bool queue_if_pending = true);
 | 
			
		||||
  void send_message (QDataStream const& out, QByteArray const& message, 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, bool allow_duplicates = false)
 | 
			
		||||
  {
 | 
			
		||||
    if (OK == check_status (out))
 | 
			
		||||
      {
 | 
			
		||||
        send_message (message, queue_if_pending);
 | 
			
		||||
        send_message (message, queue_if_pending, allow_duplicates);
 | 
			
		||||
      }
 | 
			
		||||
    else
 | 
			
		||||
      {
 | 
			
		||||
@ -197,7 +197,7 @@ void MessageClient::impl::start ()
 | 
			
		||||
  // clear any backlog
 | 
			
		||||
  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
 | 
			
		||||
          << version_.toUtf8 () << revision_.toUtf8 ();
 | 
			
		||||
      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_.isNull ())
 | 
			
		||||
        {
 | 
			
		||||
          if (message != last_message_) // avoid duplicates
 | 
			
		||||
          if (allow_duplicates || message != last_message_) // avoid duplicates
 | 
			
		||||
            {
 | 
			
		||||
              if (is_multicast_address (server_))
 | 
			
		||||
                {
 | 
			
		||||
 | 
			
		||||
@ -12,6 +12,25 @@
 | 
			
		||||
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
 | 
			
		||||
	               Jun 28, 2021
 | 
			
		||||
	        -------------------------
 | 
			
		||||
@ -23,7 +42,7 @@ enhancements and defect repairs:
 | 
			
		||||
MAP65:
 | 
			
		||||
 - Compute polarization angle for Xpol systems and display to nearest
 | 
			
		||||
   degree
 | 
			
		||||
 - Compute and display the recommended Tx polarization
 | 
			
		||||
 - Compute and display the recommended Tx polarization	
 | 
			
		||||
 - Protect against Fortran bounds errors in several places
 | 
			
		||||
 - Insert leading 0 when needed in UTC hours and minutes on waterfall
 | 
			
		||||
 - Wideband Q65 synchronization corrected to include single-polarization
 | 
			
		||||
 | 
			
		||||
@ -453,6 +453,7 @@ subroutine q65_ccf_22(s1,iz,jz,nfqso,ntol,ndepth,ntrperiod,iavg,ipk,jpk,  &
 | 
			
		||||
  ibest=0
 | 
			
		||||
  lagpk=0
 | 
			
		||||
  lagbest=0
 | 
			
		||||
  idrift_best=0
 | 
			
		||||
  do i=ia,ib
 | 
			
		||||
     ccfmax=0.
 | 
			
		||||
     do lag=lag1,lag2
 | 
			
		||||
 | 
			
		||||
@ -59,8 +59,9 @@ subroutine q65_loops(c00,npts2,nsps2,nsubmode,ndepth,jpk0,    &
 | 
			
		||||
        ndt=idt/2
 | 
			
		||||
        if(mod(idt,2).eq.0) ndt=-ndt
 | 
			
		||||
        jpk=jpk0 + nsps2*ndt/16              !tsym/16
 | 
			
		||||
        if(jpk.lt.0) jpk=0
 | 
			
		||||
        call spec64(c0,nsps2,mode_q65,jpk,s3,LL,NN)
 | 
			
		||||
        jpk=max(0,jpk)
 | 
			
		||||
        jpk=min(29000,jpk)
 | 
			
		||||
        call spec64(c0,npts2,nsps2,mode_q65,jpk,s3,LL,NN)
 | 
			
		||||
        call pctile(s3,LL*NN,40,base)
 | 
			
		||||
        s3=s3/base
 | 
			
		||||
        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)
 | 
			
		||||
!### Fix this:
 | 
			
		||||
  complex c0(0:1800000-1)                    !Complex spectrum of dd()
 | 
			
		||||
  complex c0(0:npts-1)                      !Complex spectrum of dd()
 | 
			
		||||
  complex cs(0:MAXFFT-1)                     !Complex symbol spectrum
 | 
			
		||||
  real s3(LL,NN)                             !Synchronized symbol spectra
 | 
			
		||||
  real xbase0(LL),xbase(LL)
 | 
			
		||||
@ -21,7 +20,11 @@ subroutine spec64(c0,nsps,mode_q65,jpk,s3,LL,NN)
 | 
			
		||||
     j=j+1
 | 
			
		||||
     ja=(k-1)*nsps + jpk
 | 
			
		||||
     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
 | 
			
		||||
     do ii=1,LL
 | 
			
		||||
        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
 | 
			
		||||
!   14
 | 
			
		||||
!   15
 | 
			
		||||
!   16
 | 
			
		||||
!   16  tquick log
 | 
			
		||||
!   17  saved *.tf2 files
 | 
			
		||||
!   18  test file to be transmitted (wsjtgen.f90)
 | 
			
		||||
!   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/
 | 
			
		||||
  save
 | 
			
		||||
 | 
			
		||||
  call sec0(0,tquick)
 | 
			
		||||
  nkhz_center=nint(1000.0*(fcenter-int(fcenter)))
 | 
			
		||||
  mfa=nfa-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
 | 
			
		||||
1013    format('<QuickDecodeDone>',2i4)
 | 
			
		||||
        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
 | 
			
		||||
     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,       &
 | 
			
		||||
                nsync2,nutc,decoded,cp,cmode
 | 
			
		||||
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)
 | 
			
		||||
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,       &
 | 
			
		||||
!                nutc,decoded,cp,cmode
 | 
			
		||||
 | 
			
		||||
@ -56,15 +56,16 @@ subroutine polfit(y,npts,a)
 | 
			
		||||
        deltaa(j)=deltaa(j)*fn/3.
 | 
			
		||||
!          write(*,4000) iter,j,a,deltaa,chisq2
 | 
			
		||||
!4000      format(2i2,2(2x,3f8.2),f12.5)
 | 
			
		||||
     enddo
 | 
			
		||||
     enddo  ! j=1,nterms
 | 
			
		||||
     chisqr=fchisq_pol(y,npts,a)
 | 
			
		||||
!     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))   &
 | 
			
		||||
          .and. deltaa(3).lt.1.0) exit
 | 
			
		||||
     if(chisqr/chisqr0.gt.0.99) exit
 | 
			
		||||
     a(3)=mod(a(3)+360.0,180.0)
 | 
			
		||||
     chisqr0=chisqr
 | 
			
		||||
  enddo
 | 
			
		||||
  enddo  ! iter
 | 
			
		||||
  a(3)=mod(a(3)+360.0,180.0)
 | 
			
		||||
 | 
			
		||||
  return
 | 
			
		||||
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)
 | 
			
		||||
  logical xpol
 | 
			
		||||
  integer ipk1(1)
 | 
			
		||||
  real*8 fcenter,freq0
 | 
			
		||||
  real*8 fcenter,freq0,freq1
 | 
			
		||||
  character*12 mycall0,hiscall0
 | 
			
		||||
  character*12 mycall,hiscall
 | 
			
		||||
  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)
 | 
			
		||||
 | 
			
		||||
  MHz=fcenter
 | 
			
		||||
  freq0=MHz + 0.001*ikhz
 | 
			
		||||
  freq0=MHz + 0.001d0*ikhz
 | 
			
		||||
 | 
			
		||||
  if(nsnr0.gt.-99) then
 | 
			
		||||
     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
 | 
			
		||||
     endif
 | 
			
		||||
     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
 | 
			
		||||
        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
 | 
			
		||||
1020    format('!',i3.3,i5,i4,i6.4,f5.1,i5,' : ',a27,a3,i4,1x,a1)
 | 
			
		||||
        write(*,1100) trim(line)
 | 
			
		||||
@ -161,12 +166,13 @@ subroutine q65b(nutc,nqd,nxant,fcenter,nfcal,nfsample,ikhz,mousedf,ntol,xpol, &
 | 
			
		||||
 | 
			
		||||
     cmode=': '
 | 
			
		||||
     cmode(2:2)=char(ichar('A') + mode_q65-1)
 | 
			
		||||
     write(26,1014) freq0,nq65df,0,0,0,xdt0,npol,0,                 &
 | 
			
		||||
          nsnr0,nutc,msg0(1:22),':',cp,cmode
 | 
			
		||||
     freq1=freq0 + 0.001d0*(ikhz1-ikhz)
 | 
			
		||||
     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)
 | 
			
		||||
 | 
			
		||||
! 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)
 | 
			
		||||
  endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -44,7 +44,7 @@ subroutine get_candidates(ss,savg,xpol,nfa,nfb,nts_jt65,nts_q65,cand,ncand)
 | 
			
		||||
  enddo
 | 
			
		||||
  jz=j
 | 
			
		||||
  
 | 
			
		||||
call wb_sync(ss,savg,xpol,jz,nfa,nfb)
 | 
			
		||||
  call wb_sync(ss,savg,xpol,jz,nfa,nfb)
 | 
			
		||||
 | 
			
		||||
  tstep=2048.0/11025.0        !0.185760 s: 0.5*tsym_jt65, 0.3096*tsym_q65
 | 
			
		||||
  df3=96000.0/NFFT
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ int main(int argc, char *argv[])
 | 
			
		||||
  QApplication a {argc, argv};
 | 
			
		||||
  // Override programs executable basename as application name.
 | 
			
		||||
  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
 | 
			
		||||
  a.setAttribute (Qt::AA_DontUseNativeMenuBar);
 | 
			
		||||
  MainWindow w;
 | 
			
		||||
 | 
			
		||||
@ -952,8 +952,8 @@ void MainWindow::closeEvent (QCloseEvent * e)
 | 
			
		||||
  proc_m65.setReadChannel (QProcess::StandardError);
 | 
			
		||||
  proc_m65.readAll ();
 | 
			
		||||
 | 
			
		||||
  // allow time for any decode cycle to finish
 | 
			
		||||
  if (!proc_m65.waitForFinished ()) proc_m65.kill();
 | 
			
		||||
  proc_m65.disconnect ();
 | 
			
		||||
  if (!proc_m65.waitForFinished (1000)) proc_m65.kill();
 | 
			
		||||
  quitFile.remove();
 | 
			
		||||
  mem_m65.detach();
 | 
			
		||||
  if (m_astro_window) m_astro_window->close ();
 | 
			
		||||
@ -981,6 +981,13 @@ void MainWindow::stub()                                        //stub()
 | 
			
		||||
  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
 | 
			
		||||
{
 | 
			
		||||
  QDesktopServices::openUrl(QUrl(
 | 
			
		||||
 | 
			
		||||
@ -76,6 +76,7 @@ private slots:
 | 
			
		||||
  void on_tolSpinBox_valueChanged(int arg1);
 | 
			
		||||
  void on_actionAstro_Data_triggered();
 | 
			
		||||
  void on_stopButton_clicked();
 | 
			
		||||
  void on_actionRelease_Notes_triggered();
 | 
			
		||||
  void on_actionOnline_Users_Guide_triggered();
 | 
			
		||||
  void on_actionQSG_Q65_triggered();
 | 
			
		||||
  void on_actionQSG_MAP65_v3_triggered();
 | 
			
		||||
 | 
			
		||||
@ -1233,6 +1233,7 @@ p, li { white-space: pre-wrap; }
 | 
			
		||||
    <property name="title">
 | 
			
		||||
     <string>Help</string>
 | 
			
		||||
    </property>
 | 
			
		||||
    <addaction name="actionRelease_Notes"/>
 | 
			
		||||
    <addaction name="actionOnline_Users_Guide"/>
 | 
			
		||||
    <addaction name="actionQSG_Q65"/>
 | 
			
		||||
    <addaction name="actionQSG_MAP65_v3"/>
 | 
			
		||||
@ -1698,6 +1699,11 @@ p, li { white-space: pre-wrap; }
 | 
			
		||||
    <string>Q65 Sensitivity in MAP65 3.0</string>
 | 
			
		||||
   </property>
 | 
			
		||||
  </action>
 | 
			
		||||
  <action name="actionRelease_Notes">
 | 
			
		||||
   <property name="text">
 | 
			
		||||
    <string>Release Notes</string>
 | 
			
		||||
   </property>
 | 
			
		||||
  </action>
 | 
			
		||||
 </widget>
 | 
			
		||||
 <layoutdefault spacing="6" margin="11"/>
 | 
			
		||||
 <customwidgets>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user