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 / src / xrc / xh_unkwn.cpp < prev    next >
C/C++ Source or Header  |  2002-06-18  |  3KB  |  93 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        xh_unkwn.cpp
  3. // Purpose:     XRC resource for unknown widget
  4. // Author:      Vaclav Slavik
  5. // Created:     2000/09/09
  6. // RCS-ID:      $Id: xh_unkwn.cpp,v 1.6 2002/06/12 15:26:34 VZ Exp $
  7. // Copyright:   (c) 2000 Vaclav Slavik
  8. // Licence:     wxWindows licence
  9. /////////////////////////////////////////////////////////////////////////////
  10.  
  11. #ifdef __GNUG__
  12. #pragma implementation "xh_unkwn.h"
  13. #endif
  14.  
  15. // For compilers that support precompilation, includes "wx.h".
  16. #include "wx/wxprec.h"
  17.  
  18. #ifdef __BORLANDC__
  19.     #pragma hdrstop
  20. #endif
  21.  
  22. #include "wx/xrc/xh_unkwn.h"
  23. #include "wx/window.h"
  24. #include "wx/log.h"
  25. #include "wx/sizer.h"
  26. #include "wx/panel.h"
  27.  
  28.  
  29. class wxUnknownControlContainer : public wxPanel
  30. {
  31. public:
  32.     wxUnknownControlContainer(wxWindow *parent,
  33.                               const wxString& controlName,
  34.                               wxWindowID id = -1,
  35.                               const wxPoint& pos = wxDefaultPosition,
  36.                               const wxSize& size = wxDefaultSize)
  37.         : wxPanel(parent, id, pos, size, wxTAB_TRAVERSAL | wxNO_BORDER,
  38.                   controlName + wxT("_container")),
  39.           m_controlName(controlName), m_controlAdded(FALSE)
  40.     {
  41.         m_bg = GetBackgroundColour();
  42.         SetBackgroundColour(wxColour(255, 0, 255));
  43.     }
  44.  
  45.     virtual void AddChild(wxWindowBase *child);
  46.  
  47. protected:
  48.     wxString m_controlName;
  49.     bool m_controlAdded;
  50.     wxColour m_bg;
  51. };
  52.  
  53. void wxUnknownControlContainer::AddChild(wxWindowBase *child)
  54. {
  55.     wxASSERT_MSG( !m_controlAdded, wxT("Couldn't add two unknown controls to the same container!") );
  56.  
  57.     wxPanel::AddChild(child);
  58.  
  59.     SetBackgroundColour(m_bg);
  60.     child->SetName(m_controlName);
  61.     child->SetId(wxXmlResource::GetXRCID(m_controlName));
  62.     m_controlAdded = TRUE;
  63.  
  64.     wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
  65.     sizer->Add((wxWindow*)child, 1, wxEXPAND);
  66.     SetSizer(sizer);
  67.     SetAutoLayout(TRUE);
  68.     Layout();
  69. }
  70.  
  71.  
  72.  
  73. wxUnknownWidgetXmlHandler::wxUnknownWidgetXmlHandler()
  74. : wxXmlResourceHandler()
  75. {
  76. }
  77.  
  78. wxObject *wxUnknownWidgetXmlHandler::DoCreateResource()
  79. {
  80.     wxPanel *panel =
  81.         new wxUnknownControlContainer(m_parentAsWindow,
  82.                                       GetName(), -1,
  83.                                       GetPosition(), GetSize());
  84.     SetupWindow(panel);
  85.     return panel;
  86. }
  87.  
  88. bool wxUnknownWidgetXmlHandler::CanHandle(wxXmlNode *node)
  89. {
  90.     return IsOfClass(node, wxT("unknown"));
  91. }
  92.  
  93.