Документ взят из кэша поисковой машины. Адрес оригинального документа : http://lnfm1.sai.msu.ru/~kupry/SOFTWARE/profiles.pro
Дата изменения: Thu Jan 15 20:19:00 2004
Дата индексирования: Mon Oct 1 22:58:32 2012
Кодировка:
;nazev=cas (poslednich 8 pismen)

;nastaveni formatu casove osy

function yticks,axis,index,value

hour=long(value)/3600
minute=long(value-3600 * hour) / 60
sec=value mod 60

return,string(hour, minute, sec, $
format="(i2.2,':',i2.2,':',i2.2)")
end

pro makesurface,jaky
COMMON vse,base,file_button2,option_menu,rangebutton,titlebutton,barva,pozadi,uhelx,uhelz,pos
COMMON norm,poleint,poleiks,poleips,ips,prvnihodnota,poslednihodnota
COMMON rozsah,xr,yr,zr,xrozsah,yrozsah,zrozsah
COMMON nazvy,naz,xnaz,ynaz,znaz,nazev,xnazev,ynazev,znazev
COMMON druh,jakyprofil
s=size(poleiks)
poleiks2=make_array(poslednihodnota-prvnihodnota+1,s(2),value=0,/float)
poleips2=make_array(poslednihodnota-prvnihodnota+1,s(2),value=0,/float)
poleint2=make_array(poslednihodnota-prvnihodnota+1,s(2),value=0,/float)

for i=0,poslednihodnota-prvnihodnota do poleips2(i,*)=prvnihodnota+i
j=0
for i=0,poslednihodnota-prvnihodnota do begin
if poleips2(i,0) eq ips(j) then begin
poleiks2(i,*)=poleiks(j,*) & poleint2(i,*)=poleint(j,*) & j=j+1
endif else poleiks2(i,*)=poleiks(0,*)
endfor
sp=size(poleint2)
if sp(1) gt 1 then begin
erase

if xr(0) ne '' then begin
xr1=fix(strmid(xr(0),0,strpos(xr(0),',')))
xr2=fix(strmid(xr(0),1+strpos(xr(0),','),strlen(xr(0))-(1+strpos(xr(0),','))))
xran=[xr1,xr2]
endif else xran=!x.range
if yr(0) ne '' then begin
yr1=fix(strmid(yr(0),0,strpos(yr(0),',')))
yr2=fix(strmid(yr(0),1+strpos(yr(0),','),strlen(yr(0))-(1+strpos(yr(0),','))))
yr11=fix(strmid(yr1,0,2))*3600+fix(strmid(yr1,2,2))*60+fix(strmid(yr1,4,2))
yr22=fix(strmid(yr2,0,2))*3600+fix(strmid(yr2,2,2))*60+fix(strmid(yr2,4,2))
yran=[yr11,yr22]
endif else yran=!y.range
if zr(0) ne '' then begin
zr1=fix(strmid(zr(0),0,strpos(zr(0),',')))
zr2=fix(strmid(zr(0),1+strpos(zr(0),','),strlen(zr(0))-(1+strpos(zr(0),','))))
zran=[zr1,zr2]
endif else zran=!z.range
if jaky eq 1 then begin
surface,poleint2,poleiks2,poleips2,ytickformat='yticks',ax=uhelx,az=uhelz,$
title=naz(0),xtitle=xnaz(0),ytitle=ynaz(0),ztitle=znaz(0),$
xmargin=[pos,pos],ymargin=[pos,pos],zmargin=[pos,pos],charsize=2,$
xrange=xran,yrange=yran,zrange=zran
jakyprofil=1
endif else begin
shade_surf,poleint2,poleiks2,poleips2,ytickformat='yticks',ax=uhelx,az=uhelz,$
title=naz(0),xtitle=xnaz(0),ytitle=ynaz(0),ztitle=znaz(0),$
xmargin=[pos,pos],ymargin=[pos,pos],zmargin=[pos,pos],charsize=2,$
xrange=xran,yrange=yran,zrange=zran
jakyprofil=2
endelse
endif else begin
chyba=widget_base()
chybalab=widget_label(chyba,value="Can't surface one profile only")
widget_control,chyba,/realize
wait,2 & widget_control,chyba,/destroy
endelse

end

pro normal
COMMON vse,base,file_button2,option_menu,rangebutton,titlebutton,barva,pozadi,uhelx,uhelz,pos
COMMON norm,poleint,poleiks,poleips,ips,prvnihodnota,poslednihodnota
COMMON rozsah,xr,yr,zr,xrozsah,yrozsah,zrozsah
COMMON nazvy,naz,xnaz,ynaz,znaz,nazev,xnazev,ynazev,znazev
COMMON druh,jakyprofil
s=size(ips) & kolik=s(1) & s=size(poleiks)
erase,!p.background
!y.range=0 ;& !z.range=0 & !x.range=0
!z.range=[min(poleint),max(poleint)]
!x.range=[min(poleiks),max(poleiks)]
if xr(0) ne '' then begin
xr1=fix(strmid(xr(0),0,strpos(xr(0),',')))
xr2=fix(strmid(xr(0),1+strpos(xr(0),','),strlen(xr(0))-(1+strpos(xr(0),','))))
xran=[xr1,xr2]
endif else xran=!x.range
if yr(0) ne '' then begin
yr1=(strmid(yr(0),0,strpos(yr(0),',')))
yr2=(strmid(yr(0),1+strpos(yr(0),','),strlen(yr(0))-(1+strpos(yr(0),','))))
yr11=fix(strmid(yr1,0,2))*3600+fix(strmid(yr1,2,2))*60+fix(strmid(yr1,4,2))
yr22=fix(strmid(yr2,0,2))*3600+fix(strmid(yr2,2,2))*60+fix(strmid(yr2,4,2))
yran=[yr11,yr22]
endif else begin
yran=[(prvnihodnota/10)*10,(poslednihodnota/10)*10+10]
endelse ;yran=!y.range
if zr(0) ne '' then begin
zr1=fix(strmid(zr(0),0,strpos(zr(0),',')))
zr2=fix(strmid(zr(0),1+strpos(zr(0),','),strlen(zr(0))-(1+strpos(zr(0),','))))
zran=[zr1,zr2]
endif else zran=!z.range

for i=0,kolik-1 do begin
ips2=make_array(s(2),value=ips(i))
plot_3Dbox,poleiks(i,*),ips2,poleint(i,*),/noerase,ax=uhelx,az=uhelz,$
title=naz(0),xtitle=xnaz(0),ytitle=ynaz(0),ztitle=znaz(0),$
xmargin=[pos,pos],ymargin=[pos,pos],zmargin=[pos,pos],charsize=2,$
xrange=xran,yrange=yran,zrange=zran,ytickformat='yticks'
; if i eq 0 then begin
; xran=!x.crange & yran=!y.crange & zran=!z.crange
; endif
endfor

jakyprofil=0

end

pro range_event,event
COMMON rozsah,xr,yr,zr,xrozsah,yrozsah,zrozsah
COMMON druh,jakyprofil
widget_control,event.id,get_uvalue=uvalue
case uvalue of
'KONEC':begin
widget_control,xrozsah,get_value=xr
widget_control,yrozsah,get_value=yr
widget_control,zrozsah,get_value=zr
widget_control,event.top,/destroy
if jakyprofil eq 0 then normal
if jakyprofil eq 1 then makesurface,1
if jakyprofil eq 2 then makesurface,2
end
'NIC':widget_control,event.top,/destroy
endcase
end

pro title_event,event
COMMON nazvy,naz,xnaz,ynaz,znaz,nazev,xnazev,ynazev,znazev
COMMON druh,jakyprofil
widget_control,event.id,get_uvalue=uvalue
case uvalue of
'KONEC':begin
widget_control,nazev,get_value=naz
widget_control,xnazev,get_value=xnaz
widget_control,ynazev,get_value=ynaz
widget_control,znazev,get_value=znaz
widget_control,event.top,/destroy
if jakyprofil eq 0 then normal
if jakyprofil eq 1 then makesurface,1
if jakyprofil eq 2 then makesurface,2
end
'NIC':widget_control,event.top,/destroy
endcase
end

pro save_event,event
widget_control,event.id,get_uvalue=uvalue
case uvalue of
'KONEC':begin
writelabel=widget_label(widget_info(event.id,/parent),value='Saving...')
widget_control,widget_info(widget_info(widget_info(event.id,/parent),/parent),/child),get_value=jmeno
write_gif,jmeno(0)+'.gif',tvrd()
widget_control,event.top,/destroy
end

'NIC':widget_control,event.top,/destroy

endcase
end

pro load_event,event
COMMON vse,base,file_button2,option_menu,rangebutton,titlebutton,barva,pozadi,uhelx,uhelz,pos
COMMON loadvse,soubory
COMMON norm,poleint,poleiks,poleips,ips,prvnihodnota,poslednihodnota
COMMON druh,jakyprofil
COMMON uzprof,nahrano
COMMON slidery,xslider,zslider,posslider
COMMON cesty,currpath
widget_control,event.id,get_uvalue=uvalue
case uvalue of
'KONEC':begin
widget_control,event.top,/destroy
posledni=0
while soubory(posledni) ne '' do posledni=posledni+1
posledni=posledni-1
zacatek=strmid(soubory(0),strlen(soubory(0))-10,6)
konec=strmid(soubory(posledni),strlen(soubory(posledni))-10,6)
prvnihodnota=(fix(strmid(zacatek,0,2)))*3600+(fix(strmid(zacatek,2,2)))*60+fix(strmid(zacatek,4,2))
poslednihodnota=(fix(strmid(konec,0,2)))*3600+(fix(strmid(konec,2,2)))*60+fix(strmid(konec,4,2))

delka=0 ;& ukaz= ;ukaz=ptrarr(posledni+1)
for i=0,posledni do begin
r=readfits(soubory(i)) & s=size(r)
if s(1) gt delka then delka=s(1)
;ukaz(i)=ptr_new(r)
endfor

poleint=make_array(posledni+1,delka)
poleiks=make_array(posledni+1,delka)
ips=make_array(posledni+1)

for i=0,posledni do begin
a=readfits(soubory(i))
;a=*ukaz(i)
aktual=strmid(soubory(i),strlen(soubory(i))-10,6) ;casy
aktualnihodnota=(fix(strmid(aktual,0,2)))*3600+(fix(strmid(aktual,2,2)))*60+fix(strmid(aktual,4,2))
s=size(a)
;poleiks(i,0:s(1)-1)=a(*,0)-6562.808 & poleint(i,0:s(1)-1)=a(*,1)
poleiks(i,0:s(1)-1)=a(*,0) & poleint(i,0:s(1)-1)=a(*,1)
ips(i)=aktualnihodnota
if s(1) lt delka then begin
; poleiks(i,s(1):delka-1)=a(s(1)-1,0)-6562.808
poleiks(i,s(1):delka-1)=a(s(1)-1,0)
poleint(i,s(1):delka-1)=a(s(1)-1,1)
endif
endfor
;ptr_free,ukaz

erase & normal & nahrano=1
widget_control,file_button2,sensitive=1 & widget_control,option_menu,sensitive=1
widget_control,rangebutton,sensitive=1 & widget_control,titlebutton,sensitive=1
widget_control,xslider,sensitive=1 & widget_control,zslider,sensitive=1
widget_control,posslider,sensitive=1
end

'NIC':widget_control,event.top,/destroy

ELSE:begin
cesta=pickfile(/read,filter='*.fts',path=currpath,get_path=currpath)
widget_control,widget_info(widget_info(event.id,/parent),/child),set_value=cesta
if strlen(uvalue) eq 7 then ktery=fix(strmid(uvalue,6,1)) else ktery=fix(strmid(uvalue,6,2))
soubory(ktery-1)=cesta
end
endcase
end

pro profiles_event,event
COMMON barva,pozp,barp
COMMON vse,base,file_button2,option_menu,rangebutton,titlebutton,barva,pozadi,uhelx,uhelz,pos
COMMON loadvse,soubory
COMMON rozsah,xr,yr,zr,xrozsah,yrozsah,zrozsah
COMMON nazvy,naz,xnaz,ynaz,znaz,nazev,xnazev,ynazev,znazev
COMMON druh,jakyprofil
COMMON uzprof,nahrano
COMMON cesty,currpath
widget_control,event.id,get_uvalue=uvalue
case uvalue of
'LOAD':begin
uhelx=20 & uhelz=20 & pos=4 & xr='' & yr='' & zr=''
pozp=!p.background & barp=!p.color
naz='' & xnaz='' & ynaz='' & znaz=''
jakyprofil=0 ;0 pro normal 1 pro surface
cd,current=currpath

soubory=make_array(19,1,/string)
loadbaseh=widget_base(/column)
loadlab1=widget_label(loadbaseh,value='Times when the profiles were taken must be '+$
"contained in the end of the file name (e.g. '082023.fts')!",/align_left)
loadlab2=widget_label(loadbaseh,value='You are supposed to take files in right order!',/align_left)
loadbase=widget_base(loadbaseh,/row)
loadbase1=widget_base(loadbase,/column) & loadbase2=widget_base(loadbase,/column)
loadbase11=widget_base(loadbase1,/row) & loadbase12=widget_base(loadbase1,/row) & loadbase13=widget_base(loadbase1,/row)
loadbase14=widget_base(loadbase1,/row) & loadbase15=widget_base(loadbase1,/row) & loadbase16=widget_base(loadbase1,/row)
loadbase17=widget_base(loadbase1,/row) & loadbase18=widget_base(loadbase1,/row) & loadbase19=widget_base(loadbase1,/row)
loadbase110=widget_base(loadbase1,/row) & loadbase21=widget_base(loadbase2,/row) & loadbase22=widget_base(loadbase2,/row)
loadbase23=widget_base(loadbase2,/row) & loadbase24=widget_base(loadbase2,/row) & loadbase25=widget_base(loadbase2,/row)
loadbase26=widget_base(loadbase2,/row) & loadbase27=widget_base(loadbase2,/row) & loadbase28=widget_base(loadbase2,/row)
loadbase29=widget_base(loadbase2,/row) & loadbase210=widget_base(loadbase2,/row)

load1=cw_field(loadbase11,title=' ')
load2=cw_field(loadbase12,title=' ')
load3=cw_field(loadbase13,title=' ')
load4=cw_field(loadbase14,title=' ')
load5=cw_field(loadbase15,title=' ')
load6=cw_field(loadbase16,title=' ')
load7=cw_field(loadbase17,title=' ')
load8=cw_field(loadbase18,title=' ')
load9=cw_field(loadbase19,title=' ')
load10=cw_field(loadbase110,title=' ')
load11=cw_field(loadbase21,title=' ')
load12=cw_field(loadbase22,title=' ')
load13=cw_field(loadbase23,title=' ')
load14=cw_field(loadbase24,title=' ')
load15=cw_field(loadbase25,title=' ')
load16=cw_field(loadbase26,title=' ')
load17=cw_field(loadbase27,title=' ')
load18=cw_field(loadbase28,title=' ')
load19=cw_field(loadbase29,title=' ')
load20=cw_field(loadbase210,title=' ')

load11=widget_button(loadbase11,value='LOAD',uvalue='BROWSE1')
load12=widget_button(loadbase12,value='LOAD',uvalue='BROWSE2')
load13=widget_button(loadbase13,value='LOAD',uvalue='BROWSE3')
load14=widget_button(loadbase14,value='LOAD',uvalue='BROWSE4')
load15=widget_button(loadbase15,value='LOAD',uvalue='BROWSE5')
load16=widget_button(loadbase16,value='LOAD',uvalue='BROWSE6')
load17=widget_button(loadbase17,value='LOAD',uvalue='BROWSE7')
load18=widget_button(loadbase18,value='LOAD',uvalue='BROWSE8')
load19=widget_button(loadbase19,value='LOAD',uvalue='BROWSE9')
load110=widget_button(loadbase110,value='LOAD',uvalue='BROWSE10')
load111=widget_button(loadbase21,value='LOAD',uvalue='BROWSE11')
load112=widget_button(loadbase22,value='LOAD',uvalue='BROWSE12')
load113=widget_button(loadbase23,value='LOAD',uvalue='BROWSE13')
load114=widget_button(loadbase24,value='LOAD',uvalue='BROWSE14')
load115=widget_button(loadbase25,value='LOAD',uvalue='BROWSE15')
load116=widget_button(loadbase26,value='LOAD',uvalue='BROWSE16')
load117=widget_button(loadbase27,value='LOAD',uvalue='BROWSE17')
load118=widget_button(loadbase28,value='LOAD',uvalue='BROWSE18')
load119=widget_button(loadbase29,value='LOAD',uvalue='BROWSE19')
load120=widget_button(loadbase210,value='LOAD',uvalue='BROWSE20')

quitload=widget_button(loadbase1,value='OK',uvalue='KONEC')
cancelload=widget_button(loadbase2,value='CANCEL',uvalue='NIC')

widget_control,loadbase,/realize
xmanager,'load',loadbase


end

'RANGE':begin
rangebase=widget_base(/column)
xrozsah=cw_field(rangebase,title='X')
yrozsah=cw_field(rangebase,title='Y')
zrozsah=cw_field(rangebase,title='Z')
konecbase=widget_base(rangebase,/row)
okbut=widget_button(konecbase,value='OK',uvalue='KONEC')
cancelbut=widget_button(konecbase,value='CANCEL',uvalue='NIC')
widget_control,rangebase,/realize
widget_control,xrozsah,set_value=xr & widget_control,yrozsah,set_value=yr
widget_control,zrozsah,set_value=zr
xmanager,'range',rangebase
end

'TITLE':begin
titlebase=widget_base(/column)
nazev=cw_field(titlebase,title='Main Title')
xnazev=cw_field(titlebase,title='X Title')
ynazev=cw_field(titlebase,title='Y Title')
znazev=cw_field(titlebase,title='Z Title')
konecbase=widget_base(titlebase,/row)
okbut=widget_button(konecbase,value='OK',uvalue='KONEC')
cancelbut=widget_button(konecbase,value='CANCEL',uvalue='NIC')
widget_control,titlebase,/realize
widget_control,nazev,set_value=naz & widget_control,xnazev,set_value=xnaz
widget_control,ynazev,set_value=ynaz & widget_control,znazev,set_value=znaz
xmanager,'title',titlebase
end

'NORMAL':normal
'SURFACE':makesurface,1
'SHADE':makesurface,2


'WHITE':begin
pom=!p.color & !p.color=!p.background & !p.background=pom
if jakyprofil eq 0 then normal
if jakyprofil eq 1 then makesurface,1
if jakyprofil eq 2 then makesurface,2
end
'IKS':begin
widget_control,event.id,get_value=uhelx
erase
if nahrano eq 1 then begin
if jakyprofil eq 0 then normal
if jakyprofil eq 1 then makesurface,1
if jakyprofil eq 2 then makesurface,2
endif
end
'ZET':begin
widget_control,event.id,get_value=uhelz
erase
if nahrano eq 1 then begin
if jakyprofil eq 0 then normal
if jakyprofil eq 1 then makesurface,1
if jakyprofil eq 2 then makesurface,2
endif
end
'POS':begin
widget_control,event.id,get_value=pos
erase
if nahrano eq 1 then begin
if jakyprofil eq 0 then normal
if jakyprofil eq 1 then makesurface,1
if jakyprofil eq 2 then makesurface,2
endif
end
'SAVE':begin
savebase=widget_base(/column)
savelab=widget_label(savebase,value='The image will be saved as name.gif')
savetext=cw_field(savebase,title='name ')
konecbase=widget_base(savebase,/row)
savebutton=widget_button(konecbase,value='OK',uvalue='KONEC')
cancelbutton=widget_button(konecbase,value='CANCEL',uvalue='NIC')
widget_control,savebase,/realize
xmanager,'save',savebase
end

'QUIT':begin
!p.background=pozp & !p.color=barp
widget_control,event.top,/destroy
end
endcase
end

pro profiles
COMMON vse,base,file_button2,option_menu,rangebutton,titlebutton,barva,pozadi,uhelx,uhelz,pos
COMMON nazvy,naz,xnaz,ynaz,znaz,nazev,xnazev,ynazev,znazev
COMMON rozsah,xr,yr,zr,xrozsah,yrozsah,zrozsah
COMMON druh,jakyprofil
COMMON uzprof,nahrano
COMMON barva,pozp,barp
COMMON slidery,xslider,zslider,posslider
;COMMON slide
;barva=0 & pozadi=255 & uhelx=20 & uhelz=20 & pos=4 & xr='' & yr='' & zr=''
;!p.background=0 & !p.color=255 & naz='' & xnaz='' & ynaz='' & znaz=''
;jakyprofil=0 ;0 pro normal 1 pro surface

pozp=!p.background & barp=!p.color
nahrano=0
base=widget_base(xsize=700,ysize=600,/row,mbar=bar)
file_menu=widget_button(bar,value='FILE',/menu)
file_button1=widget_button(file_menu,value='LOAD',uvalue='LOAD')
file_button2=widget_button(file_menu,value='SAVE',uvalue='SAVE')
file_button3=widget_button(file_menu,value='QUIT',uvalue='QUIT')
option_menu=widget_button(bar,value='OPTIONS',/menu)
option_button1=widget_button(option_menu,value='PROFILE',/menu)
prof_button1=widget_button(option_button1,value='NORMAL',uvalue='NORMAL')
prof_button2=widget_button(option_button1,value='SURFACE',uvalue='SURFACE')
prof_button3=widget_button(option_button1,value='SHADE',uvalue='SHADE')
option_button2=widget_button(option_menu,value='COLOR',/menu)
;color_button1=widget_button(option_button2,value='black lines & white background',uvalue='BLACK')
color_button2=widget_button(option_button2,value='invert colors',uvalue='WHITE')
base2=widget_base(base,/column)
napis=widget_label(base2,value='PROFILE EVOLUTION')
okno=widget_draw(base2,xsize=450,ysize=500)
base3=widget_base(base,/column)
mezera1=widget_base(base3,ysize=20)
rangebutton=widget_button(base3,value='RANGE',uvalue='RANGE')
titlebutton=widget_button(base3,value='TITLE',uvalue='TITLE')
mezera2=widget_base(base3,ysize=250)
rotatelabel=widget_label(base3,value='ROTATION')
xslider=widget_slider(base3,title='x',uvalue='IKS',value=20,min=0,max=360)
zslider=widget_slider(base3,title='z',uvalue='ZET',value=20,min=0,max=360)
positionlabel=widget_label(base3,value='POSITION')
posslider=widget_slider(base3,uvalue='POS',value=4,min=2,max=20,/suppress_value)


widget_control,file_button2,sensitive=0
widget_control,option_menu,sensitive=0
widget_control,rangebutton,sensitive=0
widget_control,titlebutton,sensitive=0
widget_control,xslider,sensitive=0
widget_control,zslider,sensitive=0
widget_control,posslider,sensitive=0
widget_control,base,/realize
xmanager,'profiles',base
end