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 / contrib / samples / xrc / derivdlg.cpp < prev    next >
C/C++ Source or Header  |  2002-08-16  |  5KB  |  124 lines

  1. //-----------------------------------------------------------------------------
  2. // Name:        derivdlg.cpp
  3. // Purpose:     XML resources sample: A derived dialog
  4. // Author:      Robert O'Connor (rob@medicalmnemonics.com), Vaclav Slavik
  5. // RCS-ID:      $Id: derivdlg.cpp,v 1.1 2002/08/16 11:24:46 JS Exp $
  6. // Copyright:   (c) Robert O'Connor and Vaclav Slavik
  7. // Licence:     wxWindows licence
  8. //-----------------------------------------------------------------------------
  9.  
  10. //-----------------------------------------------------------------------------
  11. // GCC implementation
  12. //-----------------------------------------------------------------------------
  13.  
  14. #ifdef __GNUG__
  15.     #pragma implementation "derivdlg.h"
  16. #endif
  17.  
  18. //-----------------------------------------------------------------------------
  19. // Standard wxWindows headers
  20. //-----------------------------------------------------------------------------
  21.  
  22. // For compilers that support precompilation, includes "wx/wx.h".
  23. #include "wx/wxprec.h"
  24.  
  25. #ifdef __BORLANDC__
  26.     #pragma hdrstop
  27. #endif
  28.  
  29. // For all others, include the necessary headers (this file is usually all you
  30. // need because it includes almost all "standard" wxWindows headers)
  31. #ifndef WX_PRECOMP
  32.     #include "wx/wx.h"
  33. #endif
  34.  
  35. //-----------------------------------------------------------------------------
  36. // Header of this .cpp file
  37. //-----------------------------------------------------------------------------
  38.  
  39. #include "derivdlg.h"
  40.  
  41. //-----------------------------------------------------------------------------
  42. // Remaining headers: Needed wx headers, then wx/contrib headers, then application headers
  43. //-----------------------------------------------------------------------------
  44.  
  45. #include "wx/xrc/xmlres.h"              // XRC XML resouces
  46.  
  47. //-----------------------------------------------------------------------------
  48. // Event table: connect the events to the handler functions to process them
  49. //-----------------------------------------------------------------------------
  50.  
  51. BEGIN_EVENT_TABLE(PreferencesDialog, wxDialog)
  52.     EVT_BUTTON( XRCID( "my_button" ), PreferencesDialog::OnMyButtonClicked )    
  53.     EVT_UPDATE_UI(XRCID( "my_checkbox" ), PreferencesDialog::OuUpdateUIMyCheckbox )
  54.     // Note that the ID here isn't a XRCID, it is one of the standard wx ID's.
  55.     EVT_BUTTON( wxID_OK, PreferencesDialog::OnOK )
  56. END_EVENT_TABLE()
  57.  
  58. //-----------------------------------------------------------------------------
  59. // Public members
  60. //-----------------------------------------------------------------------------
  61. // Constructor (Notice how small and easy it is)
  62. PreferencesDialog::PreferencesDialog(wxWindow* parent)
  63. {    
  64.     wxXmlResource::Get()->LoadDialog(this, parent, "derived_dialog");                                                            
  65. }
  66.  
  67. // Destructor. (Empty, as I don't need anything special done when destructing).
  68. PreferencesDialog::~PreferencesDialog()
  69. {
  70. }
  71.  
  72. //-----------------------------------------------------------------------------
  73. // Private members (including the event handlers)
  74. //-----------------------------------------------------------------------------
  75.  
  76. void PreferencesDialog::OnMyButtonClicked( wxCommandEvent &event )
  77. {
  78.     // Construct a message dialog.
  79.     wxMessageDialog msgDlg(this, _("You clicked on My Button"));    
  80.     
  81.     // Show it modally.
  82.     msgDlg.ShowModal();
  83. }
  84.  
  85.  
  86. // Update the enabled/disabled state of the edit/delete buttons depending on 
  87. // whether a row (item) is selected in the listctrl
  88. void PreferencesDialog::OuUpdateUIMyCheckbox( wxUpdateUIEvent &event )
  89. {
  90.     // Get a boolean value of whether the checkbox is checked
  91.     bool myCheckBoxIsChecked;    
  92.     // You could just write:
  93.     // myCheckBoxIsChecked = event.IsChecked();
  94.     // since the event that was passed into this function already has the 
  95.     // is a pointer to the right control. However, 
  96.     // this is the XRCCTRL way (which is more obvious as to what is going on).
  97.     myCheckBoxIsChecked = XRCCTRL(*this, "my_checkbox", wxCheckBox)->IsChecked();
  98.  
  99.     // Now call either Enable(TRUE) or Enable(FALSE) on the textctrl, depending
  100.     // on the value of that boolean.  
  101.     XRCCTRL(*this, "my_textctrl", wxTextCtrl)->Enable(myCheckBoxIsChecked);  
  102. }
  103.  
  104.  
  105. void PreferencesDialog::OnOK( wxCommandEvent& event )
  106. {
  107.     // Construct a message dialog (An extra parameters to put a cancel button on).
  108.     wxMessageDialog msgDlg2(this, _("Press OK to close Derived dialog, or Cancel to abort"),
  109.                             _("Overriding base class OK button handler"),
  110.                             wxOK | wxCANCEL | wxCENTER );
  111.     
  112.     // Show the message dialog, and if it returns wxID_OK (ie they clicked on OK button)...
  113.     if (msgDlg2.ShowModal() == wxID_OK)
  114.     {
  115.         // ...then end this Preferences dialog.        
  116.         EndModal( wxID_OK );
  117.         // You could also have used event.Skip() which would then skip up
  118.         // to the wxDialog's event table and see if there was a EVT_BUTTON
  119.         // handler for wxID_OK and if there was, then execute that code. 
  120.     }
  121.     
  122.     // Otherwise do nothing.
  123. }
  124.