Added wxNewSizer and wxBorderNewSizer with sample
[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 wxBoxNewSizer;
32
33 //---------------------------------------------------------------------------
34 // wxNewSizerItem
35 //---------------------------------------------------------------------------
36
37 class WXDLLEXPORT wxNewSizerItem: public wxObject
38 {
39 public:
40 // spacer
41 wxNewSizerItem( int width, int height, int option );
42
43 // window
44 wxNewSizerItem( wxWindow *window, int option );
45
46 // subsizer
47 wxNewSizerItem( wxNewSizer *sizer, int option );
48
49 virtual wxSize GetSize();
50 virtual wxSize CalcMin();
51 virtual void SetDimension( wxPoint pos, wxSize size );
52
53 bool IsWindow();
54 bool IsNewSizer();
55 bool IsSpacer();
56
57 wxWindow *GetWindow() const
58 { return m_window; }
59 wxNewSizer *GetNewSizer() const
60 { return m_sizer; }
61 int GetOption() const
62 { return m_option; }
63
64 protected:
65 wxWindow *m_window;
66 wxNewSizer *m_sizer;
67 wxSize m_minSize;
68 int m_option;
69 };
70
71 //---------------------------------------------------------------------------
72 // wxNewSizer
73 //---------------------------------------------------------------------------
74
75 class WXDLLEXPORT wxNewSizer: public wxObject
76 {
77 public:
78 wxNewSizer();
79 ~wxNewSizer();
80
81 virtual void Add( wxWindow *window, int option = 0 );
82 virtual void Add( wxNewSizer *sizer, int option = 0 );
83 virtual void Add( int width, int height, int option = 0 );
84
85 void SetDimension( int x, int y, int width, int height );
86
87 wxSize GetSize()
88 { return m_size; }
89 wxPoint GetPosition()
90 { return m_position; }
91 wxSize GetMinSize()
92 { return CalcMin(); }
93
94 virtual void RecalcSizes() = 0;
95 virtual wxSize CalcMin() = 0;
96
97 virtual void Layout();
98
99 void Fit( wxWindow *window );
100 void SetSizeHints( wxWindow *window );
101
102 protected:
103 wxSize m_size;
104 wxPoint m_position;
105 wxList m_children;
106
107 wxSize GetMinWindowSize( wxWindow *window );
108 };
109
110 //---------------------------------------------------------------------------
111 // wxBorderNewSizer
112 //---------------------------------------------------------------------------
113
114 #define wxWEST wxLEFT
115 #define wxEAST wxRIGHT
116 #define wxNORTH wxUP
117 #define wxSOUTH wxDOWN
118 #define wxALL_DIRECTIONS (wxNORTH | wxSOUTH | wxEAST | wxWEST)
119
120 class WXDLLEXPORT wxBorderNewSizer: public wxNewSizer
121 {
122 public:
123 wxBorderNewSizer( int sides = wxALL_DIRECTIONS );
124
125 virtual void Add( wxWindow *window, int option = 10 );
126 virtual void Add( wxNewSizer *sizer, int option = 10 );
127 virtual void Add( int width, int height, int option = 10 );
128
129 void RecalcSizes();
130 wxSize CalcMin();
131
132 int GetSides()
133 { return m_sides; }
134
135 protected:
136 int m_sides;
137 };
138
139
140 #endif
141 // __WXSIZER_H__