]> git.saurik.com Git - wxWidgets.git/blob - include/wx/sizer.h
7efe7d4ffa21af3be44be7722171ef0db838468f
[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 );
43
44 // window
45 wxNewSizerItem( wxWindow *window, int option );
46
47 // subsizer
48 wxNewSizerItem( wxNewSizer *sizer, int option );
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
65 protected:
66 wxWindow *m_window;
67 wxNewSizer *m_sizer;
68 wxSize m_minSize;
69 int m_option;
70 };
71
72 //---------------------------------------------------------------------------
73 // wxNewSizer
74 //---------------------------------------------------------------------------
75
76 class WXDLLEXPORT wxNewSizer: public wxObject
77 {
78 public:
79 wxNewSizer();
80 ~wxNewSizer();
81
82 virtual void Add( wxWindow *window, int option = 0 );
83 virtual void Add( wxNewSizer *sizer, int option = 0 );
84 virtual void Add( int width, int height, int option = 0 );
85
86 void SetDimension( int x, int y, int width, int height );
87
88 wxSize GetSize()
89 { return m_size; }
90 wxPoint GetPosition()
91 { return m_position; }
92 wxSize GetMinSize()
93 { return CalcMin(); }
94
95 virtual void RecalcSizes() = 0;
96 virtual wxSize CalcMin() = 0;
97
98 virtual void Layout();
99
100 void Fit( wxWindow *window );
101 void SetSizeHints( wxWindow *window );
102
103 protected:
104 wxSize m_size;
105 wxPoint m_position;
106 wxList m_children;
107
108 wxSize GetMinWindowSize( wxWindow *window );
109 };
110
111 //---------------------------------------------------------------------------
112 // wxBorderNewSizer
113 //---------------------------------------------------------------------------
114
115 #define wxWEST wxLEFT
116 #define wxEAST wxRIGHT
117 #define wxNORTH wxUP
118 #define wxSOUTH wxDOWN
119 #define wxALL_DIRECTIONS (wxNORTH | wxSOUTH | wxEAST | wxWEST)
120
121 class WXDLLEXPORT wxBorderNewSizer: public wxNewSizer
122 {
123 public:
124 wxBorderNewSizer( int sides = wxALL_DIRECTIONS );
125
126 virtual void Add( wxWindow *window, int option = 10 );
127 virtual void Add( wxNewSizer *sizer, int option = 10 );
128 virtual void Add( int width, int height, int option = 10 );
129
130 void RecalcSizes();
131 wxSize CalcMin();
132
133 int GetSides()
134 { return m_sides; }
135
136 protected:
137 int m_sides;
138 };
139
140 //---------------------------------------------------------------------------
141 // wxBoxNewSizer
142 //---------------------------------------------------------------------------
143
144 class WXDLLEXPORT wxBoxNewSizer: public wxNewSizer
145 {
146 public:
147 wxBoxNewSizer( int orient );
148
149 void RecalcSizes();
150 wxSize CalcMin();
151
152 int GetOrientation()
153 { return m_orient; }
154
155 protected:
156 int m_orient;
157 int m_stretchable;
158 int m_minWidth;
159 int m_minHeight;
160 int m_fixedWidth;
161 int m_fixedHeight;
162 };
163
164 #endif
165 // __WXSIZER_H__