;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ ;+ ; NAME:report ; ; PURPOSE: comme dialog_message.pro si il y a deja des widgets actives ; ou comme message.pro si il n''y a pas de widgets actives. pour poser ; des question dont la reponse n''est pas oui/non utiliser xquestion ; ; CATEGORY: ; ; CALLING SEQUENCE:res = report(text) ; ; INPUTS: text: un string on un vecteur de string. Si le string ne ; comporte qu''un element, on cherche les eventuels characteres de ; retour a la ligne: '!C'. If text is set to an array of strings, each ; array element is displayed as a separate line of text. ; ; KEYWORD PARAMETERS: ceux dialog_message.pro et message.pro avec en + ; PARENT qui fait la meme chose que DIALOG_PARENT de dialog_message.pro ; ; OUTPUTS: -1 si le mot cle QUESTION n''est pas activer ; si le mot cle est active la fonction retourne 1 pour yes et ; 0 pour no. ; ; COMMON BLOCKS: ; ; SIDE EFFECTS: ; ; RESTRICTIONS: ; ; EXAMPLE: ; ; si aucun widget n''est active: ; ; IDL> help, report('toto tata') ; % $MAIN$: toto tata ; INT = -1 ; IDL> help, report('ca marche ?',/question) ; ca marche ? y/n (default answer is y) ; BYTE = 1 ; IDL> help, report('question1: !C ca marche ?',/question) ; question1: ; ca marche ? y/n (default answer is y) ; BYTE = 1 ; ; si des widgets sont deja actives, c''est la meme chose mais avec des ; widgets! ; ; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr) ; 21/10/1999 ;- ;------------------------------------------------------------ ;------------------------------------------------------------ ;------------------------------------------------------------ FUNCTION report, text, DEFAULT_NO = default_no, PARENT = parent, QUESTION = question, _extra = ex res = -1 ; ; on separe le text en differentes lignes (separees par !C) si ce ; n''est pas deja fait... if n_elements(text) EQ 1 then text = str_sep(text, '!C', /trim) ; il y a des widgets actifs, c''est facile on appelle dialog_massage if (widget_info(/managed))[0] NE 0 then BEGIN res = dialog_message(text, dialog_parent = parent, QUESTION = question $ , title = routine_name(1), DEFAULT_NO = default_no, _extra = ex) if keyword_set(question) THEN res = res EQ 'Yes' ELSE res = -1 ENDIF ELSE BEGIN ; aucun widget n''est actif ; on pose une question ? if keyword_set(question) then BEGIN ; quelle est la reponse par defaut ? if keyword_set(default_no) then answer = 'n' ELSE answer = 'y' default_answer = answer if n_elements(text) GT 1 THEN $ for i = 0, n_elements(text)-2 do print,text[i] read, text[n_elements(text)-1]+' y/n (default answer is '+default_answer+')' , answer answer = strlowcase(answer) ; ; si la reponse ne convient pas while answer NE '' and answer NE 'y' and answer NE 'n' do begin read, text[n_elements(text)-1]+' y/n (default answer is '+default_answer+')' , answer answer = strlowcase(answer) ENDWHILE ; ; on ajuste res en fonction de la reponse case answer of '':res = default_answer EQ 'y' 'y':res = 1 'n':res = 0 endcase endif ELSE BEGIN ; si on ne pose pas de question on fait juste un print if n_elements(text) GT 1 THEN $ for i = 0, n_elements(text)-2 do print,'% '+routine_name(1)+': '+text[i] print, '% '+routine_name(1)+': '+text[n_elements(text)-1] ENDELSE ENDELSE return, res end