1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/xrc/xh_treebk.h
3// Purpose:     XML resource handler for wxTreebook
4// Author:      Evgeniy Tarassov
5// Created:     2005/09/28
6// Copyright:   (c) 2005 TT-Solutions <vadim@tt-solutions.com>
7// Licence:     wxWindows licence
8/////////////////////////////////////////////////////////////////////////////
9
10#ifndef _WX_XH_TREEBK_H_
11#define _WX_XH_TREEBK_H_
12
13#include "wx/xrc/xmlres.h"
14
15#if wxUSE_XRC && wxUSE_TREEBOOK
16
17class WXDLLIMPEXP_FWD_CORE wxTreebook;
18#include "wx/dynarray.h"
19
20WX_DEFINE_USER_EXPORTED_ARRAY_SIZE_T(size_t, wxArrayTbkPageIndexes,
21                                     class WXDLLIMPEXP_XRC);
22
23// ---------------------------------------------------------------------
24// wxTreebookXmlHandler class
25// ---------------------------------------------------------------------
26// Resource xml structure have to be almost the "same" as for wxNotebook
27// except the additional (size_t)depth parameter for treebookpage nodes
28// which indicates the depth of the page in the tree.
29// There is only one logical constraint on this parameter :
30// it cannot be greater than the previous page depth plus one
31class WXDLLIMPEXP_XRC wxTreebookXmlHandler : public wxXmlResourceHandler
32{
33    DECLARE_DYNAMIC_CLASS(wxTreebookXmlHandler)
34
35public:
36    wxTreebookXmlHandler();
37    virtual wxObject *DoCreateResource();
38    virtual bool CanHandle(wxXmlNode *node);
39
40private:
41    wxTreebook *m_tbk;
42    wxArrayTbkPageIndexes m_treeContext;
43    bool m_isInside;
44};
45
46
47// Example:
48// -------
49// Label
50// \--First
51// |  \--Second
52// \--Third
53//
54//<resource>
55//  ...
56//  <object class="wxTreebook">
57//    <object class="treebookpage">
58//      <object class="wxWindow" />
59//      <label>My first page</label>
60//      <depth>0</depth>
61//    </object>
62//    <object class="treebookpage">
63//      <object class="wxWindow" />
64//      <label>First</label>
65//      <depth>1</depth>
66//    </object>
67//    <object class="treebookpage">
68//      <object class="wxWindow" />
69//      <label>Second</label>
70//      <depth>2</depth>
71//    </object>
72//    <object class="treebookpage">
73//      <object class="wxWindow" />
74//      <label>Third</label>
75//      <depth>1</depth>
76//    </object>
77//  </object>
78//  ...
79//</resource>
80
81#endif // wxUSE_XRC && wxUSE_TREEBOOK
82
83#endif // _WX_XH_TREEBK_H_
84