Completed wxBox,
[wxWidgets.git] / include / wx / sizer.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: sizer.h
3 // Purpose: provide wxNewSizer class for layounting
4 // Author: Robert Roebling and Robin Dunn
5 // Modified by:
6 // Created:
7 // RCS-ID: $Id$
8 // Copyright: (c) Robin Dunn, Dirk Holtwick and Robert Roebling
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef __WXSIZER_H__
13 #define __WXSIZER_H__
14
15 #ifdef __GNUG__
16 #pragma interface "sizer.h"
17 #endif
18
19 #include "wx/defs.h"
20
21 #include "wx/window.h"
22 #include "wx/frame.h"
23 #include "wx/dialog.h"
24
25 //---------------------------------------------------------------------------
26 // classes
27 //---------------------------------------------------------------------------
28
29 class wxNewSizerItem;
30 class wxNewSizer;
31 class wxBorderNewSizer;
32 class wxBoxNewSizer;
33
34 //---------------------------------------------------------------------------
35 // wxNewSizerItem
36 //---------------------------------------------------------------------------
37
38 class WXDLLEXPORT wxNewSizerItem: public wxObject
39 {
40 public:
41 // spacer
42 wxNewSizerItem( int width, int height, int option, int flag, int border );
43
44 // window
45 wxNewSizerItem( wxWindow *window, int option, int flag, int border );
46
47 // subsizer
48 wxNewSizerItem( wxNewSizer *sizer, int option, int flag, int border );
49
50 virtual wxSize GetSize();
51 virtual wxSize CalcMin();
52 virtual void SetDimension( wxPoint pos, wxSize size );
53
54 bool IsWindow();
55 bool IsNewSizer();
56 bool IsSpacer();
57
58 wxWindow *GetWindow() const
59 { return m_window; }
60 wxNewSizer *GetNewSizer() const
61 { return m_sizer; }
62 int GetOption() const
63 { return m_option; }
64 int GetFlag() const
65 { return m_flag; }
66 int GetBorder() const
67 { return m_border; }
68
69 protected:
70 wxWindow *m_window;
71 wxNewSizer *m_sizer;
72 wxSize m_size;
73 wxSize m_minSize;
74 int m_option;
75 int m_border;
76 int m_flag;
77 };
78
79 //---------------------------------------------------------------------------
80 // wxNewSizer
81 //---------------------------------------------------------------------------
82
83 class WXDLLEXPORT wxNewSizer: public wxObject
84 {
85 public:
86 wxNewSizer();
87 ~wxNewSizer();
88
89 virtual void Add( wxWindow *window, int option = 0, int flag = 0, int border = 0 );
90 virtual void Add( wxNewSizer *sizer, int option = 0, int flag = 0, int border = 0 );
91 virtual void Add( int width, int height, int option = 0, int flag = 0, int border = 0 );
92
93 void SetDimension( int x, int y, int width, int height );
94
95 wxSize GetSize()
96 { return m_size; }
97 wxPoint GetPosition()
98 { return m_position; }
99 wxSize GetMinSize()
100 { return CalcMin(); }
101
102 virtual void RecalcSizes() = 0;
103 virtual wxSize CalcMin() = 0;
104
105 virtual void Layout();
106
107 void Fit( wxWindow *window );
108 void SetSizeHints( wxWindow *window );
109
110 protected:
111 wxSize m_size;
112 wxPoint m_position;
113 wxList m_children;
114
115 wxSize GetMinWindowSize( wxWindow *window );
116 };
117
118 //---------------------------------------------------------------------------
119 // wxBox
120 //---------------------------------------------------------------------------
121
122 class WXDLLEXPORT wxBox: public wxNewSizer
123 {
124 public:
125 wxBox( int orient );
126
127 void RecalcSizes();
128 wxSize CalcMin();
129
130 int GetOrientation()
131 { return m_orient; }
132
133 protected:
134 int m_orient;
135 int m_stretchable;
136 int m_minWidth;
137 int m_minHeight;
138 int m_fixedWidth;
139 int m_fixedHeight;
140 };
141
142 #endif
143 // __WXSIZER_H__