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" 
  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
, style
), 
  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 
 106     // 3) optional checkbox and detailed text 
 107     AddMessageDialogCheckBox( topsizer 
); 
 108     AddMessageDialogDetails( topsizer 
); 
 111     int center_flag 
= wxEXPAND
; 
 112     if (m_dialogStyle 
& wxYES_NO
) 
 113         center_flag 
= wxALIGN_CENTRE
; 
 114     wxSizer 
*sizerBtn 
= CreateSeparatedButtonSizer
 
 116                             m_dialogStyle 
& (wxOK 
| wxCANCEL 
| wxYES_NO 
| 
 117                                              wxNO_DEFAULT 
| wxCANCEL_DEFAULT
) 
 120         topsizer
->Add(sizerBtn
, 0, center_flag 
| wxALL
, 10 ); 
 122     SetAutoLayout( true ); 
 123     SetSizer( topsizer 
); 
 125     topsizer
->SetSizeHints( this ); 
 126     topsizer
->Fit( this ); 
 127     wxSize 
size( GetSize() ); 
 128     if (size
.x 
< size
.y
*3/2) 
 134     Centre( wxBOTH 
| wxCENTER_FRAME
); 
 137 void wxGenericMessageDialog::OnYes(wxCommandEvent
& WXUNUSED(event
)) 
 139     EndModal( wxID_YES 
); 
 142 void wxGenericMessageDialog::OnNo(wxCommandEvent
& WXUNUSED(event
)) 
 147 void wxGenericMessageDialog::OnCancel(wxCommandEvent
& WXUNUSED(event
)) 
 149     // Allow cancellation via ESC/Close button except if 
 150     // only YES and NO are specified. 
 151     const long style 
= GetMessageDialogStyle(); 
 152     if ( (style 
& wxYES_NO
) != wxYES_NO 
|| (style 
& wxCANCEL
) ) 
 154         EndModal( wxID_CANCEL 
); 
 158 int wxGenericMessageDialog::ShowModal() 
 166     return wxMessageDialogBase::ShowModal(); 
 169 #endif // wxUSE_MSGDLG