;******************************************************************************
;* File name: ql_pdctr_trt.pro                                                *
;*                                                                            *
;* Content  : 	ql_pdctr_trt                                                  *
;*            	ql_pdctr_event                                                *
;*                                                                            *
;*                                                                            *
;* Date		    Author		    Comment                           *
;* -------------------------------------------------------------------------- *
;* 28-01-94	    E.PETIT		    Creation                          *
;* 03-02-94	    E.PETIT		    Manage Banner                     *
;* 17-02-94	    E.PETIT		    Add missing label                 *
;* 21-02-94	    E.PETIT		    Manage plot color                 *
;* 23-02-94	    E.PETIT		    Add cancel                        *
;* 18-03-94	    E.PETIT		    Remove offset control             *
;* 23-03-94	    E.PETIT		    LOG  scale pb                     *
;* 13-04-94	    E.PETIT		    plot_sz management                *
;*                                          Restore offset control            *
;* 18-04-94	    E.PETIT		    Add min/max management            *
;* 06-09-94	    E.PETIT		    Change null to small if log       *
;*                                                                            *
;******************************************************************************


;***
;##############################################################################
;#Function  name   : ql_pdctr_event                                           #
;#LEVEL            :                                                          #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : manage profile display control structure                 #
;#Creation date    : 28-01-94                                                 #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    :                                                          #
;#                                                                            #
;#Arguments        :                                                          #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################


PRO ql_pdctr_event, ev       
  ;============================================================================
  ;                       Common Block in use
  ;============================================================================
  COMMON p_dctrl_com
  COMMON curr_data_p_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_p.grid_flg NE 1) THEN BEGIN	; not set
                 curr_dctrl_p.grid_flg = 1
                 WIDGET_CONTROL,p_item_xtl_sld, SET_VALUE=100
                 WIDGET_CONTROL,p_item_xtl_txt, SET_VALUE=STRING(100,FORMAT='(I3.3)')
                 curr_dctrl_p.x.tick_len = 100
                 WIDGET_CONTROL,p_item_ytl_sld, SET_VALUE=100
                 WIDGET_CONTROL,p_item_ytl_txt, SET_VALUE=STRING(100,FORMAT='(I3.3)')
                 curr_dctrl_p.y.tick_len = 100
               ENDIF
             END
     'GD'   : BEGIN
               IF (curr_dctrl_p.grid_flg NE 0) THEN BEGIN	; no set
                 curr_dctrl_p.grid_flg = 0
                 WIDGET_CONTROL,p_item_xtl_sld, SET_VALUE=2
                 WIDGET_CONTROL,p_item_xtl_txt, SET_VALUE=STRING(2,FORMAT='(I3.3)')
                 curr_dctrl_p.x.tick_len = 2
                 WIDGET_CONTROL,p_item_ytl_sld, SET_VALUE=4
                 WIDGET_CONTROL,p_item_ytl_txt, SET_VALUE=STRING(4,FORMAT='(I3.3)')
                 curr_dctrl_p.y.tick_len = 4
               ENDIF
             END
     'LLIST': BEGIN
               curr_dctrl_p.grid_style = ev.index
               WIDGET_CONTROL,p_item_line_lbl, SET_VALUE=p_line_list(curr_dctrl_p.grid_style)
             END
     'COLORLIST': BEGIN
               curr_dctrl_p.color = ev.index
               WIDGET_CONTROL,p_item_color_lbl,SET_VALUE=color_label(curr_dctrl_p.color)
               curr_dctrl_p.color=max_nb_color+ev.index+1
             END

     'LBLTXT': BEGIN
             WIDGET_CONTROL, p_item_lbl_txt, GET_VALUE=txt 
             curr_dctrl_p.title=STRING (txt(0), FORMAT=Title_Format)
             END
     'XLBLTXT': BEGIN
             WIDGET_CONTROL, p_item_xlbl_txt, GET_VALUE=txt 
             curr_dctrl_p.x.comment=STRING (txt(0), FORMAT=Comment_Format)
             END
 
     'XLOGE'   : BEGIN
               curr_dctrl_p.x.type = 1
             END
     'XLOGD'   : BEGIN
               curr_dctrl_p.x.type = 0
             END
     'XOFFSLD': BEGIN  
                val = ev.value
                WIDGET_CONTROL,p_item_xoff_txt ,SET_VALUE = STRING(val, FORMAT='(I4.4)')
                 curr_dctrl_p.x.offset = val
              END
     'XOFFTXT':BEGIN
                WIDGET_CONTROL, p_item_xoff_txt, GET_VALUE=val
                mini = PROFILE_X_OFFSET
                maxi = PROFILE_X_SCROLL_SZ-curr_dctrl_p.x.plot_sz
                val = (FIX(val(0))>mini)<maxi
                WIDGET_CONTROL,p_item_xoff_sld, SET_VALUE=val
                WIDGET_CONTROL,p_item_xoff_txt, SET_VALUE=STRING(val,FORMAT='(I4.4)')
                curr_dctrl_p.x.offset = val
             END     
    'XTLSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,p_item_xtl_txt ,SET_VALUE = STRING(val, FORMAT='(I3.3)')
               curr_dctrl_p.x.tick_len = val
             END
    'XTLTXT':BEGIN
               WIDGET_CONTROL, p_item_xtl_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<100
               WIDGET_CONTROL,p_item_xtl_sld, SET_VALUE=val
               WIDGET_CONTROL,p_item_xtl_txt, SET_VALUE=STRING(val,FORMAT='(I3.3)')
               curr_dctrl_p.x.tick_len = val
             END     
    'XSZSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,p_item_xsz_txt ,SET_VALUE = STRING(val, FORMAT='(I4.4)')
               curr_dctrl_p.x.plot_sz = val
             END
    'XSZTXT':BEGIN
               WIDGET_CONTROL, p_item_xsz_txt, GET_VALUE=val
               val = (FIX(val(0))>25)<1024
               WIDGET_CONTROL,p_item_xsz_sld, SET_VALUE=val
               WIDGET_CONTROL,p_item_xsz_txt, SET_VALUE=STRING(val,FORMAT='(I4.4)')
               curr_dctrl_p.x.plot_sz = val
             END     
    'XMAJSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,p_item_xmaj_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               curr_dctrl_p.x.nb_tick = val
             END
    'XMAJTXT':BEGIN
               WIDGET_CONTROL, p_item_xmaj_txt, GET_VALUE=val
               val = (FIX(val(0))>1)<29
               WIDGET_CONTROL,p_item_xmaj_sld, SET_VALUE=val
               WIDGET_CONTROL,p_item_xmaj_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               curr_dctrl_p.x.nb_tick = val
             END     
    'XMNRSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,p_item_xmnr_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               curr_dctrl_p.x.nb_minor = val
             END
    'XMNRTXT':BEGIN
               WIDGET_CONTROL, p_item_xmnr_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<20
               WIDGET_CONTROL,p_item_xmnr_sld, SET_VALUE=val
               WIDGET_CONTROL,p_item_xmnr_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               curr_dctrl_p.x.nb_minor = val
             END     
    'XMINTXT':BEGIN
               WIDGET_CONTROL, p_item_xmin_txt, GET_VALUE=val
               val = FLOAT (val(0))
               WIDGET_CONTROL,p_item_xmin_txt,SET_VALUE=STRING(val,FORMAT='(F11.3)')
               curr_dctrl_p.x.plot_min = val
               i = 0
               WHILE (curr_x_p(i) LT val) AND (i LT -1) DO i = i + 1 
               IF ( i GE curr_dctrl_p.x.nb_dot-1) THEN i = -1
               curr_dctrl_p.x.index_min = i
             END     
    'XMAXTXT':BEGIN
                WIDGET_CONTROL, p_item_xmax_txt, GET_VALUE=val
                val = FLOAT (val(0))
                WIDGET_CONTROL,p_item_xmax_txt,SET_VALUE=STRING(val,FORMAT='(F11.3)')
                curr_dctrl_p.x.plot_max = val
                i = 0
                WHILE (curr_x_p(i) LT val) AND (i LT curr_dctrl_p.x.nb_dot-1) DO i = i + 1
                IF (i LE 0) OR (i GE curr_dctrl_p.x.nb_dot) THEN i = -1
                curr_dctrl_p.x.index_max = i
             END     

    'XMITXT':BEGIN
             WIDGET_CONTROL, ev.id,GET_VALUE=val
             new_min = (FLOAT(val(0)))<curr_dctrl_p.x.max
             curr_dctrl_p.x.min = new_min
             curr_dctrl_p.x.plot_min = new_min

             curr_dctrl_p.x.max = curr_dctrl_p.x.plot_max 

             ; Update curr_x_p
             ; ---------------
             sz_x = curr_dctrl_p.x.nb_dot
             curr_x_p = FINDGEN (sz_x)
             curr_x_p = curr_dctrl_p.x.min+curr_x_p*(curr_dctrl_p.x.max-curr_dctrl_p.x.min)/(sz_x-1)

             WIDGET_CONTROL,ev.id          ,SET_VALUE=STRING(curr_dctrl_p.x.min,FORMAT='(F11.3)')
             WIDGET_CONTROL,p_item_xmin_txt,SET_VALUE=STRING(curr_dctrl_p.x.plot_min,FORMAT='(F11.3)')
             WIDGET_CONTROL,p_item_xmax_txt,SET_VALUE=STRING(curr_dctrl_p.x.plot_max,FORMAT='(F11.3)')

             ; update index_min/index_max
             ; --------------------------
             curr_dctrl_p.x.index_min = 0
             curr_dctrl_p.x.index_max = curr_dctrl_p.x.nb_dot-1
             
             ; Update label
             ; ------------
             str = 'Horizontal Axis   '                    + $
                    STRTRIM (STRING(curr_dctrl_p.x.min),2) + $
                    ' <-> '                                + $
                    STRTRIM (STRING(curr_dctrl_p.x.max),2) 
             WIDGET_CONTROL, p_item_xinfo, SET_VALUE = str
             END     

    'XMATXT':BEGIN 
             WIDGET_CONTROL, ev.id,GET_VALUE=val
             new_max = (FLOAT(val(0)))>curr_dctrl_p.x.min
             curr_dctrl_p.x.max = new_max
             curr_dctrl_p.x.plot_max = new_max

             curr_dctrl_p.x.min = curr_dctrl_p.x.plot_min 

             ; Update curr_x_p
             ; ---------------
             sz_x = curr_dctrl_p.x.nb_dot
             curr_x_p = FINDGEN (sz_x)
             curr_x_p = curr_dctrl_p.x.min+curr_x_p*(curr_dctrl_p.x.max-curr_dctrl_p.x.min)/(sz_x-1)

             WIDGET_CONTROL,ev.id          ,SET_VALUE=STRING(curr_dctrl_p.x.max,FORMAT='(F11.3)')
             WIDGET_CONTROL,p_item_xmin_txt,SET_VALUE=STRING(curr_dctrl_p.x.plot_min,FORMAT='(F11.3)')
             WIDGET_CONTROL,p_item_xmax_txt,SET_VALUE=STRING(curr_dctrl_p.x.plot_max,FORMAT='(F11.3)')

             ; update index_min/index_max
             ; --------------------------
             curr_dctrl_p.x.index_min = 0
             curr_dctrl_p.x.index_max = curr_dctrl_p.x.nb_dot-1
             
             ; Update label
             ; ------------
             str = 'Horizontal Axis   '                    + $
                    STRTRIM (STRING(curr_dctrl_p.x.min),2) + $
                    ' <-> '                                + $
                    STRTRIM (STRING(curr_dctrl_p.x.max),2) 
             WIDGET_CONTROL, p_item_xinfo ,SET_VALUE = str
             END     






    'YLBLTXT': BEGIN
             WIDGET_CONTROL, p_item_ylbl_txt, GET_VALUE=txt 
             curr_dctrl_p.y.comment=STRING (txt(0), FORMAT=Comment_Format)
             END
    'YLOGE'   : BEGIN
               curr_dctrl_p.y.type = 1
             END
    'YLOGD'   : BEGIN
               curr_dctrl_p.y.type = 0
             END
    'YTLSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,p_item_ytl_txt ,SET_VALUE = STRING(val, FORMAT='(I3.3)')
               curr_dctrl_p.y.tick_len = val
             END
    'YTLTXT':BEGIN
               WIDGET_CONTROL, p_item_ytl_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<100
               WIDGET_CONTROL,p_item_ytl_sld, SET_VALUE=val
               WIDGET_CONTROL,p_item_ytl_txt, SET_VALUE=STRING(val,FORMAT='(I3.3)')
               curr_dctrl_p.y.tick_len = val
             END     
    'YMAJSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,p_item_ymaj_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               curr_dctrl_p.y.nb_tick = val
             END
    'YMAJTXT':BEGIN
               WIDGET_CONTROL, p_item_ymaj_txt, GET_VALUE=val
               val = (FIX(val(0))>0)<29
               WIDGET_CONTROL,p_item_ymaj_sld, SET_VALUE=val
               WIDGET_CONTROL,p_item_ymaj_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               curr_dctrl_p.y.nb_tick = val
             END     
    'YMNRSLD': BEGIN  
               val = ev.value
               WIDGET_CONTROL,p_item_ymnr_txt ,SET_VALUE = STRING(val, FORMAT='(I2.2)')
               curr_dctrl_p.y.nb_minor = val
             END
    'YMNRTXT':BEGIN
               WIDGET_CONTROL, p_item_ymnr_txt, GET_VALUE=val
               val=(FIX(val(0))>0)<20
               WIDGET_CONTROL,p_item_ymnr_sld, SET_VALUE=val
               WIDGET_CONTROL,p_item_ymnr_txt, SET_VALUE=STRING(val,FORMAT='(I2.2)')
               curr_dctrl_p.y.nb_minor = val
             END     

    'YMINTXT':BEGIN
               WIDGET_CONTROL, p_item_ymin_txt, GET_VALUE=val
               val = FLOAT (val(0))
               WIDGET_CONTROL,p_item_ymin_txt,SET_VALUE=STRING(val,FORMAT='(F11.3)')
               curr_dctrl_p.y.plot_min = val
             END     
    'YMAXTXT':BEGIN
               WIDGET_CONTROL, p_item_ymax_txt, GET_VALUE=val
               val = FLOAT (val(0))
               WIDGET_CONTROL,p_item_ymax_txt,SET_VALUE=STRING(val,FORMAT='(F11.3)')
               curr_dctrl_p.y.plot_max = val
             END     


    'DONE' : BEGIN 
               WIDGET_CONTROL,p_dctrl_base, /DESTROY
             END
     ELSE:
  ENDCASE                                                   
  ret = ql_display_data(curr_data_p, 100,curr_dctrl_p, err)
END

;***
;##############################################################################
;#Function  name   : ql_pdctr_trt                                             #
;#LEVEL            : 1                                                        #
;#                                                                            #
;#Author           : Emmanuel PETIT                                           #
;#Language         : IDL                                                      #
;#Purpose          : Management of current profile display                    #
;#Creation date    : January 1994                                             #
;#Update date      :                                                          #
;#External modules :                                                          #
;#                                                                            #
;#Call sequence    : Called by Event Handler                                  #
;#                                                                            #
;#Arguments        :                                                          #
;#                                                                            #
;#Description      :                                                          #
;#                                                                            #
;#                                                                            #
;##############################################################################
;***

PRO ql_pdctr_trt, ev

  ;============================================================================
  ;                       Common Block in use
  ;============================================================================
  COMMON p_dctrl_com
  COMMON curr_data_p_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']

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

  Xlog_item       = ['Enable', 'Disable']
  Xlog_uvalue     = ['XLOGE' , 'XLOGD']

  Ylog_item       = ['Enable', 'Disable']
  Ylog_uvalue     = ['YLOGE' , 'YLOGD']

  ;============================================================================
  ;                       Processing 
  ;============================================================================

  ; --------------
  ; Format display 
  ; --------------
  title = 'Profile Display Control'
 
  ;---------------
  ;Base Hierarchie
  ;---------------
   p_dctrl_base = WIDGET_BASE (TITLE=title,XOFFSET=610,YOFFSET=70,/COLUMN,/MODAL,group =12)  ;; GL Dec 99
   p_dctrl_g = WIDGET_BASE (p_dctrl_base ,/COLUMN, /FRAME)
     p_dctrl_g_hd    = WIDGET_BASE (p_dctrl_g ,/COLUMN)
     p_dctrl_g_value = WIDGET_BASE (p_dctrl_g ,/ROW)
       p_dctrl_g_grd    = WIDGET_BASE (p_dctrl_g_value ,/COLUMN, /FRAME)
       p_dctrl_g_grdl   = WIDGET_BASE (p_dctrl_g_value ,/COLUMN, /FRAME)
       p_dctrl_g_pid    = WIDGET_BASE (p_dctrl_g_value ,/COLUMN, /FRAME)
       p_dctrl_g_color  = WIDGET_BASE (p_dctrl_g_value ,/COLUMN, /FRAME)
     p_dctrl_g_title  = WIDGET_BASE (p_dctrl_g ,/ROW)

   p_dctrl_x   = WIDGET_BASE (p_dctrl_base ,/COLUMN, /FRAME)
     p_dctrl_x_hd    = WIDGET_BASE (p_dctrl_x ,/COLUMN)
     p_dctrl_x_lbl   = WIDGET_BASE (p_dctrl_x ,/ROW, /FRAME)
     p_dctrl_x_value = WIDGET_BASE (p_dctrl_x ,/ROW)
       p_dctrl_x_log    = WIDGET_BASE (p_dctrl_x_value ,/COLUMN, /FRAME)
       p_dctrl_x_lo     = WIDGET_BASE (p_dctrl_x_value ,/COLUMN, /FRAME)
       p_dctrl_x_mM     = WIDGET_BASE (p_dctrl_x_value ,/COLUMN, /FRAME)
       p_dctrl_x_tm     = WIDGET_BASE (p_dctrl_x_value ,/COLUMN, /FRAME)
       p_dctrl_x_sz     = WIDGET_BASE (p_dctrl_x_value ,/COLUMN, /FRAME)

   p_dctrl_y   = WIDGET_BASE (p_dctrl_base ,/COLUMN, /FRAME)
     p_dctrl_y_hd    = WIDGET_BASE (p_dctrl_y ,/COLUMN)
     p_dctrl_y_lbl   = WIDGET_BASE (p_dctrl_y ,/ROW, /FRAME)
     p_dctrl_y_value = WIDGET_BASE (p_dctrl_y ,/ROW)
       p_dctrl_y_log    = WIDGET_BASE (p_dctrl_y_value ,/COLUMN, /FRAME)
       p_dctrl_y_lo     = WIDGET_BASE (p_dctrl_y_value ,/COLUMN, /FRAME)
       p_dctrl_y_mM     = WIDGET_BASE (p_dctrl_y_value ,/COLUMN, /FRAME)
       p_dctrl_y_tm     = WIDGET_BASE (p_dctrl_y_value ,/COLUMN, /FRAME)
   p_dctrl_cmd   = WIDGET_BASE (p_dctrl_base ,/ROW, /FRAME)

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

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

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

  ; Grid 
  ; ----
  ret = WIDGET_LABEL(p_dctrl_g_grd, VALUE = 'Grid',FONT=Hd_Font_Bold)
  p_dctrl_g_ogrd = WIDGET_BASE (p_dctrl_g_grd ,/EXCLUSIVE, /COLUMN)

  p_item_grd_on  = WIDGET_BUTTON (p_dctrl_g_ogrd         , $
                                 FONT   = Hd_Font        , $
                                 VALUE  = Grid_item  (0) , $
                                 UVALUE = Grid_uvalue(0))
  p_item_grd_off = WIDGET_BUTTON (p_dctrl_g_ogrd         , $
                                 FONT   = Hd_Font        , $
                                 VALUE  = Grid_item  (1) , $
                                 UVALUE = Grid_uvalue(1))

  IF (curr_dctrl_p.grid_flg EQ 0) THEN WIDGET_CONTROL,p_item_grd_off, SET_BUTTON=1 $
  ELSE                                 WIDGET_CONTROL,p_item_grd_on , SET_BUTTON=1


  ; line style
  ; ----------
  ret = WIDGET_LABEL(p_dctrl_g_grdl, VALUE = 'Line style',FONT=Hd_Font_Bold)
  p_item_line_list = WIDGET_LIST (p_dctrl_g_grdl         , $
                                  FONT   = Hd_Font       , $
                                  VALUE  = p_line_list   , $
                                  UVALUE = 'LLIST'       , $
                                  YSIZE  = 5)
  str  = STRING(p_line_list(curr_dctrl_p.grid_style), FORMAT='(A6)')
  p_item_line_lbl = WIDGET_LABEL (p_dctrl_g_grdl         , $
                                  VALUE  = str           , $ 
                                  FONT   = Hd_Font       )

  ; Color
  ; -----                  
  ret = WIDGET_LABEL(p_dctrl_g_color, VALUE = 'Color',FONT=Hd_Font_Bold)
  p_item_color_list = WIDGET_LIST (p_dctrl_g_color       , $
                                   FONT   = Hd_Font      , $
                                   UVALUE = 'COLORLIST'  , $
                                   VALUE  = color_label  , $
                                   YSIZE  = 5)
  p_item_color_lbl = WIDGET_LABEL (p_dctrl_g_color       , $
                              VALUE  = color_label(curr_dctrl_p.color-(max_nb_color+1)), $
                                   FONT   = Hd_Font       )
  ; PID List for info 
  ; -----------------
  ret = WIDGET_LABEL(p_dctrl_g_pid, VALUE = 'Processes',FONT=Hd_Font_Bold)
  s = size(curr_dctrl_p.process_id)

  pid_liste = STRARR(s(1))
  j=0
  FOR i=0, s(1)-1 DO BEGIN
    IF (curr_dctrl_p.process_id(i) NE 0) THEN BEGIN
      pid_liste(j) = proc_id_lst(curr_dctrl_p.process_id(i)-1).proc_id_txt
      j=j+1
    ENDIF
  ENDFOR
  pid_liste = STRTRIM (pid_liste(0:j),2)
  p_item_pid_list   = WIDGET_LIST (p_dctrl_g_pid          , $
                                   FONT   = Hd_Font       , $
                                   VALUE  = pid_liste     , $
                                   UVALUE = 'PIDLIST'     , $
                                   YSIZE  = 6)
  ; Main Title
  ; ----------
  ret = WIDGET_LABEL (p_dctrl_g_title, VALUE = 'Main Title: ',FONT=Hd_Font_Bold)
  p_item_lbl_txt  = WIDGET_TEXT (p_dctrl_g_title          , $
                                 XSIZE  = TITLE_SZ        , $
                                 UVALUE = 'LBLTXT'        , $
                                 VALUE  = STRTRIM(curr_dctrl_p.title,2), $)
                                 FONT   = Hd_Font         , $
                                 /EDITABLE)

  ;--------------------------- X Axis ---------------------------------
  str = 'Horizontal Axis   '                    + $
         STRTRIM (STRING(curr_dctrl_p.x.min),2) + $
         ' <-> '                                + $
         STRTRIM (STRING(curr_dctrl_p.x.max),2) 
  p_item_xinfo = WIDGET_LABEL (p_dctrl_x_hd, VALUE = str ,FONT=Hd_Font_Bold)

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

  ; X log scale
  ; -----------
  ret = WIDGET_LABEL(p_dctrl_x_log, VALUE = 'Log Scale',FONT=Hd_Font_Bold)
  p_dctrl_x_olog = WIDGET_BASE (p_dctrl_x_log ,/EXCLUSIVE, /COLUMN)
  p_item_xlog_on  = WIDGET_BUTTON (p_dctrl_x_olog         , $
                                   FONT   = Hd_Font       , $
                                   VALUE  = Xlog_item  (0), $
                                   UVALUE = Xlog_uvalue(0))
  p_item_xlog_off = WIDGET_BUTTON (p_dctrl_x_olog         , $
                                   FONT   = Hd_Font       , $
                                   VALUE  = Xlog_item  (1), $
                                   UVALUE = Xlog_uvalue(1))
  IF (curr_dctrl_p.x.type  EQ 0) THEN WIDGET_CONTROL,p_item_xlog_off, SET_BUTTON=1 $
  ELSE                                WIDGET_CONTROL,p_item_xlog_on , SET_BUTTON=1

  ; X Offset
  ; ------
  ret = WIDGET_LABEL(p_dctrl_x_lo, VALUE = 'Offset',FONT=Hd_Font_Bold)
  p_dctrl_x_olo  = WIDGET_BASE (p_dctrl_x_lo ,/ROW)


  p_item_xoff_sld = WIDGET_SLIDER (p_dctrl_x_olo                  , $ 
                                   MINIMUM = 0                    , $
                                   MAXIMUM = (PROFILE_X_SCROLL_SZ-curr_dctrl_p.x.plot_sz)>50, $
                                   VALUE   = curr_dctrl_p.x.offset, $
                                   UVALUE='XOFFSLD'               , $
                                   XSIZE = 80                     , $
                                   YSIZE = 20                     , $
                                   /DRAG                          , $
                                   /SUPPRESS_VALUE)          
  p_item_xoff_txt  = WIDGET_TEXT ( p_dctrl_x_olo          , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'XOFFTXT'     , $
                                   VALUE  = STRING(curr_dctrl_p.x.offset, FORMAT='(I4.4)') , $
                                   XSIZE  = 4             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)
  ; X ticklen
  ; ---------
  ret = WIDGET_LABEL(p_dctrl_x_lo, VALUE = 'Tick Length',FONT=Hd_Font_Bold)
  p_dctrl_x_oolo  = WIDGET_BASE (p_dctrl_x_lo ,/ROW)
  p_item_xtl_sld  = WIDGET_SLIDER (p_dctrl_x_oolo         , $ 
                                   MINIMUM = 0            , $
                                   MAXIMUM = 100          , $
                                   VALUE   = curr_dctrl_p.x.tick_len, $
                                   UVALUE='XTLSLD'        , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)          
  p_item_xtl_txt  = WIDGET_TEXT ( p_dctrl_x_oolo          , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'XTLTXT'      , $
                                   VALUE  = STRING(curr_dctrl_p.x.tick_len, FORMAT='(I3.3)') , $
                                   XSIZE  = 3             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)





  ; X min/max
  ; ---------
  ret = WIDGET_LABEL(p_dctrl_x_mM, VALUE = 'Minimun (plot)',FONT=Hd_Font_Bold)
  p_item_xmin_txt  = WIDGET_TEXT ( p_dctrl_x_mM           , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'XMINTXT'     , $
                                   VALUE  = STRING(curr_dctrl_p.x.plot_min,FORMAT='(F11.3)') , $
                                   XSIZE  = 15            , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)         
  ret = WIDGET_LABEL(p_dctrl_x_mM, VALUE = 'Maximum (plot)',FONT=Hd_Font_Bold)
  p_item_xmax_txt  = WIDGET_TEXT ( p_dctrl_x_mM           , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'XMAXTXT'     , $
                                   VALUE  = STRING(curr_dctrl_p.x.plot_max,FORMAT='(F11.3)') , $
                                   XSIZE  = 15            , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)

  ; X plot size
  ; -----------
  ret = WIDGET_LABEL(p_dctrl_x_sz, VALUE = 'Plot Size',FONT=Hd_Font_Bold)
  p_dctrl_x_osz  = WIDGET_BASE (p_dctrl_x_sz ,/ROW)
  p_item_xsz_sld = WIDGET_SLIDER (p_dctrl_x_osz          , $ 
                                   MINIMUM = 1           , $
                                   MAXIMUM = 1024        , $
                                   VALUE   = curr_dctrl_p.x.plot_sz, $
                                   UVALUE='XSZSLD'       , $
                                   XSIZE = 80            , $
                                   YSIZE = 20            , $
                                   /DRAG                 , $
                                   /SUPPRESS_VALUE)          
  p_item_xsz_txt  = WIDGET_TEXT ( p_dctrl_x_osz          , $ 
                                   YSIZE  = 1            , $
                                   UVALUE = 'XSZTXT'     , $
                                   VALUE  = STRING(curr_dctrl_p.x.plot_sz, FORMAT='(I4.4)') , $
                                   XSIZE  = 4            , $
                                   FONT   = Hd_Font      , $
                                   /EDITABLE)
  ; X min/max (axis)
  ; ---------
  ret = WIDGET_LABEL(p_dctrl_x_sz, VALUE = 'Minimun (axis)',FONT=Hd_Font_Bold)
  p_item_xmi_txt  = WIDGET_TEXT ( p_dctrl_x_sz           , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'XMITXT'     , $
                                   VALUE  = STRING(curr_dctrl_p.x.min,FORMAT='(F11.3)') , $
                                   XSIZE  = 15            , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)         
  ret = WIDGET_LABEL(p_dctrl_x_sz, VALUE = 'Maximum (axis)',FONT=Hd_Font_Bold)
  p_item_xma_txt  = WIDGET_TEXT ( p_dctrl_x_sz           , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'XMATXT'     , $
                                   VALUE  = STRING(curr_dctrl_p.x.max,FORMAT='(F11.3)') , $
                                   XSIZE  = 15            , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)

 
 
  ; Nb major
  ; --------
  ret = WIDGET_LABEL(p_dctrl_x_tm, VALUE = 'Nb Major',FONT=Hd_Font_Bold)
  p_dctrl_x_otm    = WIDGET_BASE (p_dctrl_x_tm ,/ROW)
  p_item_xmaj_sld  = WIDGET_SLIDER (p_dctrl_x_otm        , $ 
                                    MINIMUM = 1          , $
                                    MAXIMUM = 29         , $
                                    VALUE = curr_dctrl_p.x.nb_tick , $
                                    UVALUE='XMAJSLD'     , $
                                    XSIZE = 80           , $
                                    YSIZE = 20           , $
                                    /DRAG                , $
                                    /SUPPRESS_VALUE)          
  p_item_xmaj_txt  = WIDGET_TEXT ( p_dctrl_x_otm         , $ 
                                   UVALUE = 'XMAJTXT'    , $
                                   VALUE  = STRING(curr_dctrl_p.x.nb_tick, FORMAT='(I2.2)') , $
                                   XSIZE = 2             , $
                                   YSIZE = 1             , $
                                   FONT   = Hd_Font      , $
                                   /EDITABLE)
  ; Nb minor
  ; --------
  ret = WIDGET_LABEL(p_dctrl_x_tm, VALUE = 'Nb Minor',FONT=Hd_Font_Bold)
  p_dctrl_x_ootm  = WIDGET_BASE (p_dctrl_x_tm ,/ROW)
  p_item_xmnr_sld = WIDGET_SLIDER (p_dctrl_x_ootm        , $ 
                                   MINIMUM = 0           , $
                                   MAXIMUM = 20          , $
                                   VALUE = curr_dctrl_p.x.nb_minor, $
                                   UVALUE='XMNRSLD'      , $
                                   XSIZE = 80            , $
                                   YSIZE = 20            , $
                                   /DRAG                 , $
                                   /SUPPRESS_VALUE)
  p_item_xmnr_txt = WIDGET_TEXT ( p_dctrl_x_ootm         , $ 
                                  UVALUE = 'XMNRTXT'     , $
                                  VALUE  = STRING(curr_dctrl_p.x.nb_minor, FORMAT='(I2.2)'), $
                                  XSIZE = 2              , $
                                  YSIZE = 1              , $
                                  FONT  = Hd_Font        , $
                                   /EDITABLE)


  ;--------------------------- Y Axis ---------------------------------
  str = 'Vertical Axis   '                      + $
         STRTRIM (STRING(curr_dctrl_p.y.min),2) + $
         ' <-> '                                + $
         STRTRIM (STRING(curr_dctrl_p.y.max),2) 
  p_item_yinfo = WIDGET_LABEL (p_dctrl_y_hd, VALUE = str ,FONT=Hd_Font_Bold)

  ret = WIDGET_LABEL (p_dctrl_y_lbl, VALUE = 'Label: ',FONT=Hd_Font_Bold)
  p_item_ylbl_txt = WIDGET_TEXT (p_dctrl_y_lbl            , $
                                 XSIZE  = COMMENT_SZ      , $
                                 UVALUE = 'YLBLTXT'       , $
                                 VALUE  = STRTRIM(curr_dctrl_p.y.comment,2), $)
                                 FONT   = Hd_Font         , $
                                 /EDITABLE)

  ; Y log scale
  ; -----------
  ret = WIDGET_LABEL(p_dctrl_y_log, VALUE = 'Log Scale',FONT=Hd_Font_Bold)
  p_dctrl_y_olog = WIDGET_BASE (p_dctrl_y_log ,/EXCLUSIVE, /COLUMN)
  p_item_ylog_on  = WIDGET_BUTTON (p_dctrl_y_olog         , $
                                   FONT   = Hd_Font       , $
                                   VALUE  = Ylog_item  (0), $
                                   UVALUE = Ylog_uvalue(0))
  p_item_ylog_off = WIDGET_BUTTON (p_dctrl_y_olog         , $
                                   FONT   = Hd_Font       , $
                                   VALUE  = Ylog_item  (1), $
                                   UVALUE = Ylog_uvalue(1))
  IF (curr_dctrl_p.y.type  EQ 0) THEN WIDGET_CONTROL,p_item_ylog_off, SET_BUTTON=1 $
  ELSE                                WIDGET_CONTROL,p_item_ylog_on , SET_BUTTON=1

  ; Y ticklen
  ; ---------
  ret = WIDGET_LABEL(p_dctrl_y_lo, VALUE = 'Tick Length',FONT=Hd_Font_Bold)
  p_dctrl_y_oolo  = WIDGET_BASE (p_dctrl_y_lo ,/ROW)
  p_item_ytl_sld  = WIDGET_SLIDER (p_dctrl_y_oolo         , $ 
                                   MINIMUM = 0            , $
                                   MAXIMUM = 100          , $
                                   VALUE   = curr_dctrl_p.y.tick_len, $
                                   UVALUE='YTLSLD'        , $
                                   XSIZE = 80             , $
                                   YSIZE = 20             , $
                                   /DRAG                  , $
                                   /SUPPRESS_VALUE)          
  p_item_ytl_txt  = WIDGET_TEXT ( p_dctrl_y_oolo          , $ 
                                   UVALUE = 'YTLTXT'      , $
                                   VALUE  = STRING(curr_dctrl_p.y.tick_len, FORMAT='(I3.3)') , $
                                   XSIZE  = 4             , $
                                   YSIZE  = 1             , $
                                   FONT   = Hd_Font      , $
                                   /EDITABLE)
  ; Y min/max
  ; ---------
  ret = WIDGET_LABEL(p_dctrl_y_mM, VALUE = 'Minimun (plot)',FONT=Hd_Font_Bold)
  p_item_ymin_txt  = WIDGET_TEXT ( p_dctrl_y_mM           , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'YMINTXT'     , $
                                   VALUE  = STRING(curr_dctrl_p.y.plot_min,FORMAT='(F11.3)') , $
                                   XSIZE  = 15            , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)         
  ret = WIDGET_LABEL(p_dctrl_y_mM, VALUE = 'Maximum (plot)',FONT=Hd_Font_Bold)
  p_item_ymax_txt  = WIDGET_TEXT ( p_dctrl_y_mM          , $ 
                                   YSIZE  = 1             , $
                                   UVALUE = 'YMAXTXT'     , $
                                   VALUE  = STRING(curr_dctrl_p.y.plot_max,FORMAT='(F11.3)') , $
                                   XSIZE  = 15             , $
                                   FONT   = Hd_Font       , $
                                   /EDITABLE)


  ; Nb major
  ; --------
  ret = WIDGET_LABEL(p_dctrl_y_tm, VALUE = 'Nb Major',FONT=Hd_Font_Bold)
  p_dctrl_y_otm    = WIDGET_BASE (p_dctrl_y_tm ,/ROW)
  p_item_ymaj_sld  = WIDGET_SLIDER (p_dctrl_y_otm        , $ 
                                    MINIMUM = 1          , $
                                    MAXIMUM = 29         , $
                                    VALUE = curr_dctrl_p.y.nb_tick , $
                                    UVALUE='YMAJSLD'     , $
                                    XSIZE = 80           , $
                                    YSIZE = 20           , $
                                    /DRAG                , $
                                    /SUPPRESS_VALUE)          
  p_item_ymaj_txt  = WIDGET_TEXT ( p_dctrl_y_otm         , $ 
                                   UVALUE = 'YMAJTXT'    , $
                                   VALUE  = STRING(curr_dctrl_p.y.nb_tick, FORMAT='(I2.2)') , $
                                   XSIZE = 2             , $
                                   YSIZE = 1             , $            
                                   FONT   = Hd_Font      , $
                                   /EDITABLE)
  ; Nb minor
  ; --------
  ret = WIDGET_LABEL(p_dctrl_y_tm, VALUE = 'Nb Minor',FONT=Hd_Font_Bold)
  p_dctrl_y_ootm  = WIDGET_BASE (p_dctrl_y_tm ,/ROW)
  p_item_ymnr_sld = WIDGET_SLIDER (p_dctrl_y_ootm        , $ 
                                   MINIMUM = 0           , $
                                   MAXIMUM = 20          , $
                                   VALUE = curr_dctrl_p.y.nb_minor, $
                                   UVALUE='YMNRSLD'      , $
                                   XSIZE = 80            , $
                                   YSIZE = 20            , $
                                   /DRAG                 , $
                                   /SUPPRESS_VALUE)
  p_item_ymnr_txt = WIDGET_TEXT ( p_dctrl_y_ootm         , $ 
                                  UVALUE = 'YMNRTXT'      , $
                                  VALUE  = STRING(curr_dctrl_p.y.nb_minor, FORMAT='(I2.2)'), $
                                  XSIZE = 2              , $
                                  YSIZE = 1              , $
                                   FONT   = Hd_Font      , $
                                   /EDITABLE)

  ;--------------------------- Command --------------------------------
  p_dctrl_done   = WIDGET_BUTTON (p_dctrl_cmd            , $
                                  FONT   = Hd_Font_Bold  , $
                                  VALUE  = "DONE"        , $
                                  UVALUE = "DONE")
  ; ----------------
  ; Widgets Creation
  ; ----------------   
  WIDGET_CONTROL, p_dctrl_base , /REALIZE

  ; ------------------
  ; Call Event manager
  ; ------------------
   XMANAGER, "ql_pdctr",p_dctrl_base,GROUP_LEADER=12  ;;,/MODAL ;; GL Dec 99

END
