added support for custom labels in wxMessageBox for wxGTK too

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55482 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-09-05 17:27:20 +00:00
parent f4b0832d72
commit 9276358892
4 changed files with 98 additions and 45 deletions

View File

@@ -12,7 +12,7 @@
#ifndef _WX_GTK_MSGDLG_H_
#define _WX_GTK_MSGDLG_H_
class WXDLLIMPEXP_CORE wxMessageDialog : public wxMessageDialogBase
class WXDLLIMPEXP_CORE wxMessageDialog : public wxMessageDialogWithCustomLabels
{
public:
wxMessageDialog(wxWindow *parent, const wxString& message,
@@ -21,7 +21,7 @@ public:
const wxPoint& pos = wxDefaultPosition);
virtual int ShowModal();
virtual bool Show( bool WXUNUSED(show) = true ) { return false; };
virtual bool Show(bool WXUNUSED(show) = true) { return false; }
protected:
// implement some base class methods to do nothing to avoid asserts and
@@ -33,6 +33,15 @@ protected:
int WXUNUSED(width), int WXUNUSED(height)) {}
private:
// override to use stock GTK+ defaults instead of just string ones
virtual wxString GetDefaultYesLabel() const;
virtual wxString GetDefaultNoLabel() const;
virtual wxString GetDefaultOKLabel() const;
virtual wxString GetDefaultCancelLabel() const;
// override to convert wx mnemonics to GTK+ ones
virtual void DoSetCustomLabel(wxString& var, const wxString& value);
// create the real GTK+ dialog: this is done from ShowModal() to allow
// changing the message between constructing the dialog and showing it
void GTKCreateMsgDialog();

View File

@@ -117,7 +117,10 @@ protected:
// 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__)
#if defined(__WXCOCOA__) || \
defined(__WXGTK20__) || \
defined(__WXMAC__) || \
defined(__WXMSW__)
class WXDLLIMPEXP_CORE wxMessageDialogWithCustomLabels
: public wxMessageDialogBase
@@ -175,11 +178,14 @@ protected:
// 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 GetYesLabel() const
{ return m_yes.empty() ? GetDefaultYesLabel() : m_yes; }
wxString GetNoLabel() const
{ return m_no.empty() ? GetDefaultNoLabel() : m_no; }
wxString GetOKLabel() const
{ return m_ok.empty() ? GetDefaultOKLabel() : m_ok; }
wxString GetCancelLabel() const
{ return m_cancel.empty() ? _("Cancel") : m_cancel; }
{ return m_cancel.empty() ? GetDefaultCancelLabel() : m_cancel; }
private:
// this function is called by our public SetXXXLabels() and should assign
@@ -190,6 +196,13 @@ private:
var = value;
}
// these functions may be overridden to provide different defaults for the
// default button labels (this is used by wxGTK)
virtual wxString GetDefaultYesLabel() const { return _("Yes"); }
virtual wxString GetDefaultNoLabel() const { return _("No"); }
virtual wxString GetDefaultOKLabel() const { return _("OK"); }
virtual wxString GetDefaultCancelLabel() const { return _("Cancel"); }
// labels for the buttons, initially empty meaning that the defaults should
// be used, use GetYes/No/OK/CancelLabel() to access them
wxString m_yes,