1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: provide two new classes for layout, wxMultiCellSizer and wxMultiCellCanvas
4 // Author: Jonathan Bayer
8 // Copyright: (c) Jonathan Bayer
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // This was inspired by the gbsizer class written by Alex Andruschak
15 #ifndef __WX_MULTICELL_H__
16 #define __WX_MULTICELL_H__
18 #if defined(__GNUG__) && !defined(__APPLE__)
19 #pragma interface "multicell.h"
22 #include "wx/gizmos/gizmos.h"
24 // ----------------------------------------------------------------------------
26 // ----------------------------------------------------------------------------
27 // The classes are derived from wxSizer
31 // ----------------------------------------------------------------------------
33 // ----------------------------------------------------------------------------
36 wxNOT_RESIZABLE
= 0x00,
37 wxHORIZONTAL_RESIZABLE
= 0x01,
38 wxVERTICAL_RESIZABLE
= 0x10,
42 //---------------------------------------------------------------------------
44 //---------------------------------------------------------------------------
46 //---------------------------------------------------------------------------
47 // wxMultiCellItemHandle
48 //---------------------------------------------------------------------------
50 class WXDLLIMPEXP_GIZMOS wxMultiCellItemHandle
: public wxObject
52 DECLARE_CLASS(wxMultiCellItemHandle
);
64 wxMultiCellItemHandle( int row
, int column
, int height
= 1, int width
= 1, wxSize size
= wxDefaultSize
, wxResizable style
= wxNOT_RESIZABLE
, wxSize weight
= wxSize(1,1), int align
= wxALIGN_NOT
);
65 wxMultiCellItemHandle( int row
, int column
, wxSize size
, wxResizable style
= wxNOT_RESIZABLE
, wxSize weight
= wxSize(1,1), int align
= wxALIGN_NOT
);
66 wxMultiCellItemHandle( int row
, int column
, wxResizable style
, wxSize weight
= wxSize(1,1), int align
= wxALIGN_NOT
);
67 wxMultiCellItemHandle( int row
, int column
, int align
);
72 wxResizable
GetStyle();
73 wxSize
GetLocalSize();
78 void Initialize( int row
, int column
, int height
= 1, int width
= 1, wxSize size
= wxDefaultSize
, wxResizable style
= wxNOT_RESIZABLE
, wxSize weight
= wxSize(1,1), int align
= wxALIGN_NOT
);
82 //---------------------------------------------------------------------------
84 //---------------------------------------------------------------------------
86 class WXDLLIMPEXP_GIZMOS wxMultiCellSizer
: virtual public wxSizer
88 DECLARE_CLASS(wxMultiCellSizer
);
94 wxMultiCellSizer(wxSize
& size
);
95 wxMultiCellSizer(int rows
, int cols
);
98 virtual void RecalcSizes();
99 virtual wxSize
CalcMin();
100 bool SetDefaultCellSize(wxSize size
);
101 bool SetColumnWidth(int column
, int colSize
= 5, bool expandable
= FALSE
);
102 bool SetRowHeight(int row
, int rowSize
= 5, bool expandable
= FALSE
);
103 bool EnableGridLines(wxWindow
*win
);
104 bool SetGridPen(wxPen
*pen
);
105 void OnPaint(wxDC
& dc
);
109 int Sum(int *array
, int x
);
119 wxSize m_defaultCellSize
;
120 wxWindow
*m_win
; // usually used for debugging
123 void DrawGridLines(wxDC
& dc
);
124 void Initialize(wxSize size
);
128 // wxCell is used internally, so we don't need to declare it here
132 //---------------------------------------------------------------------------
134 //---------------------------------------------------------------------------
136 class WXDLLIMPEXP_GIZMOS wxMultiCellCanvas
: public wxFlexGridSizer
139 wxMultiCellCanvas(wxWindow
*parent
, int numRows
= 2, int numCols
= 2);
140 void Add(wxWindow
*win
, unsigned int row
, unsigned int col
);
142 void Resize(int numRows
, int numCols
);
151 void CalculateConstraints();
152 void SetMinCellSize(const wxSize size
)
154 m_minCellSize
= size
;
157 /* These are to hide Add() method of parents and to avoid Borland warning about hiding virtual functions */
158 void Add( wxWindow
*window
, int proportion
= 0, int flag
= 0, int border
= 0, wxObject
* userData
= NULL
)
159 { wxFlexGridSizer::Add( window
, proportion
, flag
, border
, userData
); }
160 void Add( wxSizer
*sizer
, int proportion
= 0, int flag
= 0, int border
= 0, wxObject
* userData
= NULL
)
161 { wxFlexGridSizer::Add( sizer
, proportion
, flag
, border
, userData
); }
162 void Add( int width
, int height
, int proportion
= 0, int flag
= 0, int border
= 0, wxObject
* userData
= NULL
)
163 { wxFlexGridSizer::Add( width
, height
, proportion
, flag
, border
, userData
); }
164 void Add( wxSizerItem
*item
)
165 { wxFlexGridSizer::Add( item
); }
169 unsigned int m_maxRows
, m_maxCols
;
171 wxSize m_minCellSize
;
179 /*** End of File ***/