implement support for custom button labels in wxMessageBox under MSW; refactor the code to reuse the existing setters in Mac ports for MSW as well
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -107,8 +107,101 @@ protected:
|
||||
m_extendedMessage,
|
||||
m_caption;
|
||||
long m_dialogStyle;
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxMessageDialogBase)
|
||||
};
|
||||
|
||||
// this is a helper class for native wxMessageDialog implementations which need
|
||||
// to store the custom button labels as member variables and then use them in
|
||||
// ShowModal() (there could conceivably be a port which would have some native
|
||||
// functions for setting these labels immediately and we also don't need to
|
||||
// store them at all if custom labels are not supported, which is why we do
|
||||
// this in a separate class and not wxMessageDialogBase itself)
|
||||
#if defined(__WXCOCOA__) || defined(__WXMAC__) || defined(__WXMSW__)
|
||||
|
||||
class WXDLLIMPEXP_CORE wxMessageDialogWithCustomLabels
|
||||
: public wxMessageDialogBase
|
||||
{
|
||||
public:
|
||||
// ctors
|
||||
wxMessageDialogWithCustomLabels() { }
|
||||
wxMessageDialogWithCustomLabels(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& caption,
|
||||
long style)
|
||||
: wxMessageDialogBase(parent, message, caption, style)
|
||||
{
|
||||
}
|
||||
|
||||
// customization of the message box buttons
|
||||
virtual bool SetYesNoLabels(const wxString& yes,const wxString& no)
|
||||
{
|
||||
DoSetCustomLabel(m_yes, yes);
|
||||
DoSetCustomLabel(m_no, no);
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool SetYesNoCancelLabels(const wxString& yes,
|
||||
const wxString& no,
|
||||
const wxString& cancel)
|
||||
{
|
||||
DoSetCustomLabel(m_yes, yes);
|
||||
DoSetCustomLabel(m_no, no);
|
||||
DoSetCustomLabel(m_cancel, cancel);
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool SetOKLabel(const wxString& ok)
|
||||
{
|
||||
DoSetCustomLabel(m_ok, ok);
|
||||
return true;
|
||||
}
|
||||
|
||||
virtual bool SetOKCancelLabels(const wxString& ok, const wxString& cancel)
|
||||
{
|
||||
DoSetCustomLabel(m_ok, ok);
|
||||
DoSetCustomLabel(m_cancel, cancel);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected:
|
||||
// test if any custom labels were set
|
||||
bool HasCustomLabels() const
|
||||
{
|
||||
return !(m_ok.empty() && m_cancel.empty() &&
|
||||
m_yes.empty() && m_no.empty());
|
||||
}
|
||||
|
||||
// these functions return the label to be used for the button which is
|
||||
// either a custom label explicitly set by the user or the default label,
|
||||
// i.e. they always return a valid string
|
||||
wxString GetYesLabel() const { return m_yes.empty() ? _("Yes") : m_yes; }
|
||||
wxString GetNoLabel() const { return m_no.empty() ? _("No") : m_no; }
|
||||
wxString GetOKLabel() const { return m_ok.empty() ? _("OK") : m_ok; }
|
||||
wxString GetCancelLabel() const
|
||||
{ return m_cancel.empty() ? _("Cancel") : m_cancel; }
|
||||
|
||||
private:
|
||||
// this function is called by our public SetXXXLabels() and should assign
|
||||
// the value to var with possibly some transformation (e.g. Cocoa version
|
||||
// currently uses this to remove any accelerators from the button strings)
|
||||
virtual void DoSetCustomLabel(wxString& var, const wxString& value)
|
||||
{
|
||||
var = value;
|
||||
}
|
||||
|
||||
// labels for the buttons, initially empty meaning that the defaults should
|
||||
// be used, use GetYes/No/OK/CancelLabel() to access them
|
||||
wxString m_yes,
|
||||
m_no,
|
||||
m_ok,
|
||||
m_cancel;
|
||||
|
||||
DECLARE_NO_COPY_CLASS(wxMessageDialogWithCustomLabels)
|
||||
};
|
||||
|
||||
#endif // ports needing wxMessageDialogWithCustomLabels
|
||||
|
||||
#if defined(__WX_COMPILING_MSGDLGG_CPP__) || \
|
||||
defined(__WXUNIVERSAL__) || defined(__WXGPE__) || \
|
||||
(defined(__WXGTK__) && !defined(__WXGTK20__))
|
||||
|
Reference in New Issue
Block a user