wxWidgets/interface/wx/richmsgdlg.h
Tobias Taschner d6b88ca399 Add footer text and icon to wxRichMessageDialog
The underlying Windows TaskDialog supports adding an additional footer
to the message dialog. This makes the native functionality available
and implements it in the generic version.

See https://github.com/wxWidgets/wxWidgets/pull/573
2018-01-20 16:53:13 +01:00

178 lines
5.6 KiB
Objective-C

/////////////////////////////////////////////////////////////////////////////
// Name: wx/richmsgdlg.h
// Purpose: interface of wxRichMessageDialog
// Author: wxWidgets team
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
/**
@class wxRichMessageDialog
Extension of wxMessageDialog with additional functionality.
This class adds the possibility of using a checkbox (that is especially
useful for implementing the "Don't ask me again" kind of dialogs) and an
extra explanatory text which is initially collapsed and not shown to the
user but can be expanded to show more information.
Notice that currently the native dialog is used only under MSW when using
Vista or later Windows version. Elsewhere, or for older versions of
Windows, a generic implementation which is less familiar to the users is
used. Because of this it's recommended to use this class only if you do
need its extra functionality and use wxMessageDialog which does have native
implementation under all platforms otherwise. However if you do need to put
e.g. a checkbox in a dialog, you should definitely consider using this
class instead of using your own custom dialog because it will have much
better appearance at least under recent Windows versions.
To use this class, you need to create the dialog object and call
ShowCheckBox() and/or ShowDetailedText() to configure its contents.
Other than that, it is used in exactly the same way as wxMessageDialog and
supports all the styles supported by it. In particular, ShowModal() return
value is the same as for wxMessageDialog. The only difference is that you
need to use IsCheckBoxChecked() to examine the checkbox value if you had
called ShowCheckBox().
Here is a simple example:
@code
void MyFrame::ShowDialog()
{
if ( ... shouldn't show this dialog again ... )
return;
wxRichMessageDialog dlg(this, "Welcome to my wonderful program!");
dlg.ShowCheckBox("Don't show welcome dialog again");
dlg.ShowModal(); // return value ignored as we have "Ok" only anyhow
if ( dlg.IsCheckBoxChecked() )
... make sure we won't show it again the next time ...
}
@endcode
@since 2.9.2
@library{wxcore}
@category{cmndlg}
@see @ref overview_cmndlg_msg
*/
class wxRichMessageDialog : public wxRichMessageDialogBase
{
public:
/**
Constructor specifying the rich message dialog properties.
Works just like the constructor for wxMessageDialog.
*/
wxRichMessageDialog(wxWindow* parent,
const wxString& message,
const wxString& caption = wxMessageBoxCaptionStr,
long style = wxOK | wxCENTRE);
/**
Shows a checkbox with a given label or hides it.
@param checkBoxText
If the parameter is non-empty a checkbox will be shown with that
label, otherwise it will be hidden.
@param checked
The initial state of the checkbox.
*/
void ShowCheckBox(const wxString& checkBoxText, bool checked = false);
/**
Retrieves the label for the checkbox.
@return
The label for the checkbox, will be the empty string if no
checkbox is used.
*/
wxString GetCheckBoxText() const;
/**
Shows or hides a detailed text and an expander that is used to
show or hide the detailed text.
@param detailedText
The detailed text that can be expanded when the dialog is shown,
if empty no detailed text will be used.
*/
void ShowDetailedText(const wxString& detailedText);
/**
Retrieves the detailed text.
@return
The detailed text or empty if detailed text is not used.
*/
wxString GetDetailedText() const;
/**
Shows or hides a footer text that is used at the bottom of
the dialog together with an optional icon.
@param footerText
The footer text if empty no footer text will be used.
@see SetFooterIcon(), GetFooterText()
@since 3.1.1
*/
void SetFooterText(const wxString& footerText);
/**
Retrieves the footer text.
@return
The footer text or empty if footer text is not used.
@since 3.1.1
*/
wxString GetFooterText() const;
/**
Specify the footer icon set together with the footer text.
Valid values are @c wxICON_INFORMATION, @c wxICON_WARNING,
@c wxICON_AUTH_NEEDED and @c wxICON_ERROR (notice that
@c wxICON_QUESTION is not allowed here).
@see GetFooterIcon(), SetFooterText()
@since 3.1.1
*/
void SetFooterIcon(int icon);
/**
Retrieves the footer icon.
@return
The footer icon or 0 if footer icon is not used.
@see SetFooterIcon()
@since 3.1.1
*/
int GetFooterIcon() const;
/**
Retrieves the state of the checkbox.
If this method is called before showing the dialog, the initial value
of the checkbox, as set by ShowCheckBox() is used. If it is called
after calling wxDialog::ShowModal(), the value set by the user is
returned.
@return @true if the checkbox is checked or @false if not.
*/
bool IsCheckBoxChecked() const;
/**
Shows the dialog, returning one of wxID_OK, wxID_CANCEL, wxID_YES, wxID_NO.
IsCheckBoxChecked() can be called afterwards to retrieve the value of the
check box if one was used.
*/
virtual int ShowModal();
};