;-------------------------------------------------------------
;+
; NAME:
; mdsw_noch
; PURPOSE:
; Plot one MDS signal with Crosshairs
; CATEGORY:
; Example
; CALLING SEQUENCE:
; mdsw_noch
; COMMON BLOCKS:
; mdsw_noch
; NOTES:
; Your display may have to be set to 256 colors to see the crosshairs.
; LIMITATIONS:
; The printers and help file used here only work from UNIX.
; Only one version of this program may be run from a given IDL session.
; MODIFICATION HISTORY:
; 11-Feb-99 Using UNSETUP_X rather than SETUP_X
; 28-Jan-99 Took out cross-hair routines
; 26-Jan-99 Modified for using MDS at PPPL by Bill Davis
; 8/29/97 CH_example written by Bill Davis,
;
; GA Crosshair routines originally written by John Ferron.
; Now maintained by T. Terpstra
;-
;--------------------------------------------------------------
PRO PlotSomething
COMMON mdsw_noch, which_plot ; if more than one type, remember which type
COMMON mdsw_noch_INPUTS, MDSserver, shot_num, signal_name, Printer_List, Printer
IF N_ELEMENTS( which_plot ) EQ 0 THEN BEGIN
PLOT, SIN(FINDGEN(100)/5), /NODATA
which_plot = 'whatever'
RETURN
ENDIF
cYdata = MDSGetSig( signal_name, SIGUNITS=yUnits, XAXIS=cXdata, $
XUNITS=xUnits, STAT=readStat )
IF ( readStat ) THEN BEGIN
pTitle = signal_name +' for shot ' + STRTRIM(shot_num,2)
PLOT, cXdata, cYdata, XSTYLE=2, YSTYLE=2,LINESTYLE=0, $
YTITLE=yUnits, XTITLE=xUnits, TITLE=pTitle, CHARSIZE=1.1
ENDIF ELSE BEGIN
dum=DIALOG_MESSAGE( 'Signal NOT found' )
ENDELSE
RETURN
END
;--------------------------------------------------------------
PRO mdsw_noch_event, ev, GROUP_LEADER=group_leader
COMMON mdsw_noch, which_plot ; if more than one type, remember which type
COMMON mdsw_noch_INPUTS, MDSserver, shot_num, signal_name, Printer_List, Printer
WIDGET_CONTROL,ev.id,get_UVALUE = UVALUE
;;;PRINT, 'In mdsw_noch_event; UVALUE=', UVALUE
CASE UVALUE of
"Server": BEGIN
; read a new shot number from the screen widget
WIDGET_CONTROL, ev.id, GET_VALUE=MDSserver
MDSserver = STRTRIM( MDSserver(0), 2)
stat = OpenMDSshot( MDSserver, shot_num )
IF NOT stat THEN BEGIN
dum=Dialog_Message('Error opening that server')
ENDIF
END
"Shot": BEGIN
; read a new shot number from the screen widget
WIDGET_CONTROL, ev.id, GET_VALUE=shot_num
shot_num = shot_num(0)
stat = OpenMDSshot( MDSserver, shot_num )
IF NOT stat THEN BEGIN
dum=Dialog_Message('Error opening that shot')
ENDIF
END
"Signal": BEGIN
; read a new shot number from the screen widget
WIDGET_CONTROL, ev.id, GET_VALUE=signal_name
signal_name = STRTRIM( signal_name(0), 2)
END
'Plot': BEGIN
which_plot = 'whatever'
stat = OpenMDSshot( MDSserver, shot_num )
PlotSomething
END
'Printer_Select': BEGIN
printer_index = ev.index
printer = Printer_List( printer_index )
END
'print_plot': BEGIN
stat = OpenMDSshot( MDSserver, shot_num ) ; make sure is open
name = 'mdsw_noch' ; will leave a file with this name.ps
IF ( (!D.NAME EQ 'X') OR (!D.NAME EQ 'MAC') ) THEN WIDGET_CONTROL,/hourglass
SETUP_PS, name, PRINTER=printer
PlotSomething
UNSETUP_PS ; will print the above .ps file
END
'Help_Program': BEGIN
XDISPLAYFILE,'~bdavis/Class/mdsw_noch.txt',GROUP=ev.top
END
'exit': WIDGET_CONTROL,/DESTROY,ev.top
ENDCASE
RETURN
END
;---------------------------------------------------------------
PRO mdsw_noch
COMMON mdsw_noch_INPUTS, MDSserver, shot_num, signal_name, Printer_List, Printer
; defaults for input fields
MDSserver = 'nstx'
shot_num = 89725
signal_name = '.waveforms:MB_IP_SL'
!P.COLOR = MK_COLOR('black', TABLE=11) ; table 11 gives red box on middle button
!P.BACKGROUND = MK_COLOR('white')
!P.MULTI = 0
!X.MARGIN=[12,3] ; for when exponents needed on ticks
;---------------------------------------------------------------
; Create a base
baseID = WIDGET_BASE( TITLE='MDS Plotter', /COLUMN, MBAR=wMBarBase)
wFileMenu = Widget_Button( wMBarBase, VALUE='File', /MENU)
Forward_Function printerMenu
;;;wPrintSelect = CW_PDMENU( wMBarBase, printerMenu() ,/MBAR, $
;;; UVALUE='Printer_Select', /RETURN_ID)
wQuitButton = Widget_Button( wFileMenu, VALUE='Quit', UVALUE='exit')
wHelpMenu = Widget_Button( wMBarBase, VALUE='Help', /HELP)
wHelpButton = Widget_Button( wHelpMenu, VALUE='Help', UVALUE='Help_Program')
wLRow = WIDGET_BASE(baseID, /ROW)
textID1 = CW_Field(wLRow, Title='Server: ', /RETURN_EVENTS, /STRING, $
XSIZE=8, VALUE=MDSserver, UVALUE = 'Server' )
textID1 = CW_Field(wLRow, Title='Shot: ', /RETURN_EVENTS, /LONG, $
XSIZE=7, VALUE=shot_num, UVALUE = 'Shot' )
textID1 = CW_Field(wLRow, Title='Signal: ', /RETURN_EVENTS, /STRING, $
XSIZE=30, VALUE=signal_name, UVALUE = 'Signal' )
buttonID2 = WIDGET_BUTTON(wLRow, VALUE='Plot', UVALUE='Plot')
;---------------------------------------------------------------
; Create the Draw widget
baseRow1 = WIDGET_BASE( baseID, /ROW )
graphicsDrawID = WIDGET_DRAW(baseRow1, RETAIN=2, XSIZE=550, YSIZE=400)
; create location fields
baseRow2 = WIDGET_BASE( baseID, /ROW ,xoffset=100, yoffset=100 )
bmid5 = WIDGET_BUTTON( baseRow2, VALUE='Print', UVALUE = 'print_plot')
dum = WIDGET_LABEL(baseRow2, VALUE = 'to')
; make a menu of your favorite printer queues
Printer_List = ['b143-lp4517 - Apple Laserwriter in B143', $
'lwplusb248 - LW+ B248@LOB W. 2nd fl', $
'lob201lw - LOB-201 Laser Writer', $
'theoryne - Laser Writer in the Theory Hallway',$
'crps - TFTR Control Room Laser #1' ]
Printer = Printer_List(0)
wPrintSelect = WIDGET_DROPLIST( baseRow2, VALUE=Printer_List, $
UVALUE='Printer_Select')
WIDGET_CONTROL,baseID,/REALIZE
WIDGET_CONTROL, graphicsDrawID, GET_VALUE=graphicsWindowID
WSET, graphicsWindowID
;---------------------------------------------------------------
; call XMANAGER, which will wait for events
idlvers = FIX( STRMID(!VERSION.RELEASE,0,STRPOS(!VERSION.RELEASE,'.')) )
IF idlvers GE 5 THEN BEGIN
XMANAGER,'mdsw_noch', baseID, /no_block ; /NO_BLOCK will return IDL prompt
ENDIF ELSE BEGIN
XMANAGER,'mdsw_noch', baseID
ENDELSE
END