;+
; Project     : SOHO - LASCO
;
; Name        : WLOADC
;
; Purpose     : Load image(s) in FITS format.
;
; Category    : SU:IMAGE_TOOL ?
;
; Explanation : This widget loader tool allows searching images
;               in your archiv and at the end load it.
;
; Syntax      : IDL>wloadc
;
; Examples    : IDL>wloadc
;
; Inputs      : None
;
; Opt. Inputs : None
;
; Outputs     : None
;
; Opt. Outputs: None
;
; Keywords    : None
;
; Common      : dirs_files, lasco.com, wload.com
;
; Restrictions: Requires specification of enviroment variables
;               defined in file: instrument.def                                 
;
; Side effects: Not known
;
; History     : Version 1, 02-Sep-1995, B Podlipnik. Written
;
; Contact     : BP, borut@lasco1.mpae.gwdg.de
;-

PRO wloadc_event,event

@lasco.com
@wload.com
@chandle.com

COMMON dirs_files, dirs, files, sel_method, s_method

WIDGET_CONTROL, event.id, GET_UVALUE=uval          ; get the UVALUE of the event
WIDGET_CONTROL, event.top, GET_UVALUE=uv           ; get structure from UVALUE
CASE uval OF

 "SEL_LOAD": BEGIN

                  sel_method_old = sel_method
                  WIDGET_CONTROL,uv.s_meth, GET_VALUE = sel_method
                  sel_array_method = WHERE(sel_method EQ 1)

                  sel_index = WHERE(sel_method NE sel_method_old)

                  ni = N_ELEMENTS(sel_method)
                  sel_method(0:ni-1) = 0
                  sel_method(sel_index(0)) = 1
                  WIDGET_CONTROL,uv.s_meth, SET_VALUE = sel_method


              ; *** output from select load are strings:  files and dirs 
              CASE event.value OF
               0: s_method = 0
               1: s_method = 1  ; *** load file with list of images ***
               2: s_method = 2  ; *** search on observation date ***
               3: s_method = 3  ; *** find all images on selected instruments
               4: s_method = 4  ; *** path *** 
               ELSE: donothing = 0
              ENDCASE

             END

  "RESET":  BEGIN
             WIDGET_CONTROL,uv.s_inst,GET_VALUE=sel_inst
             sel_inst(0:N_ELEMENTS(sel_inst)-1) = 0
             WIDGET_CONTROL,uv.s_inst,SET_VALUE=sel_inst
   ;          WIDGET_CONTROL,uv.s_meth,SET_VALUE=4
             WIDGET_CONTROL,uv.wtxt1,SET_VALUE="no files selected"

            END

  "PDMENU": BEGIN
 	      CASE event.value OF
 
	        "Save":  BEGIN
         	          wsave
                 	 END
 
	     "Save As":  BEGIN
                          file_name = name
                          XVAREDIT,file_name
                          WRITEFITS,file_name,image,head
                         END
 
               "Setup":  BEGIN
                  	  setup
                  	  WIDGET_CONTROL, uv.npath, SET_VALUE = new_path
                 	 END

         	"Info":  BEGIN
                       ;wimg_info
                                                            
                  	  IF N_ELEMENTS(image) EQ 0 THEN BEGIN
                         msg = WIDGET_MESSAGE("No image loaded.") 
                       RETURN
                       ENDIF
                       n = N_ELEMENTS(h_array)
                       sel_array = INDGEN(n)
                       sel_img = INTARR(n)
                       sel_img(0:n-1) = 1 

                  	  wimg_info1
                 	 END
 
          "Image Size":  BEGIN
                          wsize
                 	 END
   
         	"Help":  BEGIN
                  	  path_msg = GETENV('LASCO_MSG')
                  	  tmp_msg  = path_msg + !delimiter + 'wloadh.msg'
                  	  xdisplayfile,tmp_msg,height=20,width=65,title='Help'
                 	 END
	         "Done": BEGIN
       	 	          WIDGET_CONTROL, event.top, /DESTROY
                                                            
                  	  IF N_ELEMENTS(image) EQ 0 THEN RETURN
                       n = N_ELEMENTS(h_array)
                       sel_array = INDGEN(n)
                       sel_img = INTARR(n)
                       sel_img(0:n-1) = 1 

                  	;  IF !D.WINDOW GT -1 AND XRegistered("display") THEN BEGIN
                      	;	WIDGET_CONTROL,w_text,SET_VALUE = head
                      	;	WIDGET_CONTROL,uvd.Title1,SET_VALUE = name
                      	;	TVSCL,image
                      	;	n_frames = N_ELEMENTS(h_array)
                  	;  ENDIF
                  	  RETURN
                 	 END
 
 		ELSE: donothing=0
 		ENDCASE
 
	      END	


  "NEW_NAME":   BEGIN
                   WIDGET_CONTROL, uv.nname, GET_VALUE = new_filter
                   WIDGET_CONTROL, uv.npath, GET_VALUE = new_path

                   chk = chk_dir(new_path(0))
                    IF chk EQ 0 THEN BEGIN
                        msg = WIDGET_MESSAGE("No such directory: ") 
;                        WIDGET_CONTROL, uv.npath, SET_VALUE = old_path, /NO_COPY
                        RETURN
                    ENDIF

                   files = ''
                   dirs  = ''
               
                   IF STRCOMPRESS(new_filter(0),/REMOVE_ALL) EQ ' ' THEN BEGIN
                    new_filter = PICKFILE( PATH = new_path(0))
                    IF new_filter EQ '' THEN RETURN ; *** if canceled ***
                    lc = RSTRPOS(new_filter, !delimiter)
                    new_path(0)= STRMID(new_filter,0,lc)
                    new_filter(0) = STRMID(new_filter,lc+1,STRLEN(new_filter)-lc)
                    files = [files, new_filter(0)]
                    dirs  = [dirs, new_path(0)]

                   ENDIF ELSE BEGIN
                    CD, new_path(0), CURRENT = old_dir
                    filter = new_filter(0)
                    tempf = FINDFILE(filter,COUNT=c)
                    tmp = 'ls -t ' + new_path(0) + !delimiter + new_filter(0) 
                    spawn,tmp,list
                    n_list = N_ELEMENTS(list)
                    FOR j=0,n_list-1 DO BEGIN
                     name = STRCOMPRESS(list(j),/REMOVE_ALL)
                     lc = RSTRPOS(name, !delimiter)
                     name = STRMID(name,lc+1,STRLEN(name)-lc)
                     files = [files, name]
                     dirs  = [dirs, new_path(0)]
                    ENDFOR                    
                    CD, old_dir
                   ENDELSE

                   f_index = WHERE(files GT '')
                   IF f_index(0) GT -1 THEN BEGIN
                    files = files(f_index)
                    dirs  = dirs(f_index)
                   ENDIF ELSE BEGIN
                    files = 'No files found'
                   ENDELSE

                   WIDGET_CONTROL,uv.wtxt1,SET_VALUE=files

		          END

  "NEW_PATH":   BEGIN

                    WIDGET_CONTROL, uv.nname, GET_VALUE = new_filter
                    WIDGET_CONTROL, uv.npath, GET_VALUE = new_path
                    chk = chk_dir(new_path(0))
                    IF chk EQ 0 THEN BEGIN
                        msg = WIDGET_MESSAGE("No such directory: "+new_path) 
;                        WIDGET_CONTROL, uv.npath, SET_VALUE = old_path
                    ENDIF

		          END

  "SEARCH": BEGIN	
              CASE s_method OF
               0: BEGIN  ; *** find last image(s) ***

                   WIDGET_CONTROL,uv.s_inst,GET_VALUE=sel_inst
                   inst_index = WHERE(sel_inst EQ 1)
                   IF inst_index(0) EQ -1 THEN BEGIN
                      msg = WIDGET_MESSAGE(" Please, select instrument(s) ")
                      RETURN
                   ENDIF
                   sel_ins = uv.instrument(inst_index)
                   sel_dir = uv.n_path(inst_index)
                   sel_fil = uv.filter(inst_index)
 
 
                   sel_ins = str2arr(sel_ins)
                   sel_dir = str2arr(sel_dir)
                   sel_fil = str2arr(sel_fil)
 
                   n_ist = N_ELEMENTS(sel_ins)
                   files = ''
                   dirs  = ''
 
                   CD, sel_dir(0), CURRENT = old_dir
 
                   FOR i=0,n_ist-1 DO BEGIN
                    CD, sel_dir(i)
                    filter = sel_fil(i)
                    tempf = FINDFILE(filter,COUNT=c)
                    tmp = 'ls -t ' + sel_dir(i) + !delimiter + sel_fil(i)
                    spawn,tmp,list
                    name = STRCOMPRESS(list(0),/REMOVE_ALL)
                    lc = RSTRPOS(name, !delimiter)
                    name = STRMID(name,lc+1,STRLEN(name)-lc)
                    files = [files, name]
                    dirs  = [dirs, sel_dir(i)]
                    WIDGET_CONTROL,uv.nname,SET_VALUE=name
                    WIDGET_CONTROL,uv.npath,SET_VALUE=sel_dir(i)
                   ENDFOR
 
                   f_index = WHERE(files GT '')
                   IF f_index(0) GT -1 THEN BEGIN
                     files = files(f_index)
                     dirs  = dirs(f_index)
                   ENDIF ELSE BEGIN
                     files = 'No files found'
                   ENDELSE
 
                   WIDGET_CONTROL,uv.wtxt1,SET_VALUE=files
                   CD, old_dir
 
                   ; *** O.K. have files and dirs
                  END ; *** end of Last image(s) ***
               1: BEGIN  ; *** load file with list of images ***
 
                   wd = GETENV('DATA_DIR_OTHER')
                   temps = PICKFILE( PATH = wd, FILTER = '*.dat *.lst')
                   IF STRLEN(temps) EQ 0 THEN RETURN
                   temps = rd_asc(temps)
 
                   ; *** separate dirs and files ***
                   dirs = ''
                   files= ''
                   n_files = N_ELEMENTS(temps)
                   FOR i=0,n_files-1 DO BEGIN
                    tmp= STRCOMPRESS(temps(i),/REMOVE_ALL)
                    lc = RSTRPOS(tmp, !delimiter)
                    dirs = [dirs, STRMID(tmp, 0, lc)]
                    files= [files, STRMID(tmp, lc+1, STRLEN(tmp)-lc)]
                   ENDFOR
                   i_tmp = WHERE(files GT '')
                   files = files(i_tmp)
                   dirs  = dirs(i_tmp)
 
                   WIDGET_CONTROL,uv.wtxt1,SET_VALUE=files
                  END
               2: BEGIN  ;*** search on observation date ***
 
                   WIDGET_CONTROL,uv.s_inst,GET_VALUE=sel_inst
                   inst_index = WHERE(sel_inst EQ 1)
                   IF inst_index(0) EQ -1 THEN BEGIN
                      msg = WIDGET_MESSAGE("Please, select instrument(s).")
                      RETURN
                   ENDIF
 
                   sel_ins = uv.instrument(inst_index)
                   sel_dir = uv.n_path(inst_index)
                   sel_fil = uv.filter(inst_index)
 
                   sel_ins = str2arr(sel_ins)
                   sel_dir = str2arr(sel_dir)
                   sel_fil = str2arr(sel_fil)
 
                   wobsdate, sel_ins, sel_dir, sel_fil
                   WIDGET_CONTROL,uv.wtxt1,SET_VALUE=files
                  END
               3: BEGIN  ; *** find all images on selected instruments
                   WIDGET_CONTROL,uv.s_inst,GET_VALUE=sel_inst
                   inst_index = WHERE(sel_inst EQ 1)
                   IF inst_index(0) EQ -1 THEN BEGIN
                      msg = WIDGET_MESSAGE("Please, select instrument(s).")
                      RETURN
                   ENDIF
                   sel_ins = uv.instrument(inst_index)
                   sel_dir = uv.n_path(inst_index)
                   sel_fil = uv.filter(inst_index)
 
                   sel_ins = str2arr(sel_ins)
                   sel_dir = str2arr(sel_dir)
                   sel_fil = str2arr(sel_fil)
 
                   n_ist = N_ELEMENTS(sel_ins)
                   files = ''
                   dirs  = ''
                   CD, sel_dir(0), CURRENT = old_dir
 
                   FOR i=0,n_ist-1 DO BEGIN
                    CD, sel_dir(i)
                    filter = sel_fil(i)
                    tempf = FINDFILE(filter,COUNT=c)
                    tmp = 'ls -t ' + sel_dir(i) + !delimiter + sel_fil(i)
                    spawn,tmp,list
                    n_list = N_ELEMENTS(list)
                    FOR j=0,n_list-1 DO BEGIN
                     name = STRCOMPRESS(list(j),/REMOVE_ALL)
                     lc = RSTRPOS(name, !delimiter)
                     name = STRMID(name,lc+1,STRLEN(name)-lc)
                     files = [files, name]
                     dirs  = [dirs, sel_dir(i)]
                     WIDGET_CONTROL, uv.nname, SET_VALUE = name
                     WIDGET_CONTROL, uv.npath, SET_VALUE = sel_dir(i)
                    ENDFOR
                   ENDFOR
   
                   f_index = WHERE(files GT '')
                   IF f_index(0) GT -1 THEN BEGIN
                     files = files(f_index)
                     dirs  = dirs(f_index)
                   ENDIF ELSE BEGIN
                     files = 'No files found'
                   ENDELSE
 
                   WIDGET_CONTROL,uv.wtxt1,SET_VALUE=files
                   CD, old_dir
 
                   ; *** O.K. have files and dirs
 
                  END
               4: BEGIN
                   ; *** reset ***
                   WIDGET_CONTROL, uv.nname, GET_VALUE = new_filter
                   WIDGET_CONTROL, uv.npath, GET_VALUE = new_path

                   chk = chk_dir(new_path(0))
                    IF chk EQ 0 THEN BEGIN
                        msg = WIDGET_MESSAGE("No such directory: ")
;                        WIDGET_CONTROL, uv.npath, SET_VALUE = old_path
                        RETURN
                    ENDIF

                   files = ''
                   dirs  = ''

                   IF STRCOMPRESS(new_filter(0),/REMOVE_ALL) EQ ' ' THEN BEGIN
                    new_filter = PICKFILE( PATH = new_path(0))
                    IF new_filter EQ '' THEN RETURN ; *** if canceled ***
                    lc = RSTRPOS(new_filter, !delimiter)
                    new_path(0)= STRMID(new_filter,0,lc)
                    new_filter(0) = STRMID(new_filter,lc+1,STRLEN(new_filter)-lc)
                    files = [files, new_filter(0)]
                    dirs  = [dirs, new_path(0)]

                   ENDIF ELSE BEGIN
                    CD, new_path(0), CURRENT = old_dir
                    filter = new_filter(0)
                    tempf = FINDFILE(filter,COUNT=c)
                    tmp = 'ls -t ' + new_path(0) + !delimiter + new_filter(0)
                    spawn,tmp,list
                    n_list = N_ELEMENTS(list)
                    FOR j=0,n_list-1 DO BEGIN
                     name = STRCOMPRESS(list(j),/REMOVE_ALL)
                     lc = RSTRPOS(name, !delimiter)
                     name = STRMID(name,lc+1,STRLEN(name)-lc)
                     files = [files, name]
                     dirs  = [dirs, new_path(0)]
                    ENDFOR
                    CD, old_dir
                   ENDELSE
 
                   f_index = WHERE(files GT '')
                   IF f_index(0) GT -1 THEN BEGIN
                    files = files(f_index)
                    dirs  = dirs(f_index)
                   ENDIF ELSE BEGIN
                    files = 'No files found'
                   ENDELSE
 
                   WIDGET_CONTROL,uv.wtxt1,SET_VALUE=files

                  END
               ELSE: donothing = 0
              ENDCASE
 
            END

    "LOAD": BEGIN

             IF files(0) EQ "No files found" OR files(0) EQ "" THEN BEGIN 
               msg = WIDGET_MESSAGE(" Please, select loading method! ")
               RETURN
             ENDIF
             IF N_ELEMENTS(h_array) EQ 0 THEN h_array = lonarr(1)
             IF N_ELEMENTS(h_name)  EQ 0 THEN h_name  = lonarr(1)
             IF N_ELEMENTS(h_head)  EQ 0 THEN h_head  = lonarr(1)
             IF N_ELEMENTS(h_small)  EQ 0 THEN h_small  = lonarr(1)

             WIDGET_CONTROL, uv.wtxt1, GET_VALUE=files
		       WIDGET_CONTROL, uv.WLoadBase,HOURGLASS=1
		  
             ; find header file and read image
		  
             n_files = N_ELEMENTS(files) - 1

;             FOR j=0,n_files DO BEGIN
             j = 0          
             REPEAT BEGIN

;*               ev = WIDGET_EVENT(uv.r7)
;*              WIDGET_CONTROL,ev.id,GET_UVALUE=uv_new
;*              IF uv_new EQ "CANCEL" THEN GOTO, load_image
;*print,"Pressed",uv_new
;*WIDGET_CONTROL,ev.id,TIMER=.1
               next_valid_image: print,"Image ",j," : ",files(j)
               new_name = dirs(j) + !delimiter + files(j)
               check_path = RSTRPOS(new_name,!delimiter)
               IF check_path GT 0 THEN BEGIN
                 new_path = STRMID(new_name,0,check_path)
                 new_name=STRMID(new_name,check_path+1,STRLEN(new_name))
               ENDIF
               name = new_path + !delimiter + new_name
	       image = READFITS(name,head)
	       IF N_ELEMENTS(image) EQ 1 THEN BEGIN
	          undefine, image
             IF j EQ n_files THEN GOTO,load_image
	          j=j+1 & GOTO,next_valid_image
	       ENDIF

          name = new_name

		    WIDGET_CONTROL, uv.nname, SET_VALUE = name
		    WIDGET_CONTROL, uv.npath, SET_VALUE = new_path

          chandle
          
;        ENDFOR
         j = j+1 
        ENDREP UNTIL (j GT n_files) OR (GET_KBRD(0) EQ 'c')

		  WIDGET_CONTROL, uv.WLoadBase,HOURGLASS=1
		  ;index = N_ELEMENTS(index) - 1

  load_image:
help,index

   IF N_ELEMENTS(index) GT 0 THEN  ghandle, index ; get last valid image

;          WIDGET_CONTROL, uv.nname, SET_VALUE = old_name
;           name = new_name

     END   ; *** end of load ***

 ELSE: donothing=0 
 ENDCASE

END

PRO wloadc,GROUP=GROUP

@lasco.com
@wload.com
@chandle.com

COMMON dirs_files, dirs, files, sel_method, s_method

IF (XRegistered("wloadc") NE 0) THEN RETURN

IF N_ELEMENTS(string_name)  EQ 0 THEN string_name = "no image select"
IF N_ELEMENTS(top_array)   EQ 0 THEN top_array = HANDLE_CREATE()
IF N_ELEMENTS(top_name)   EQ 0 THEN top_name = HANDLE_CREATE()
IF N_ELEMENTS(top_head)  EQ 0 THEN top_head = HANDLE_CREATE()
IF N_ELEMENTS(h_array)  EQ 0 THEN h_array = lonarr(1)
IF N_ELEMENTS(h_name)  EQ 0 THEN h_name  = lonarr(1)
IF N_ELEMENTS(h_head) EQ 0 THEN h_head  = lonarr(1)
IF N_ELEMENTS(h_small) EQ 0 THEN h_small = lonarr(1)
IF N_ELEMENTS(top_small) EQ 0 THEN top_small = HANDLE_CREATE()
IF N_ELEMENTS(files) EQ 0 THEN files = "no files selected"

message = load_message() ; this must change

IF N_ELEMENTS(new_name) EQ 0 THEN new_name = ''
IF N_ELEMENTS(new_path) EQ 0 THEN new_path = GETENV('DATA_DIR_YOHKOH')
;
; if file setup.las exist then load it !
;

s_method = 4 ; *** default ***

setup_path = GETENV('HOME')
setup_las  = setup_path + !delimiter + 'setup.las'
ff =  FINDFILE(setup_las,COUNT=c)
IF c GT 0 THEN BEGIN 
   OPENR,unit,setup_las,/GET_LUN
   READF,unit,new_name
   READF,unit,new_path
   CLOSE, unit
   FREE_LUN,unit
ENDIF

xs = 30 ; XSIZE in widget WIDGET_TEXT
resize = 0 ; default rebin size

def_file = GETENV('HOMED')
def_file = def_file + !delimiter + "instrument.def"
ld_inst_def, def_file, instrument, dir, filter
n_inst = N_ELEMENTS(instrument)
n_path = ''
FOR i=0,n_inst-1 DO BEGIN
  n_path = [n_path,GETENV(dir(i))]
ENDFOR
i_path = WHERE(n_path GT '')
n_path = n_path(i_path)

; ***  always reset dirs and files first ***
  
dirs = ''
files= ''
   				
load_method = [" Last image(s) ", $
               " List of images", $
               " Observation date", $ 
               " All images on selected instruments", $
               " Input file name and path"]
             
WLoadBase = WIDGET_BASE(TITLE = "LASCO Load Image",/ROW)
base      = WIDGET_BASE(WLoadBase, /FRAME)
lcol      = WIDGET_BASE(base, /COLUMN)
lrow      = WIDGET_BASE(base, /ROW)

junk = { CW_PDMENU_S, flags:0, name:'' }

pdm_desc = [ { CW_PDMENU_S, 1, 'Image' }, $
		{ CW_PDMENU_S, 0, 'Load' }, $
		{ CW_PDMENU_S, 0, 'Save' }, $
		{ CW_PDMENU_S, 0, 'Save As' }, $
		{ CW_PDMENU_S, 0, 'Delete' }, $
		{ CW_PDMENU_S, 2, 'Quit' }, $
	     { CW_PDMENU_S, 0, 'Info' }, $
	     { CW_PDMENU_S, 0, 'Setup' }, $
	     { CW_PDMENU_S, 0, 'Image Size' }, $
	     { CW_PDMENU_S, 0, 'Help' }, $
	     { CW_PDMENU_S, 2, 'Done' } ]

menu = CW_PDMENU(lcol, pdm_desc, UVALUE = 'PDMENU', /RETURN_FULL_NAME)

; *** Instrument selection ***
wb0 = WIDGET_BASE(lcol,/ROW)
bl1 = WIDGET_BASE(wb0,/COLUMN,/FRAME)
li1 = WIDGET_LABEL(bl1,VALUE = "Select Instrument(s): ")
;bi1 = WIDGET_BASE(lcol,/COLUMN)
pi1 = CW_BGROUP(bl1, instrument,UVALUE='SEL_INST', XSIZE=500, YSIZE=2000,/SCROLL,X_SCROLL_SIZE=350,Y_SCROLL_SIZE=250,/NONEXCLUSIVE)

; *** Loading method selection ***
wb1 = WIDGET_BASE(wb0,/COLUMN)
bl2 = WIDGET_BASE(wb1,/COLUMN,/FRAME)
li2 = WIDGET_LABEL(bl2,VALUE = "Select Loading Method: ")
bi2 = WIDGET_BASE(bl2,/COLUMN,/FRAME)
pi2 = CW_BGROUP(bi2, load_method,UVALUE='SEL_LOAD', XSIZE=350, YSIZE=150, $
		    /NONEXCLUSIVE)

; *** Advanced load ***

bl2 = WIDGET_BASE(bl1,/COLUMN,/FRAME)

li2 = WIDGET_LABEL(bl2,VALUE = "Input File and Path:")
r3  = WIDGET_BASE(bl2, /FRAME,/COLUMN)
r7  = WIDGET_BASE(r3, /ROW)
r1  = WIDGET_BASE(r7, /ROW)
l1  = WIDGET_LABEL(r1,VALUE = 'File  : ') 
w5  = WIDGET_BASE (r1, /ROW) 
nn  = WIDGET_TEXT (w5,XSIZE=xs,/EDITABLE, VALUE=new_name,UVALUE='NEW_NAME') 

r2  = WIDGET_BASE(r3, /ROW)
l2  = WIDGET_LABEL(r2,VALUE = 'Path  : ')
w5  = WIDGET_BASE (r2, /ROW)
np  = WIDGET_TEXT (w5,XSIZE=xs,/EDITABLE, VALUE=new_path,UVALUE='NEW_PATH')


bl3 = WIDGET_BASE(wb1,/COLUMN,/FRAME)
b2  = WIDGET_LABEL(bl3,VALUE="Selected Files to Load:")
r4  = WIDGET_BASE(bl3, /COLUMN)
r4  = WIDGET_BASE(r4, /COLUMN,/FRAME)
w_text = WIDGET_TEXT(r4,XSIZE=38,YSIZE=12,VALUE=files,/SCROLL)

sws = ''
ml = strlen(message(0))
ws = (xs - ml) / 2
while strlen(sws) LT ws do sws = sws + ' ' ;Make ws chars long
message(0) = sws + message(0)

r6  = WIDGET_BASE(lcol, /COLUMN)
r7  = WIDGET_BASE(r6, /ROW)
b3  = WIDGET_BUTTON(r7,VALUE=' Search ',UVALUE='SEARCH')
b4  = WIDGET_BUTTON(r7,VALUE=' Load ',UVALUE='LOAD')
b5  = WIDGET_BUTTON(r7,VALUE=' Cancel ',UVALUE='CANCEL')
b6  = WIDGET_BUTTON(r7,VALUE=' Reset ',UVALUE='RESET')

;
; Create a structure that will be carried around as the UVALUE of the main base (WLOADBASE)
;

dirs = ''
wl_uv = {  WLoadBase:WLoadBase,   $  ; Base widget ID
           s_inst:pi1,            $
           s_meth:pi2,            $
           instrument:instrument, $
           n_path:n_path,         $
           filter:filter,         $
           wtxt1:w_text,          $
           dirs:dirs,             $
           nname:nn,	             $  ; Widget ID for the File text
           npath:np } 	  

WIDGET_CONTROL, WLoadBase, /REALIZE

;
; Load the structure into the main base's UVALUE for one way trip to handler
;
WIDGET_CONTROL, WLoadBase, SET_UVALUE = wl_uv, /NO_COPY
sel_method = 0
XMANAGER,"wloadc",WLoadBase, $               
                EVENT_HANDLER = "wloadc_event", $
                GROUP_LEADER = GROUP, $
                /MODAL

END











