home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / contrib / src / xrc / xh_notbk.cpp < prev    next >
C/C++ Source or Header  |  2001-12-29  |  3KB  |  103 lines

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        xh_notbk.cpp
  3. // Purpose:     XRC resource for wxNotebook
  4. // Author:      Vaclav Slavik
  5. // Created:     2000/03/21
  6. // RCS-ID:      $Id: xh_notbk.cpp,v 1.4 2001/12/29 16:14:04 VS Exp $
  7. // Copyright:   (c) 2000 Vaclav Slavik
  8. // Licence:     wxWindows licence
  9. /////////////////////////////////////////////////////////////////////////////
  10.  
  11. #ifdef __GNUG__
  12. #pragma implementation "xh_notbk.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_notbk.h"
  23.  
  24. #if wxUSE_NOTEBOOK
  25.  
  26. #include "wx/log.h"
  27. #include "wx/notebook.h"
  28. #include "wx/sizer.h"
  29.  
  30. wxNotebookXmlHandler::wxNotebookXmlHandler() 
  31. : wxXmlResourceHandler(), m_isInside(FALSE), m_notebook(NULL)
  32. {
  33.     XRC_ADD_STYLE(wxNB_FIXEDWIDTH);
  34.     XRC_ADD_STYLE(wxNB_LEFT);
  35.     XRC_ADD_STYLE(wxNB_RIGHT);
  36.     XRC_ADD_STYLE(wxNB_BOTTOM);
  37.     AddWindowStyles();
  38. }
  39.  
  40. wxObject *wxNotebookXmlHandler::DoCreateResource()
  41.     if (m_class == wxT("notebookpage"))
  42.     {
  43.         wxXmlNode *n = GetParamNode(wxT("object"));
  44.  
  45.         if ( !n )
  46.             n = GetParamNode(wxT("object_ref"));
  47.  
  48.         if (n)
  49.         {
  50.             bool old_ins = m_isInside;
  51.             m_isInside = FALSE;
  52.             m_isInside = old_ins;
  53.             wxObject *item = CreateResFromNode(n, m_notebook, NULL);
  54.             wxWindow *wnd = wxDynamicCast(item, wxWindow);
  55.  
  56.             if (wnd)
  57.                 m_notebook->AddPage(wnd, GetText(wxT("label")),
  58.                                          GetBool(wxT("selected"), 0));
  59.             else 
  60.                 wxLogError(wxT("Error in resource."));              
  61.             return wnd;
  62.         }
  63.         else
  64.         {
  65.             wxLogError(wxT("Error in resource: no control within notebook's <page> tag."));
  66.             return NULL;
  67.         }
  68.     }
  69.     
  70.     else 
  71.     {
  72.         XRC_MAKE_INSTANCE(nb, wxNotebook)
  73.  
  74.         nb->Create(m_parentAsWindow, 
  75.                    GetID(),
  76.                    GetPosition(), GetSize(),
  77.                    GetStyle(wxT("style")),
  78.                    GetName());
  79.  
  80.         wxNotebook *old_par = m_notebook;
  81.         m_notebook = nb;
  82.         bool old_ins = m_isInside;
  83.         m_isInside = TRUE;
  84.         CreateChildren(m_notebook, TRUE/*only this handler*/);
  85.         m_isInside = old_ins;
  86.         m_notebook = old_par;
  87.  
  88.         if (GetBool(wxT("usenotebooksizer"), FALSE))
  89.             return new wxNotebookSizer(nb);
  90.         else
  91.             return nb;
  92.     }
  93. }
  94.  
  95. bool wxNotebookXmlHandler::CanHandle(wxXmlNode *node)
  96. {
  97.     return ((!m_isInside && IsOfClass(node, wxT("wxNotebook"))) ||
  98.             (m_isInside && IsOfClass(node, wxT("notebookpage"))));
  99. }
  100.  
  101. #endif
  102.