2afb9e1690
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
146 lines
4.2 KiB
C++
146 lines
4.2 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/msgdlgg.h
|
|
// Purpose: common header and base class for wxMessageDialog
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created:
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) Julian Smart
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_MSGDLG_H_BASE_
|
|
#define _WX_MSGDLG_H_BASE_
|
|
|
|
#include "wx/defs.h"
|
|
|
|
#if wxUSE_MSGDLG
|
|
|
|
#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)
|
|
{
|
|
wxASSERT_MSG( ((style & wxYES_NO) == wxYES_NO) || ((style & wxYES_NO) == 0),
|
|
_T("wxYES and wxNO may only be used together in wxMessageDialog") );
|
|
|
|
wxASSERT_MSG( (style & wxID_OK) != wxID_OK,
|
|
_T("wxMessageBox: Did you mean wxOK (and not wxID_OK)?") );
|
|
|
|
m_dialogStyle = style;
|
|
}
|
|
|
|
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
|
|
{
|
|
wxString msg = m_message;
|
|
if ( !m_extendedMessage.empty() )
|
|
msg << "\n\n" << m_extendedMessage;
|
|
|
|
return msg;
|
|
}
|
|
|
|
wxString m_message,
|
|
m_extendedMessage,
|
|
m_caption;
|
|
long m_dialogStyle;
|
|
};
|
|
|
|
#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"
|
|
#elif defined(__WXMSW__)
|
|
#include "wx/msw/msgdlg.h"
|
|
#elif defined(__WXMOTIF__)
|
|
#include "wx/motif/msgdlg.h"
|
|
#elif defined(__WXGTK20__)
|
|
#include "wx/gtk/msgdlg.h"
|
|
#elif defined(__WXMAC__)
|
|
#include "wx/mac/msgdlg.h"
|
|
#elif defined(__WXPM__)
|
|
#include "wx/os2/msgdlg.h"
|
|
#endif
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxMessageBox: the simplest way to use wxMessageDialog
|
|
// ----------------------------------------------------------------------------
|
|
|
|
int WXDLLEXPORT wxMessageBox(const wxString& message,
|
|
const wxString& caption = wxMessageBoxCaptionStr,
|
|
long style = wxOK | wxCENTRE,
|
|
wxWindow *parent = NULL,
|
|
int x = wxDefaultCoord, int y = wxDefaultCoord);
|
|
|
|
#endif // wxUSE_MSGDLG
|
|
|
|
#endif // _WX_MSGDLG_H_BASE_
|