]> git.saurik.com Git - wxWidgets.git/blame - include/wx/sizer.h
wxFrame::Create now sets (arbitrary) values for position and size if default values...
[wxWidgets.git] / include / wx / sizer.h
CommitLineData
5279a24d
RR
1/////////////////////////////////////////////////////////////////////////////
2// Name: sizer.h
c62ac5b6 3// Purpose: provide wxNewSizer class for layounting
5279a24d
RR
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
c62ac5b6
RR
29class wxNewSizerItem;
30class wxNewSizer;
61d514bb 31class wxBorderNewSizer;
c62ac5b6 32class wxBoxNewSizer;
5279a24d
RR
33
34//---------------------------------------------------------------------------
c62ac5b6 35// wxNewSizerItem
5279a24d
RR
36//---------------------------------------------------------------------------
37
c62ac5b6 38class WXDLLEXPORT wxNewSizerItem: public wxObject
5279a24d
RR
39{
40public:
41 // spacer
c62ac5b6 42 wxNewSizerItem( int width, int height, int option );
5279a24d
RR
43
44 // window
c62ac5b6 45 wxNewSizerItem( wxWindow *window, int option );
5279a24d
RR
46
47 // subsizer
c62ac5b6 48 wxNewSizerItem( wxNewSizer *sizer, int option );
5279a24d 49
c62ac5b6
RR
50 virtual wxSize GetSize();
51 virtual wxSize CalcMin();
52 virtual void SetDimension( wxPoint pos, wxSize size );
5279a24d
RR
53
54 bool IsWindow();
c62ac5b6 55 bool IsNewSizer();
5279a24d
RR
56 bool IsSpacer();
57
58 wxWindow *GetWindow() const
59 { return m_window; }
c62ac5b6 60 wxNewSizer *GetNewSizer() const
5279a24d
RR
61 { return m_sizer; }
62 int GetOption() const
63 { return m_option; }
64
c62ac5b6 65protected:
5279a24d 66 wxWindow *m_window;
c62ac5b6 67 wxNewSizer *m_sizer;
5279a24d
RR
68 wxSize m_minSize;
69 int m_option;
c62ac5b6 70};
5279a24d
RR
71
72//---------------------------------------------------------------------------
c62ac5b6 73// wxNewSizer
5279a24d
RR
74//---------------------------------------------------------------------------
75
c62ac5b6 76class WXDLLEXPORT wxNewSizer: public wxObject
5279a24d
RR
77{
78public:
c62ac5b6
RR
79 wxNewSizer();
80 ~wxNewSizer();
5279a24d
RR
81
82 virtual void Add( wxWindow *window, int option = 0 );
c62ac5b6 83 virtual void Add( wxNewSizer *sizer, int option = 0 );
5279a24d
RR
84 virtual void Add( int width, int height, int option = 0 );
85
c62ac5b6 86 void SetDimension( int x, int y, int width, int height );
5279a24d
RR
87
88 wxSize GetSize()
89 { return m_size; }
90 wxPoint GetPosition()
91 { return m_position; }
92 wxSize GetMinSize()
93 { return CalcMin(); }
c62ac5b6 94
5279a24d
RR
95 virtual void RecalcSizes() = 0;
96 virtual wxSize CalcMin() = 0;
c62ac5b6
RR
97
98 virtual void Layout();
5279a24d
RR
99
100 void Fit( wxWindow *window );
101 void SetSizeHints( wxWindow *window );
102
c62ac5b6 103protected:
5279a24d
RR
104 wxSize m_size;
105 wxPoint m_position;
106 wxList m_children;
107
108 wxSize GetMinWindowSize( wxWindow *window );
c62ac5b6
RR
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
121class WXDLLEXPORT wxBorderNewSizer: public wxNewSizer
122{
123public:
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
136protected:
137 int m_sides;
138};
139
61d514bb
RR
140//---------------------------------------------------------------------------
141// wxBoxNewSizer
142//---------------------------------------------------------------------------
5279a24d 143
61d514bb
RR
144class WXDLLEXPORT wxBoxNewSizer: public wxNewSizer
145{
146public:
147 wxBoxNewSizer( int orient );
148
149 void RecalcSizes();
150 wxSize CalcMin();
151
152 int GetOrientation()
153 { return m_orient; }
154
155protected:
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
5279a24d
RR
164#endif
165 // __WXSIZER_H__