| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: msgdlg.h
- // Purpose: interface of wxMessageDialog
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- Default message box caption string.
- */
- const char wxMessageBoxCaptionStr[] = "Message";
- /**
- @class wxMessageDialog
- This class represents a dialog that shows a single or multi-line message,
- with a choice of OK, Yes, No and Cancel buttons.
- @beginStyleTable
- @style{wxOK}
- Puts an Ok button in the message box. May be combined with @c wxCANCEL.
- @style{wxCANCEL}
- Puts a Cancel button in the message box. Must be combined with
- either @c wxOK or @c wxYES_NO.
- @style{wxYES_NO}
- Puts Yes and No buttons in the message box. It is recommended to always
- use @c wxCANCEL with this style as otherwise the message box won't have
- a close button under wxMSW and the user will be forced to answer it.
- @style{wxHELP}
- Puts a Help button to the message box. This button can have special
- appearance or be specially positioned if its label is not changed from
- the default one. Notice that using this button is not supported when
- showing a message box from non-main thread in wxOSX/Cocoa and it is not
- supported in wxOSX/Carbon at all. Available since wxWidgets 2.9.3.
- @style{wxNO_DEFAULT}
- Makes the "No" button default, can only be used with @c wxYES_NO.
- @style{wxCANCEL_DEFAULT}
- Makes the "Cancel" button default, can only be used with @c wxCANCEL.
- This style is currently not supported (and ignored) in wxOSX.
- @style{wxYES_DEFAULT}
- Makes the "Yes" button default, this is the default behaviour and
- this flag exists solely for symmetry with @c wxNO_DEFAULT.
- @style{wxOK_DEFAULT}
- Makes the "OK" button default, this is the default behaviour and
- this flag exists solely for symmetry with @c wxCANCEL_DEFAULT.
- @style{wxICON_NONE}
- Displays no icon in the dialog if possible (an icon might still be
- displayed if the current platform mandates its use). This style may be
- used to prevent the dialog from using the default icon based on @c
- wxYES_NO presence as explained in @c wxICON_QUESTION and @c
- wxICON_INFORMATION documentation below.
- @style{wxICON_EXCLAMATION}
- Displays an exclamation, or warning, icon in the dialog.
- @style{wxICON_ERROR}
- Displays an error icon in the dialog.
- @style{wxICON_HAND}
- Displays an error symbol, this is a MSW-inspired synonym for @c wxICON_ERROR.
- @style{wxICON_QUESTION}
- Displays a question mark symbol. This icon is automatically used
- with @c wxYES_NO so it's usually unnecessary to specify it explicitly.
- This style is not supported for message dialogs under wxMSW when a task
- dialog is used to implement them (i.e. when running under Windows Vista
- or later) because <a href="http://msdn.microsoft.com/en-us/library/aa511273.aspx">Microsoft
- guidelines</a> indicate that no icon should be used for routine
- confirmations. If it is specified, no icon will be displayed.
- @style{wxICON_INFORMATION}
- Displays an information symbol. This icon is used by default if
- @c wxYES_NO is not given so it is usually unnecessary to specify it
- explicitly.
- @style{wxICON_AUTH_NEEDED}
- Displays an authentication needed symbol. This style is only supported
- for message dialogs under wxMSW when a task dialog is used to implement
- them (i.e. when running under Windows Vista or later). In other cases
- the default icon selection logic will be used. Note this can be
- combined with other styles to provide a fallback. For instance, using
- wxICON_AUTH_NEEDED | wxICON_QUESTION will show a shield symbol on
- Windows Vista or above and a question symbol on other platforms.
- Available since wxWidgets 2.9.5
- @style{wxSTAY_ON_TOP}
- Makes the message box stay on top of all other windows and not only
- just its parent (currently implemented only under MSW and GTK).
- @style{wxCENTRE}
- Centre the message box on its parent or on the screen if parent is not
- specified.
- Setting this style under MSW makes no differences as the dialog is
- always centered on the parent.
- @endStyleTable
- @library{wxcore}
- @category{cmndlg}
- @see @ref overview_cmndlg_msg
- @see wxRichMessageDialog
- */
- class wxMessageDialog : public wxDialog
- {
- public:
- /**
- Helper class allowing to use either stock id or string labels.
- This class should never be used explicitly and is not really part of
- wxWidgets API but rather is just an implementation helper allowing the
- methods such as SetYesNoLabels() and SetOKCancelLabels() below to be
- callable with either stock ids (e.g. ::wxID_CLOSE) or strings
- ("&Close").
- */
- class ButtonLabel
- {
- public:
- /// Construct the label from a stock id.
- ButtonLabel(int stockId);
- /// Construct the label from the specified string.
- ButtonLabel(const wxString& label);
- /**
- Return the associated label as string.
- Get the string label, whether it was originally specified directly
- or as a stock id -- this is only useful for platforms without native
- stock items id support
- */
- wxString GetAsString() const;
- /**
- Return the stock id or wxID_NONE if this is not a stock label.
- */
- int GetStockId() const;
- };
- /**
- Constructor specifying the message box properties.
- Use ShowModal() to show the dialog.
- @a style may be a bit list of the identifiers described above.
- Notice that not all styles are compatible: only one of @c wxOK and
- @c wxYES_NO may be specified (and one of them must be specified) and at
- most one default button style can be used and it is only valid if the
- corresponding button is shown in the message box.
- @param parent
- Parent window.
- @param message
- Message to show in the dialog.
- @param caption
- The dialog title.
- @param style
- Combination of style flags described above.
- @param pos
- Dialog position (ignored under MSW).
- */
- wxMessageDialog(wxWindow* parent, const wxString& message,
- const wxString& caption = wxMessageBoxCaptionStr,
- long style = wxOK | wxCENTRE,
- const wxPoint& pos = wxDefaultPosition);
- /**
- Sets the extended message for the dialog: this message is usually an
- extension of the short message specified in the constructor or set with
- SetMessage().
- If it is set, the main message appears highlighted -- if supported --
- and this message appears beneath it in normal font. On the platforms
- which don't support extended messages, it is simply appended to the
- normal message with an empty line separating them.
- @since 2.9.0
- */
- virtual void SetExtendedMessage(const wxString& extendedMessage);
- /**
- Sets the label for the Help button.
- Please see the remarks in SetYesNoLabels() documentation.
- Notice that changing the label of the help button resets its special
- status (if any, this depends on the platform) and it will be treated
- just like another button in this case.
- @since 2.9.3
- */
- virtual bool SetHelpLabel(const ButtonLabel& help);
- /**
- Sets the message shown by the dialog.
- @since 2.9.0
- */
- virtual void SetMessage(const wxString& message);
- /**
- Overrides the default labels of the OK and Cancel buttons.
- Please see the remarks in SetYesNoLabels() documentation.
- @since 2.9.0
- */
- virtual bool SetOKCancelLabels(const ButtonLabel& ok,
- const ButtonLabel& cancel);
- /**
- Overrides the default label of the OK button.
- Please see the remarks in SetYesNoLabels() documentation.
- @since 2.9.0
- */
- virtual bool SetOKLabel(const ButtonLabel& ok);
- /**
- Overrides the default labels of the Yes, No and Cancel buttons.
- Please see the remarks in SetYesNoLabels() documentation.
- @since 2.9.0
- */
- virtual bool SetYesNoCancelLabels(const ButtonLabel& yes,
- const ButtonLabel& no,
- const ButtonLabel& cancel);
- /**
- Overrides the default labels of the Yes and No buttons.
- The arguments of this function can be either strings or one of the
- standard identifiers, such as @c wxID_APPLY or @c wxID_OPEN. Notice
- that even if the label is specified as an identifier, the return value
- of the dialog ShowModal() method still remains one of @c wxID_OK, @c
- wxID_CANCEL, @c wxID_YES or @c wxID_NO values, i.e. this identifier
- changes only the label appearance but not the return code generated by
- the button. It is possible to mix stock identifiers and string labels
- in the same function call, for example:
- @code
- wxMessageDialog dlg(...);
- dlg.SetYesNoLabels(wxID_SAVE, _("&Don't save"));
- @endcode
- Also notice that this function is not currently available on all
- platforms (although as of wxWidgets 2.9.0 it is implemented in all
- major ports), so it may return @false to indicate that the labels
- couldn't be changed. If it returns @true, the labels were set
- successfully.
- Typically, if the function was used successfully, the main dialog
- message may need to be changed, e.g.:
- @code
- wxMessageDialog dlg(...);
- if ( dlg.SetYesNoLabels(_("&Quit"), _("&Don't quit")) )
- dlg.SetMessage(_("What do you want to do?"));
- else // buttons have standard "Yes"/"No" values, so rephrase the question
- dlg.SetMessage(_("Do you really want to quit?"));
- @endcode
- @since 2.9.0
- */
- virtual bool SetYesNoLabels(const ButtonLabel& yes, const ButtonLabel& no);
- /**
- Shows the dialog, returning one of wxID_OK, wxID_CANCEL, wxID_YES,
- wxID_NO or wxID_HELP.
- Notice that this method returns the identifier of the button which was
- clicked unlike wxMessageBox() function.
- */
- virtual int ShowModal();
- wxString GetCaption() const;
- wxString GetMessage() const;
- wxString GetExtendedMessage() const;
- long GetMessageDialogStyle() const;
- bool HasCustomLabels() const;
- wxString GetYesLabel() const;
- wxString GetNoLabel() const;
- wxString GetOKLabel() const;
- wxString GetCancelLabel() const;
- wxString GetHelpLabel() const;
- long GetEffectiveIcon() const;
- };
- // ============================================================================
- // Global functions/macros
- // ============================================================================
- /** @addtogroup group_funcmacro_dialog */
- //@{
- /**
- Show a general purpose message dialog.
- This is a convenient function which is usually used instead of using
- wxMessageDialog directly. Notice however that some of the features, such as
- extended text and custom labels for the message box buttons, are not
- provided by this function but only by wxMessageDialog.
- The return value is one of: @c wxYES, @c wxNO, @c wxCANCEL, @c wxOK or @c
- wxHELP (notice that this return value is @b different from the return value
- of wxMessageDialog::ShowModal()).
- For example:
- @code
- int answer = wxMessageBox("Quit program?", "Confirm",
- wxYES_NO | wxCANCEL, main_frame);
- if (answer == wxYES)
- main_frame->Close();
- @endcode
- @a message may contain newline characters, in which case the message will
- be split into separate lines, to cater for large messages.
- @param message
- Message to show in the dialog.
- @param caption
- The dialog title.
- @param parent
- Parent window.
- @param style
- Combination of style flags described in wxMessageDialog documentation.
- @param x
- Horizontal dialog position (ignored under MSW). Use ::wxDefaultCoord
- for @a x and @a y to let the system position the window.
- @param y
- Vertical dialog position (ignored under MSW).
- @header{wx/msgdlg.h}
- */
- int wxMessageBox(const wxString& message,
- const wxString& caption = wxMessageBoxCaptionStr,
- int style = wxOK | wxCENTRE,
- wxWindow* parent = NULL,
- int x = wxDefaultCoord,
- int y = wxDefaultCoord);
- //@}
|