1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/generic/msgdlgg.cpp
3 // Purpose: wxGenericMessageDialog
4 // Author: Julian Smart, Robert Roebling
8 // Copyright: (c) Julian Smart and Robert Roebling
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx.h".
13 #include "wx/wxprec.h"
19 #if wxUSE_MSGDLG && (!defined(__WXGTK20__) || defined(__WXUNIVERSAL__) || defined(__WXGPE__))
23 #include "wx/dialog.h"
24 #include "wx/button.h"
25 #include "wx/stattext.h"
26 #include "wx/statbmp.h"
27 #include "wx/layout.h"
32 #include "wx/settings.h"
38 #define __WX_COMPILING_MSGDLGG_CPP__ 1
39 #include "wx/msgdlg.h"
40 #include "wx/artprov.h"
43 #include "wx/statline.h"
46 // ----------------------------------------------------------------------------
48 // ----------------------------------------------------------------------------
50 BEGIN_EVENT_TABLE(wxGenericMessageDialog
, wxDialog
)
51 EVT_BUTTON(wxID_YES
, wxGenericMessageDialog::OnYes
)
52 EVT_BUTTON(wxID_NO
, wxGenericMessageDialog::OnNo
)
53 EVT_BUTTON(wxID_CANCEL
, wxGenericMessageDialog::OnCancel
)
56 IMPLEMENT_CLASS(wxGenericMessageDialog
, wxDialog
)
58 wxGenericMessageDialog::wxGenericMessageDialog( wxWindow
*parent
,
59 const wxString
& message
,
60 const wxString
& caption
,
63 : wxMessageDialogBase(GetParentForModalDialog(parent
),
72 void wxGenericMessageDialog::DoCreateMsgdialog()
74 wxDialog::Create(m_parent
, wxID_ANY
, m_caption
, m_pos
, wxDefaultSize
, wxDEFAULT_DIALOG_STYLE
);
76 bool is_pda
= (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA
);
78 wxBoxSizer
*topsizer
= new wxBoxSizer( wxVERTICAL
);
80 wxBoxSizer
*icon_text
= new wxBoxSizer( wxHORIZONTAL
);
84 if (m_dialogStyle
& wxICON_MASK
)
86 wxStaticBitmap
*icon
= new wxStaticBitmap
90 wxArtProvider::GetMessageBoxIcon(m_dialogStyle
)
93 topsizer
->Add( icon
, 0, wxTOP
|wxLEFT
|wxRIGHT
| wxALIGN_LEFT
, 10 );
95 icon_text
->Add( icon
, 0, wxCENTER
);
97 #endif // wxUSE_STATBMP
101 icon_text
->Add( CreateTextSizer( GetFullMessage() ), 0, wxALIGN_CENTER
| wxLEFT
, 10 );
103 topsizer
->Add( icon_text
, 1, wxCENTER
| wxLEFT
|wxRIGHT
|wxTOP
, 10 );
104 #endif // wxUSE_STATTEXT
107 int center_flag
= wxEXPAND
;
108 if (m_dialogStyle
& wxYES_NO
)
109 center_flag
= wxALIGN_CENTRE
;
110 wxSizer
*sizerBtn
= CreateSeparatedButtonSizer
112 m_dialogStyle
& (wxOK
| wxCANCEL
| wxYES_NO
|
113 wxNO_DEFAULT
| wxCANCEL_DEFAULT
)
116 topsizer
->Add(sizerBtn
, 0, center_flag
| wxALL
, 10 );
118 SetAutoLayout( true );
119 SetSizer( topsizer
);
121 topsizer
->SetSizeHints( this );
122 topsizer
->Fit( this );
123 wxSize
size( GetSize() );
124 if (size
.x
< size
.y
*3/2)
130 Centre( wxBOTH
| wxCENTER_FRAME
);
133 void wxGenericMessageDialog::OnYes(wxCommandEvent
& WXUNUSED(event
))
135 EndModal( wxID_YES
);
138 void wxGenericMessageDialog::OnNo(wxCommandEvent
& WXUNUSED(event
))
143 void wxGenericMessageDialog::OnCancel(wxCommandEvent
& WXUNUSED(event
))
145 // Allow cancellation via ESC/Close button except if
146 // only YES and NO are specified.
147 const long style
= GetMessageDialogStyle();
148 if ( (style
& wxYES_NO
) != wxYES_NO
|| (style
& wxCANCEL
) )
150 EndModal( wxID_CANCEL
);
154 int wxGenericMessageDialog::ShowModal()
162 return wxMessageDialogBase::ShowModal();
165 #endif // wxUSE_MSGDLG && !defined(__WXGTK20__)