Viewing contents of file '../idllib/deutsch/imgroam/ir_widgets.pro'
pro IR_Widgets,w,Command,Ret_Val,var1,var2
; This procedure handles many widget tasks
; in the IMGroam environment. It is not useful by itself.
; **** IMGRoam Widget System Setup ********************************************
if (Command eq 'SETUP') then begin
w={IR_MnBase:0L, IR_LftCol:0L, IR_RgtCol:0L, $
IR_MnMenu:0L, IR_MenuOp:lonarr(8), IR_MnFunc:0L, IR_FuncBt:lonarr(7), $
GS_MnBase:0L, GS_LstCol:0L, $
GS_OptCol:0L, GS_StrLst:0L, GS_DeleBt:0L, GS_DlAlBt:0L, $
GS_LoadBt:0L, GS_SaveBt:0L, GS_MEntBt:0L, GS_Mve2Bt:0L, $
GS_UpdtAD:0L, GS_UpdtXY:0L, GS_OpnGSC:0L, GS_AsPrBt:0L, $
GS_AuCnBt:0L, GS_HelpBt:0L, GS_OthPBt:0L, GS_SettBt:0L, $
GS_ExitBt:0L, GS_SelStr:0L}
return
endif
; **** Setup Main Menu ********************************************************
if (Command eq 'IR_SETUP') then begin
IR_GetWinPos,'ButtnWid',x,y
w.IR_MnBase=widget_base(title='Image Roam Widget Version 3.2',/row, $
xoffset=x,yoffset=y)
w.IR_LftCol=widget_base(w.IR_MnBase,/column,xsize=260)
w.IR_RgtCol=widget_base(w.IR_MnBase,/column)
tmpmenu=[' Define ROI ', $
' Color Table Procedures',' Astrometry Package',' Program Settings/Defaults', $
' Annotate Frame Window ',' Exit IMGRoam']
w.IR_MnMenu=widget_base(w.IR_LftCol,/column)
for i=0,n_elements(tmpmenu)-1 do $
w.IR_MenuOp(i)=widget_button(w.IR_MnMenu,value=tmpmenu(i))
tmpmenu=['Move to X,Y','Move to RA,DEC','Set Zoom Factor','Set Stretch', $
'Refresh Text','Print Frame']
w.IR_MnFunc=widget_base(w.IR_RgtCol,/column)
for i=0,n_elements(tmpmenu)-1 do $
w.IR_FuncBt(i)=widget_button(w.IR_MnFunc,value=tmpmenu(i))
widget_control,w.IR_MnBase,/realize
return
endif
; **** Clear all Events *******************************************************
if (Command eq 'IR_CLEAR') then begin
widget_control,w.IR_MnBase,/clear_events
return
endif
; **** Destroy Main Menu ******************************************************
if (Command eq 'IR_DESTROY') then begin
widget_control,w.IR_MnBase,/destroy
return
endif
; **** Check Main Screen ******************************************************
if (Command eq 'IR_CHECK') then begin
s=size(Ret_Val)
if (s(2) eq 8) then event=Ret_Val $
else event=WIDGET_EVENT(w.IR_MnBase,/nowait)
Ret_Val=-1 & choice=-1
if (event.ID eq 0) then return
for i=0,7 do if (event.ID eq w.IR_MenuOp(i)) then choice=i
for i=0,5 do if (event.ID eq w.IR_FuncBt(i)) then choice=i+10
if (choice eq 5) then IR_Widgets,w,'EXIT?',choice
Ret_Val=choice
return
endif
; **** Confirm the EXIT command ***********************************************
if (Command eq 'EXIT?') then begin
w1=widget_base(/column,title=' ',xoffset=200,yoffset=400)
w2=widget_label(w1,value='Do you want to EXIT IMGRoam?')
w3=widget_base(w1,/column)
w4=widget_button(w3,value=' EXIT (Leave image windows open) ')
w5=widget_button(w3,value=' EXIT (Close image windows) ')
w6=widget_button(w3,value=' CANCEL ')
widget_control,w1,/realize & Ret_Val=0 & event=WIDGET_EVENT(w1)
Ret_Val=-1
if (event.ID eq w4) then Ret_Val=7
if (event.ID eq w5) then Ret_Val=107
widget_control,w1,/destroy
return
endif
; **** Confirm the EXIT command ***********************************************
if (Command eq 'MessageBox') then begin
w1=widget_base(/column,title=' ',xoffset=200,yoffset=400)
w2=widget_label(w1,value=var1(0))
if (n_elements(var1) eq 2) then w3=w1 else w3=widget_base(w1,/row)
w4=lonarr(n_elements(var1))
for i=1,n_elements(var1)-1 do $
w4(i)=widget_button(w3,value=' '+var1(i)+' ')
widget_control,w1,/realize & Ret_Val=-1 & event=WIDGET_EVENT(w1)
for i=1,n_elements(var1)-1 do $
if (event.ID eq w4(i)) then Ret_Val=i-1
widget_control,w1,/destroy
return
endif
; **** Get either X,Y or RA,DEC information **********************************
if (command eq 'GetXY') or (command eq 'GetAD') then begin
if (command eq 'GetXY') then begin & mode=1 & str1='X,Y' & endif
if (command eq 'GetAD') then begin & mode=2 & str1='RA,DEC' & endif
w1=widget_base(/column,title=' ',xoffset=200,yoffset=400)
w10=widget_base(w1,/row)
w2=widget_label(w10,value='Enter New Frame '+str1+' Coordinates')
w11=widget_label(w10,value='')
w3=widget_base(w1,/row)
w4=widget_label(w3,value=str1+': ')
w5=widget_text(w3,/editable,xsize=40,ysize=1,value='')
w6=widget_base(w1,/row)
w9=widget_button(w6,value=strn('OK',length=10,padtype=2))
w7=widget_button(w6,value=strn('CANCEL',length=10,padtype=2))
w8=widget_button(w6,value=strn('CLEAR',length=10,padtype=2))
widget_control,w1,/realize,/show
Ret_Val=-599
while (Ret_Val(0) eq -599) do begin
event=WIDGET_EVENT(w1)
if (event.ID eq w7) then Ret_Val=-1
if (event.ID eq w8) then widget_control,w5,set_value=''
if (event.ID eq w5) or (event.ID eq w9) then begin
widget_control,w5,get_value=Coord
Coord=Coord(0)
Coord=getopt(Coord,'F')
case (n_elements(Coord)) of
2: Ret_Val=Coord
6: begin & Ret_Val=[ten(Coord(0:2)*15.),ten(Coord(3:5))] & end
else: begin & widget_control,w11,set_value=' Invalid'
wait,1 & widget_control,w11,set_value='' & end
endcase
endif
endwhile
widget_control,w1,/destroy
return
endif
; **** Set Zoom Factor ********************************************************
if (command eq 'SetZoom') then begin
w1=widget_base(title=' ',xoffset=400,yoffset=300,/column)
w9=widget_label(w1,value='Current Zoom: '+strn(fix(var1)))
w10=widget_base(w1,/row)
w2=widget_base(w10,/column)
w3=widget_base(w10,/column)
zoomstr=strarr(20)
zoomstr(0:7)=string(indgen(8)+1)+' '
zoomstr(8:12)=string(indgen(5)*2+10)+' '
zoomstr(13:19)=string(indgen(7)*5+20)+' '
w4=widget_list(w2,ysize=20,value=zoomstr)
w7=widget_button(w3,value=strn('Zoom = 1',length=13,padtype=2))
w5=widget_button(w3,value=strn('Increase 1',length=13,padtype=2))
w6=widget_button(w3,value=strn('Decrease 1',length=13,padtype=2))
w8=widget_button(w3,value=strn('Cancel',length=13,padtype=2))
w99=widget_label(w3,value=' ')
w11=widget_label(w3,value='Enter Zoom:')
w12=widget_text(w3,/editable,xsize=10,ysize=1,value='')
widget_control,w1,/realize,/show
Ret_Val=-599
while (Ret_Val(0) eq -599) do begin
event=WIDGET_EVENT(w1)
if (event.ID eq w7) then Ret_Val=1
if (event.ID eq w5) then Ret_Val=var1+1
if (event.ID eq w6) then Ret_Val=var1-1>1
if (event.ID eq w8) then Ret_Val=-1
if (event.ID eq w12) then begin
widget_control,w12,get_value=Ret_Val & Ret_Val=Ret_Val(0)
if (strnumber(Ret_Val,tmp) eq 1) then Ret_Val=fix(tmp) $
else Ret_Val=0
if (Ret_Val lt 1) or (Ret_Val gt 100) then begin
widget_control,w12,set_value='Invalid'
wait,1 & widget_control,w12,set_value='' & Ret_Val=-599
endif
endif
if (event.ID eq w4) then Ret_Val=fix(zoomstr(event.INDEX))
endwhile
widget_control,w1,/destroy
return
endif
; **** Set Stretch ********************************************************
if (command eq 'SetStretch') then begin
ScMin=var1(0) & ScMax=var1(1) & SCTyp=var2
w1=widget_base(title=' ',xoffset=200,yoffset=400,/row)
w20=widget_base(w1,/column)
w2=widget_base(w1,/column)
w3=widget_base(w1,/column)
w21=widget_label(w20,value='Auto Determination:')
w22=widget_base(w20,/column,/exclusive)
wbut1=lonarr(9)
wbut1(0)=widget_button(w22,value='SKY_VALUE (DJL)')
wbut1(1)=widget_button(w22,value='UIT_Sky_Value (EWD)')
wbut1(2)=widget_button(w22,value='User Function 1')
wbut1(3)=widget_button(w22,value='User Function 2')
w4=widget_label(w2,value='Reduction Type:')
w5=widget_base(w2,/column,/exclusive)
wbut=lonarr(9)
wbut(0)=widget_button(w5,value='LINEAR')
wbut(1)=widget_button(w5,value='Logarithmic')
wbut(2)=widget_button(w5,value='Square Root')
wbut(3)=widget_button(w5,value='Cube Root')
wbut(4)=widget_button(w5,value='Fifth Root')
wbut(5)=widget_button(w5,value='Sine Curve')
wbut(6)=widget_button(w5,value='Plain TVSCL')
wbut(7)=widget_button(w5,value='Plain TV')
w12=widget_label(w3,value='Scaling Minimum:')
w13=widget_text(w3,/editable,xsize=10,ysize=1,value=strn(ScMin))
w99=widget_label(w3,value='')
w14=widget_label(w3,value='Scaling Maximum:')
w15=widget_text(w3,/editable,xsize=10,ysize=1,value=strn(ScMax))
w99=widget_label(w3,value=' ')
w16=widget_button(w3,value=strn('OK',length=6,padtype=2))
w17=widget_button(w3,value=strn('CANCEL',length=6,padtype=2))
rdtypes=['NONE','LOG','ROOT 2','ROOT 3','ROOT 5','SINE','TVSCL','TV'] & i=0
while (ScTyp ne rdtypes(i)) do i=i+1
widget_control,wbut(i),/set_button
widget_control,w1,/realize,/show
Ret_Val=-599 & butval=i
while (Ret_Val(0) eq -599) do begin
event=WIDGET_EVENT(w1)
if (event.ID eq w17) then Ret_Val=-1
for i=0,3 do if (event.ID eq wbut1(i)) then Ret_Val=200+i
for i=0,7 do if (event.ID eq wbut(i)) then butval=i
if (event.ID eq w16) then begin
widget_control,w13,get_value=tmp1 & tmp1=tmp1(0)
if (strnumber(tmp1,tmp) eq 1) then tmp1=float(tmp) $
else begin
widget_control,w13,set_value='Invalid'
wait,1 & widget_control,w13,set_value='' & tmp1='Bad'
endelse
widget_control,w15,get_value=tmp2 & tmp2=tmp2(0)
if (strnumber(tmp2,tmp) eq 1) then tmp2=float(tmp) $
else begin
widget_control,w15,set_value='Invalid'
wait,1 & widget_control,w15,set_value='' & tmp2='Bad'
endelse
sz=size(tmp1)>size(tmp2)
if (sz(1) ne 7) then begin
if (tmp2 le tmp1) then begin
widget_control,w15,set_value='too small'
wait,1 & widget_control,w15,set_value='' & tmp2='Bad' & endif $
else begin & var1=[tmp1,tmp2] & Ret_Val=1 & endelse
endif
endif
endwhile
widget_control,w1,/destroy
var2=rdtypes(butval)
return
endif
; **** Main Screen Settings Menu *********************************************
if (command eq 'IR_Settings') then begin
stat=var1
w0=widget_base(/row,title='IMGRoam Settings/Defaults',xoffset=200,yoffset=200)
w1=widget_base(w0,/column)
w100=widget_base(w0,/column)
w2=widget_base(w1,/column,/frame)
w25=widget_base(w2,/column,/nonexclusive)
w3=widget_button(w25,value='Automatic Frame Display after Actions')
w4=widget_button(w25,value='Frame Processing')
w38=widget_base(w2,/row)
w39=widget_label(w38,value='Frame Size: ')
w40=widget_text(w38,/editable,value='Not Changeable Yet')
w41=widget_base(w2,/row)
w42=widget_label(w41,value='Frame LowerLeft Offset: ')
w43=widget_text(w41,/editable,value='Not Changeable Yet')
w26=widget_button(w25,value='Frame Border Display')
w27=widget_base(w2,/row)
w28=widget_label(w27,value='Frame Border Color: ')
w29=widget_text(w27,/editable,value=strn(stat.BCOL))
w30=widget_base(w2,/row)
w31=widget_label(w30,value='Frame Border Thickness: ')
w32=widget_text(w30,/editable,value=strn(stat.BTHK))
w5=widget_base(w100,/column,/frame)
w10=widget_base(w5,/column,/nonexclusive)
w6=widget_button(w10,value='Automatic Color Bar Display')
w7=widget_base(w5,/row)
w8=widget_label(w7,value='Color Bar Length: ')
w9=widget_text(w7,/editable,value=strn(stat.CBX))
w11=widget_base(w5,/row)
w12=widget_label(w11,value='Color Bar Height: ')
w13=widget_text(w11,/editable,value=strn(stat.CBY))
w14=widget_base(w5,/row)
w15=widget_label(w14,value='Color Bar X,Y Offset: ')
w16=widget_text(w14,/editable,value=strn(stat.CBLLX)+' '+strn(stat.CBLLY))
w17=widget_base(w5,/column,/nonexclusive)
w18=widget_button(w17,value='Color Bar Border')
w19=widget_base(w5,/row)
w20=widget_label(w19,value='Color Bar Border Color: ')
w21=widget_text(w19,/editable,value=strn(stat.CBBCOL))
w22=widget_base(w5,/row)
w23=widget_label(w22,value='Color Bar Border Thickness: ')
w24=widget_text(w22,/editable,value=strn(stat.CBBTHK))
w33=widget_base(w1,/column,/frame)
w34=widget_label(w33,value='Zoom Type')
w37=widget_base(w33,/column,/exclusive)
w35=widget_button(w37,value='Bilinear Interpolation [IDL REBIN]')
w36=widget_button(w37,value='Standard Block Expansion [IDL CONGRID]')
w60=widget_button(w37,value='Cubic Interpolation [IDL CONGRID(,/CUBIC)]')
w47=widget_base(w1,/column,/frame)
w48=widget_base(w47,/column,/nonexclusive)
w49=widget_button(w48,value='Automatic NE Arrow Display')
w44=widget_base(w1,/row)
w45=widget_button(w44,value=' OK ')
w46=widget_button(w44,value=' CANCEL ')
w50=widget_base(w100,/row)
w51=widget_button(w50,value='Centroider...')
w52=widget_button(w50,value=' ???? ')
widget_control,w0,/realize
if (stat.AUTOD eq 1) then widget_control,w3,set_button=1
if (stat.AUTOPROC eq 1) then widget_control,w4,set_button=1
if (stat.AUTOB eq 1) then widget_control,w26,set_button=1
if (stat.CBAUTOD eq 1) then widget_control,w6,set_button=1
if (stat.CBAUTOB eq 1) then widget_control,w18,set_button=1
if (stat.ZTYPE eq 0) then widget_control,w35,set_button=1
if (stat.ZTYPE eq 1) then widget_control,w36,set_button=1
if (stat.ZTYPE eq 2) then widget_control,w60,set_button=1
if (stat.NEARR eq 1) then widget_control,w49,set_button=1
Ret_Val=-599
while (Ret_Val eq -599) do begin
event=WIDGET_EVENT(w0)
if (event.ID eq w3) then stat.AUTOD=abs(stat.AUTOD-1)
if (event.ID eq w4) then stat.AUTOPROC=abs(stat.AUTOPROC-1)
if (event.ID eq w26) then stat.AUTOB=abs(stat.AUTOB-1)
if (event.ID eq w6) then stat.CBAUTOD=abs(stat.CBAUTOD-1)
if (event.ID eq w18) then stat.CBAUTOB=abs(stat.CBAUTOB-1)
if (event.ID eq w35) then stat.ZTYPE=0
if (event.ID eq w36) then stat.ZTYPE=1
if (event.ID eq w60) then stat.ZTYPE=2
if (event.ID eq w49) then stat.NEARR=abs(stat.NEARR-1)
if (event.ID eq w51) then IR_cntrd,mode=1
if (event.ID eq w45) then Ret_Val=1
if (event.ID eq w46) then Ret_Val=-1
endwhile
if (Ret_Val eq -1) then begin & widget_control,w0,/destroy & return & endif
widget_control,w29,get_value=tmp
if (strnumber(tmp(0),tmp2) eq 1) then stat.BCOL=fix(tmp2)<255>0
widget_control,w32,get_value=tmp
if (strnumber(tmp(0),tmp2) eq 1) then stat.BTHK=fix(tmp2)<10>1
widget_control,w21,get_value=tmp
if (strnumber(tmp(0),tmp2) eq 1) then stat.CBBCOL=fix(tmp2)<255>0
widget_control,w24,get_value=tmp
if (strnumber(tmp(0),tmp2) eq 1) then stat.CBBTHK=fix(tmp2)<10>1
widget_control,w9,get_value=tmp
if (strnumber(tmp(0),tmp2) eq 1) then stat.CBX=fix(tmp2)<512>0
widget_control,w13,get_value=tmp
if (strnumber(tmp(0),tmp2) eq 1) then stat.CBY=fix(tmp2)<512>0
widget_control,w16,get_value=tmp & tmp2=getopt(tmp(0))
if (n_elements(tmp2) eq 2) then begin
stat.CBLLX=fix(tmp2(0))<512>0
stat.CBLLY=fix(tmp2(1))<512>0
endif
widget_control,w0,/destroy
var1=stat
return
endif
return
end