1. Derive wxMessageDialogBase from wxDialog (why did we use multiple
inheritance here?), moved more wxMessageDialog fields into the base class 2. Added functions to set the text of message box buttons (patch 1700393, currently only implemented for wxMac) 3. Added wxMessageDialog::SetMessage() and SetExtendedMessage() and implemented them for wxMac (part of the patch), wxGTK 2.4+ and in a generic way for everybody else 4. Allow changing the dialog attributes between creating and showing it, for this the real dialog creation is now done on in ShowModal() in all ports git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -9,36 +9,33 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __MSGDLGH_G__
|
||||
#define __MSGDLGH_G__
|
||||
#ifndef _WX_GENERIC_MSGDLGG_H_
|
||||
#define _WX_GENERIC_MSGDLGG_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/dialog.h"
|
||||
|
||||
// type is an 'or' (|) of wxOK, wxCANCEL, wxYES_NO
|
||||
// Returns wxYES/NO/OK/CANCEL
|
||||
|
||||
extern WXDLLEXPORT_DATA(const wxChar) wxMessageBoxCaptionStr[];
|
||||
|
||||
class WXDLLEXPORT wxGenericMessageDialog: public wxDialog, public wxMessageDialogBase
|
||||
class WXDLLEXPORT wxGenericMessageDialog : public wxMessageDialogBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxGenericMessageDialog)
|
||||
|
||||
public:
|
||||
wxGenericMessageDialog(wxWindow *parent, const wxString& message,
|
||||
const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition);
|
||||
wxGenericMessageDialog(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK|wxCENTRE,
|
||||
const wxPoint& pos = wxDefaultPosition);
|
||||
|
||||
virtual int ShowModal();
|
||||
|
||||
protected:
|
||||
void OnYes(wxCommandEvent& event);
|
||||
void OnNo(wxCommandEvent& event);
|
||||
void OnCancel(wxCommandEvent& event);
|
||||
|
||||
private:
|
||||
void DoCreateMsgdialog();
|
||||
|
||||
wxPoint m_pos;
|
||||
bool m_created;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
DECLARE_DYNAMIC_CLASS(wxGenericMessageDialog)
|
||||
};
|
||||
|
||||
#if (!defined( __WXMSW__ ) && !defined( __WXMAC__) && !defined(__WXPM__)) || defined(__WXUNIVERSAL__)
|
||||
#define wxMessageDialog wxGenericMessageDialog
|
||||
#endif
|
||||
|
||||
#endif // __MSGDLGH_G__
|
||||
#endif // _WX_GENERIC_MSGDLGG_H_
|
||||
|
||||
@@ -9,27 +9,18 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __MSGDLG_H__
|
||||
#define __MSGDLG_H__
|
||||
#ifndef _WX_GTK_MSGDLG_H_
|
||||
#define _WX_GTK_MSGDLG_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/dialog.h"
|
||||
|
||||
// type is an 'or' (|) of wxOK, wxCANCEL, wxYES_NO
|
||||
// Returns wxYES/NO/OK/CANCEL
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar) wxMessageBoxCaptionStr[];
|
||||
|
||||
class WXDLLEXPORT wxMessageDialog: public wxDialog, public wxMessageDialogBase
|
||||
class WXDLLEXPORT wxMessageDialog : public wxMessageDialogBase
|
||||
{
|
||||
public:
|
||||
wxMessageDialog(wxWindow *parent, const wxString& message,
|
||||
const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK|wxCENTRE,
|
||||
const wxPoint& pos = wxDefaultPosition);
|
||||
virtual ~wxMessageDialog();
|
||||
|
||||
int ShowModal();
|
||||
virtual int ShowModal();
|
||||
virtual bool Show( bool WXUNUSED(show) = true ) { return false; };
|
||||
|
||||
protected:
|
||||
@@ -42,10 +33,11 @@ protected:
|
||||
int WXUNUSED(width), int WXUNUSED(height)) {}
|
||||
|
||||
private:
|
||||
wxString m_caption;
|
||||
wxString m_message;
|
||||
// create the real GTK+ dialog: this is done from ShowModal() to allow
|
||||
// changing the message between constructing the dialog and showing it
|
||||
void GTKCreateMsgDialog();
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif // _WX_GTK_MSGDLG_H_
|
||||
|
||||
@@ -13,23 +13,8 @@
|
||||
#ifndef _WX_MSGBOXDLG_H_
|
||||
#define _WX_MSGBOXDLG_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/dialog.h"
|
||||
|
||||
/*
|
||||
* Message box dialog
|
||||
*/
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar) wxMessageBoxCaptionStr[];
|
||||
|
||||
class WXDLLEXPORT wxMessageDialog: public wxDialog, public wxMessageDialogBase
|
||||
class WXDLLEXPORT wxMessageDialog : public wxMessageDialogBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
|
||||
protected:
|
||||
wxString m_caption;
|
||||
wxString m_message;
|
||||
wxWindow * m_parent;
|
||||
public:
|
||||
wxMessageDialog(wxWindow *parent,
|
||||
const wxString& message,
|
||||
@@ -37,15 +22,27 @@ public:
|
||||
long style = wxOK|wxCENTRE,
|
||||
const wxPoint& pos = wxDefaultPosition);
|
||||
|
||||
int ShowModal();
|
||||
virtual int ShowModal();
|
||||
|
||||
// customization of the message box
|
||||
virtual bool SetYesNoLabels(const wxString& yes,const wxString& no);
|
||||
virtual bool SetYesNoCancelLabels(const wxString& yes, const wxString& no, const wxString& cancel);
|
||||
virtual bool SetOKLabel(const wxString& ok);
|
||||
virtual bool SetOKCancelLabels(const wxString& ok, const wxString& cancel);
|
||||
|
||||
protected:
|
||||
// not supported for message dialog, RR
|
||||
// not supported for message dialog
|
||||
virtual void DoSetSize(int WXUNUSED(x), int WXUNUSED(y),
|
||||
int WXUNUSED(width), int WXUNUSED(height),
|
||||
int WXUNUSED(sizeFlags) = wxSIZE_AUTO) {}
|
||||
|
||||
// labels for the buttons
|
||||
wxString m_yes,
|
||||
m_no,
|
||||
m_ok,
|
||||
m_cancel;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
};
|
||||
|
||||
#endif
|
||||
// _WX_MSGBOXDLG_H_
|
||||
#endif // _WX_MSGBOXDLG_H_
|
||||
|
||||
@@ -13,38 +13,32 @@
|
||||
#ifndef _WX_MSGBOXDLG_H_
|
||||
#define _WX_MSGBOXDLG_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/dialog.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// Message box dialog
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar) wxMessageBoxCaptionStr[];
|
||||
|
||||
class WXDLLEXPORT wxMessageDialog: public wxDialog, public wxMessageDialogBase
|
||||
class WXDLLEXPORT wxMessageDialog : public wxMessageDialogBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
|
||||
public:
|
||||
wxMessageDialog(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK | wxCENTRE,
|
||||
const wxPoint& pos = wxDefaultPosition);
|
||||
const wxString& message,
|
||||
const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK | wxCENTRE,
|
||||
const wxPoint& WXUNUSED(pos) = wxDefaultPosition)
|
||||
: wxMessageDialogBase(parent, message, caption, style)
|
||||
{
|
||||
}
|
||||
|
||||
int ShowModal();
|
||||
virtual int ShowModal();
|
||||
|
||||
// implementation only from now on
|
||||
// called by the Motif callback
|
||||
void SetResult(long result) { m_result = result; }
|
||||
|
||||
protected:
|
||||
wxString m_caption;
|
||||
wxString m_message;
|
||||
wxWindow * m_parent;
|
||||
long m_result;
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
};
|
||||
|
||||
#endif
|
||||
// _WX_MSGBOXDLG_H_
|
||||
#endif // _WX_MSGBOXDLG_H_
|
||||
|
||||
@@ -16,8 +16,66 @@
|
||||
|
||||
#if wxUSE_MSGDLG
|
||||
|
||||
class WXDLLEXPORT wxMessageDialogBase
|
||||
#include "wx/dialog.h"
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar) wxMessageBoxCaptionStr[];
|
||||
|
||||
class WXDLLEXPORT wxMessageDialogBase : public wxDialog
|
||||
{
|
||||
public:
|
||||
// ctors
|
||||
wxMessageDialogBase() { m_dialogStyle = 0; }
|
||||
wxMessageDialogBase(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& caption,
|
||||
long style)
|
||||
: m_message(message),
|
||||
m_caption(caption)
|
||||
{
|
||||
m_parent = parent;
|
||||
SetMessageDialogStyle(style);
|
||||
}
|
||||
|
||||
// virtual dtor for the base class
|
||||
virtual ~wxMessageDialogBase() { }
|
||||
|
||||
|
||||
// methods for setting up more custom message dialogs -- all functions
|
||||
// return false if they're not implemented
|
||||
virtual bool SetYesNoLabels(const wxString& WXUNUSED(yes),
|
||||
const wxString& WXUNUSED(no))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool SetYesNoCancelLabels(const wxString& WXUNUSED(yes),
|
||||
const wxString& WXUNUSED(no),
|
||||
const wxString& WXUNUSED(cancel))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool SetOKLabel(const wxString& WXUNUSED(ok))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual bool SetOKCancelLabels(const wxString& WXUNUSED(ok),
|
||||
const wxString& WXUNUSED(cancel))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual void SetMessage(const wxString& message)
|
||||
{
|
||||
m_message = message;
|
||||
}
|
||||
|
||||
virtual void SetExtendedMessage(const wxString& extendedMessage)
|
||||
{
|
||||
m_extendedMessage = extendedMessage;
|
||||
}
|
||||
|
||||
protected:
|
||||
// common validation of wxMessageDialog style
|
||||
void SetMessageDialogStyle(long style)
|
||||
@@ -30,37 +88,46 @@ protected:
|
||||
|
||||
m_dialogStyle = style;
|
||||
}
|
||||
inline long GetMessageDialogStyle() const
|
||||
|
||||
long GetMessageDialogStyle() const { return m_dialogStyle; }
|
||||
|
||||
|
||||
// for the platforms not supporting separate main and extended messages
|
||||
// this function should be used to combine both of them in a single string
|
||||
wxString GetFullMessage() const
|
||||
{
|
||||
return m_dialogStyle;
|
||||
wxString msg = m_message;
|
||||
if ( !m_extendedMessage.empty() )
|
||||
msg << "\n\n" << m_extendedMessage;
|
||||
|
||||
return msg;
|
||||
}
|
||||
|
||||
private:
|
||||
wxString m_message,
|
||||
m_extendedMessage,
|
||||
m_caption;
|
||||
long m_dialogStyle;
|
||||
};
|
||||
|
||||
#if defined(__WX_COMPILING_MSGDLGG_CPP__)
|
||||
#include "wx/generic/msgdlgg.h"
|
||||
#elif defined(__WXUNIVERSAL__) || defined(__WXGPE__)
|
||||
#include "wx/generic/msgdlgg.h"
|
||||
#if defined(__WX_COMPILING_MSGDLGG_CPP__) || \
|
||||
defined(__WXUNIVERSAL__) || defined(__WXGPE__) || \
|
||||
defined(__WXCOCOA__) || \
|
||||
(defined(__WXGTK__) && !defined(__WXGTK20__))
|
||||
#include "wx/generic/msgdlgg.h"
|
||||
|
||||
#define wxMessageDialog wxGenericMessageDialog
|
||||
#elif defined(__WXPALMOS__)
|
||||
#include "wx/palmos/msgdlg.h"
|
||||
#include "wx/palmos/msgdlg.h"
|
||||
#elif defined(__WXMSW__)
|
||||
#include "wx/msw/msgdlg.h"
|
||||
#include "wx/msw/msgdlg.h"
|
||||
#elif defined(__WXMOTIF__)
|
||||
#include "wx/motif/msgdlg.h"
|
||||
#include "wx/motif/msgdlg.h"
|
||||
#elif defined(__WXGTK20__)
|
||||
#include "wx/gtk/msgdlg.h"
|
||||
#elif defined(__WXGTK__)
|
||||
#include "wx/generic/msgdlgg.h"
|
||||
#elif defined(__WXGTK__)
|
||||
#include "wx/generic/msgdlgg.h"
|
||||
#include "wx/gtk/msgdlg.h"
|
||||
#elif defined(__WXMAC__)
|
||||
#include "wx/mac/msgdlg.h"
|
||||
#elif defined(__WXCOCOA__)
|
||||
#include "wx/generic/msgdlgg.h"
|
||||
#include "wx/mac/msgdlg.h"
|
||||
#elif defined(__WXPM__)
|
||||
#include "wx/os2/msgdlg.h"
|
||||
#include "wx/os2/msgdlg.h"
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -75,5 +142,4 @@ int WXDLLEXPORT wxMessageBox(const wxString& message,
|
||||
|
||||
#endif // wxUSE_MSGDLG
|
||||
|
||||
#endif
|
||||
// _WX_MSGDLG_H_BASE_
|
||||
#endif // _WX_MSGDLG_H_BASE_
|
||||
|
||||
@@ -12,31 +12,25 @@
|
||||
#ifndef _WX_MSGBOXDLG_H_
|
||||
#define _WX_MSGBOXDLG_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/dialog.h"
|
||||
|
||||
/*
|
||||
* Message box dialog
|
||||
*/
|
||||
|
||||
extern WXDLLEXPORT_DATA(const wxChar) wxMessageBoxCaptionStr[];
|
||||
|
||||
class WXDLLEXPORT wxMessageDialog: public wxDialog, public wxMessageDialogBase
|
||||
class WXDLLEXPORT wxMessageDialog : public wxMessageDialogBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
protected:
|
||||
wxString m_caption;
|
||||
wxString m_message;
|
||||
wxWindow * m_parent;
|
||||
public:
|
||||
wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition);
|
||||
wxMessageDialog(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK|wxCENTRE,
|
||||
const wxPoint& WXUNUSED(pos) = wxDefaultPosition)
|
||||
: wxMessageDialogBase(parent, message, caption, style)
|
||||
{
|
||||
}
|
||||
|
||||
int ShowModal(void);
|
||||
|
||||
virtual int ShowModal();
|
||||
|
||||
protected:
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
DECLARE_NO_COPY_CLASS(wxMessageDialog)
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
// _WX_MSGBOXDLG_H_
|
||||
#endif // _WX_MSGBOXDLG_H_
|
||||
|
||||
@@ -13,31 +13,23 @@
|
||||
#ifndef _WX_MSGBOXDLG_H_
|
||||
#define _WX_MSGBOXDLG_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/dialog.h"
|
||||
|
||||
/*
|
||||
* Message box dialog
|
||||
*/
|
||||
|
||||
class WXDLLEXPORT wxMessageDialog : public wxDialog, public wxMessageDialogBase
|
||||
class WXDLLEXPORT wxMessageDialog : public wxMessageDialogBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
public:
|
||||
wxMessageDialog( wxWindow* pParent
|
||||
,const wxString& rsMessage
|
||||
,const wxString& rsCaption = wxMessageBoxCaptionStr
|
||||
,long lStyle = wxOK|wxCENTRE
|
||||
,const wxPoint& rPos = wxDefaultPosition
|
||||
);
|
||||
,const wxPoint& WXUNUSED(rPos) = wxDefaultPosition
|
||||
)
|
||||
: wxMessageDialogBase(pParent, rsMessage, rsCaption, lStyle)
|
||||
{
|
||||
}
|
||||
|
||||
int ShowModal(void);
|
||||
|
||||
protected:
|
||||
wxString m_sCaption;
|
||||
wxString m_sMessage;
|
||||
wxWindow* m_pParent;
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
}; // end of CLASS wxMessageDialog
|
||||
|
||||
#endif
|
||||
// _WX_MSGBOXDLG_H_
|
||||
#endif // _WX_MSGBOXDLG_H_
|
||||
|
||||
@@ -12,28 +12,21 @@
|
||||
#ifndef _WX_MSGBOXDLG_H_
|
||||
#define _WX_MSGBOXDLG_H_
|
||||
|
||||
#include "wx/defs.h"
|
||||
#include "wx/dialog.h"
|
||||
|
||||
/*
|
||||
* Message box dialog
|
||||
*/
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar) wxMessageBoxCaptionStr[];
|
||||
|
||||
class WXDLLEXPORT wxMessageDialog: public wxDialog, public wxMessageDialogBase
|
||||
class WXDLLEXPORT wxMessageDialog : public wxMessageDialogBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
protected:
|
||||
wxString m_caption;
|
||||
wxString m_message;
|
||||
wxWindow * m_parent;
|
||||
public:
|
||||
wxMessageDialog(wxWindow *parent, const wxString& message, const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK|wxCENTRE, const wxPoint& pos = wxDefaultPosition);
|
||||
wxMessageDialog(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& caption = wxMessageBoxCaptionStr,
|
||||
long style = wxOK|wxCENTRE,
|
||||
const wxPoint& WXUNUSED(pos) = wxDefaultPosition)
|
||||
: wxMessageDialogBase(parent, message, caption, style)
|
||||
{
|
||||
}
|
||||
|
||||
int ShowModal(void);
|
||||
virtual int ShowModal(void);
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxMessageDialog)
|
||||
DECLARE_NO_COPY_CLASS(wxMessageDialog)
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user