;******************************************************************************
;* File name: ql_idctr_trt.pro                                                *
;*                                                                            *
;* Content  : 	ql_idctr_trt                                                  *
;*            	ql_idctr_event                                                *
;*                                                                            *
;*                                                                            *
;* Date		    Author		    Comment                           *
;* -------------------------------------------------------------------------- *
;* 28-01-94	    E.PETIT		    Creation                          *
;* 02-02-94	    E.PETIT		    SPR 17: Y offset                  *
;* 03-02-94	    E.PETIT		    Banner management                 *
;* 23-02-94	    E.PETIT		    Add cancel                        *
;* 23-02-94	    E.PETIT		    remove offset option              *
;* 13-04-94	    E.PETIT		    remove discret format             *
;*                                                                            *
;******************************************************************************


;***
;##############################################################################
;#Function  name   : ql_idctr_event                                           #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : manage image display control structure                   #
;#Creation date    : 28-01-94                                                 #
;#Update date      : 02-02-94	E.PETIT		SPR 17: Y offset              #   
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    :                                                          #
;#                                                                            #
;#Arguments        :                                                          #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################


PRO ql_idctr_event, ev       
  ;============================================================================
  ;                       Common Block in use
  ;============================================================================
  COMMON i_dctrl_com
  COMMON curr_data_i_com
  COMMON format_com
  COMMON const_com
  COMMON color_com
                                     
  ;============================================================================
  ;                       Initialization
  ;============================================================================
  ret = 0

  ;============================================================================
  ;                       Processing 
  ;============================================================================
  WIDGET_CONTROL, ev.id, GET_UVALUE = value

  CASE  value OF
    'GE'   : BEGIN
               IF (curr_dctrl_i.grid_flg NE 1) THEN BEGIN	; not set
                 curr_dctrl_i.grid_flg = 1
                 WIDGET_CONTROL,i_item_xtl_sld, SET_VALUE=100
                 WIDGET_CONTROL,i_item_xtl_txt, SET_VALUE=STRING(100,FORMAT='(I3.3)')
                 curr_dctrl_i.x.tick_len = 100
                 WIDGET_CONTROL,i_item_ytl_sld, SET_VALUE=100
                 WIDGET_CONTROL,i_item_ytl_txt, SET_VALUE=STRING(100,FORMAT='(I3.3)')
                 curr_dctrl_i.y.tick_len = 100
               ENDIF
             END
    'GD'   : BEGIN
               IF (curr_dctrl_i.grid_flg NE 0) THEN BEGIN	; not set
                 curr_dctrl_i.grid_flg = 0
                 WIDGET_CONTROL,i_item_xtl_sld, SET_VALUE=2
                 WIDGET_CONTROL,i_item_xtl_txt, SET_VALUE=STRING(2,FORMAT='(I3.3)')
                 curr_dctrl_i.x.tick_len = 2
                 WIDGET_CONTROL,i_item_ytl_sld, SET_VALUE=4
                 WIDGET_CONTROL,i_item_ytl_txt, SET_VALUE=STRING(4,FORMAT='(I3.3)')
                 curr_dctrl_i.y.tick_len = 4
               ENDIF
             END

    'CE'   : BEGIN
               IF (curr_dctrl_i.contour_flg EQ 0) THEN BEGIN	; not set
                 curr_dctrl_i.contour_flg = 1
                 WIDGET_CONTROL,i_item_ccnt_sld, SET_VALUE=curr_dctrl_i.contour_flg
                 WIDGET_CONTROL,i_item_ccnt_txt, SET_VALUE=STRING(curr_dctrl_i.contour_flg,FORMAT='(I2.2)')
               ENDIF
             END
    'CD'   : BEGIN
               IF (curr_dctrl_i.contour_flg NE 0) THEN BEGIN	; not set
                 curr_dctrl_i.contour_flg = 0
                 WIDGET_CONTROL,i_item_ccnt_sld, SET_VALUE=curr_dctrl_i.contour_flg
                 WIDGET_CONTROL,i_item_ccnt_txt, SET_VALUE=STRING(curr_dctrl_i.contour_flg,FORMAT='(I2.2)')
               ENDIF
             END
    'CNTSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_ccnt_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               IF (val EQ 0) THEN BEGIN
                 IF (curr_dctrl_i.contour_flg NE 0) THEN BEGIN	;
                   WIDGET_CONTROL,i_item_cnt_on  , SET_BUTTON=0
                   WIDGET_CONTROL,i_item_cnt_off , SET_BUTTON=1
                 ENDIF
               ENDIF ELSE BEGIN
                 IF (curr_dctrl_i.contour_flg EQ 0) THEN BEGIN
                   WIDGET_CONTROL,i_item_cnt_on  , SET_BUTTON=1
                   WIDGET_CONTROL,i_item_cnt_off , SET_BUTTON=0
                 ENDIF
               ENDELSE
               curr_dctrl_i.contour_flg = val
             END
    'CCNTTXT':BEGIN
               WIDGET_CONTROL, i_item_ccnt_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<10
               WIDGET_CONTROL,i_item_ccnt_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_ccnt_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               IF (val EQ 0) THEN BEGIN
                 IF (curr_dctrl_i.contour_flg NE 0) THEN BEGIN
                   WIDGET_CONTROL,i_item_cnt_on  , SET_BUTTON=0
                   WIDGET_CONTROL,i_item_cnt_off , SET_BUTTON=1
                 ENDIF
               ENDIF ELSE BEGIN
                 IF (curr_dctrl_i.contour_flg EQ 0) THEN BEGIN
                   WIDGET_CONTROL,i_item_cnt_on  , SET_BUTTON=1
                   WIDGET_CONTROL,i_item_cnt_off , SET_BUTTON=0
                 ENDIF
               ENDELSE
               curr_dctrl_i.contour_flg = val
             END     
    'LLIST': BEGIN
               curr_dctrl_i.grid_style = ev.index
               WIDGET_CONTROL,i_item_line_lbl,SET_VALUE=i_line_list(curr_dctrl_i.grid_style)
             END
    'LBLTXT': BEGIN
             WIDGET_CONTROL, i_item_lbl_txt, GET_VALUE=txt 
             curr_dctrl_i.title = STRING (txt(0), FORMAT=Title_Format)
             END
    'XLBLTXT': BEGIN
             WIDGET_CONTROL, i_item_xlbl_txt, GET_VALUE=txt 
             curr_dctrl_i.x.comment = STRING (txt(0), FORMAT=Comment_Format)
             END
    'XOFFSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_xoff_txt ,SET_VALUE = STRING(val, FORMAT='(I5.4)')
               curr_dctrl_i.x.offset = val
             END
    'XOFFTXT':BEGIN
               WIDGET_CONTROL, i_item_xoff_txt, GET_VALUE=val
               mini =  -(curr_dctrl_i.x.plot_sz-1)
               maxi =  1023
               val = (FIX(val(0))>mini)<maxi
               WIDGET_CONTROL,i_item_xoff_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_xoff_txt, SET_VALUE=STRING(val,FORMAT='(I5.4)')
               curr_dctrl_i.x.offset = val
             END     
    'XTLSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_xtl_txt ,SET_VALUE = STRING(val, FORMAT='(I3.3)')
               curr_dctrl_i.x.tick_len = val
             END
    'XTLTXT':BEGIN
               WIDGET_CONTROL, i_item_xtl_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<100
               WIDGET_CONTROL,i_item_xtl_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_xtl_txt, SET_VALUE=STRING(val,FORMAT='(I3.3)')
               curr_dctrl_i.x.tick_len = val
             END     
    'XMAJSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_xmaj_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               curr_dctrl_i.x.nb_tick = val
             END
    'XMAJTXT':BEGIN
               WIDGET_CONTROL, i_item_xmaj_txt, GET_VALUE=val
               val = (FIX(val(0))>1)<29
               WIDGET_CONTROL,i_item_xmaj_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_xmaj_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               curr_dctrl_i.x.nb_tick = val
             END     
    'XMNRSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_xmnr_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               curr_dctrl_i.x.nb_minor = val
             END
    'XMNRTXT':BEGIN
               WIDGET_CONTROL, i_item_xmnr_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<20
               WIDGET_CONTROL,i_item_xmnr_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_xmnr_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               curr_dctrl_i.x.nb_minor = val
             END     
    'YLBLTXT': BEGIN
             WIDGET_CONTROL, i_item_ylbl_txt, GET_VALUE=txt 
             curr_dctrl_i.y.comment=STRING (txt(0), FORMAT=Comment_Format)
             END
    'YOFFSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_yoff_txt ,SET_VALUE = STRING(val, FORMAT='(I4.4)')
               curr_dctrl_i.y.offset = val
             END
    'YOFFTXT':BEGIN
               WIDGET_CONTROL, i_item_yoff_txt, GET_VALUE=val
               mini = 0 
               maxi = 360+50-5-curr_dctrl_i.y.plot_sz
               val = (FIX(val(0))>mini)<maxi
               WIDGET_CONTROL,i_item_yoff_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_yoff_txt, SET_VALUE=STRING(val,FORMAT='(I4.4)')
               curr_dctrl_i.y.offset = val
             END     
    'YTLSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_ytl_txt ,SET_VALUE = STRING(val, FORMAT='(I3.3)')
               curr_dctrl_i.y.tick_len = val
             END
    'YTLTXT':BEGIN
               WIDGET_CONTROL, i_item_ytl_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<100
               WIDGET_CONTROL,i_item_ytl_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_ytl_txt, SET_VALUE=STRING(val,FORMAT='(I3.3)')
               curr_dctrl_i.y.tick_len = val
             END     
    'YMAJSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_ymaj_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               curr_dctrl_i.y.nb_tick = val
             END
    'YMAJTXT':BEGIN
               WIDGET_CONTROL, i_item_ymaj_txt, GET_VALUE=val
               val = (FIX(val(0))>1)<29
               WIDGET_CONTROL,i_item_ymaj_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_ymaj_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               curr_dctrl_i.y.nb_tick = val
             END     
    'YMNRSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,i_item_ymnr_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               curr_dctrl_i.y.nb_minor = val
             END
    'YMNRTXT':BEGIN
               WIDGET_CONTROL, i_item_ymnr_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<20
               WIDGET_CONTROL,i_item_ymnr_sld, SET_VALUE=val
               WIDGET_CONTROL,i_item_ymnr_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               curr_dctrl_i.y.nb_minor = val
             END     

     'XMINTXT': BEGIN
               WIDGET_CONTROL, ev.id, GET_VALUE=val
               val = (FLOAT(val(0)))<curr_dctrl_i.x.max
               curr_dctrl_i.x.min = val
               curr_dctrl_i.x.plot_min = val
               WIDGET_CONTROL, ev.id, SET_VALUE=STRING(val)
             END
     'XMAXTXT': BEGIN
               WIDGET_CONTROL, ev.id, GET_VALUE=val
               val = (FLOAT(val(0)))>curr_dctrl_i.x.min
               curr_dctrl_i.x.max = val
               curr_dctrl_i.x.plot_max = val
               WIDGET_CONTROL, ev.id, SET_VALUE=STRING(val)
             END

     'YMINTXT': BEGIN
               WIDGET_CONTROL, ev.id, GET_VALUE=val
               val = (FLOAT(val(0)))<curr_dctrl_i.y.max
               curr_dctrl_i.y.min = val
               curr_dctrl_i.y.plot_min = val
               WIDGET_CONTROL, ev.id, SET_VALUE=STRING(val)
             END
     'YMAXTXT': BEGIN
               WIDGET_CONTROL, ev.id, GET_VALUE=val
               val = (FLOAT(val(0)))>curr_dctrl_i.y.min
               curr_dctrl_i.y.max = val
               curr_dctrl_i.y.plot_max = val
               WIDGET_CONTROL, ev.id, SET_VALUE=STRING(val)
             END


    'DONE' : BEGIN 
               ret = ql_display_data(curr_data_i,0 , curr_dctrl_i, err)
               WIDGET_CONTROL,i_dctrl_base, /DESTROY
             END
     ELSE:
  ENDCASE                                                   
  IF  (value EQ 'CNTSLD')  OR $
      (value EQ 'XOFFSLD') OR $
      (value EQ 'YOFFSLD') OR $
      (value EQ 'XTLSLD')  OR $
      (value EQ 'YTLSLD')  OR $
      (value EQ 'XMAJSLD') OR $
      (value EQ 'YMAJSLD') OR $
      (value EQ 'XMNRSLD') OR $
      (value EQ 'YMNRSLD') THEN BEGIN
    IF (ev.drag EQ 0) THEN  ret = ql_display_data(curr_data_i,0 , curr_dctrl_i, err)
  ENDIF ELSE BEGIN
     ret = ql_display_data(curr_data_i,0 , curr_dctrl_i, err)
  ENDELSE




END

;***
;##############################################################################
;#Function  name   : ql_idctr_trt                                             #
;#LEVEL            : 1                                                        #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : Management of current image display                      #
;#Creation date    : January 1994                                             #
;#Update date      :                                                          #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    : Called by Event Handler                                  #
;#                                                                            #
;#Arguments        :                                                          #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################
;***
PRO ql_idctr_trt, ev

  ;============================================================================
  ;                       Common Block in use
  ;============================================================================
  COMMON i_dctrl_com
  COMMON curr_data_i_com
  COMMON proc_id_com
  COMMON format_com
  COMMON const_com
  COMMON color_com

  ;============================================================================
  ;                       Initialization
  ;============================================================================
  err = 0

  Grid_item       = ['Enable', 'Disable']
  Grid_uvalue     = ['GE'    , 'GD']

  Cnt_item        = ['Enable','Disable']
  Cnt_uvalue      = ['CE'    ,'CD']

  i_line_list       = ['Solid', 'Dotted', 'Dashed']

  Xmin_lbl        = 'Minimum: '
  Xmax_lbl        = 'Maximum: '

  Ymin_lbl        = 'Minimum: '
  Ymax_lbl        = 'Maximum: '


  ;============================================================================
  ;                       Processing 
  ;============================================================================
  WIDGET_CONTROL, /HOURGLASS 

  ; --------------
  ; Format display 
  ; --------------
  title = 'Image Display Control'
 
  ;---------------
  ;Base Hierarchie
  ;---------------
   i_dctrl_base = WIDGET_BASE (TITLE  = title            , $
                              XOFFSET = 610              , $
                              YOFFSET = 70               , $
                              /COLUMN, /MODAL)

   i_dctrl_g = WIDGET_BASE (i_dctrl_base ,/COLUMN, /FRAME)
     i_dctrl_g_hd    = WIDGET_BASE (i_dctrl_g , /COLUMN)
     i_dctrl_g_value = WIDGET_BASE (i_dctrl_g ,/ROW)
       i_dctrl_g_grd    = WIDGET_BASE (i_dctrl_g_value ,/COLUMN, /FRAME)
       i_dctrl_g_cnt    = WIDGET_BASE (i_dctrl_g_value ,/COLUMN, /FRAME)
       i_dctrl_g_grdl   = WIDGET_BASE (i_dctrl_g_value ,/COLUMN, /FRAME)
       i_dctrl_g_pid    = WIDGET_BASE (i_dctrl_g_value ,/COLUMN, /FRAME)
     i_dctrl_g_title = WIDGET_BASE (i_dctrl_g ,/ROW)

   i_dctrl_x   = WIDGET_BASE (i_dctrl_base ,/COLUMN, /FRAME)
     i_dctrl_x_hd    = WIDGET_BASE (i_dctrl_x , /COLUMN)
     i_dctrl_x_lbl   = WIDGET_BASE (i_dctrl_x ,/ROW, /FRAME)
     i_dctrl_x_value = WIDGET_BASE (i_dctrl_x ,/ROW)
       i_dctrl_x_lo  = WIDGET_BASE (i_dctrl_x_value ,/COLUMN, /FRAME)
       i_dctrl_x_mM     = WIDGET_BASE (i_dctrl_x_value ,/COLUMN, /FRAME)
       i_dctrl_x_tm     = WIDGET_BASE (i_dctrl_x_value ,/COLUMN, /FRAME)

   i_dctrl_y   = WIDGET_BASE (i_dctrl_base ,/COLUMN, /FRAME)
     i_dctrl_y_hd    = WIDGET_BASE (i_dctrl_y , /COLUMN)
     i_dctrl_y_lbl   = WIDGET_BASE (i_dctrl_y ,/ROW, /FRAME)
     i_dctrl_y_value = WIDGET_BASE (i_dctrl_y ,/ROW)
       i_dctrl_y_lo  = WIDGET_BASE (i_dctrl_y_value ,/COLUMN, /FRAME)
       i_dctrl_y_mM     = WIDGET_BASE (i_dctrl_y_value ,/COLUMN, /FRAME)
       i_dctrl_y_tm     = WIDGET_BASE (i_dctrl_y_value ,/COLUMN, /FRAME)

   i_dctrl_cmd   = WIDGET_BASE (i_dctrl_base ,/ROW, /FRAME)


  ; ------------------
  ; Widgets Definition
  ; ------------------

  ;--------------------------- Misc -----------------------------------

  ret = WIDGET_LABEL (i_dctrl_g_hd, VALUE = 'Miscellaneous', FONT=Hd_Font_Bold)

  ; Grid 
  ; ----
  ret = WIDGET_LABEL(i_dctrl_g_grd, VALUE = 'Grid', FONT=Hd_Font_Bold)
  i_dctrl_g_ogrd = WIDGET_BASE (i_dctrl_g_grd ,/EXCLUSIVE, /COLUMN)
  i_item_grd_on  = WIDGET_BUTTON (i_dctrl_g_ogrd          , $
                                 VALUE  = Grid_item  (0)  , $
                                 UVALUE = Grid_uvalue(0)  , $
                                 FONT=Hd_Font) 

  i_item_grd_off = WIDGET_BUTTON (i_dctrl_g_ogrd          , $
                                 VALUE  = Grid_item  (1)  , $
                                 UVALUE = Grid_uvalue(1)  , $
                                 FONT=Hd_Font)
  IF (curr_dctrl_i.grid_flg EQ 0) THEN WIDGET_CONTROL,i_item_grd_off, SET_BUTTON=1 $
  ELSE                                 WIDGET_CONTROL,i_item_grd_on , SET_BUTTON=1

  ; Contour flag
  ; ------------
  ret = WIDGET_LABEL(i_dctrl_g_cnt, VALUE = 'Contour', FONT=Hd_Font_Bold)

  i_dctrl_g_ocnt = WIDGET_BASE (i_dctrl_g_cnt ,/EXCLUSIVE, /COLUMN)
  i_item_cnt_on  = WIDGET_BUTTON (i_dctrl_g_ocnt          , $
                                 VALUE  = Cnt_item  (0)   , $
                                 UVALUE = Cnt_uvalue(0)   , $
                                 FONT   = Hd_Font)  
  i_item_cnt_off = WIDGET_BUTTON (i_dctrl_g_ocnt          , $
                                 VALUE  = Cnt_item  (1)   , $
                                 UVALUE = Cnt_uvalue(1)   , $
                                 FONT   = Hd_Font)
  IF (curr_dctrl_i.contour_flg EQ 0) THEN WIDGET_CONTROL,i_item_cnt_off,SET_BUTTON=1 $
  ELSE                                    WIDGET_CONTROL,i_item_cnt_on ,SET_BUTTON=1
 
  ; Contour Level number
  ; --------------------
  ret = WIDGET_LABEL(i_dctrl_g_cnt, VALUE = 'Level Nb', FONT=Hd_Font_Bold)
  i_dctrl_g_oocnt = WIDGET_BASE (i_dctrl_g_cnt ,/ROW)
  i_item_ccnt_sld = WIDGET_SLIDER (i_dctrl_g_oocnt        , $ 
                                   MINIMUM = 0            , $
                                   MAXIMUM = 10           , $
                                   VALUE=curr_dctrl_i.contour_flg , $
                                   UVALUE='CNTSLD'        , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)           
  i_item_ccnt_txt  = WIDGET_TEXT ( i_dctrl_g_oocnt        , $ 
                                   VALUE  = STRING(curr_dctrl_i.contour_flg,FORMAT='(I2.2)'), $
                                   UVALUE = 'CCNTTXT'     , $
                                   XSIZE  = 2             , $
                                   YSIZE  = 1             , $
                                   FONT  = Hd_Font        , $
                                   /EDITABLE) 
  ; line style
  ; ----------
  ret = WIDGET_LABEL(i_dctrl_g_grdl, VALUE = 'Line style',FONT=Hd_Font_Bold)
  i_item_line_list = WIDGET_LIST (i_dctrl_g_grdl          , $
                                  VALUE  = i_line_list      , $
                                  UVALUE = 'LLIST'        , $
                                  FONT   = Hd_Font        , $
                                  YSIZE  = 5)
  str = STRING(i_line_list(curr_dctrl_i.grid_style), FORMAT='(A6)')
  i_item_line_lbl = WIDGET_LABEL (i_dctrl_g_grdl          , $
                                   VALUE  = str           , $
                                   FONT   = Hd_Font       )
  ; PID List for info 
  ; -----------------
  ret = WIDGET_LABEL(i_dctrl_g_pid, VALUE = 'Processes',FONT=Hd_Font_Bold)
  s = size(curr_dctrl_i.process_id)

  pid_liste = STRARR(s(1))
  j=0
  FOR i=0, s(1)-1 DO BEGIN
    IF (curr_dctrl_i.process_id(i) NE 0) THEN BEGIN
      pid_liste(j) = proc_id_lst(curr_dctrl_i.process_id(i)-1).proc_id_txt
      j=j+1
    ENDIF
  ENDFOR
  pid_liste = STRTRIM (pid_liste(0:j),2)
  i_item_pid_list   = WIDGET_LIST (i_dctrl_g_pid          , $
                                   VALUE  = pid_liste     , $
                                   UVALUE = 'PIDLIST'     , $
                                   FONT   = Hd_Font       , $
                                   YSIZE  = 6)

  ; Main Title
  ; ----------
   ret = WIDGET_LABEL (i_dctrl_g_title, VALUE = 'Main Title: ',FONT=Hd_Font_Bold)
  i_item_lbl_txt  = WIDGET_TEXT (i_dctrl_g_title          , $
                                 XSIZE  = TITLE_SZ        , $
                                 UVALUE = 'LBLTXT'        , $
                                 VALUE  = STRTRIM(curr_dctrl_i.title,2), $)
                                 FONT   = Hd_Font         , $
                                 /EDITABLE)

  ;--------------------------- X Axis ---------------------------------
  ret = WIDGET_LABEL (i_dctrl_x_hd, VALUE = 'Horizontal Axis',FONT=Hd_Font_Bold)

  ret = WIDGET_LABEL (i_dctrl_x_lbl, VALUE = 'Label: ',FONT=Hd_Font_Bold)
  i_item_xlbl_txt = WIDGET_TEXT (i_dctrl_x_lbl            , $
                                 XSIZE  = COMMENT_SZ      , $
                                 UVALUE = 'XLBLTXT'       , $
                                 VALUE  = STRTRIM(curr_dctrl_i.x.comment,2), $)
                                 FONT   = Hd_Font         , $
                                 /EDITABLE)

  ; X Offset
  ; ------
  ret = WIDGET_LABEL(i_dctrl_x_lo, VALUE = 'Offset',FONT=Hd_Font_Bold) 
  i_dctrl_x_olo  = WIDGET_BASE (i_dctrl_x_lo ,/ROW)
  i_item_xoff_sld = WIDGET_SLIDER (i_dctrl_x_olo          , $ 
                                   MINIMUM = -(curr_dctrl_i.x.plot_sz-1)      , $
                                   MAXIMUM = 1023         , $
                                   VALUE   = curr_dctrl_i.x.offset, $
                                   UVALUE='XOFFSLD'       , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)          
  i_item_xoff_txt  = WIDGET_TEXT ( i_dctrl_x_olo          , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'XOFFTXT'     , $
                                   VALUE  = STRING(curr_dctrl_i.x.offset, FORMAT='(I5.4)') , $
                                   XSIZE  = 5             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)
  ; X ticklen
  ; ---------
  ret = WIDGET_LABEL(i_dctrl_x_lo, VALUE = 'Tick Length',FONT=Hd_Font_Bold)
  i_dctrl_x_oolo  = WIDGET_BASE (i_dctrl_x_lo ,/ROW)
  i_item_xtl_sld  = WIDGET_SLIDER (i_dctrl_x_oolo         , $ 
                                   MINIMUM = 0            , $
                                   MAXIMUM = 100          , $
                                   VALUE   = curr_dctrl_i.x.tick_len, $
                                   UVALUE='XTLSLD'        , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)          
  i_item_xtl_txt  = WIDGET_TEXT ( i_dctrl_x_oolo          , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'XTLTXT'      , $
                                   VALUE  = STRING(curr_dctrl_i.x.tick_len, FORMAT='(I3.3)') , $
                                   XSIZE  = 3             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)


  ; X min/max
  ; ---------
  i_item_xmin_lbl = WIDGET_LABEL (i_dctrl_x_mM, $
                                  VALUE = '  Minimum (axis)   ' , $
                                  FONT   = Hd_Font_Bold)
  i_item_xmin_txt = WIDGET_TEXT (i_dctrl_x_mM, $
                                  VALUE = STRING (curr_dctrl_i.x.min), $
                                  YSIZE = 1 , $
                                  XSIZE = 12, $
                                  UVALUE = 'XMINTXT', $
                                  /EDITABLE , $
                                  FONT   = Hd_Font)

  i_item_xmax_lbl = WIDGET_LABEL (i_dctrl_x_mM, $
                                  VALUE = '   Maximum (axis)   ', $
                                  FONT   = Hd_Font_Bold)
  i_item_xmax_txt = WIDGET_TEXT (i_dctrl_x_mM, $
                                  VALUE = STRING (curr_dctrl_i.x.max), $
                                  YSIZE = 1 , $
                                  XSIZE = 12, $
                                  /EDITABLE , $
                                  UVALUE = 'XMAXTXT', $
                                  FONT   = Hd_Font)


  ; Nb major
  ; --------
  ret = WIDGET_LABEL(i_dctrl_x_tm, VALUE = 'Nb Major',FONT=Hd_Font_Bold)
  i_dctrl_x_otm    = WIDGET_BASE (i_dctrl_x_tm ,/ROW)
  i_item_xmaj_sld  = WIDGET_SLIDER (i_dctrl_x_otm         , $ 
                                    MINIMUM = 1           , $
                                    MAXIMUM = 29          , $
                                    VALUE = curr_dctrl_i.x.nb_tick , $
                                    UVALUE='XMAJSLD'      , $
                                    XSIZE = 80            , $
                                    YSIZE = 20            , $
                                    /DRAG                 , $
                                    /SUPPRESS_VALUE)        
  i_item_xmaj_txt  = WIDGET_TEXT ( i_dctrl_x_otm          , $ 
                                   UVALUE = 'XMAJTXT'     , $
                                   VALUE  = STRING(curr_dctrl_i.x.nb_tick, FORMAT='(I2.2)') , $
                                   XSIZE  = 2             , $
                                   YSIZE  = 1             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)
  ; Nb minor
  ; --------
  ret = WIDGET_LABEL(i_dctrl_x_tm, VALUE = 'Nb Minor',FONT=Hd_Font_Bold)
  i_dctrl_x_ootm  = WIDGET_BASE (i_dctrl_x_tm ,/ROW)      
  i_item_xmnr_sld = WIDGET_SLIDER (i_dctrl_x_ootm         , $ 
                                   MINIMUM = 0            , $
                                   MAXIMUM = 20           , $
                                   VALUE = curr_dctrl_i.x.nb_minor, $
                                   UVALUE='XMNRSLD'       , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)
  i_item_xmnr_txt = WIDGET_TEXT ( i_dctrl_x_ootm          , $ 
                                  UVALUE = 'XMNRTXT'      , $
                                  VALUE  = STRING(curr_dctrl_i.x.nb_minor, FORMAT='(I2.2)'), $
                                  XSIZE  = 2              , $
                                  YSIZE  = 1              , $
                                  FONT   = Hd_Font        , $
                                  /EDITABLE)


  ;--------------------------- Y Axis ---------------------------------
  ret = WIDGET_LABEL (i_dctrl_y_hd, VALUE = 'Vertical Axis',FONT=Hd_Font_Bold)

  ret = WIDGET_LABEL (i_dctrl_y_lbl, VALUE = 'Label: ', FONT=Hd_Font_Bold)
  i_item_ylbl_txt = WIDGET_TEXT (i_dctrl_y_lbl            , $
                                 UVALUE = 'YLBLTXT'       , $
                                 VALUE  = STRTRIM(curr_dctrl_i.y.comment,2), $
                                 XSIZE  = COMMENT_SZ      , $
                                 FONT   = Hd_Font         , $
                                 /EDITABLE)
  ; Y Offset
  ; ------
  ret = WIDGET_LABEL(i_dctrl_y_lo, VALUE = 'Offset', FONT=Hd_Font_Bold)
  i_dctrl_y_olo  = WIDGET_BASE (i_dctrl_y_lo ,/ROW)
  i_item_yoff_sld = WIDGET_SLIDER (i_dctrl_y_olo          , $ 
                                   MINIMUM = 0            , $
                                   MAXIMUM = (360+50-5-curr_dctrl_i.y.plot_sz)>50, $
                                   VALUE   = curr_dctrl_i.y.offset, $
                                   UVALUE='YOFFSLD'       , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)          
  i_item_yoff_txt  = WIDGET_TEXT ( i_dctrl_y_olo          , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'YOFFTXT'     , $
                                   VALUE  = STRING(curr_dctrl_i.y.offset, FORMAT='(I4.4)') , $
                                   XSIZE  = 4             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)
  ; Y ticklen
  ; ---------
  ret = WIDGET_LABEL(i_dctrl_y_lo, VALUE = 'Tick Length', FONT=Hd_Font_Bold)
  i_dctrl_y_oolo  = WIDGET_BASE (i_dctrl_y_lo ,/ROW)
  i_item_ytl_sld  = WIDGET_SLIDER (i_dctrl_y_oolo         , $ 
                                   MINIMUM = 0            , $
                                   MAXIMUM = 100          , $
                                   VALUE   = curr_dctrl_i.y.tick_len, $
                                   UVALUE='YTLSLD'        , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)          
  i_item_ytl_txt  = WIDGET_TEXT ( i_dctrl_y_oolo          , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'YTLTXT'      , $
                                   VALUE  = STRING(curr_dctrl_i.y.tick_len, FORMAT='(I3.3)') , $
                                   XSIZE  = 3             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)

  ; Y min/max
  ; ---------
  dummy = WIDGET_BASE (i_dctrl_y_mM, /COLUMN)

  i_item_ymin_lbl = WIDGET_LABEL (i_dctrl_y_mM, $
                                 VALUE = '   Minimum (axis)   ' , $
                                 FONT   = Hd_Font_Bold)
  i_item_ymin_txt = WIDGET_TEXT (i_dctrl_y_mM, $
                                 VALUE = STRING (curr_dctrl_i.y.min), $
                                 XSIZE=12, $
                                 YSIZE =1, $
                                 /EDITABLE , $
                                 UVALUE='YMINTXT', $
                                 FONT   = Hd_Font)
                           
  i_item_ymax_lbl = WIDGET_LABEL (i_dctrl_y_mM, $
                                 VALUE = '   Maximum (axis)   ' , $
                                 FONT   = Hd_Font_Bold)
  i_item_ymax_txt = WIDGET_TEXT (i_dctrl_y_mM, $
                                 VALUE = STRING (curr_dctrl_i.y.max), $
                                 XSIZE=12, $
                                 YSIZE =1, $
                                 /EDITABLE , $
                                 UVALUE='YMAXTXT', $
                                 FONT   = Hd_Font)

  ; Nb major
  ; --------
  ret = WIDGET_LABEL(i_dctrl_y_tm, VALUE = 'Nb Major',FONT=Hd_Font_Bold )
  i_dctrl_y_otm    = WIDGET_BASE (i_dctrl_y_tm ,/ROW)
  i_item_ymaj_sld  = WIDGET_SLIDER (i_dctrl_y_otm         , $ 
                                    MINIMUM = 1           , $
                                    MAXIMUM = 29          , $
                                    VALUE = curr_dctrl_i.y.nb_tick , $
                                    UVALUE='YMAJSLD'      , $
                                    XSIZE = 80            , $
                                    YSIZE = 20            , $
                                    /DRAG                 , $
                                    /SUPPRESS_VALUE)        
  i_item_ymaj_txt  = WIDGET_TEXT ( i_dctrl_y_otm          , $ 
                                   UVALUE = 'YMAJTXT'     , $
                                   VALUE  = STRING(curr_dctrl_i.y.nb_tick, FORMAT='(I2.2)') , $
                                   XSIZE  = 2             , $
                                   YSIZE  = 1             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)
  ; Nb minor
  ; --------
  ret = WIDGET_LABEL(i_dctrl_y_tm, VALUE = 'Nb Minor',FONT=Hd_Font_Bold)
  i_dctrl_y_ootm  = WIDGET_BASE (i_dctrl_y_tm ,/ROW)      
  i_item_ymnr_sld = WIDGET_SLIDER (i_dctrl_y_ootm         , $ 
                                   MINIMUM = 0            , $
                                   MAXIMUM = 20           , $
                                   VALUE = curr_dctrl_i.y.nb_minor, $
                                   UVALUE='YMNRSLD'       , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)
  i_item_ymnr_txt = WIDGET_TEXT ( i_dctrl_y_ootm          , $ 
                                  UVALUE = 'YMNRTXT'      , $
                                  VALUE  = STRING(curr_dctrl_i.y.nb_minor, FORMAT='(I2.2)'), $
                                  XSIZE  = 2              , $
                                  YSIZE  = 1              , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)

  ;--------------------------- Command --------------------------------
  i_dctrl_done   = WIDGET_BUTTON (i_dctrl_cmd             , $
                                 FONT   = Hd_Font_Bold    , $
                                 VALUE  = 'DONE'          , $
                                 UVALUE = 'DONE')

  
  ; ----------------
  ; Widgets Creation
  ; ----------------   
  WIDGET_CONTROL, i_dctrl_base , /REALIZE

  ; ------------------
  ; Call Event manager
  ; ------------------
   XMANAGER, "ql_idctr"                    , $
             i_dctrl_base                  , $
             GROUP_LEADER = GROUP
END
