1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/xrc/xh_sizer.h
3// Purpose:     XML resource handler for wxBoxSizer
4// Author:      Vaclav Slavik
5// Created:     2000/04/24
6// RCS-ID:      $Id: xh_sizer.h 49804 2007-11-10 01:09:42Z VZ $
7// Copyright:   (c) 2000 Vaclav Slavik
8// Licence:     wxWindows licence
9/////////////////////////////////////////////////////////////////////////////
10
11#ifndef _WX_XH_SIZER_H_
12#define _WX_XH_SIZER_H_
13
14#include "wx/xrc/xmlres.h"
15
16#if wxUSE_XRC
17
18#include "wx/sizer.h"
19#include "wx/gbsizer.h"
20
21class WXDLLIMPEXP_FWD_CORE wxSizer;
22
23class WXDLLIMPEXP_XRC wxSizerXmlHandler : public wxXmlResourceHandler
24{
25    DECLARE_DYNAMIC_CLASS(wxSizerXmlHandler)
26
27public:
28    wxSizerXmlHandler();
29    virtual wxObject *DoCreateResource();
30    virtual bool CanHandle(wxXmlNode *node);
31
32private:
33    bool m_isInside;
34    bool m_isGBS;
35
36    wxSizer *m_parentSizer;
37
38    bool IsSizerNode(wxXmlNode *node);
39
40    wxObject* Handle_sizeritem();
41    wxObject* Handle_spacer();
42    wxObject* Handle_sizer();
43    wxSizer*  Handle_wxBoxSizer();
44#if wxUSE_STATBOX
45    wxSizer*  Handle_wxStaticBoxSizer();
46#endif
47    wxSizer*  Handle_wxGridSizer();
48    wxSizer*  Handle_wxFlexGridSizer();
49    wxSizer*  Handle_wxGridBagSizer();
50
51    void SetGrowables(wxFlexGridSizer* fsizer, const wxChar* param, bool rows);
52    wxGBPosition GetGBPos(const wxString& param);
53    wxGBSpan GetGBSpan(const wxString& param);
54    wxSizerItem* MakeSizerItem();
55    void SetSizerItemAttributes(wxSizerItem* sitem);
56    void AddSizerItem(wxSizerItem* sitem);
57};
58
59#if wxUSE_BUTTON
60
61class WXDLLIMPEXP_XRC wxStdDialogButtonSizerXmlHandler
62    : public wxXmlResourceHandler
63{
64    DECLARE_DYNAMIC_CLASS(wxStdDialogButtonSizerXmlHandler)
65
66public:
67    wxStdDialogButtonSizerXmlHandler();
68    virtual wxObject *DoCreateResource();
69    virtual bool CanHandle(wxXmlNode *node);
70
71private:
72    bool m_isInside;
73    wxStdDialogButtonSizer *m_parentSizer;
74};
75
76#endif // wxUSE_BUTTON
77
78#endif // wxUSE_XRC
79
80#endif // _WX_XH_SIZER_H_
81