source: trunk/UTILITAIRE/report.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 3.7 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME:report
6;
7; PURPOSE: comme dialog_message.pro si il y a deja des widgets actives
8; ou comme message.pro si il n''y a pas de widgets actives. pour poser
9; des question dont la reponse n''est pas oui/non utiliser xquestion
10;
11; CATEGORY:
12;
13; CALLING SEQUENCE:res = report(text)
14;
15; INPUTS: text: un string on un vecteur de string. Si le string ne
16; comporte qu''un element, on cherche les eventuels characteres de
17; retour a la ligne: '!C'. If text is set to an array of strings, each
18; array element is displayed as a separate line of text.
19;
20; KEYWORD PARAMETERS: ceux dialog_message.pro et message.pro avec en +
21; PARENT qui fait la meme chose que DIALOG_PARENT de dialog_message.pro
22;
23; OUTPUTS: -1 si le mot cle QUESTION n''est pas activer
24;          si le mot cle est active la fonction retourne 1 pour yes et
25;          0 pour no.
26;
27; COMMON BLOCKS:
28;
29; SIDE EFFECTS:
30;
31; RESTRICTIONS:
32;
33; EXAMPLE:
34;
35; si aucun widget n''est active:
36;
37;     IDL> help, report('toto tata')
38;     % $MAIN$: toto tata
39;     <Expression>    INT       =       -1
40;     IDL> help, report('ca marche ?',/question)
41;     ca marche ? y/n (default answer is y)
42;     <Expression>    BYTE      =    1
43;     IDL> help, report('question1: !C ca marche ?',/question)
44;     question1:
45;     ca marche ? y/n (default answer is y)
46;     <Expression>    BYTE      =    1
47;
48; si des widgets sont deja actives, c''est la meme chose mais avec des
49; widgets!
50;
51; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
52;                      21/10/1999
53;-
54;------------------------------------------------------------
55;------------------------------------------------------------
56;------------------------------------------------------------
57FUNCTION report, text, DEFAULT_NO = default_no, PARENT = parent, QUESTION = question, _extra = ex
58   res = -1                     ;
59; on separe le text en differentes lignes (separees par !C) si ce
60; n''est pas deja fait...
61   if n_elements(text) EQ 1 then text = str_sep(text, '!C', /trim)
62; il y a des widgets actifs, c''est facile on appelle dialog_massage
63   if (widget_info(/managed))[0] NE 0 then BEGIN
64      res = dialog_message(text, dialog_parent = parent, QUESTION = question $
65                           , title = routine_name(1), DEFAULT_NO = default_no, _extra = ex)
66      if keyword_set(question) THEN res = res EQ 'Yes' ELSE res = -1
67   ENDIF ELSE BEGIN
68; aucun widget n''est actif
69; on pose une question ?
70      if keyword_set(question) then BEGIN
71; quelle est la reponse par defaut ?
72         if keyword_set(default_no) then answer = 'n' ELSE answer = 'y'
73         default_answer = answer
74         if n_elements(text) GT 1 THEN $
75          for i = 0, n_elements(text)-2 do print,text[i]
76         read, text[n_elements(text)-1]+' y/n (default answer is '+default_answer+')' , answer
77         answer = strlowcase(answer) ;
78; si la reponse ne convient pas
79         while answer NE '' and answer NE 'y' and answer NE 'n' do begin
80            read, text[n_elements(text)-1]+' y/n (default answer is '+default_answer+')' , answer
81            answer = strlowcase(answer)
82         ENDWHILE               ;
83; on ajuste res en fonction de la reponse
84         case answer of
85            '':res = default_answer EQ 'y'
86            'y':res = 1
87            'n':res = 0
88         endcase
89      endif ELSE BEGIN
90; si on ne pose pas de question on fait juste un print
91         if n_elements(text) GT 1 THEN $
92          for i = 0, n_elements(text)-2 do print,'% '+routine_name(1)+': '+text[i]
93         print, '% '+routine_name(1)+': '+text[n_elements(text)-1]
94      ENDELSE
95   ENDELSE
96
97   return,  res
98end
Note: See TracBrowser for help on using the repository browser.