]>
git.saurik.com Git - wxWidgets.git/blob - src/generic/msgdlgg.cpp
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 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
13 #pragma implementation "msgdlgg.h"
16 // For compilers that support precompilation, includes "wx.h".
17 #include "wx/wxprec.h"
23 #if wxUSE_MSGDLG && (!defined(__WXGTK20__) || defined(__WXUNIVERSAL__) || defined(__WXGPE__))
27 #include "wx/dialog.h"
28 #include "wx/button.h"
29 #include "wx/stattext.h"
30 #include "wx/statbmp.h"
31 #include "wx/layout.h"
41 #define __WX_COMPILING_MSGDLGG_CPP__ 1
42 #include "wx/msgdlg.h"
43 #include "wx/artprov.h"
44 #include "wx/settings.h"
47 #include "wx/statline.h"
50 // ----------------------------------------------------------------------------
52 // ----------------------------------------------------------------------------
54 BEGIN_EVENT_TABLE(wxGenericMessageDialog
, wxDialog
)
55 EVT_BUTTON(wxID_YES
, wxGenericMessageDialog::OnYes
)
56 EVT_BUTTON(wxID_NO
, wxGenericMessageDialog::OnNo
)
57 EVT_BUTTON(wxID_CANCEL
, wxGenericMessageDialog::OnCancel
)
60 IMPLEMENT_CLASS(wxGenericMessageDialog
, wxDialog
)
62 wxGenericMessageDialog::wxGenericMessageDialog( wxWindow
*parent
,
63 const wxString
& message
,
64 const wxString
& caption
,
67 : wxDialog( parent
, wxID_ANY
, caption
, pos
, wxDefaultSize
, wxDEFAULT_DIALOG_STYLE
)
69 SetMessageDialogStyle(style
);
71 bool is_pda
= (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA
);
73 wxBoxSizer
*topsizer
= new wxBoxSizer( wxVERTICAL
);
75 wxBoxSizer
*icon_text
= new wxBoxSizer( wxHORIZONTAL
);
78 if (style
& wxICON_MASK
)
81 switch ( style
& wxICON_MASK
)
84 wxFAIL_MSG(_T("incorrect log style"));
88 bitmap
= wxArtProvider::GetIcon(wxART_ERROR
, wxART_MESSAGE_BOX
);
91 case wxICON_INFORMATION
:
92 bitmap
= wxArtProvider::GetIcon(wxART_INFORMATION
, wxART_MESSAGE_BOX
);
96 bitmap
= wxArtProvider::GetIcon(wxART_WARNING
, wxART_MESSAGE_BOX
);
100 bitmap
= wxArtProvider::GetIcon(wxART_QUESTION
, wxART_MESSAGE_BOX
);
103 wxStaticBitmap
*icon
= new wxStaticBitmap(this, wxID_ANY
, bitmap
);
105 topsizer
->Add( icon
, 0, wxTOP
|wxLEFT
|wxRIGHT
| wxALIGN_LEFT
, 10 );
107 icon_text
->Add( icon
, 0, wxCENTER
);
111 icon_text
->Add( CreateTextSizer( message
), 0, wxALIGN_CENTER
| wxLEFT
, 10 );
113 topsizer
->Add( icon_text
, 1, wxCENTER
| wxLEFT
|wxRIGHT
|wxTOP
, 10 );
117 topsizer
->Add( new wxStaticLine( this, wxID_ANY
), 0, wxEXPAND
| wxLEFT
|wxRIGHT
|wxTOP
, 10 );
118 #endif // wxUSE_STATLINE
121 int center_flag
= wxEXPAND
;
122 if (style
& wxYES_NO
) center_flag
= wxALIGN_CENTRE
;
123 topsizer
->Add( CreateButtonSizer( style
& (wxOK
|wxCANCEL
|wxYES_NO
|wxYES_DEFAULT
|wxNO_DEFAULT
) ),
124 0, center_flag
| wxALL
, 10 );
126 SetAutoLayout( true );
127 SetSizer( topsizer
);
129 topsizer
->SetSizeHints( this );
130 topsizer
->Fit( this );
131 wxSize
size( GetSize() );
132 if (size
.x
< size
.y
*3/2)
138 Centre( wxBOTH
| wxCENTER_FRAME
);
141 void wxGenericMessageDialog::OnYes(wxCommandEvent
& WXUNUSED(event
))
143 EndModal( wxID_YES
);
146 void wxGenericMessageDialog::OnNo(wxCommandEvent
& WXUNUSED(event
))
151 void wxGenericMessageDialog::OnCancel(wxCommandEvent
& WXUNUSED(event
))
153 // Allow cancellation via ESC/Close button except if
154 // only YES and NO are specified.
155 const long style
= GetMessageDialogStyle();
156 if ( (style
& wxYES_NO
) != wxYES_NO
|| (style
& wxCANCEL
) )
158 EndModal( wxID_CANCEL
);
162 #endif // wxUSE_MSGDLG && !defined(__WXGTK20__)