ARB
aw_question.hxx
Go to the documentation of this file.
1 // ==================================================================== //
2 // //
3 // File : aw_question.hxx //
4 // Purpose : Functions to ask questions to user //
5 // //
6 // //
7 // Coded by Ralf Westram (coder@reallysoft.de) in January 2002 //
8 // Copyright Department of Microbiology (Technical University Munich) //
9 // //
10 // Visit our web site at: http://www.arb-home.de/ //
11 // //
12 // //
13 // ==================================================================== //
14 
15 #ifndef AW_QUESTION_HXX
16 #define AW_QUESTION_HXX
17 
18 #ifndef AW_BASE_HXX
19 #include "aw_base.hxx"
20 #endif
21 #ifndef ARBTOOLS_H
22 #include <arbtools.h>
23 #endif
24 #ifndef ATTRIBUTES_H
25 #include <attributes.h>
26 #endif
27 #ifndef _GLIBCXX_CSTDLIB
28 #include <cstdlib>
29 #endif
30 
31 // if you ask the same question in a loop, it is recommended to use AW_repeated_question
32 // to avoid asking the same question again and again.
33 //
34 // Usage : 1. Create a new instance of AW_repeated_question outside the loop
35 // 2. call get_answer() inside the loop
36 
37 // The second way to get rid of unwanted questions is by using a 'unique_id'
38 // - if unique_id is set, a toggle "Never ask me again" will be added to the question-popup.
39 // - if unique_id is NULp, no such toggle will appear (i.e. the popup can NOT be suppressed!)
40 // The latter is recommended
41 // - whenever the buttons get generated dynamically
42 // - when not asking is REALLY dangerous
43 //
44 // Whenever you change the meaning of a question, it is mandatory that you change the unique_id!!!
45 
46 class AW_repeated_question FINAL_TYPE : virtual Noncopyable {
47  int answer;
48  bool dont_ask_again;
49  char *buttons_used;
50  char *helpfile;
51 
52 public:
54  : answer(0),
55  dont_ask_again(false),
56  buttons_used(NULp),
57  helpfile(NULp)
58  {}
60  free(buttons_used);
61  free(helpfile);
62  }
63 
64  void add_help(const char *help_file); // when called, a help button is added to the prompter
65 
66  int get_answer(const char *unique_id, const char *question, const char *buttons, const char *to_all, bool add_abort);
67  // return 0 for first button, 1 for second button, 2 for third button, ...
68  // the single buttons are separated by commas (i.e. "YES,NO")
69  // if add_abort is true an 'ABORT' button is added behind the last
70 };
71 
72 int aw_question(const char *unique_id, const char *msg, const char *buttons, bool sameSizeButtons = true, const char *helpfile = NULp);
73 bool aw_ask_sure(const char *unique_id, const char *msg);
74 
75 // the following functions should only be used in very special cases - please use aw_message if possible!
76 void aw_popup_ok (const char *msg);
77 void aw_popup_exit(const char *msg) __ATTR__NORETURN;
78 
80 
81 #else
82 #error aw_question.hxx included twice
83 #endif // AW_QUESTION_HXX
84 
void AW_reactivate_all_questions(AW_window *)
virtual ~AW_repeated_question()
Definition: aw_question.hxx:59
void aw_popup_ok(const char *msg)
int aw_question(const char *unique_id, const char *msg, const char *buttons, bool sameSizeButtons=true, const char *helpfile=NULp)
Definition: AW_question.cxx:26
#define false
Definition: ureadseq.h:13
xml element
#define NULp
Definition: cxxforward.h:116
#define __ATTR__NORETURN
Definition: attributes.h:56
void aw_popup_exit(const char *msg) __ATTR__NORETURN
AW_repeated_question()
Definition: aw_question.hxx:53
bool aw_ask_sure(const char *unique_id, const char *msg)