Viewing contents of file '../idllib/deutsch/imgroam/ir_widgets2.pro'
pro IR_Widgets2,w,Command,Ret_Val,var1,var2,var3

; This procedure handles many widget tasks
; in the IMGroam environment.  It is not useful by itself.

; **** Setup Button/Coordinate Display Widget ******************************
  if (Command eq 'DS_SETUP') then begin
    COMMON DS_Comm,DS_LftBut,DS_MidBut,DS_RgtBut,DS_CenCrd,DS_CrsCrd,DS_CrdNme,DS_ButLbls,DS_DefLbls
    IR_GetWinPos,'CoordWid',x,y
    DS_MnBase=widget_base(title='IMGRoam Coordinate Display',/column, $
      xoffset=x,yoffset=y)
;    font='LucidaSans-Typewriter'
    font='-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1'
;    wb1=widget_base(DS_MnBase,/column,/frame)
    wb1=widget_base(DS_MnBase,/column)								; IDL 5.0 patch
    DS_LftBut=widget_label(wb1,value='[LEFT MOUSE BUTTON]:  Set  new Frame Center Position')
    DS_MidBut=widget_label(wb1,value='[CENTER MOUSE BUTTON]:  Centroid Star at  Current Position')
    DS_RgtBut=widget_label(wb1,value='[RIGHT MOUSE BUTTON]:  Set  Zoom of Frame')
    w1=widget_label(DS_MnBase,value='Frame Center Coordinates:')
    w2=widget_label(DS_MnBase,font=font,value='X        Y         RA       DEC           RA           DEC           DN')
    DS_CenCrd=widget_label(DS_MnBase,font=font,value='    0.00     0.00     0.0000    0.0000   00 00  0.000   00 00  0.00       0.000')
    DS_CrdNme=widget_label(DS_MnBase,value='Cursor Coordinates:')
    w4=widget_label(DS_MnBase,font=font,value='X        Y         RA       DEC           RA           DEC           DN')
    DS_CrsCrd=widget_label(DS_MnBase,font=font,value='    0.00     0.00     0.0000    0.0000   00 00  0.000   00 00  0.00       0.000')
    widget_control,DS_MnBase,/realize,group_leader=w.IR_MnBase
    return
    endif

; **** Change Button Function Labels ******************************
  if (Command eq 'ButtonLab') then begin
    COMMON DS_Comm,DS_LftBut,DS_MidBut,DS_RgtBut,DS_CenCrd,DS_CrsCrd,DS_CrdNme,DS_ButLbls,DS_DefLbls
    Label=['Left','Middle','Right'] & Lines=[DS_LftBut,DS_MidBut,DS_RgtBut]
    Line=0
    for i=0,2 do if (var1 eq Label(i)) then Line=Lines(i)
    if (Line eq 0) then begin
      if (var1 eq 'OffWindow') or (var1 eq 'SaveDef') then begin
        DS_ButLbls=strarr(3) & if (var1 eq 'SaveDef') then DS_DefLbls=DS_ButLbls
        for i=0,2 do begin
          widget_control,Lines(i),get_value=tmp & DS_ButLbls(i)=tmp
          if (var1 eq 'SaveDef') then DS_DefLbls(i)=tmp
          endfor
        if (var1 eq 'SaveDef') then return
        for i=0,2,2 do widget_control,Lines(i),set_value=' '
        widget_control,Lines(1),set_value='Select Menu Item or Pushbutton'
        endif
      if (var1 eq 'OnWindow') then begin
        for i=0,2 do widget_control,Lines(i),set_value=DS_ButLbls(i)
        endif
      return
      endif
    widget_control,Line,set_value='['+strupcase(var1)+' MOUSE BUTTON]:  '+var2
    return
    endif

; **** Setup Astrometry Package Widget ****************************************
  if (Command eq 'GS_SETUP') then begin
    w.GS_MnBase=widget_base(title='IMGRoam Astrometry Package',/row)
    w.GS_LstCol=widget_base(w.GS_MnBase,/column)
    w.GS_OptCol=widget_base(w.GS_MnBase,/column)

    tmp='' & Lst='Idx  ID #     RA        DEC     MAG      X      Y      '
    for i=0,strlen(Lst)-1 do begin
      tmp=tmp+strmid(Lst,i,1)
      if (strmid(Lst,i,1) eq ' ') then tmp=tmp+' '
      endfor
    GS_StrTtl=widget_label(w.GS_LstCol,value=tmp,/frame)
    Lst='  '
    w.GS_StrLst=widget_list(w.GS_LstCol,ysize=10,value=Lst)

    w.GS_DeleBt=widget_button(w.GS_OptCol,value='Delete Selected Star')
    w.GS_DlAlBt=widget_button(w.GS_OptCol,value='Delete Whole List')
    w.GS_LoadBt=widget_button(w.GS_OptCol,value='Load Star File')
    w.GS_SaveBt=widget_button(w.GS_OptCol,value='Save This Star List')
    w.GS_MEntBt=widget_button(w.GS_OptCol,value='Manually Edit Star')
    w.GS_Mve2Bt=widget_button(w.GS_OptCol,value='Move to Selected Star')

    dummy=widget_label(w.GS_OptCol,value='When Selecting Stars:')
    GS_Update=widget_base(w.GS_OptCol,/column,/nonexclusive)
    w.GS_UpdtAD=widget_button(GS_Update,value='Update RA,DEC')
    w.GS_UpdtXY=widget_button(GS_Update,value='Update X,Y')

    GS_Selbse=widget_base(w.GS_LstCol,/row)
    GS_Sellbl=widget_label(GS_Selbse,value='Selected Star: ')
    w.GS_SelStr=widget_text(GS_Selbse,xsize=12,ysize=1,value='')

    GS_OtOpt1=widget_base(w.GS_LstCol,/row)
    w.GS_OpnGSC=widget_button(GS_OtOpt1,value='Open GSC Window')
    w.GS_AsPrBt=widget_button(GS_OtOpt1,value='Astrometry Procedures')
    w.GS_AuCnBt=widget_button(GS_OtOpt1,value='Automated Centroiding')
    GS_OtOpt2=widget_base(w.GS_LstCol,/row)
    w.GS_HelpBt=widget_button(GS_OtOpt2,value='HELP')
    w.GS_OthPBt=widget_button(GS_OtOpt2,value='Other Procedures')
    w.GS_SettBt=widget_button(GS_OtOpt2,value='Change Settings')
    w.GS_ExitBt=widget_button(GS_OtOpt2,value='Exit Astrometry Package')

    widget_control,w.GS_MnBase,/realize
    widget_control,w.GS_UpdtXY,set_button=1
    widget_control,w.GS_UpdtAD,set_button=1

    return
    endif

; **** Destroy Astrometry Package Widget **************************************
  if (Command eq 'GS_DESTROY') then begin
    widget_control,w.GS_MnBase,/destroy
    return
    endif

; **** Check GS Screen ******************************************************
  if (Command eq 'GS_CHECK') then begin
    s=size(Ret_Val)
    if (s(2) eq 8) then event=Ret_Val $
    else event=WIDGET_EVENT(w.GS_MnBase,/nowait)
    Ret_Val=-1
    if (event.ID eq 0) then return
    Ret_Val=1 & var1=event
    return
    endif

; **** Set Selected Star Field ************************************************
  if (Command eq 'SetSelStr') then begin
    if (Ret_Val eq var1) then tmp='End of List' else tmp=strn(Ret_Val)
    widget_control,w.GS_SelStr,set_value=tmp
    return
    endif

; **** Update Stars List ******************************************************
  if (Command eq 'GS_UPDATE') then begin
    ss=var1
    if (ss.stars eq 0) then begin
      widget_control,w.GS_StrLst,set_value=[' ']
      return & endif
    widget_control,w.GS_StrLst,set_value=['Please Wait...']
    Lst=strarr(ss.stars+1)
    for i=0,ss.stars-1 do begin
      tmp2=''
      tmp=string(format='(i3,2x,i4,1x,2f10.5,2x,f5.2,1x,2f8.2,a1)',i,ss.id(i), $
        ss.ra(i),ss.dec(i),ss.mag(i),ss.x(i),ss.y(i),' ')
      for j=0,strlen(tmp)-1 do begin
        tmp2=tmp2+strmid(tmp,j,1)
        if (strmid(tmp,j,1) eq ' ') then tmp2=tmp2+' '
        endfor
      Lst(i)=tmp2
      endfor
    Lst(i)='    '
    widget_control,w.GS_StrLst,set_value=Lst

    endif

; **** Edit Star Information *************************************************
  if (command eq 'EditStar') then begin
    w1=widget_base(/column,title=' ',xoffset=200,yoffset=400)
    w10=widget_base(w1,/row)
    if (strn(var1(0)) eq '-1') then tmp='New' else tmp=strn(fix(var1(0)))
    w2=widget_label(w10,value='Edit Information for Star: '+tmp)
    w11=widget_label(w10,value='')

    w13=widget_base(w1,/row)
    w14=widget_label(w13,value='Star ID Number: ')
    w15=widget_text(w13,/editable,xsize=40,ysize=1,value=strn(fix(var2(0))))

    w23=widget_base(w1,/row)
    w24=widget_label(w23,value='RA,DEC: ')
    w25=widget_text(w23,/editable,xsize=40,ysize=1,value=strn(var1(1))+' '+ $
      strn(var1(2)))

    w33=widget_base(w1,/row)
    w34=widget_label(w33,value='X,Y: ')
    w35=widget_text(w33,/editable,xsize=40,ysize=1,value=strn(var1(3))+' '+ $
      strn(var1(4)))

    w43=widget_base(w1,/row)
    w44=widget_label(w43,value='Magnitude: ')
    w45=widget_text(w43,/editable,xsize=40,ysize=1,value=strn(var1(5)))

    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 begin
        widget_control,w15,set_value='' & widget_control,w25,set_value=''
        widget_control,w35,set_value='' & widget_control,w45,set_value=''
        endif
      if (event.ID eq w9) then begin
        Ret_Val=1
        widget_control,w15,get_value=tmp & Coord=strnumber(tmp(0),var2)

        widget_control,w25,get_value=tmp
        Coord=tmp(0) & Coord=getopt(Coord,'F')
        case (n_elements(Coord)) of
          2: begin & var1(1)=coord(0) & var1(2)=coord(1) & end
          6: begin & var1(1)=ten(Coord(0:2)*15.) & var1(2)=ten(Coord(3:5)) & end
          else: begin & ir_widgets,w,'MessageBox',Ret_Val,['RA,DEC value is not valid.','OK']
            Ret_Val=-599 & end
          endcase

        widget_control,w35,get_value=Coord
        Coord=Coord(0) & Coord=getopt(Coord,'F')
        case (n_elements(Coord)) of
          2: begin & var1(3)=coord(0) & var1(4)=coord(1) & end
          else: begin & ir_widgets,w,'MessageBox',Ret_Val,['X,Y value is not valid.','OK']
            Ret_Val=-599 & end
          endcase

        widget_control,w45,get_value=tmp
        if (strnumber(tmp(0),Coord) eq 0) then begin
          ir_widgets,w,'MessageBox',Ret_Val,['Magnitude value is not valid.','OK']
          Ret_Val=-599
        endif else var1(5)=Coord

        endif

      endwhile
    widget_control,w1,/destroy
    return
    endif

; **** Choose Astrometry Procedure Type ***************************************
  if (command eq 'AsPrChoice') then begin
    w1=widget_base(/column,title=' ',xoffset=200,yoffset=400)
    w2=lonarr(4)
    w2(0)=widget_button(w1,value='Create Initial Solution using STARAST and first 3 stars w/[RA,DEC,X,Y])')
    w2(1)=widget_button(w1,value='Improve Solution with ASTROMIT (several stars w/ [RA,DEC,X,Y])')
    w2(2)=widget_label(w1,value=' ')
    w2(3)=widget_button(w1,value='  Cancel  ')

    widget_control,w1,/realize & Ret_Val=-1 & event=WIDGET_EVENT(w1)
    for i=0,3 do $
      if (event.ID eq w2(i)) then Ret_Val=i
    widget_control,w1,/destroy
    return
    endif

; **** Choose Automated Centroiding Type *************************************
  if (command eq 'CenTypChoice') then begin
    w1=widget_base(/column,title=' ',xoffset=200,yoffset=400)
    w17=widget_label(w1,value='For Each Star in the Star List:')
    w2=widget_base(w1,/row,/frame)
    w3=widget_label(w2,value='Centroid at coordinate type')
    w4=widget_base(w2,/column,/exclusive)
    if (var1 eq 1) then w5=widget_button(w4,value='RA,DEC') else w5=0
    w6=widget_button(w4,value='X,Y')

    w7=widget_base(w1,/row,/frame)
    w8=widget_label(w7,value='Record Centroided value as')
    w9=widget_base(w7,/column,/nonexclusive)
    if (var1 eq 1) then w10=widget_button(w9,value='RA,DEC') else w10=0
    w11=widget_button(w9,value='X,Y')

    w12=widget_base(w1,/row,/nonexclusive)
    w13=widget_button(w12,value='Create a PostScript Record')

    w14=widget_base(w1,/row)
    w15=widget_button(w14,value='  OK  ')
    w16=widget_button(w14,value='  CANCEL  ')

    widget_control,w1,/realize
    if (var1 eq 1) then begin & widget_control,w5,set_button=1 & InTyp=0 & endif
    if (var1 eq 0) then begin & widget_control,w6,set_button=1 & InTyp=1 & endif
    widget_control,w11,set_button=1 & RecRADEC=0 & RecXY=1
    PSRec=0

    Ret_Val=-599
    while (Ret_Val eq -599) do begin
      event=WIDGET_EVENT(w1)
      if (event.ID eq w5) then InTyp=0
      if (event.ID eq w6) then InTyp=1
      if (event.ID eq w10) then RecRADEC=abs(RecRADEC-1)
      if (event.ID eq w11) then RecXY=abs(RecXY-1)
      if (event.ID eq w13) then PSRec=abs(PSRec-1)
      if (event.ID eq w16) then Ret_Val=-1
      if (event.ID eq w15) then Ret_Val=1
      endwhile
    widget_control,w1,/destroy
    
    if (Ret_Val eq -1) then return
    var1=[InTyp,RecRADEC,RecXY,PSRec]
    return
    endif

; **** Color Tables *****************************************************
  if (command eq 'ColorTables') then begin

    w1=widget_base(title='Color Table Adjustments',xoffset=200,yoffset=400,/column)

    wbut1=lonarr(11)
    wbut1(0)=widget_button(w1,value='           XLOADCT (WIDGETLIB)          ')
    wbut1(1)=widget_button(w1,value='XPALETTE (WIDGETLIB)')
    wbut1(2)=widget_button(w1,value='ADJCT (USERLIB)')
    wbut1(3)=widget_button(w1,value='CONTRAST (UIT LIB)')
    wbut1(4)=widget_button(w1,value='C_EDIT (USERLIB)')
    wbut1(5)=widget_button(w1,value='COLOR_EDIT (USERLIB)')
    wbut1(6)=widget_button(w1,value='TVBALL (UIT LIB)')
    wbut1(7)=widget_button(w1,value='Black Sky (EWD)')
    wbut1(8)=widget_button(w1,value='White Sky (EWD)')
    wbut1(9)=widget_button(w1,value='LOADCT (USERLIB)')
    wbut1(10)=widget_button(w1,value='DONE')

    widget_control,w1,/realize,/show

    Ret_Val=-599
    while (Ret_Val eq -599) do begin
      event=WIDGET_EVENT(w1)
      if (event.ID eq wbut1(0)) then xloadct,/modal
      if (event.ID eq wbut1(1)) then xpalette
      if (event.ID eq wbut1(2)) then Adjct
      if (event.ID eq wbut1(3)) then begin
        wset,0
        contrast
        endif
      if (event.ID eq wbut1(4)) then c_edit
      if (event.ID eq wbut1(5)) then color_edit
      if (event.ID eq wbut1(6)) then tvball
      if (event.ID eq wbut1(7)) then blacksky
      if (event.ID eq wbut1(8)) then whitesky,reserve='RED'
      if (event.ID eq wbut1(9)) then loadct
      if (event.ID eq wbut1(10)) then Ret_Val=-1
      endwhile

    widget_control,w1,/destroy
    return
    endif


; **** Color Tables *****************************************************
  if (command eq 'PostCentroid') then begin

    w1=widget_base(title='Post-Centroid Options',xoffset=800,yoffset=600,/column)

    wbut1=lonarr(11)
    wbut1(0)=widget_button(w1,value='         Radial Profile (radprof)        ')
    wbut1(1)=widget_button(w1,value='Contour (starcont)')
    wbut1(2)=widget_button(w1,value='DIS Slit Calculator')
    wbut1(3)=widget_button(w1,value='DONE')

    widget_control,w1,/realize,/show

    Ret_Val=-599 & allocflag=0
    while (Ret_Val eq -599) do begin
      event=WIDGET_EVENT(w1)
      if (event.ID eq wbut1(0)) then begin
        if (allocflag eq 0) then begin & win_alloc,PSFWIN & allocflag=1 & endif
        win_open,PSFWIN,500,500,70,200,'Radial Plot'
        ir_radprof,var1,var2,var3
        endif
      if (event.ID eq wbut1(1)) then begin
        if (allocflag eq 0) then begin & win_alloc,PSFWIN & allocflag=1 & endif
        win_open,PSFWIN,500,500,70,200,'Contour Plot'
        starcontour,var1,var2,var3
        endif
      if (event.ID eq wbut1(2)) then discalc,var1,var2,var3
      if (event.ID eq wbut1(3)) then Ret_Val=-1
      endwhile

    if (allocflag eq 1) then win_dele,PSFWIN

    widget_control,w1,/destroy
    return
    endif



  return
end