home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / src / generic / msgdlgg.cpp < prev    next >
C/C++ Source or Header  |  2002-05-12  |  4KB  |  153 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 2002/05/09 15:57:56 VZ 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.  
  44. #if wxUSE_STATLINE
  45.   #include "wx/statline.h"
  46. #endif
  47.  
  48. // ----------------------------------------------------------------------------
  49. // icons
  50. // ----------------------------------------------------------------------------
  51.  
  52. BEGIN_EVENT_TABLE(wxGenericMessageDialog, wxDialog)
  53.         EVT_BUTTON(wxID_YES, wxGenericMessageDialog::OnYes)
  54.         EVT_BUTTON(wxID_NO, wxGenericMessageDialog::OnNo)
  55.         EVT_BUTTON(wxID_CANCEL, wxGenericMessageDialog::OnCancel)
  56. END_EVENT_TABLE()
  57.  
  58. IMPLEMENT_CLASS(wxGenericMessageDialog, wxDialog)
  59.  
  60. wxGenericMessageDialog::wxGenericMessageDialog( wxWindow *parent,
  61.                                                 const wxString& message,
  62.                                                 const wxString& caption,
  63.                                                 long style,
  64.                                                 const wxPoint& pos)
  65.                       : wxDialog( parent, -1, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE )
  66. {
  67.     m_dialogStyle = style;
  68.  
  69.     wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
  70.  
  71.     wxBoxSizer *icon_text = new wxBoxSizer( wxHORIZONTAL );
  72.  
  73.     // 1) icon
  74.     if (style & wxICON_MASK)
  75.     {
  76.         wxBitmap bitmap;
  77.         switch ( style & wxICON_MASK )
  78.         {
  79.             default:
  80.                 wxFAIL_MSG(_T("incorrect log style"));
  81.                 // fall through
  82.  
  83.             case wxICON_ERROR:
  84.                 bitmap = wxArtProvider::GetIcon(wxART_ERROR, wxART_MESSAGE_BOX);
  85.                 break;
  86.  
  87.             case wxICON_INFORMATION:
  88.                 bitmap = wxArtProvider::GetIcon(wxART_INFORMATION, wxART_MESSAGE_BOX);
  89.                 break;
  90.  
  91.             case wxICON_WARNING:
  92.                 bitmap = wxArtProvider::GetIcon(wxART_WARNING, wxART_MESSAGE_BOX);
  93.                 break;
  94.  
  95.             case wxICON_QUESTION:
  96.                 bitmap = wxArtProvider::GetIcon(wxART_QUESTION, wxART_MESSAGE_BOX);
  97.                 break;
  98.         }
  99.         wxStaticBitmap *icon = new wxStaticBitmap(this, -1, bitmap);
  100.         icon_text->Add( icon, 0, wxCENTER );
  101.     }
  102.  
  103.     // 2) text
  104.     icon_text->Add( CreateTextSizer( message ), 0, wxCENTER | wxLEFT, 10 );
  105.  
  106.     topsizer->Add( icon_text, 0, wxCENTER | wxLEFT|wxRIGHT|wxTOP, 10 );
  107.  
  108. #if wxUSE_STATLINE
  109.     // 3) static line
  110.     topsizer->Add( new wxStaticLine( this, -1 ), 0, wxEXPAND | wxLEFT|wxRIGHT|wxTOP, 10 );
  111. #endif
  112.  
  113.     // 4) buttons
  114.     topsizer->Add( CreateButtonSizer( style ), 0, wxCENTRE | wxALL, 10 );
  115.  
  116.     SetAutoLayout( TRUE );
  117.     SetSizer( topsizer );
  118.  
  119.     topsizer->SetSizeHints( this );
  120.     topsizer->Fit( this );
  121.     wxSize size( GetSize() );
  122.     if (size.x < size.y*3/2)
  123.     {
  124.         size.x = size.y*3/2;
  125.         SetSize( size );
  126.     }
  127.  
  128.     Centre( wxBOTH | wxCENTER_FRAME);
  129. }
  130.  
  131. void wxGenericMessageDialog::OnYes(wxCommandEvent& WXUNUSED(event))
  132. {
  133.     EndModal( wxID_YES );
  134. }
  135.  
  136. void wxGenericMessageDialog::OnNo(wxCommandEvent& WXUNUSED(event))
  137. {
  138.     EndModal( wxID_NO );
  139. }
  140.  
  141. void wxGenericMessageDialog::OnCancel(wxCommandEvent& WXUNUSED(event))
  142. {
  143.     /* Allow cancellation via ESC/Close button except if
  144.        only YES and NO are specified. */
  145.     if ( (m_dialogStyle & wxYES_NO) != wxYES_NO || (m_dialogStyle & wxCANCEL) )
  146.     {
  147.         EndModal( wxID_CANCEL );
  148.     }
  149. }
  150.  
  151. #endif // wxUSE_MSGDLG
  152.  
  153.