]>
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 // 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" 
  37 #define __WX_COMPILING_MSGDLGG_CPP__ 1 
  38 #include "wx/msgdlg.h" 
  39 #include "wx/artprov.h" 
  40 #include "wx/settings.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                       : wxDialog( parent
, wxID_ANY
, caption
, pos
, wxDefaultSize
, wxDEFAULT_DIALOG_STYLE 
) 
  65     SetMessageDialogStyle(style
); 
  67     bool is_pda 
= (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA
); 
  69     wxBoxSizer 
*topsizer 
= new wxBoxSizer( wxVERTICAL 
); 
  71     wxBoxSizer 
*icon_text 
= new wxBoxSizer( wxHORIZONTAL 
); 
  74     if (style 
& wxICON_MASK
) 
  77         switch ( style 
& wxICON_MASK 
) 
  80                 wxFAIL_MSG(_T("incorrect log style")); 
  84                 bitmap 
= wxArtProvider::GetIcon(wxART_ERROR
, wxART_MESSAGE_BOX
); 
  87             case wxICON_INFORMATION
: 
  88                 bitmap 
= wxArtProvider::GetIcon(wxART_INFORMATION
, wxART_MESSAGE_BOX
); 
  92                 bitmap 
= wxArtProvider::GetIcon(wxART_WARNING
, wxART_MESSAGE_BOX
); 
  96                 bitmap 
= wxArtProvider::GetIcon(wxART_QUESTION
, wxART_MESSAGE_BOX
); 
  99         wxStaticBitmap 
*icon 
= new wxStaticBitmap(this, wxID_ANY
, bitmap
); 
 101             topsizer
->Add( icon
, 0, wxTOP
|wxLEFT
|wxRIGHT 
| wxALIGN_LEFT
, 10 ); 
 103             icon_text
->Add( icon
, 0, wxCENTER 
); 
 107     icon_text
->Add( CreateTextSizer( message 
), 0, wxALIGN_CENTER 
| wxLEFT
, 10 ); 
 109     topsizer
->Add( icon_text
, 1, wxCENTER 
| wxLEFT
|wxRIGHT
|wxTOP
, 10 ); 
 113     topsizer
->Add( new wxStaticLine( this, wxID_ANY 
), 0, wxEXPAND 
| wxLEFT
|wxRIGHT
|wxTOP
, 10 ); 
 114 #endif // wxUSE_STATLINE 
 117     int center_flag 
= wxEXPAND
; 
 118     if (style 
& wxYES_NO
) center_flag 
= wxALIGN_CENTRE
; 
 119     topsizer
->Add( CreateButtonSizer( style 
& (wxOK
|wxCANCEL
|wxYES_NO
|wxYES_DEFAULT
|wxNO_DEFAULT
) ), 
 120                    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 #endif // wxUSE_MSGDLG && !defined(__WXGTK20__)