X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/61d514bb2fe17e985bfcd05857aeefdf109e4044..794bcc2dea743ac907b839f54e451847c9ea4b72:/include/wx/sizer.h?ds=sidebyside diff --git a/include/wx/sizer.h b/include/wx/sizer.h index 7efe7d4ffa..091a17db79 100644 --- a/include/wx/sizer.h +++ b/include/wx/sizer.h @@ -1,9 +1,9 @@ ///////////////////////////////////////////////////////////////////////////// // Name: sizer.h -// Purpose: provide wxNewSizer class for layounting +// Purpose: provide wxSizer class for layouting // Author: Robert Roebling and Robin Dunn // Modified by: -// Created: +// Created: // RCS-ID: $Id$ // Copyright: (c) Robin Dunn, Dirk Holtwick and Robert Roebling // Licence: wxWindows licence @@ -26,65 +26,116 @@ // classes //--------------------------------------------------------------------------- -class wxNewSizerItem; -class wxNewSizer; -class wxBorderNewSizer; -class wxBoxNewSizer; +class wxStaticBox; +class wxNotebook; + +class wxSizerItem; +class wxSizer; +class wxBoxSizer; +class wxStaticBoxSizer; //--------------------------------------------------------------------------- -// wxNewSizerItem +// wxSizerItem //--------------------------------------------------------------------------- -class WXDLLEXPORT wxNewSizerItem: public wxObject +class WXDLLEXPORT wxSizerItem: public wxObject { + DECLARE_CLASS(wxSizerItem); public: // spacer - wxNewSizerItem( int width, int height, int option ); + wxSizerItem( int width, int height, int option, int flag, int border, wxObject* userData); // window - wxNewSizerItem( wxWindow *window, int option ); + wxSizerItem( wxWindow *window, int option, int flag, int border, wxObject* userData ); // subsizer - wxNewSizerItem( wxNewSizer *sizer, int option ); + wxSizerItem( wxSizer *sizer, int option, int flag, int border, wxObject* userData ); + + ~wxSizerItem(); virtual wxSize GetSize(); virtual wxSize CalcMin(); virtual void SetDimension( wxPoint pos, wxSize size ); - + + void SetRatio( int width, int height ) + // if either of dimensions is zero, ratio is assumed to be 1 + // to avoid "divide by zero" errors + { m_ratio = (width && height) ? ((float) width / (float) height) : 1; } + void SetRatio( wxSize size ) + { m_ratio = (size.x && size.y) ? ((float) size.x / (float) size.y) : 1; } + void SetRatio( float ratio ) { m_ratio = ratio; } + float GetRatio() const { return m_ratio; } + bool IsWindow(); - bool IsNewSizer(); + bool IsSizer(); bool IsSpacer(); - wxWindow *GetWindow() const + void SetInitSize( int x, int y ) + { m_minSize.x = x; m_minSize.y = y; } + void SetOption( int option ) + { m_option = option; } + void SetFlag( int flag ) + { m_flag = flag; } + void SetBorder( int border ) + { m_border = border; } + + wxWindow *GetWindow() const { return m_window; } - wxNewSizer *GetNewSizer() const + wxSizer *GetSizer() const { return m_sizer; } int GetOption() const { return m_option; } - + int GetFlag() const + { return m_flag; } + int GetBorder() const + { return m_border; } + wxObject* GetUserData() + { return m_userData; } + protected: wxWindow *m_window; - wxNewSizer *m_sizer; + wxSizer *m_sizer; + wxSize m_size; wxSize m_minSize; int m_option; + int m_border; + int m_flag; + // als: aspect ratio can always be calculated from m_size, + // but this would cause precision loss when the window + // is shrinked. it is safer to preserve initial value. + float m_ratio; + wxObject *m_userData; }; //--------------------------------------------------------------------------- -// wxNewSizer +// wxSizer //--------------------------------------------------------------------------- -class WXDLLEXPORT wxNewSizer: public wxObject +class WXDLLEXPORT wxSizer: public wxObject { + DECLARE_CLASS(wxSizer); public: - wxNewSizer(); - ~wxNewSizer(); - - virtual void Add( wxWindow *window, int option = 0 ); - virtual void Add( wxNewSizer *sizer, int option = 0 ); - virtual void Add( int width, int height, int option = 0 ); - + wxSizer(); + ~wxSizer(); + + virtual void Add( wxWindow *window, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + virtual void Add( wxSizer *sizer, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + virtual void Add( int width, int height, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + + virtual void Insert( int before, wxWindow *window, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + virtual void Insert( int before, wxSizer *sizer, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + virtual void Insert( int before, int width, int height, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + + virtual void Prepend( wxWindow *window, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + virtual void Prepend( wxSizer *sizer, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + virtual void Prepend( int width, int height, int option = 0, int flag = 0, int border = 0, wxObject* userData = NULL ); + + virtual bool Remove( wxWindow *window ); + virtual bool Remove( wxSizer *sizer ); + virtual bool Remove( int pos ); + void SetDimension( int x, int y, int width, int height ); - + wxSize GetSize() { return m_size; } wxPoint GetPosition() @@ -94,72 +145,92 @@ public: virtual void RecalcSizes() = 0; virtual wxSize CalcMin() = 0; - + virtual void Layout(); void Fit( wxWindow *window ); void SetSizeHints( wxWindow *window ); - + + wxList& GetChildren() + { return m_children; } + protected: wxSize m_size; wxPoint m_position; wxList m_children; - + wxSize GetMinWindowSize( wxWindow *window ); }; //--------------------------------------------------------------------------- -// wxBorderNewSizer +// wxBoxSizer //--------------------------------------------------------------------------- -#define wxWEST wxLEFT -#define wxEAST wxRIGHT -#define wxNORTH wxUP -#define wxSOUTH wxDOWN -#define wxALL_DIRECTIONS (wxNORTH | wxSOUTH | wxEAST | wxWEST) +class WXDLLEXPORT wxBoxSizer: public wxSizer +{ + DECLARE_CLASS(wxBoxSizer); +public: + wxBoxSizer( int orient ); + + void RecalcSizes(); + wxSize CalcMin(); -class WXDLLEXPORT wxBorderNewSizer: public wxNewSizer + int GetOrientation() + { return m_orient; } + +protected: + int m_orient; + int m_stretchable; + int m_minWidth; + int m_minHeight; + int m_fixedWidth; + int m_fixedHeight; +}; + +//--------------------------------------------------------------------------- +// wxStaticBoxSizer +//--------------------------------------------------------------------------- + +class WXDLLEXPORT wxStaticBoxSizer: public wxBoxSizer { + DECLARE_CLASS(wxStaticBoxSizer); public: - wxBorderNewSizer( int sides = wxALL_DIRECTIONS ); - - virtual void Add( wxWindow *window, int option = 10 ); - virtual void Add( wxNewSizer *sizer, int option = 10 ); - virtual void Add( int width, int height, int option = 10 ); - + wxStaticBoxSizer( wxStaticBox *box, int orient ); + void RecalcSizes(); wxSize CalcMin(); - - int GetSides() - { return m_sides; } - + + wxStaticBox *GetStaticBox() + { return m_staticBox; } + protected: - int m_sides; + wxStaticBox *m_staticBox; }; - + //--------------------------------------------------------------------------- -// wxBoxNewSizer +// wxNotebookSizer //--------------------------------------------------------------------------- -class WXDLLEXPORT wxBoxNewSizer: public wxNewSizer +#if wxUSE_NOTEBOOK + +class WXDLLEXPORT wxNotebookSizer: public wxSizer { + DECLARE_CLASS(wxNotebookSizer); public: - wxBoxNewSizer( int orient ); - + wxNotebookSizer( wxNotebook *nb ); + void RecalcSizes(); wxSize CalcMin(); - - int GetOrientation() - { return m_orient; } - + + wxNotebook *GetNotebook() + { return m_notebook; } + protected: - int m_orient; - int m_stretchable; - int m_minWidth; - int m_minHeight; - int m_fixedWidth; - int m_fixedHeight; + wxNotebook *m_notebook; }; - + +#endif + + #endif // __WXSIZER_H__