;+ ; NAME: ; qannounc ; PURPOSE: (one line) ; Scrollable text display widget with true and false response buttons. ; DESCRIPTION: ; ; CATEGORY: ; Widget ; CALLING SEQUENCE: ; result = qannounc( text [,keywords] ) ; INPUTS: ; ; OPTIONAL INPUT PARAMETERS: ; ; KEYWORD PARAMETERS: ; FALSELABEL=false : Label for false button. Default='No' ; GROUP=group : Group leader. ; TRUELABEL=true : Label for true button. Default='Yes' ; TITLE=title : Title of widget. Default='qannounc'. ; XSIZE=ysize : Width, in characters, of the text display. ; YSIZE=ysize : Max size, in rows, of text display. ; OUTPUTS: ; result=0 if false button pressed, otherwise result=1. ; COMMON BLOCKS: ; ; SIDE EFFECTS: ; Suspends all event generation. A user response is required. ; RESTRICTIONS: ; ; PROCEDURE: ; ; MODIFICATION HISTORY: ; Written by Doug Loucks, Lowell Observatory, January, 1993. Similar ; to IDL User Library procedure XANNOUNCE. ; 3/93, DWL: ; Moved False button to the upper left, making it the first button. This ; was done to prevent the true button from being 'pressed' as a result of ; the space bar event generation problem. ; Set the false button to have input focus. ; 7/22/94, DWL, Added code similar to that for compound widget event ; processing, thus eliminating the need for a common block. ;- ; ------------------------------------------------------------------------------ ; Procedure qannounc_eve ; Event handler. ; ------------------------------------------------------------------------------ PRO qannounc_eve, event WIDGET_CONTROL, event.id, /HOURGLASS stash = WIDGET_INFO( event.handler, /CHILD ) WIDGET_CONTROL, stash, GET_UVALUE=state, /NO_COPY CASE event.id OF state.accept : WIDGET_CONTROL, state.holdid, SET_UVALUE=1 state.cancel : WIDGET_CONTROL, state.holdid, SET_UVALUE=0 ENDCASE WIDGET_CONTROL, stash, SET_UVALUE=state, /NO_COPY WIDGET_CONTROL, event.top, /DESTROY END ; ------------------------------------------------------------------------------ ; Function qannounc ; ------------------------------------------------------------------------------ FUNCTION qannounc, text, FALSELABEL=in_false, GROUP=in_group, $ TITLE=in_title, TRUELABEL=in_true, XSIZE=in_xsize, YSIZE=in_ysize IF KEYWORD_SET( in_title ) THEN title=in_title ELSE title='QANNOUNCE' IF KEYWORD_SET( in_false ) THEN no=in_false ELSE no='No' IF KEYWORD_SET( in_true ) THEN yes=in_true ELSE yes='Yes' mainbase = WIDGET_BASE( TITLE=title, /COLUMN ) holdid = WIDGET_BASE(UVALUE=0) state = {cancel:0L, accept:0L, holdid:holdid} IF KEYWORD_SET( in_group ) THEN group=in_group ELSE group=mainbase IF KEYWORD_SET( in_xsize ) THEN xsize=in_xsize ELSE xsize=80 IF KEYWORD_SET( in_ysize ) THEN ysize=in_ysize ELSE ysize=5 wb = WIDGET_BASE( mainbase, /ROW, /FRAME ) state.cancel = WIDGET_BUTTON( wb, VALUE=no ) state.accept = WIDGET_BUTTON( wb, VALUE=yes ) w1 = WIDGET_TEXT( mainbase, VALUE=text, XSIZE=xsize, YSIZE=ysize, /SCROLL ) WIDGET_CONTROL, mainbase, /REALIZE stash = WIDGET_INFO( mainbase, /CHILD ) WIDGET_CONTROL, stash, SET_UVALUE=state, /NO_COPY ; The MODAL keyword to XMANAGER turns all events off. XMANAGER, 'qannounc', mainbase, EVENT_HANDLER='qannounc_eve', $ GROUP_LEADER=group, /MODAL WIDGET_CONTROL, holdid, GET_UVALUE=rvalue WIDGET_CONTROL, holdid, /DESTROY RETURN, rvalue END