;+ ; NAME: ; itool ; PURPOSE: (one line) ; General purpose image display (front-end for cw\_itool). ; DESCRIPTION: ; ; CATEGORY: ; Image display ; CALLING SEQUENCE: ; ; INPUTS: ; image : The image array. ; OPTIONAL INPUT PARAMETERS: ; ; KEYWORD PARAMETERS: ; FVISIBLE : Size of the full-view window (128 pixels). ; PHOTPARMFILE : Optional photometry parameters file. ; TMPLFILE : Optional Photometry template file. ; SCLMIN : Stretch range minimum. ; SCLMAX : Stretch range maximum. ; WXVISIBLE : Creates work window with explicit x-size (500). ; WYVISIBLE : Creates work window with explicit y-size (500). ; WZOOMFACT : Ceiling for work-view zoom factor (unlimited). ; ZVISIBLE : Size of the zoom window (128 pixels). ; OUTPUTS: ; ; COMMON BLOCKS: ; ; SIDE EFFECTS: ; ; RESTRICTIONS: ; ; PROCEDURE: ; ; MODIFICATION HISTORY: ; Written by Doug Loucks, Lowell Observatory, July 29, 1994. This is a small ; 'front-end' for the new compound widget version of itool (cw_itool). ; ; 94/09/27 - Marc W. Buie, Lowell Observatory. Modified exit on itool_eve ; to eliminate crash on exit if photometry or template parms ; were changed. ;- ; ------------------------------------------------------------------------------ ; Procedure itool_eve ; Event handler. ; ------------------------------------------------------------------------------ PRO itool_eve, event WIDGET_CONTROL, event.id, /HOURGLASS stash = WIDGET_INFO( event.handler, /CHILD ) WIDGET_CONTROL, stash, GET_UVALUE=state CASE event.id OF state.exitid : BEGIN WIDGET_CONTROL, state.cwitoolid, GET_VALUE=status con = 1B FOR ifl=n_elements(status.msg)-1,0,-1 DO BEGIN IF status.msg[ifl] NE '' THEN BEGIN tmsg = [ '\\\\\\ WARNING //////', status.msg[ifl], $ 'Do you wish to quit Itool without saving these changes?' ] con = qannounc( tmsg, TITLE='Itool Exit Confirmation', YSIZE=6 ) IF NOT con THEN ifl = -1 ENDIF ENDFOR IF con THEN BEGIN WIDGET_CONTROL, event.top, /DESTROY RETURN ENDIF END ELSE : BEGIN END ENDCASE END ; ------------------------------------------------------------------------------ ; Procedure Itool ; ------------------------------------------------------------------------------ PRO itool, image, FVISIBLE=fvisible, PHOTPARMFILE=photparmfile, $ SCLMIN=sclmin, SCLMAX=sclmax, $ TMPLFILE=tmplfile, $ WXVISIBLE=wxvisible, WYVISIBLE=wyvisible, $ WZOOMFACT=wzoomfact, $ ZVISIBLE=zvisible base = WIDGET_BASE( TITLE='itool', COLUMN=1 ) hold = WIDGET_BASE() it_init, image, im_parms state = {cwitoolid:0L, exitid:0L} IF KEYWORD_SET( sclmin ) THEN BEGIN im_parms.ready = 1B im_parms.sclmin = sclmin ENDIF IF KEYWORD_SET( sclmax ) THEN BEGIN im_parms.ready = 1B im_parms.sclmax = sclmax ENDIF im_parms.imageptr = hold WIDGET_CONTROL, hold, SET_UVALUE=image, /NO_COPY state.exitid = WIDGET_BUTTON( base, VALUE='Exit' ) IF NOT KEYWORD_SET( photparmfile ) THEN photparmfile='' IF NOT KEYWORD_SET( tmplfile ) THEN tmplfile='' state.cwitoolid = cw_itool( base, FVISIBLE=fvisible, /NODISMISS, $ PHOTPARMFILE=photparmfile, $ TMPLFILE=tmplfile, $ WXVISIBLE=wxvisible, WYVISIBLE=wyvisible, $ XSIZE=im_parms.xsize, YSIZE=im_parms.ysize, $ WZOOMFACT=wzoomfact, $ ZVISIBLE=zvisible ) WIDGET_CONTROL, base, /REALIZE IF state.cwitoolid NE 0L THEN BEGIN WIDGET_CONTROL, state.cwitoolid, SET_VALUE=im_parms stash = WIDGET_INFO( base, /CHILD ) WIDGET_CONTROL, stash, SET_UVALUE=state XMANAGER, 'itool', base, EVENT_HANDLER='itool_eve', GROUP_LEADER=base ENDIF WIDGET_CONTROL, hold, GET_UVALUE=image, /NO_COPY WIDGET_CONTROL, hold, /DESTROY END