do not use @c to refer to wxDefault* objects; use :: so an hypertext link is created
[wxWidgets.git] / interface / wx / msgdlg.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: msgdlg.h
3 // Purpose: interface of wxMessageDialog
4 // Author: wxWidgets team
5 // RCS-ID: $Id$
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
8
9 /**
10 @class wxMessageDialog
11
12 This class represents a dialog that shows a single or multi-line message,
13 with a choice of OK, Yes, No and Cancel buttons.
14
15 @beginStyleTable
16 @style{wxOK}
17 Puts an Ok button in the message box. May be combined with @c wxCANCEL.
18 @style{wxCANCEL}
19 Puts a Cancel button in the message box. Must be combined with
20 either @c wxOK or @c wxYES_NO.
21 @style{wxYES_NO}
22 Puts Yes and No buttons in the message box. May be combined with
23 @c wxCANCEL.
24 @style{wxNO_DEFAULT}
25 Makes the "No" button default, can only be used with @c wxYES_NO.
26 @style{wxCANCEL_DEFAULT}
27 Makes the "Cancel" button default, can only be used with @c wxCANCEL
28 @style{wxYES_DEFAULT}
29 Makes the "Yes" button default, this is the default behaviour and
30 this flag exists solely for symmetry with @c wxNO_DEFAULT.
31 @style{wxOK_DEFAULT}
32 Makes the "OK" button default, this is the default behaviour and
33 this flag exists solely for symmetry with @c wxCANCEL_DEFAULT.
34 @style{wxICON_EXCLAMATION}
35 Displays an exclamation mark symbol.
36 @style{wxICON_ERROR}
37 Displays an error symbol.
38 @style{wxICON_HAND}
39 Displays an error symbol, this is a MSW-inspired synonym for @c wxICON_ERROR.
40 @style{wxICON_QUESTION}
41 Displays a question mark symbol. This icon is automatically used
42 with @c wxYES_NO so it's usually unnecessary to specify it explicitly.
43 @style{wxICON_INFORMATION}
44 Displays an information symbol. This icon is used by default if
45 @c wxYES_NO is not given so it is usually unnecessary to specify it
46 explicitly.
47 @style{wxSTAY_ON_TOP}
48 Makes the message box stay on top of all other windows (currently
49 implemented only under MSW).
50 @endStyleTable
51
52 @library{wxcore}
53 @category{cmndlg}
54
55 @see @ref overview_cmndlg_msg
56 */
57 class wxMessageDialog : public wxDialog
58 {
59 public:
60 /**
61 Constructor specifying the message box properties.
62 Use ShowModal() to show the dialog.
63
64 @a style may be a bit list of the identifiers described above.
65
66 Notice that not all styles are compatible: only one of @c wxOK and
67 @c wxYES_NO may be specified (and one of them must be specified) and at
68 most one default button style can be used and it is only valid if the
69 corresponding button is shown in the message box.
70
71 @param parent
72 Parent window.
73 @param message
74 Message to show in the dialog.
75 @param caption
76 The dialog title.
77 @param style
78 Combination of style flags described above.
79 @param pos
80 Dialog position (ignored under MSW).
81 */
82 wxMessageDialog(wxWindow* parent, const wxString& message,
83 const wxString& caption = wxMessageBoxCaptionStr,
84 long style = wxOK | wxCENTRE,
85 const wxPoint& pos = wxDefaultPosition);
86
87 /**
88 Sets the extended message for the dialog: this message is usually an
89 extension of the short message specified in the constructor or set with
90 SetMessage().
91
92 If it is set, the main message appears highlighted -- if supported --
93 and this message appears beneath it in normal font. On the platforms
94 which don't support extended messages, it is simply appended to the
95 normal message with a new line separating them.
96 */
97 virtual void SetExtendedMessage(const wxString& extendedMessage);
98
99 /**
100 Sets the message shown by the dialog.
101 */
102 virtual void SetMessage(const wxString& message);
103
104 /**
105 Overrides the default labels of the OK and Cancel buttons.
106
107 Please see the remarks in SetYesNoLabels() documentation.
108 */
109 virtual bool SetOKCancelLabels(const ButtonLabel& ok,
110 const ButtonLabel& cancel);
111
112 /**
113 Overrides the default label of the OK button.
114
115 Please see the remarks in SetYesNoLabels() documentation.
116 */
117 virtual bool SetOKLabel(const ButtonLabel& ok);
118
119 /**
120 Overrides the default labels of the Yes, No and Cancel buttons.
121
122 Please see the remarks in SetYesNoLabels() documentation.
123 */
124 virtual bool SetYesNoCancelLabels(const ButtonLabel& yes,
125 const ButtonLabel& no,
126 const ButtonLabel& cancel);
127
128 /**
129 Overrides the default labels of the Yes and No buttons.
130
131 The arguments of this function can be either strings or one of the
132 standard identifiers, such as @c wxID_APPLY or @c wxID_OPEN. Notice
133 that even if the label is specified as an identifier, the return value
134 of the dialog ShowModal() method still remains one of @c wxID_OK, @c
135 wxID_CANCEL, @c wxID_YES or @c wxID_NO values, i.e. this identifier
136 changes only the label appearance but not the return code generated by
137 the button. It is possible to mix stock identifiers and string labels
138 in the same function call, for example:
139 @code
140 wxMessageDialog dlg(...);
141 dlg.SetYesNoLabels(wxID_SAVE, _("&Don't save"));
142 @endcode
143
144 Also notice that this function is not currently available on all
145 platforms (although as of wxWidgets 2.9.0 it is implemented in all
146 major ports), so it may return @false to indicate that the labels
147 couldn't be changed. If it returns @true (currently only under wxMac),
148 the labels were set successfully. Typically, if the function was used
149 successfully, the main dialog message may need to be changed, e.g.:
150 @code
151 wxMessageDialog dlg(...);
152 if ( dlg.SetYesNoLabels(_("&Quit"), _("&Don't quit")) )
153 dlg.SetMessage(_("What do you want to do?"));
154 else // buttons have standard "Yes"/"No" values, so rephrase the question
155 dlg.SetMessage(_("Do you really want to quit?"));
156 @endcode
157 */
158 virtual bool SetYesNoLabels(const ButtonLabel& yes, const ButtonLabel& no);
159
160 /**
161 Shows the dialog, returning one of wxID_OK, wxID_CANCEL, wxID_YES, wxID_NO.
162
163 Notice that this method returns the identifier of the button which was
164 clicked unlike wxMessageBox() function.
165 */
166 virtual int ShowModal();
167 };
168
169
170
171 // ============================================================================
172 // Global functions/macros
173 // ============================================================================
174
175 /** @addtogroup group_funcmacro_dialog */
176 //@{
177
178 /**
179 Show a general purpose message dialog.
180
181 This is a convenient function which is usually used instead of using
182 wxMessageDialog directly. Notice however that some of the features, such as
183 extended text and custom labels for the message box buttons, are not
184 provided by this function but only by wxMessageDialog.
185
186 The return value is one of: @c wxYES, @c wxNO, @c wxCANCEL or @c wxOK
187 (notice that this return value is @b different from the return value of
188 wxMessageDialog::ShowModal()).
189
190 For example:
191 @code
192 int answer = wxMessageBox("Quit program?", "Confirm",
193 wxYES_NO | wxCANCEL, main_frame);
194 if (answer == wxYES)
195 main_frame->Close();
196 @endcode
197
198 @a message may contain newline characters, in which case the message will
199 be split into separate lines, to cater for large messages.
200
201 @param message
202 Message to show in the dialog.
203 @param caption
204 The dialog title.
205 @param parent
206 Parent window.
207 @param style
208 Combination of style flags described in wxMessageDialog documentation.
209 @param x
210 Horizontal dialog position (ignored under MSW). Use ::wxDefaultCoord
211 for @a x and @a y to let the system position the window.
212 @param y
213 Vertical dialog position (ignored under MSW).
214 @header{wx/msgdlg.h}
215 */
216 int wxMessageBox(const wxString& message,
217 const wxString& caption = "Message",
218 int style = wxOK,
219 wxWindow* parent = NULL,
220 int x = wxDefaultCoord,
221 int y = wxDefaultCoord);
222
223 //@}
224