home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / src / generic / msgdlgg.cpp < prev    next >
C/C++ Source or Header  |  2002-09-21  |  5KB  |  159 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        msgdlgg.cpp
  3. // Purpose:     wxGenericMessageDialog
  4. // Author:      Julian Smart, Robert Roebling
  5. // Modified by:
  6. // Created:     04/01/98
  7. // RCS-ID:      $Id: msgdlgg.cpp,v 1.34.2.1 2002/09/19 20:22:13 RR Exp $
  8. // Copyright:   (c) Julian Smart, Markus Holzem, Robert Roebling
  9. // Licence:     wxWindows license
  10. /////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifdef __GNUG__
  13. #pragma implementation "msgdlgg.h"
  14. #endif
  15.  
  16. // For compilers that support precompilation, includes "wx.h".
  17. #include "wx/wxprec.h"
  18.  
  19. #ifdef __BORLANDC__
  20. #pragma hdrstop
  21. #endif
  22.  
  23. #if wxUSE_MSGDLG
  24.  
  25. #ifndef WX_PRECOMP
  26.     #include "wx/utils.h"
  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"
  32.     #include "wx/intl.h"
  33.     #include "wx/icon.h"
  34.     #include "wx/sizer.h"
  35.     #include "wx/app.h"
  36. #endif
  37.  
  38. #include <stdio.h>
  39. #include <string.h>
  40.  
  41. #include "wx/generic/msgdlgg.h"
  42. #include "wx/artprov.h"
  43. #include "wx/settings.h"
  44.  
  45. #if wxUSE_STATLINE
  46.   #include "wx/statline.h"
  47. #endif
  48.  
  49. // ----------------------------------------------------------------------------
  50. // icons
  51. // ----------------------------------------------------------------------------
  52.  
  53. BEGIN_EVENT_TABLE(wxGenericMessageDialog, wxDialog)
  54.         EVT_BUTTON(wxID_YES, wxGenericMessageDialog::OnYes)
  55.         EVT_BUTTON(wxID_NO, wxGenericMessageDialog::OnNo)
  56.         EVT_BUTTON(wxID_CANCEL, wxGenericMessageDialog::OnCancel)
  57. END_EVENT_TABLE()
  58.  
  59. IMPLEMENT_CLASS(wxGenericMessageDialog, wxDialog)
  60.  
  61. wxGenericMessageDialog::wxGenericMessageDialog( wxWindow *parent,
  62.                                                 const wxString& message,
  63.                                                 const wxString& caption,
  64.                                                 long style,
  65.                                                 const wxPoint& pos)
  66.                       : wxDialog( parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE )
  67. {
  68.     m_dialogStyle = style;
  69.  
  70.     bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
  71.  
  72.     wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
  73.  
  74.     wxBoxSizer *icon_text = new wxBoxSizer( wxHORIZONTAL );
  75.  
  76.     // 1) icon
  77.     if (style & wxICON_MASK)
  78.     {
  79.         wxBitmap bitmap;
  80.         switch ( style & wxICON_MASK )
  81.         {
  82.             default:
  83.                 wxFAIL_MSG(_T("incorrect log style"));
  84.                 // fall through
  85.  
  86.             case wxICON_ERROR:
  87.                 bitmap = wxArtProvider::GetIcon(wxART_ERROR, wxART_MESSAGE_BOX);
  88.                 break;
  89.  
  90.             case wxICON_INFORMATION:
  91.                 bitmap = wxArtProvider::GetIcon(wxART_INFORMATION, wxART_MESSAGE_BOX);
  92.                 break;
  93.  
  94.             case wxICON_WARNING:
  95.                 bitmap = wxArtProvider::GetIcon(wxART_WARNING, wxART_MESSAGE_BOX);
  96.                 break;
  97.  
  98.             case wxICON_QUESTION:
  99.                 bitmap = wxArtProvider::GetIcon(wxART_QUESTION, wxART_MESSAGE_BOX);
  100.                 break;
  101.         }
  102.         wxStaticBitmap *icon = new wxStaticBitmap(this, -1, bitmap);
  103.         if (is_pda)
  104.             topsizer->Add( icon, 0, wxTOP|wxLEFT|wxRIGHT | wxALIGN_LEFT, 10 );
  105.         else
  106.             icon_text->Add( icon, 0, wxCENTER );
  107.     }
  108.  
  109.     // 2) text
  110.     icon_text->Add( CreateTextSizer( message ), 0, wxCENTER | wxLEFT, 10 );
  111.  
  112.     topsizer->Add( icon_text, 1, wxCENTER | wxLEFT|wxRIGHT|wxTOP, 10 );
  113.  
  114. #if wxUSE_STATLINE
  115.     // 3) static line
  116.     topsizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
  117. #endif
  118.  
  119.     // 4) buttons
  120.     topsizer->Add( CreateButtonSizer( style ), 0, wxCENTRE | wxALL, 10 );
  121.  
  122.     SetAutoLayout( TRUE );
  123.     SetSizer( topsizer );
  124.  
  125.     topsizer->SetSizeHints( this );
  126.     topsizer->Fit( this );
  127.     wxSize size( GetSize() );
  128.     if (size.x < size.y*3/2)
  129.     {
  130.         size.x = size.y*3/2;
  131.         SetSize( size );
  132.     }
  133.  
  134.     Centre( wxBOTH | wxCENTER_FRAME);
  135. }
  136.  
  137. void wxGenericMessageDialog::OnYes(wxCommandEvent& WXUNUSED(event))
  138. {
  139.     EndModal( wxID_YES );
  140. }
  141.  
  142. void wxGenericMessageDialog::OnNo(wxCommandEvent& WXUNUSED(event))
  143. {
  144.     EndModal( wxID_NO );
  145. }
  146.  
  147. void wxGenericMessageDialog::OnCancel(wxCommandEvent& WXUNUSED(event))
  148. {
  149.     // Allow cancellation via ESC/Close button except if
  150.     // only YES and NO are specified.
  151.     if ( (m_dialogStyle & wxYES_NO) != wxYES_NO || (m_dialogStyle & wxCANCEL) )
  152.     {
  153.         EndModal( wxID_CANCEL );
  154.     }
  155. }
  156.  
  157. #endif // wxUSE_MSGDLG
  158.  
  159.