added wxCANCEL_DEFAULT style to wxMessageDialog (only implemented for MSW for now); also tightened up the style checks in wxMessageDialog::SetMessageDialogStyle()

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-09-11 23:37:35 +00:00
parent c9b6cebdab
commit f45d6ade08
4 changed files with 46 additions and 11 deletions

View File

@@ -309,6 +309,7 @@ All (GUI):
- Added wxWrapSizer (Arne Steinarson)
- Added wxSpinCtrlDouble (John Labenski)
- Support custom labels in wxMessageDialog (Gareth Simpson for wxMac version).
- Also added wxCANCEL_DEFAULT to wxMessageDialog.
- Allow copying text in the log dialogs.
- Added multisample (anti-aliasing) support to wxGLCanvas (Olivier Playez).
- Initialize wx{Client,Paint,Window}DC with fonts/colours of its window.

View File

@@ -143,9 +143,24 @@ public:
wxASSERT_MSG( ((style & wxYES_NO) == wxYES_NO) || !(style & wxYES_NO),
"wxYES and wxNO may only be used together" );
wxASSERT_MSG( !(style & wxYES) || !(style & wxOK),
"wxOK and wxYES/wxNO can't be used together" );
wxASSERT_MSG( (style & wxYES) || (style & wxOK),
"one of wxOK and wxYES/wxNO must be used" );
wxASSERT_MSG( (style & wxID_OK) != wxID_OK,
"wxMessageBox: Did you mean wxOK (and not wxID_OK)?" );
wxASSERT_MSG( !(style & wxNO_DEFAULT) || (style & wxNO),
"wxNO_DEFAULT is invalid without wxNO" );
wxASSERT_MSG( !(style & wxCANCEL_DEFAULT) || (style & wxCANCEL),
"wxCANCEL_DEFAULT is invalid without wxCANCEL" );
wxASSERT_MSG( !(style & wxCANCEL_DEFAULT) || !(style & wxNO_DEFAULT),
"only one default button can be specified" );
m_dialogStyle = style;
}

View File

@@ -39,9 +39,14 @@ public:
@c wxCANCEL.
@style{wxNO_DEFAULT}
Makes the "No" button default, can only be used with @c wxYES_NO.
@style{wxCANCEL_DEFAULT}
Makes the "Cancel" button default, can only be used with @c wxCANCEL
@style{wxYES_DEFAULT}
Makes the "Yes" button default, this is the default behaviour and
this flag exists solely for symmetry with @c wxNO_DEFAULT.
@style{wxOK_DEFAULT}
Makes the "OK" button default, this is the default behaviour and
this flag exists solely for symmetry with @c wxCANCEL_DEFAULT.
@style{wxICON_EXCLAMATION}
Displays an exclamation mark symbol.
@style{wxICON_ERROR}
@@ -62,6 +67,11 @@ public:
implemented only under MSW).
@endStyleTable
Notice that not all styles are compatible: only one of @c wxOK and @c
wxYES_NO may be specified (and one of them must be specified) and at
most one default button style can be used and it is only valid if the
corresponding button is shown in the message box.
@param parent
Parent window.
@param message
@@ -75,7 +85,7 @@ public:
*/
wxMessageDialog(wxWindow* parent, const wxString& message,
const wxString& caption = "Message box",
long style = wxOK | wxCANCEL,
long style = wxOK | wxCENTRE,
const wxPoint& pos = wxDefaultPosition);
/**

View File

@@ -446,9 +446,9 @@ int wxMessageDialog::ShowModal()
HWND hWnd = m_parent ? GetHwndOf(m_parent) : NULL;
// translate wx style in MSW
unsigned int msStyle = MB_OK;
unsigned int msStyle;
const long wxStyle = GetMessageDialogStyle();
if (wxStyle & wxYES_NO)
if ( wxStyle & wxYES_NO )
{
#if !(defined(__SMARTPHONE__) && defined(__WXWINCE__))
if (wxStyle & wxCANCEL)
@@ -457,17 +457,26 @@ int wxMessageDialog::ShowModal()
#endif // !(__SMARTPHONE__ && __WXWINCE__)
msStyle = MB_YESNO;
if (wxStyle & wxNO_DEFAULT)
if ( wxStyle & wxNO_DEFAULT )
msStyle |= MB_DEFBUTTON2;
else if ( wxStyle & wxCANCEL_DEFAULT )
msStyle |= MB_DEFBUTTON3;
}
else // without Yes/No we're going to have an OK button
{
if ( wxStyle & wxCANCEL )
{
msStyle = MB_OKCANCEL;
if ( wxStyle & wxCANCEL_DEFAULT )
msStyle |= MB_DEFBUTTON2;
}
else // just "OK"
{
msStyle = MB_OK;
}
}
if (wxStyle & wxOK)
{
if (wxStyle & wxCANCEL)
msStyle = MB_OKCANCEL;
else
msStyle = MB_OK;
}
if (wxStyle & wxICON_EXCLAMATION)
msStyle |= MB_ICONEXCLAMATION;
else if (wxStyle & wxICON_HAND)