mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-23 04:38:37 -05:00
Many changes. GUI version of MAP65 is beginning to tske shape.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@349 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
61d1fda7b3
commit
91946c254f
10
filbig.f
10
filbig.f
@ -22,6 +22,7 @@ C f_stop = 750 Hz.
|
||||
+ 5.89886379,1.59355187,-2.49138308,0.60910773,-0.04248129/
|
||||
save
|
||||
|
||||
if(nmax.lt.0) go to 900
|
||||
if(first) then
|
||||
npatience=FFTW_ESTIMATE
|
||||
! npatience=FFTW_MEASURE
|
||||
@ -99,6 +100,13 @@ C Do the short reverse transform, to go back to time domain.
|
||||
call sfftw_execute_(plan3)
|
||||
call sfftw_execute_(plan4)
|
||||
n4=min(nmax/64,NFFT2)
|
||||
go to 999
|
||||
|
||||
return
|
||||
900 call sfftw_destroy_plan_(plan1)
|
||||
call sfftw_destroy_plan_(plan2)
|
||||
call sfftw_destroy_plan_(plan3)
|
||||
call sfftw_destroy_plan_(plan4)
|
||||
call sfftw_destroy_plan_(plan5)
|
||||
|
||||
999 return
|
||||
end
|
||||
|
@ -97,8 +97,8 @@ subroutine ftn_init
|
||||
status='unknown')
|
||||
#endif
|
||||
|
||||
! open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown', &
|
||||
! share='denynone')
|
||||
open(24,file=appdir(:iz)//'/tmp24.txt',status='unknown', &
|
||||
share='denynone')
|
||||
open(26,file=appdir(:iz)//'/tmp26.txt',status='unknown', &
|
||||
share='denynone')
|
||||
|
||||
|
@ -2,7 +2,8 @@
|
||||
subroutine ftn_quit
|
||||
include 'gcom1.f90'
|
||||
ngo=0
|
||||
! Destroy the FFTW plans
|
||||
call four2a(a,-1,1,1,1)
|
||||
! @@@ Should also terminate the plans created in filbig!
|
||||
call filbig(id,-1,f0,newdat,c4a,c4b,n4)
|
||||
return
|
||||
end subroutine ftn_quit
|
||||
|
@ -5,6 +5,7 @@ real psavg !Average spectrum Decoder
|
||||
real s2 !2d spectrum for horizontal waterfall GUI
|
||||
real ccf !CCF in time (blue curve) Decoder
|
||||
real green !Data for green line GUI
|
||||
real fselect !Specified QSO frequency GUI
|
||||
integer ngreen !Length of green GUI
|
||||
real dgain !Digital audio gain setting GUI
|
||||
integer iter !(why is this here??)
|
||||
@ -87,7 +88,7 @@ character*80 filetokillb
|
||||
character*12 pttport
|
||||
|
||||
common/gcom2/ps0(431),psavg(450),s2(64,3100),ccf(-5:540), &
|
||||
green(500),ngreen,dgain,iter,ndecoding,ndecoding0,mousebutton, &
|
||||
green(500),fselect,ngreen,dgain,iter,ndecoding,ndecoding0,mousebutton, &
|
||||
ndecdone,npingtime,ierr,lauto,mantx,nrestart,ntr,nmsg,nsave,nadd5, &
|
||||
dftolerance,LDecoded,rxdone,monitoring,nzap,nsavecum,minsigdb, &
|
||||
nclearave,nfreeze,nafc,newspec,nmode,mode65,nclip,ndebug,nblank,nport, &
|
||||
|
32
map65.py
32
map65.py
@ -41,6 +41,7 @@ root_geom=""
|
||||
|
||||
|
||||
#------------------------------------------------------ Global variables
|
||||
nfile=0
|
||||
appdir=os.getcwd()
|
||||
isync=1
|
||||
isync_save=0
|
||||
@ -171,8 +172,8 @@ def bandmap(event=NONE):
|
||||
bm.geometry(bm_geom)
|
||||
if g.Win32: bm.iconbitmap("wsjt.ico")
|
||||
iframe_bm1 = Frame(bm, bd=1, relief=SUNKEN)
|
||||
bmtext=Text(iframe_bm1, height=35, width=45, bg="Navy", fg="yellow")
|
||||
bmtext.pack(side=LEFT, fill=X, padx=1)
|
||||
bmtext=Text(iframe_bm1, height=35, width=41, bg="Navy", fg="yellow")
|
||||
bmtext.pack(side=LEFT, fill=X, padx=1, pady=3)
|
||||
bmsb = Scrollbar(iframe_bm1, orient=VERTICAL, command=bmtext.yview)
|
||||
bmsb.pack(side=RIGHT, fill=Y)
|
||||
bmtext.configure(yscrollcommand=bmsb.set)
|
||||
@ -347,10 +348,6 @@ def txmute(event=NONE):
|
||||
else:
|
||||
lab7.configure(bg='gray85',fg='gray85')
|
||||
|
||||
#------------------------------------------------------ savelast
|
||||
def savelast(event=NONE):
|
||||
Audio.gcom2.nsavelast=1
|
||||
|
||||
#------------------------------------------------------ MsgBox
|
||||
def MsgBox(t):
|
||||
msg=Pmw.MessageDialog(root,buttons=('OK',),message_text=t)
|
||||
@ -602,7 +599,6 @@ Alt+M Monitor
|
||||
Alt+O Tx Stop
|
||||
Alt+Q Log QSO
|
||||
Alt+S Stop Monitoring or Decoding
|
||||
Alt+V Save Last
|
||||
Alt+X Exclude
|
||||
Alt+Z Toggle Zap
|
||||
Right/Left Arrow Increase/decrease Freeze DF
|
||||
@ -1091,7 +1087,7 @@ def plot_yellow():
|
||||
def update():
|
||||
global root_geom,isec0,naz,nel,ndmiles,ndkm,nopen, \
|
||||
im,pim,cmap0,isync,isync_save,idsec,first,itol,txsnrdb,tx6alt,\
|
||||
bm_geom
|
||||
bm_geom,nfile
|
||||
|
||||
utc=time.gmtime(time.time()+0.1*idsec)
|
||||
isec=utc[5]
|
||||
@ -1265,14 +1261,16 @@ def update():
|
||||
lines=""
|
||||
bmtext.configure(state=NORMAL)
|
||||
bmtext.delete('1.0',END)
|
||||
bmtext.insert(END,' Freq DF Pol UTC\n')
|
||||
bmtext.insert(END,'--------------------------------------------\n')
|
||||
bmtext.insert(END,'Freq DF Pol UTC\n')
|
||||
bmtext.insert(END,'----------------------------------------\n')
|
||||
for i in range(len(lines)):
|
||||
bmtext.insert(END,lines[i])
|
||||
bmtext.see(END)
|
||||
Audio.gcom2.ndecdone=0
|
||||
nfile=nfile+1
|
||||
if(nfile<11):
|
||||
decode()
|
||||
|
||||
Audio.gcom2.ndecdone=3
|
||||
|
||||
if g.cmap != cmap0:
|
||||
im.putpalette(g.palette)
|
||||
cmap0=g.cmap
|
||||
@ -1562,8 +1560,6 @@ root.bind_all('<Alt-q>',logqso)
|
||||
root.bind_all('<Alt-Q>',logqso)
|
||||
root.bind_all('<Alt-s>',stopmon)
|
||||
root.bind_all('<Alt-S>',stopmon)
|
||||
root.bind_all('<Alt-v>',savelast)
|
||||
root.bind_all('<Alt-V>',savelast)
|
||||
root.bind_all('<Alt-x>',decode_exclude)
|
||||
root.bind_all('<Alt-X>',decode_exclude)
|
||||
root.bind_all('<Alt-z>',toggle_zap)
|
||||
@ -1594,8 +1590,6 @@ bstop=Button(iframe4c, text='Stop',underline=0,command=stopmon,
|
||||
padx=1,pady=1)
|
||||
bmonitor=Button(iframe4c, text='Monitor',underline=0,command=monitor,
|
||||
padx=1,pady=1)
|
||||
bsavelast=Button(iframe4c, text='Save',underline=2,command=savelast,
|
||||
padx=1,pady=1)
|
||||
bdecode=Button(iframe4c, text='Decode',underline=0,command=decode,
|
||||
padx=1,pady=1)
|
||||
berase=Button(iframe4c, text='Erase',underline=0,command=erase,
|
||||
@ -1613,7 +1607,6 @@ blogqso.pack(side=LEFT,expand=1,fill=X)
|
||||
#bplay.pack(side=LEFT,expand=1,fill=X)
|
||||
bstop.pack(side=LEFT,expand=1,fill=X)
|
||||
bmonitor.pack(side=LEFT,expand=1,fill=X)
|
||||
bsavelast.pack(side=LEFT,expand=1,fill=X)
|
||||
bdecode.pack(side=LEFT,expand=1,fill=X)
|
||||
berase.pack(side=LEFT,expand=1,fill=X)
|
||||
bclravg.pack(side=LEFT,expand=1,fill=X)
|
||||
@ -1682,7 +1675,7 @@ ldsec.grid(column=0,row=4,ipadx=3,padx=2,pady=5,sticky='EW')
|
||||
Widget.bind(ldsec,'<Button-1>',incdsec)
|
||||
Widget.bind(ldsec,'<Button-3>',decdsec)
|
||||
|
||||
f5b.pack(side=LEFT,expand=0,fill=BOTH)
|
||||
f5b.pack(side=LEFT,expand=1,fill=BOTH)
|
||||
|
||||
#------------------------------------------------------ Tx params and msgs
|
||||
f5c=Frame(iframe5,bd=2,relief=GROOVE)
|
||||
@ -1700,7 +1693,6 @@ f5c2.grid(column=0,row=1,sticky='W',padx=4)
|
||||
sked.grid(column=0,row=3,sticky='W',padx=4)
|
||||
genmsg.grid(column=0,row=4,sticky='W',padx=4)
|
||||
auto.grid(column=0,row=5,sticky='EW',padx=4)
|
||||
#txstop.grid(column=0,row=6,sticky='EW',padx=4)
|
||||
|
||||
ntx=IntVar()
|
||||
tx1=Entry(f5c,width=24)
|
||||
@ -1745,7 +1737,7 @@ tx6.grid(column=1,row=5)
|
||||
rb6.grid(column=2,row=5)
|
||||
b6.grid(column=3,row=5)
|
||||
|
||||
f5c.pack(side=LEFT,fill=BOTH)
|
||||
f5c.pack(side=LEFT,expand=1,fill=BOTH)
|
||||
iframe5.pack(expand=1, fill=X, padx=4)
|
||||
|
||||
#------------------------------------------------------------ Status Bar
|
||||
|
39
map65a.f90
39
map65a.f90
@ -20,7 +20,7 @@ subroutine map65a
|
||||
logical done(MAXMSG)
|
||||
integer rfile3
|
||||
character decoded*22,blank*22,cbad*1
|
||||
common/spcom/ss(4,322,NFFT) !169 MB: half-symbol spectra
|
||||
common/spcom/ip0,ss(4,322,NFFT) !169 MB: half-symbol spectra
|
||||
data blank/' '/
|
||||
data shmsg0/'ATT','RO ','RRR','73 '/
|
||||
data nfile/0/
|
||||
@ -30,17 +30,30 @@ subroutine map65a
|
||||
|
||||
rewind 11
|
||||
rewind 12
|
||||
nfile=nfile+1
|
||||
1 nfile=nfile+1
|
||||
nutc=0744+nfile
|
||||
if(nutc.eq.0747) go to 1
|
||||
if(nutc.eq.0749) go to 1
|
||||
if(nutc.eq.0751) go to 1
|
||||
if(nutc.eq.0753) go to 1
|
||||
infile='061111.0745'
|
||||
write(infile(8:11),1001) nutc
|
||||
1001 format(i4.4)
|
||||
! read(infile(8:11),*) nutc
|
||||
|
||||
tskip=0.
|
||||
fselect=0.
|
||||
fselect=104.5303
|
||||
nmin=1
|
||||
! fselect=126.0 + 1.6 + 0.290
|
||||
! nflip=-1
|
||||
! ip0=1
|
||||
fselect=128.0 + 1.6 + 0.220
|
||||
nflip=1
|
||||
ip0=3
|
||||
! fselect=155.0 + 1.6 + 0.454
|
||||
! nflip=1
|
||||
! ip0=2
|
||||
! fselect=103 + 1.6 - 0.07
|
||||
! nflip=-1 !May need to try both +/- 1
|
||||
! ip0=4 !Try all four?
|
||||
|
||||
open(23,file='CALL3.TXT',status='unknown')
|
||||
|
||||
@ -60,16 +73,14 @@ subroutine map65a
|
||||
if(fselect.gt.0.0) then
|
||||
|
||||
! nfilt=2 should be faster (but doesn't work right?)
|
||||
nfilt=1 !nfilt=2 is faster for selected freq
|
||||
! freq=fselect+1.600
|
||||
nfilt=2 !nfilt=2 is faster for selected freq
|
||||
freq=fselect
|
||||
nflip=-1 !May need to try both +/- 1
|
||||
ipol=4 !Try all four?
|
||||
dt=2.314240 !Not needed?
|
||||
|
||||
call decode1a(id,newdat,nfilt,freq,nflip,ipol,sync2, &
|
||||
call decode1a(id,newdat,nfilt,freq,nflip,ip0,sync2, &
|
||||
a,dt,pol,nkv,nhist,qual,decoded)
|
||||
nsync1=0
|
||||
nsync2=nint(10.0*log10(sync2)) - 40 !### empirical ###
|
||||
ndf=nint(a(1))
|
||||
nw=0
|
||||
! Insert 'OOO' if flip<0.
|
||||
write(11,1010) nutc,nsync1,nsync2,dt,ndf,nw,decoded, &
|
||||
@ -181,6 +192,8 @@ subroutine map65a
|
||||
nflip=nint(flipk)
|
||||
call decode1a(id,newdat,nfilt,freq,nflip,ipol, &
|
||||
sync2,a,dt,pol,nkv,nhist,qual,decoded)
|
||||
! i9=index(decoded,'AA1YN')
|
||||
! if(i9.gt.0) print*,i,i9,fselect,freq,decoded
|
||||
kk=kk+1
|
||||
sig(kk,1)=nfile
|
||||
sig(kk,2)=nutc
|
||||
@ -273,8 +286,8 @@ subroutine map65a
|
||||
! + nkv,nqual
|
||||
! endif
|
||||
|
||||
write(19,1012) f0,ndf,npol,nutc,decoded
|
||||
1012 format(f7.3,i5,i4,i5.4,2x,a22)
|
||||
! write(19,1012) f0,ndf,npol,nutc,decoded
|
||||
!1012 format(f7.3,i5,i4,i5.4,2x,a22)
|
||||
|
||||
write(26,1014) f0,ndf,ndf0,ndf1,ndf2,dt,npol,nsync1, &
|
||||
nsync2,nutc,decoded,nkv,nqual,nhist
|
||||
|
53
spec.f90
53
spec.f90
@ -1,4 +1,4 @@
|
||||
subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
||||
subroutine spec(brightness,contrast,ngain,nspeed,a,a2)
|
||||
|
||||
parameter (NX=750,NY=130,NTOT=NX*NY,NFFT=32768)
|
||||
|
||||
@ -9,58 +9,77 @@ subroutine spec(brightness,contrast,logmap,ngain,nspeed,a)
|
||||
|
||||
! Output:
|
||||
integer*2 a(NTOT) !Pixel values for NX x NY array
|
||||
integer*2 a2(NTOT) !Pixel values for NX x NY array
|
||||
|
||||
logical first
|
||||
integer nstep(4)
|
||||
integer nstep(5)
|
||||
integer b0,c0
|
||||
real s(NX,NY)
|
||||
common/spcom/ss(4,322,NFFT) !169 MB: half-symbol spectra
|
||||
real s(NFFT,NY)
|
||||
common/spcom/ip0,ss(4,322,NFFT) !169 MB: half-symbol spectra
|
||||
include 'gcom1.f90'
|
||||
include 'gcom2.f90'
|
||||
include 'gcom3.f90'
|
||||
include 'gcom4.f90'
|
||||
data first/.true./
|
||||
data nstep/16,10,5,3/ !Integration limits
|
||||
data nstep/40,20,10,5,3/ !Integration limits
|
||||
save
|
||||
|
||||
if(first) then
|
||||
df=96000.0/nfft
|
||||
call zero(a,NX*NY/2)
|
||||
call zero(a2,NX*NY/2)
|
||||
first=.false.
|
||||
endif
|
||||
|
||||
nadd=nstep(nspeed)
|
||||
nlines=322/nadd
|
||||
call zero(s,NX*NY)
|
||||
call zero(s,NFFT*NY)
|
||||
k=0
|
||||
ia=9001
|
||||
ib=9750
|
||||
do j=1,nlines
|
||||
k=k+1
|
||||
do i=ia,ib
|
||||
s(i,j)=s(i,j) + ss(1,k,i) + ss(3,k,i)
|
||||
imid=nint(1000.0*(fselect-125.0+48.0)/df)
|
||||
ia=imid-374
|
||||
ib=ia+749
|
||||
|
||||
do n=1,nadd
|
||||
do j=1,nlines
|
||||
k=k+1
|
||||
do i=1,NFFT
|
||||
s(i,j)=s(i,j) + ss(3,k,i)
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
||||
newpts=NX*nlines
|
||||
do i=newpts+1,NX*NY
|
||||
a(i)=a(i-newpts)
|
||||
a2(i)=a2(i-newpts)
|
||||
enddo
|
||||
|
||||
gain=40*sqrt(nstep(nspeed)/5.0) * 5.0**(0.01*contrast)
|
||||
gamma=1.3 + 0.01*contrast
|
||||
offset=(brightness+64.0)/2
|
||||
k=0
|
||||
fac=20.0/nadd
|
||||
nbpp=NFFT/NX !Bins per pixel in wide waterfall
|
||||
do j=1,nlines
|
||||
do i=ia,ib
|
||||
do i=1,NX
|
||||
k=k+1
|
||||
|
||||
n=0
|
||||
x=s(i,j)
|
||||
! if(s(i).gt.0.0 .and. logmap.eq.1) n=gain*log10(0.001*s(i)) &
|
||||
! + offset + 20
|
||||
if(x.gt.0.0 .and. logmap.eq.0) n=(20.0*x)**gamma + offset
|
||||
x=0.
|
||||
do ii=(i-1)*nbpp+1,i*nbpp
|
||||
x=max(x,s(ii,j))
|
||||
enddo
|
||||
x=fac*x
|
||||
if(x.gt.0.0) n=(2.0*x)**gamma + offset
|
||||
n=min(252,max(0,n))
|
||||
a(k)=n
|
||||
|
||||
n=0
|
||||
x=fac*s(ia+i-1,j)
|
||||
if(x.gt.0.0) n=(3.0*x)**gamma + offset
|
||||
n=min(252,max(0,n))
|
||||
a2(k)=n
|
||||
|
||||
enddo
|
||||
enddo
|
||||
|
||||
|
118
specjt.py
118
specjt.py
@ -41,10 +41,6 @@ fmid0=1500
|
||||
frange=2000
|
||||
frange0=2000
|
||||
isec0=-99
|
||||
logmap=IntVar()
|
||||
logmap.set(0)
|
||||
logm0=0
|
||||
minsep=IntVar()
|
||||
mode0=""
|
||||
mousedf0=0
|
||||
naxis=IntVar()
|
||||
@ -86,21 +82,27 @@ balloon=Pmw.Balloon(root)
|
||||
def pal_gray0():
|
||||
g.cmap="gray0"
|
||||
im.putpalette(Colormap2Palette(colormapgray0),"RGB")
|
||||
im2.putpalette(Colormap2Palette(colormapgray0),"RGB")
|
||||
def pal_gray1():
|
||||
g.cmap="gray1"
|
||||
im.putpalette(Colormap2Palette(colormapgray1),"RGB")
|
||||
im2.putpalette(Colormap2Palette(colormapgray1),"RGB")
|
||||
def pal_linrad():
|
||||
g.cmap="Linrad"
|
||||
im.putpalette(Colormap2Palette(colormapLinrad),"RGB")
|
||||
im2.putpalette(Colormap2Palette(colormapLinrad),"RGB")
|
||||
def pal_blue():
|
||||
g.cmap="blue"
|
||||
im.putpalette(Colormap2Palette(colormapblue),"RGB")
|
||||
im2.putpalette(Colormap2Palette(colormapblue),"RGB")
|
||||
def pal_Hot():
|
||||
g.cmap="Hot"
|
||||
im.putpalette(Colormap2Palette(colormapHot),"RGB")
|
||||
im2.putpalette(Colormap2Palette(colormapHot),"RGB")
|
||||
def pal_AFMHot():
|
||||
g.cmap="AFMHot"
|
||||
im.putpalette(Colormap2Palette(colormapAFMHot),"RGB")
|
||||
im2.putpalette(Colormap2Palette(colormapAFMHot),"RGB")
|
||||
|
||||
#--------------------------------------------------- Command button routines
|
||||
#---------------------------------------------------- fdf_change
|
||||
@ -224,8 +226,9 @@ def freeze_decode(event):
|
||||
|
||||
#---------------------------------------------------- update
|
||||
def update():
|
||||
global a,b0,c0,g0,im,isec0,line0,newMinute,nscroll,pim, \
|
||||
root_geom,t0,mousedf0,nfreeze0,tol0,mode0,nmark0,logm0, \
|
||||
global a,a2,b0,c0,g0,im,im2,isec0,line0,line02,newMinute,\
|
||||
nscroll,pim,pim2, \
|
||||
root_geom,t0,mousedf0,nfreeze0,tol0,mode0,nmark0, \
|
||||
fmid,fmid0,frange,frange0
|
||||
|
||||
utc=time.gmtime(time.time()+0.1*Audio.gcom1.ndsec)
|
||||
@ -245,47 +248,55 @@ def update():
|
||||
nspeed=nspeed0.get() #Waterfall update rate
|
||||
brightness=sc1.get()
|
||||
contrast=sc2.get()
|
||||
logm=logmap.get()
|
||||
g0=sc3.get()
|
||||
|
||||
newspec=Audio.gcom2.newspec #True if new data available
|
||||
if newspec:
|
||||
Audio.spec(brightness,contrast,logm,g0,nspeed,a) #Call Fortran routine spec
|
||||
pass
|
||||
Audio.spec(brightness,contrast,g0,nspeed,a,a2) #Call Fortran routine spec
|
||||
|
||||
if newspec or brightness!=b0 or contrast!=c0 or logm!=logm0:
|
||||
if brightness==b0 and contrast==c0 and logm==logm0:
|
||||
if newspec or brightness!=b0 or contrast!=c0:
|
||||
if brightness==b0 and contrast==c0:
|
||||
n=Audio.gcom2.nlines
|
||||
box=(0,0,NX,300-n) #Define region
|
||||
box=(0,0,NX,130-n) #Define region
|
||||
region=im.crop(box) #Get all but last line(s)
|
||||
region2=im2.crop(box) #Get all but last line(s)
|
||||
try:
|
||||
im.paste(region,(0,n)) #Move waterfall down
|
||||
im2.paste(region2,(0,n)) #Move waterfall down
|
||||
except:
|
||||
print "Images did not match, continuing anyway."
|
||||
for i in range(n):
|
||||
line0.putdata(a[NX*i:NX*(i+1)]) #One row of pixels to line0
|
||||
im.paste(line0,(0,i)) #Paste in new top line
|
||||
line0.putdata(a[NX*i:NX*(i+1)]) #One row of pixels to line0
|
||||
im.paste(line0,(0,i)) #Paste in new top line(s)
|
||||
line02.putdata(a2[NX*i:NX*(i+1)])#One row of pixels to line0
|
||||
im2.paste(line02,(0,i)) #Paste in new top line(s)
|
||||
nscroll=nscroll+n
|
||||
else: #A scale factor has changed
|
||||
im.putdata(a) #Compute whole new image
|
||||
im2.putdata(a2) #Compute whole new image
|
||||
b0=brightness #Save scale values
|
||||
c0=contrast
|
||||
logm0=logm
|
||||
|
||||
if newspec:
|
||||
if Audio.gcom2.monitoring:
|
||||
if minsep.get() and newMinute:
|
||||
if newMinute:
|
||||
draw.line((0,0,749,0),fill=128) #Draw the minute separator
|
||||
draw2.line((0,0,749,0),fill=128) #Draw the minute separator
|
||||
if nscroll == 13:
|
||||
draw.text((5,2),t0[0:5],fill=253) #Insert time label
|
||||
draw2.text((5,2),t0[0:5],fill=253) #Insert time label
|
||||
else:
|
||||
if minsep.get():
|
||||
draw.line((0,0,749,0),fill=128) #Draw the minute separator
|
||||
draw.line((0,0,749,0),fill=128) #Draw the minute separator
|
||||
draw2.line((0,0,749,0),fill=128) #Draw the minute separator
|
||||
|
||||
pim=ImageTk.PhotoImage(im) #Convert Image to PhotoImage
|
||||
graph1.delete(ALL)
|
||||
pim2=ImageTk.PhotoImage(im2) #Convert Image to PhotoImage
|
||||
graph2.delete(ALL)
|
||||
#For some reason, top two lines are invisible, so we move down 2
|
||||
graph1.create_image(0,0+2,anchor='nw',image=pim)
|
||||
graph2.create_image(0,0+2,anchor='nw',image=pim2)
|
||||
|
||||
newMinute=0
|
||||
Audio.gcom2.newspec=0
|
||||
|
||||
@ -328,33 +339,23 @@ def update():
|
||||
|
||||
#-------------------------------------------------------- draw_axis
|
||||
def draw_axis():
|
||||
xmid=fmid
|
||||
if naxis.get(): xmid=xmid-1270.46
|
||||
c.delete(ALL)
|
||||
# Draw the frequency or DF tick marks
|
||||
if(frange==2000):
|
||||
for ix in range(-1300,5001,20):
|
||||
i=374.5 + (ix-xmid)/df
|
||||
j=20
|
||||
if (ix%100)==0 :
|
||||
j=16
|
||||
x=i-2
|
||||
if ix<1000 : x=x+2
|
||||
y=8
|
||||
c.create_text(x,y,text=str(ix))
|
||||
c.create_line(i,25,i,j,fill='black')
|
||||
|
||||
if(frange==4000):
|
||||
for ix in range(-2600,5401,50):
|
||||
i=374.5 + (ix-xmid)/(2*df)
|
||||
j=20
|
||||
if (ix%200)==0 :
|
||||
j=16
|
||||
x=i-2
|
||||
if ix<1000 : x=x+2
|
||||
y=8
|
||||
c.create_text(x,y,text=str(ix))
|
||||
c.create_line(i,25,i,j,fill='black')
|
||||
xmid=125.0
|
||||
bw=96.0
|
||||
x1=int(xmid-0.5*bw)
|
||||
x2=int(xmid+0.5*bw)
|
||||
xdf=bw/NX
|
||||
for ix in range(x1,x2,1):
|
||||
i=0.5*NX + (ix-xmid)/xdf
|
||||
j=20
|
||||
if (ix%5)==0: j=16
|
||||
if (ix%10)==0 :
|
||||
j=16
|
||||
x=i-1
|
||||
if ix<100: x=x+1
|
||||
y=8
|
||||
c.create_text(x,y,text=str(ix))
|
||||
c.create_line(i,25,i,j,fill='black')
|
||||
|
||||
dx=288.7 + (1500-fmid)/df
|
||||
dff=df
|
||||
@ -369,7 +370,27 @@ def draw_axis():
|
||||
x1=(Audio.gcom2.mousedf-tol)/dff + dx
|
||||
x2=(Audio.gcom2.mousedf+tol)/dff + dx
|
||||
c.create_line(x1,25,x2,25,fill='green',width=2)
|
||||
|
||||
|
||||
c2.delete(ALL)
|
||||
xmid2=0
|
||||
bw2=750.0*96000.0/32768.0 #approx 2197.27 Hz
|
||||
x1=int(xmid-0.5*bw2)/100 - 1
|
||||
x1=100*x1
|
||||
x2=int(xmid+0.5*bw2)
|
||||
xdf2=bw2/NX
|
||||
for ix in range(x1,x2,20):
|
||||
i=0.5*NX + (ix-xmid2)/xdf2
|
||||
j=20
|
||||
# if (ix%5)==0: j=16
|
||||
if (ix%100)==0 :
|
||||
j=16
|
||||
x=i-1
|
||||
if ix<1000: x=x+2
|
||||
if ix<0: x=x-2
|
||||
y=8
|
||||
c2.create_text(x,y,text=str(ix))
|
||||
c2.create_line(i,25,i,j,fill='black')
|
||||
|
||||
#-------------------------------------------------------- Create GUI widgets
|
||||
|
||||
#-------------------------------------------------------- Menu bar
|
||||
@ -384,7 +405,6 @@ setupbutton = Menubutton(mbar, text = 'Options', )
|
||||
setupbutton.pack(side = LEFT)
|
||||
setupmenu = Menu(setupbutton, tearoff=1)
|
||||
setupbutton['menu'] = setupmenu
|
||||
setupmenu.add_checkbutton(label = 'Mark T/R boundaries',variable=minsep)
|
||||
setupmenu.add_checkbutton(label='Flatten spectra',variable=nflat)
|
||||
setupmenu.add_checkbutton(label='Mark JT65 tones only if Freeze is checked',
|
||||
variable=nmark)
|
||||
@ -429,7 +449,7 @@ bfmid3.pack(side=LEFT)
|
||||
bfmid2.pack(side=LEFT)
|
||||
|
||||
#------------------------------------------------- Speed selection buttons
|
||||
for i in (4, 3, 2, 1):
|
||||
for i in (5, 4, 3, 2, 1):
|
||||
t=str(i)
|
||||
Radiobutton(mbar,text=t,value=i,variable=nspeed0).pack(side=RIGHT)
|
||||
nspeed0.set(1)
|
||||
@ -508,11 +528,9 @@ try:
|
||||
elif key == 'Brightness': sc1.set(value)
|
||||
elif key == 'Contrast': sc2.set(value)
|
||||
elif key == 'DigitalGain': sc3.set(value)
|
||||
elif key == 'MinuteSeparators': minsep.set(value)
|
||||
elif key == 'AxisLabel': naxis.set(value)
|
||||
elif key == 'MarkTones': nmark.set(value)
|
||||
elif key == 'Flatten': nflat.set(value)
|
||||
elif key == 'LogMap': logmap.set(value)
|
||||
elif key == 'Palette': g.cmap=value
|
||||
elif key == 'Frange': nfr.set(value)
|
||||
elif key == 'Fmid': fmid=int(value)
|
||||
@ -574,11 +592,9 @@ f.write("UpdateInterval " + str(nspeed0.get()) + "\n")
|
||||
f.write("Brightness " + str(b0)+ "\n")
|
||||
f.write("Contrast " + str(c0)+ "\n")
|
||||
f.write("DigitalGain " + str(g0)+ "\n")
|
||||
f.write("MinuteSeparators " + str(minsep.get()) + "\n")
|
||||
f.write("AxisLabel " + str(naxis.get()) + "\n")
|
||||
f.write("MarkTones " + str(nmark.get()) + "\n")
|
||||
f.write("Flatten " + str(nflat.get()) + "\n")
|
||||
f.write("LogMap " + str(logmap.get()) + "\n")
|
||||
f.write("Palette " + g.cmap + "\n")
|
||||
f.write("Frange " + str(nfr.get()) + "\n")
|
||||
f.write("Fmid " + str(fmid) + "\n")
|
||||
|
6
ssort.f
6
ssort.f
@ -19,8 +19,10 @@ c = -1 means sort x in decreasing order (ignoring y)
|
||||
c = -2 means sort x in decreasing order and carry y along.
|
||||
|
||||
integer kflag, n
|
||||
real x(n), y(n)
|
||||
real r, t, tt, tty, ty
|
||||
! real x(n), y(n)
|
||||
! real r, t, tt, tty, ty
|
||||
integer x(n), y(n)
|
||||
integer r, t, tt, tty, ty
|
||||
integer i, ij, j, k, kk, l, m, nn
|
||||
integer il(21), iu(21)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user