Viewing contents of file '../idllib/contrib/tappin/graffer/graff_one.pro'
pro Graff_one, pdefs, base, group=group, xsize=xsize, ysize=ysize
;+
; GRAFF_ONE
; Define a full-sized screen for graffer.
;
; Usage:
; (May not be called directly by the user)
; graff_one, pdefs, group=group, xsize=xsize, ysize=ysize
;
; Argument:
; pdefs struct in/out A GRAFFER control structure as
; returned by the graff_init
; procedure.
; base long output The ID of the base to be managed by
; XMANAGER
;
; Keywords:
; group long input The group leader of the widget tree.
; xsize int input The x dimension of the draw widget
; ysize int input The y dimension of the draw widget
;
; Restrictions:
; May not be called directly by the user. This routine uses much
; of the startup code and the same event handler as the normal
; GRAFFER procedure. Therefore it checks and gives a fatal error
; if its caller isn't GRAFFER (Of course you CAN trick it but as
; the saying is you can make software foolproof, but you can't
; make it damnfoolproof).
;
; History:
; Original (extracted from GRAFFER): 23/1/97; SJT
; Add "changed" indicator: 29/1/97; SJT
; Made unique in 8.3: 11/2/97; SJT
;-
common Gr_psym_maps, psym_bm
help, calls = cstack
ltpos = strpos(cstack(1), '<')
caller = strmid(cstack(1), 0, ltpos-1)
if (caller ne 'GRAFFER') then message, 'May only be called from ' + $
'GRAFFER'
pdefs.ids.graffer = widget_base(title = 'Graffer ' + $
'V'+string(pdefs.version, $
format = "(I0,'.',I2.2)"), $
/row, xpad = 1, ypad = 1, space = 1, $
resource = 'Graffer', kill_notify = $
'gr_state')
base = widget_base(pdefs.ids.graffer, /column, xpad = 1, ypad = 1, $
space = 1)
cdbase = widget_base(base, /row, xpad = 1, ypad = 1, space = 1)
cbase = widget_base(cdbase, /column, xpad = 1, ypad = 1, space = 1)
; Exit etc.
gr_control_menu, cbase
pdefs.ids.name = graff_enter(cbase, /display, /text, value = $
pdefs.name, xsize = 30, label = "Name:")
pdefs.ids.dir = graff_enter(cbase, /display, value = pdefs.dir, $
xsize = 26, label = 'Directory:')
; Plot Title/Subtitle
gr_mk_plmenus, cbase, pdefs
; X Axis controls
gr_axis_menu, 'X', cbase, pdefs
; Y Axis controls
gr_axis_menu, 'Y', cbase, pdefs
; The draw screen and the plot type
; selections.
if (not keyword_set(xsize)) then xwsize = 600 $
else xwsize = xsize > 600
if (not keyword_set(ysize)) then ywsize = 600 $
else ywsize = ysize > 600
if ((xwsize > ywsize) gt 600) then $
pdefs.ids.draw = widget_draw(cdbase, xsize = xwsize, x_scroll_size = $
600, ysize = ywsize, y_scroll_size = 600, $
uvalue = 'DRAW', /button_event, $
/motion_event, /track, /frame) $
else $
pdefs.ids.draw = widget_draw(cdbase, xsize = xwsize, ysize = ywsize, $
uvalue = 'DRAW', /button_event, $
/motion_event, /track, /frame)
; Setting the properties for the
; current data set
dsbase = widget_base(base, /row, /frame, xpad = 1, ypad = 1, space = 1)
; Change Data Set
tjb = widget_base(dsbase, /column, xpad = 1, ypad = 1, space = 1)
junk = widget_label(tjb, value = 'Data Set:')
gr_ds_pulldown, tjb
jb = widget_base(tjb, /row, xpad = 1, ypad = 1, space = 1)
pdefs.ids.descr = graff_enter(jb, /all, xsize = 15, value = $
'', format = $
"(A)", label = 'DS Name:', $
uvalue = 'DESC', /track, /capture)
pdefs.ids.cset = graff_enter(jb, /int, /display, xsize = 3, value = 0, $
format = '(I0)', label = '#:')
; Current cursor position
junk = cw_bbselector(tjb, ['Disabled', 'Enabled'], set_value = 1, uvalue $
= 'MOTION', label_left = 'Cursor tracing:', /track)
jb = widget_base(tjb, /row, xpad = 1, ypad = 1, space = 1)
pdefs.ids.xcp = graff_enter(jb, /float, /display, xsize = 10, value = $
0., label = 'X:', format = "(g10.3)")
pdefs.ids.ycp = graff_enter(jb, /float, /display, xsize = 10, value = $
0., label = 'Y:', format = "(g10.3)")
; Plotting symbols etc.
tjb = widget_base(dsbase, /column, xpad = 1, ypad = 1, space = 1)
jb = widget_base(tjb, /row, xpad = 1, ypad = 1, space = 1)
optbb = widget_base(jb, xpad = 1, ypad = 1, space = 1)
gr_ds_menus, optbb, pdefs
gr_z_menus, optbb, pdefs
jjb = widget_base(jb, /column, xpad = 1, ypad = 1, space = 1)
; Add a text string
junk = cw_bbselector(jjb, ['Draw', 'Text'], uvalue = 'TEXT', set_value $
= 0, label_left = 'Draw/Text Mode:', /track)
; Plot a function or read data
gr_ds_create, jjb
; A box to show if the plot is changed
; since the last save.
pdefs.ids.chtick = widget_base(jb, /column, xpad = 1, ypad = 1, space $
= 1, /align_center, map = 0)
cbm = gr_check_box(nx, ny)
junk = widget_button(pdefs.ids.chtick, value = cbm, uvalue = 'QSAVE', $
/track)
; Message box, only put it here
; because there's some space, give it
; a UVALUE so that we can use it with
; a timer event to control the autosave
pdefs.ids.message = graff_enter(tjb, /display, xsize = 75, ysize = 2, $
value = '', label = 'Messages:', $
uvalue = 'AUTOSAVE', /track)
pdefs.ids.hlptxt = graff_enter(tjb, /display, xsize = 75, ysize = 1, $
value = '', label = 'Function:')
widget_control, pdefs.ids.graffer, /real
if (keyword_set(group)) then $
widget_control, pdefs.ids.graffer, group = group
end