]>
git.saurik.com Git - wxWidgets.git/blob - src/generic/msgdlgg.cpp
c6f2e60f23e46044ab558430214717611ade7948
   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
) 
  87         switch ( m_dialogStyle 
& wxICON_MASK 
) 
  90                 wxFAIL_MSG(_T("incorrect log style")); 
  94                 bitmap 
= wxArtProvider::GetIcon(wxART_ERROR
, wxART_MESSAGE_BOX
); 
  97             case wxICON_INFORMATION
: 
  98                 bitmap 
= wxArtProvider::GetIcon(wxART_INFORMATION
, wxART_MESSAGE_BOX
); 
 102                 bitmap 
= wxArtProvider::GetIcon(wxART_WARNING
, wxART_MESSAGE_BOX
); 
 105             case wxICON_QUESTION
: 
 106                 bitmap 
= wxArtProvider::GetIcon(wxART_QUESTION
, wxART_MESSAGE_BOX
); 
 109         wxStaticBitmap 
*icon 
= new wxStaticBitmap(this, wxID_ANY
, bitmap
); 
 111             topsizer
->Add( icon
, 0, wxTOP
|wxLEFT
|wxRIGHT 
| wxALIGN_LEFT
, 10 ); 
 113             icon_text
->Add( icon
, 0, wxCENTER 
); 
 115 #endif // wxUSE_STATBMP 
 119     icon_text
->Add( CreateTextSizer( GetFullMessage() ), 0, wxALIGN_CENTER 
| wxLEFT
, 10 ); 
 121     topsizer
->Add( icon_text
, 1, wxCENTER 
| wxLEFT
|wxRIGHT
|wxTOP
, 10 ); 
 122 #endif // wxUSE_STATTEXT 
 125     int center_flag 
= wxEXPAND
; 
 126     if (m_dialogStyle 
& wxYES_NO
) 
 127         center_flag 
= wxALIGN_CENTRE
; 
 128     wxSizer 
*sizerBtn 
= CreateSeparatedButtonSizer(m_dialogStyle 
& ButtonSizerFlags
); 
 130         topsizer
->Add(sizerBtn
, 0, center_flag 
| wxALL
, 10 ); 
 132     SetAutoLayout( true ); 
 133     SetSizer( topsizer 
); 
 135     topsizer
->SetSizeHints( this ); 
 136     topsizer
->Fit( this ); 
 137     wxSize 
size( GetSize() ); 
 138     if (size
.x 
< size
.y
*3/2) 
 144     Centre( wxBOTH 
| wxCENTER_FRAME
); 
 147 void wxGenericMessageDialog::OnYes(wxCommandEvent
& WXUNUSED(event
)) 
 149     EndModal( wxID_YES 
); 
 152 void wxGenericMessageDialog::OnNo(wxCommandEvent
& WXUNUSED(event
)) 
 157 void wxGenericMessageDialog::OnCancel(wxCommandEvent
& WXUNUSED(event
)) 
 159     // Allow cancellation via ESC/Close button except if 
 160     // only YES and NO are specified. 
 161     const long style 
= GetMessageDialogStyle(); 
 162     if ( (style 
& wxYES_NO
) != wxYES_NO 
|| (style 
& wxCANCEL
) ) 
 164         EndModal( wxID_CANCEL 
); 
 168 int wxGenericMessageDialog::ShowModal() 
 176     return wxMessageDialogBase::ShowModal(); 
 179 #endif // wxUSE_MSGDLG && !defined(__WXGTK20__)