PRO GR_IMAGES_EVENT, event

COMMON FICRH,str_fic
COMMON INFO2D, Str_inf2d
COMMON LIMIT, Str_lim
COMMON IMAGES_GR,str_imgr
COMMON base_imgr,id_imgr

WIDGET_CONTROL, event.id, get_uvalue= ev

case ev of
         'LI': str_imgr.li = event.value

         'COL': str_imgr.co = event.value

         'DIM': str_imgr.dim = event.value

         'CRLI': str_imgr.crli = event.value

         'CRCOL': str_imgr.crco = event.value

         'CRE_WIN': BEGIN
               Xsize = str_imgr.co * str_imgr.dim
               Ysize = str_imgr.li * str_imgr.dim
               WINDOW,/free, XSIZE=xsize, YSIZE=ysize
               str_imgr.crwin = !D.WINDOW
           end

          'Time': Begin
                  Str_imgr.Tsel= event.value
             end

      'Stokes': str_imgr.stk = event.index

          'File': Begin
        NRH_PICKFILE, Str_fic, Str_inf2d, Str_lim, Physpar, Lfreq
        id_imgr.inf = cw_infonrh(id_imgr.inf, Str_inf2d, /INFO)
        Str_imgr.Tsel = str_inf2d.hd
        Str_imgr.stk = 0
        WIDGET_CONTROL, id_imgr.stk, SET_VALUE = Physpar
        WIDGET_CONTROL,id_imgr.indt, set_value=Str_imgr.Tsel
             end

          'Regsel': BEGIN
        READ_NRHIM, Str_fic.file, Str_imgr.Tsel,Str_inf2d,  $
                DATA, Str_im, $
                STOKES = Str_imgr.Stk
        cw_selfield,Data, str_im, str_lim, Size=300, GROUP=event.top
        END

     'Display': Begin
        if str_imgr.crwin lt 0 THEN BEGIN
            ret=widget_message('First CREATE a WINDOW') 
            Return
        end

        READ_NRHIM, Str_fic.file, Str_imgr.Tsel, Str_inf2d,$
                  DATA, Str_im, STOKES = Str_imgr.stk
        NRH_DISP_GRIMAGE, Data, Str_im , Str_lim, str_imgr
               WIDGET_CONTROL, id_imgr.crli, set_value=str_imgr.crli
               WIDGET_CONTROL, id_imgr.crco, set_value=str_imgr.crco
         end

      'Increment':  str_imgr.inc = event.value

      'Plus': Begin
        if str_imgr.crwin lt 0 THEN BEGIN
            ret=widget_message('First CREATE a WINDOW') 
            Return
        end

                i1= TIME_IND_NRH(Str_fic.file, Str_imgr.tsel)
            i= i1 + str_imgr.inc
            if I GT str_inf2d.nim THEN BEGIN
                r=widget_message('END of FILE')
                RETURN 
            end 
        READ_NRHIM, Str_fic.file,'',Str_inf2d,  DATA, Str_im, $
                STOKES = Str_imgr.Stk,INDIC=i

        Str_imgr.Tsel =Str_im.time
        WIDGET_CONTROL,id_imgr.indt,SET_VALUE=Str_im.Time
        NRH_DISP_GRIMAGE, Data, Str_im , Str_lim, str_imgr
               WIDGET_CONTROL, id_imgr.crli, set_value=str_imgr.crli
               WIDGET_CONTROL, id_imgr.crco, set_value=str_imgr.crco
         end

      'Moins': Begin
        if str_imgr.crwin lt 0 THEN BEGIN
            ret=widget_message('First CREATE a WINDOW') 
            Return
        end
                i= TIME_IND_NRH(Str_fic.file, Str_imgr.tsel)
            i = i - str_imgr.inc
            if I LT 0 THEN BEGIN
                r=widget_message('END of FILE')
                RETURN 
            end 
        READ_NRHIM, Str_fic.file,'',Str_inf2d,  DATA, Str_im, $
                STOKES = Str_imgr.Stk,INDIC=i

        Str_imgr.Tsel =Str_im.time
        WIDGET_CONTROL,id_imgr.indt,SET_VALUE=Str_im.Time
        NRH_DISP_GRIMAGE, Data, Str_im , Str_lim, str_imgr
               WIDGET_CONTROL, id_imgr.crli, set_value=str_imgr.crli
               WIDGET_CONTROL, id_imgr.crco, set_value=str_imgr.crco
         end

      'Print': Begin
        wset,str_imgr.crwin
              ;  device, get_visual_depth = thisdepth
              ;  if thisdepth gt 8 then begin
              ;      device, decomposed = 1
              ;      img = TVRD(True=1)
              ;      device, decomposed = 0
              ;  end else begin
            img = TVRD()
              ;  endelse
        mydevice = !d.name
        SET_PLOT, 'PS'
        DEVICE, FILENAME= 'imgr.ps',/COLOR
            TV,img
        r=dialog_message('OUTPUT on IMGR.PS',DIALOG_PARENT=Event.top)
        device,/close
        SET_PLOT, mydevice
         end

      'Png':  BEGIN
        WSET, Str_imgr.crwin
        Filename = CW_RD_STRING(GROUP=event.top,TITLE='PNG File')
        If Filename NE '' THEN BEGIN

                    device, get_visual_depth = thisdepth
                    if thisdepth gt 8 then begin
                        device, decomposed = 1
                        image = TVRD(True=1)
                        device, decomposed = 0
                        WRITE_PNG, Filename, image
                    end else begin
                        tvlct, rr, gg, bb, /get
                WRITE_PNG, Filename, TVRD(), rr, gg, bb
                    endelse
            end
            end
         'RESET': BEGIN
               str_imgr.crli=0
               str_imgr.crco=0
               WIDGET_CONTROL, id_imgr.crli, set_value=str_imgr.crli
               WIDGET_CONTROL, id_imgr.crco, set_value=str_imgr.crco
            end

    'Color': Xloadct

        'Return': WIDGET_CONTROL, event.top, /DESTROY

endcase

end


PRO GR_IMAGES, GROUP= group

COMMON FICRH,str_fic
COMMON INFO2D, Str_inf2d
COMMON LIMIT, Str_lim
COMMON IMAGES_GR,str_imgr
COMMON base_imgr,id_imgr

STR_IMGR = {STR_IMGR, li:3, co:6, dim:128, crli:0, crco:0, crwin:-1, $
        inc:1, tsel:' ', stk:0 }

ID_imgr = {ID_IMGR,crli:0L, crco:0L, inf:0L, indt:0L, stk:0L}

if N_ELEMENTS(Group) Eq 0 THEN GROUP=0

BASE = WIDGET_BASE( GROUP_LEADER= group, TITLE = ' 2 D  IMAGES', $
        COLUMN=1)

    PHYSPAR =['',''] & LFREQ =''
    IF str_fic.file EQ ' ' OR strlen(str_fic.file) EQ '' THEN $
        NRH_PICKFILE, Str_fic, Str_inf2d, Str_lim, Physpar, Lfreq $
    ELSE $;IF Str_inf2d.Physpar NE 0 THEN $
        NRH_FOPEN, Str_fic.File, Str_inf2d, Str_lim, Physpar, Lfreq    

    Str_imgr.Tsel = Str_lim.Hd

BASE1= WIDGET_BASE(Base,column=2,/frame,/align_center,TITLE='DEFINITION')
         l=widget_label(base1,value='WINDOW DEFINITION',/align_center)
         dim= cw_field(base1,Value= str_imgr.dim, Title='Image size:', $
         /integer,/return_event,Xsize=5, Uvalue= 'DIM')
         b= WIDGET_BUTTON(base1, value='Create WINDOW', Uvalue= 'CRE_WIN')
         nbco= cw_field(base1,Value= str_imgr.co, Title='Nb columns:', $
         /integer,/return_event,Xsize=5,Uvalue='COL')
         nbli= cw_field(base1,Value= str_imgr.li, Title='Nb rows   :', $
         /integer,/return_event,Xsize=5, Uvalue='LI')

BASE5= WIDGET_BASE(Base,column=2,/frame,/align_center)
         l=widget_label(base5,value='IMAGE position',/align_center)
         id_imgr.crli= cw_field(base5, $
                 Value= str_imgr.crli, Title='Curent row   :', $
         /integer,/return_event,Xsize=5,Uvalue='CRLI')
         b= WIDGET_BUTTON(base5, value='RESET position', Uvalue= 'RESET')
         id_imgr.crco= cw_field(base5, $
                 Value= str_imgr.crco, Title='Curent column:', $
         /integer,/return_event,Xsize=5,Uvalue='CRCOL')

BASE2= WIDGET_BASE(Base,/column,/frame,/align_center)
         l=widget_label(base2,value='IMAGE Selection',/align_center)
     b= WIDGET_BUTTON(base2, value='Select FILE', Uvalue='File')
         b=WIDGET_BUTTON(Base2,Value='Select REGION', Uvalue='Regsel')
     id_imgr.indt = cw_field(base2, value= str_imgr.tsel, $
        Uvalue= 'Time',/string, Title='Time: ',/return_event, $
        Xsize=20)

     id_imgr.stk = WIDGET_DROPLIST(base2, value = Physpar, $
                        Uvalue = 'Stokes')

     id_imgr.inf= cw_infonrh(base2,Str_inf2d)

base3= WIDGET_BASE(base,row=1,/frame)
    b=WIDGET_BUTTON(base3,Uvalue= 'Plus',Value='+')
    b=WIDGET_BUTTON(base3,Uvalue= 'Moins',Value= '-')
    b=Cw_field(base3,Uvalue='Increment',value= str_imgr.inc, $
        /integer, TITLE='INCREMENT',/Return_event,Xsize=3)
b= WIDGET_BUTTON(base, value='DISLAY', Uvalue= 'Display')
b= WIDGET_BUTTON(base, value='PS File', Uvalue= 'Print')
b= WIDGET_BUTTON(base, value='PNG File', Uvalue= 'Png')
b= WIDGET_BUTTON(base, value='COLOR', Uvalue= 'Color')
b= WIDGET_BUTTON(base, value='Return', Uvalue= 'Return')


WIDGET_CONTROL, base,/Realize

Xmanager, 'GR_IMAGES', base, /NO_BLOCK

END