]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/layout.h
compilation fix for gcc (closes bug 996701)
[wxWidgets.git] / include / wx / layout.h
index f4418fd6fb4417216b8faf0263dd5b89dc2f0b28..d3212877201ba4a8cb6c6c3e5abf86526c5b1b2c 100644 (file)
@@ -6,7 +6,7 @@
 // Created:     29/01/98
 // RCS-ID:      $Id$
 // Copyright:   (c) 1998 Julian Smart
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 #ifndef _WX_LAYOUTH__
 // headers
 // ----------------------------------------------------------------------------
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
     #pragma interface "layout.h"
 #endif
 
-#include "wx/defs.h"
+#include "wx/object.h"
 
 // X stupidly defines these in X.h
 #ifdef Above
@@ -62,44 +62,17 @@ enum wxRelationship
     wxAbsolute
 };
 
-enum wxSizerBehaviour
-{
-    wxSizerShrink,
-    wxSizerExpand,
-    wxSizerNone
-};
-
-#define wxTYPE_SIZER        90
-
-// =============================================================================
-// classes
-// =============================================================================
-
 // ----------------------------------------------------------------------------
 // wxIndividualLayoutConstraint: a constraint on window position
 // ----------------------------------------------------------------------------
 
 class WXDLLEXPORT wxIndividualLayoutConstraint : public wxObject
 {
-    DECLARE_DYNAMIC_CLASS(wxIndividualLayoutConstraint)
-
-protected:
-    // To be allowed to modify the internal variables
-    friend class wxIndividualLayoutConstraint_Serialize;
-
-    // 'This' window is the parent or sibling of otherWin
-    wxWindowBase *otherWin;
-
-    wxEdge myEdge;
-    wxRelationship relationship;
-    int margin;
-    int value;
-    int percent;
-    wxEdge otherEdge;
-    bool done;
-
 public:
     wxIndividualLayoutConstraint();
+
+    // note that default copy ctor and assignment operators are ok
+
     ~wxIndividualLayoutConstraint();
 
     void Set(wxRelationship rel, wxWindowBase *otherW, wxEdge otherE, int val = 0, int marg = wxLAYOUT_DEFAULT_MARGIN);
@@ -161,6 +134,23 @@ public:
     // Get the value of this edge or dimension, or if this
     // is not determinable, -1.
     int GetEdge(wxEdge which, wxWindowBase *thisWin, wxWindowBase *other) const;
+
+protected:
+    // To be allowed to modify the internal variables
+    friend class wxIndividualLayoutConstraint_Serialize;
+
+    // 'This' window is the parent or sibling of otherWin
+    wxWindowBase *otherWin;
+
+    wxEdge myEdge;
+    wxRelationship relationship;
+    int margin;
+    int value;
+    int percent;
+    wxEdge otherEdge;
+    bool done;
+
+    DECLARE_DYNAMIC_CLASS(wxIndividualLayoutConstraint)
 };
 
 // ----------------------------------------------------------------------------
@@ -169,8 +159,6 @@ public:
 
 class WXDLLEXPORT wxLayoutConstraints : public wxObject
 {
-    DECLARE_DYNAMIC_CLASS(wxLayoutConstraints)
-
 public:
     // Edge constraints
     wxIndividualLayoutConstraint left;
@@ -185,169 +173,20 @@ public:
     wxIndividualLayoutConstraint centreY;
 
     wxLayoutConstraints();
+
+    // note that default copy ctor and assignment operators are ok
+
     ~wxLayoutConstraints();
 
     bool SatisfyConstraints(wxWindowBase *win, int *noChanges);
     bool AreSatisfied() const
     {
-        return left.GetDone() && top.GetDone() && right.GetDone() &&
-               bottom.GetDone() && centreX.GetDone() && centreY.GetDone();
+        return left.GetDone() && top.GetDone() &&
+               width.GetDone() && height.GetDone();
     }
-};
 
-// ----------------------------------------------------------------------------
-// sizers
-// ----------------------------------------------------------------------------
-
-/*
-
-Algorithm:
-
- Each sizer has a Layout function.
-
- wxExpandSizer::Layout                  ; E.g. for resizeable windows
-
-   - parent size must be known (i.e. called
-      from OnSize or explicitly)
-   - call Layout on each child to give it a chance to resize
-     (e.g. child shrinks around its own children):
-     stop when all children return TRUE, or no change
-   - evaluate constraints on self to set size
-
- wxShrinkSizer::Layout                  ; E.g. fit-to-contents windows
-                                        ; Perhaps 2 rowcols, one above other.
-
-   - call Layout on each child to give it a chance to resize
-     (e.g. child shrinks around its own children):
-     stop when each returns TRUE, or no change
-   - fit around children
-        (what if some want to be centred? E.g. OK/Cancel rowcol.
-         - done by centring e.g. bottom sizer w.r.t. top sizer.
-           (sibling relationship only))
-   - evaluate own constraints (e.g. may be below another window)
-   - IF parent is a real window (remember: a real window can
-     have only one child sizer, although a sizer can have several child
-     (real) windows), then resize this parent WITHOUT invoking Layout
-     again.
-     Frame and dialog box OnSizes can check if the sizer is a shrink
-     sizer; if not, can call layout. Maybe have virtual bool AutoSizeLayout()
-     to determine this.
-
-How to relayout if a child sizer/window changes? Need to go all the way
-to the top of the hierarchy and call Layout() again.
-
- wxRowColSizer::Layout
-
-   - Similar to wxShrinkSizer only instead of shrinking to fit
-     contents, more sophisticated layout of contents, and THEN
-     shrinking (possibly).
-   - Do the same parent window check/setsize as for wxShrinkSizer.
-
-*/
-
-class WXDLLEXPORT wxSizer : public wxWindow
-{
-    DECLARE_DYNAMIC_CLASS(wxSizer)
-
-protected:
-    wxSizerBehaviour sizerBehaviour;
-    int borderX;
-    int borderY;
-    int sizerWidth;
-    int sizerHeight;
-    int sizerX;
-    int sizerY;
-
-public:
-    wxSizer();
-    wxSizer(wxWindowBase *parent, wxSizerBehaviour behav = wxSizerNone);
-    ~wxSizer();
-
-    bool Create(wxWindowBase *parent, wxSizerBehaviour behav = wxSizerNone);
-
-    virtual void GetSize(int *w, int *h) const;
-
-    virtual void GetClientSize(int *w, int *h) const { GetSize(w, h); }
-
-    virtual void GetPosition(int *x, int *y) const;
-
-    void SizerSetSize(int x, int y, int w, int h) { SetSize(x, y, w, h); }
-    void SizerMove(int x, int y) { Move(x, y); }
-
-    virtual void SetBorder(int w, int h);
-    int GetBorderX() { return borderX ; }
-    int GetBorderY() { return borderY ; }
-
-    virtual void AddSizerChild(wxWindowBase *child);
-    virtual void RemoveSizerChild(wxWindowBase *child);
-
-    virtual void SetBehaviour(wxSizerBehaviour b) { sizerBehaviour = b; }
-    virtual wxSizerBehaviour GetBehaviour() { return sizerBehaviour; }
-
-    virtual bool LayoutPhase1(int *);
-    virtual bool LayoutPhase2(int *);
-
-protected:
-    virtual void DoSetSize(int x, int y,
-                           int width, int height,
-                           int sizeFlags = wxSIZE_AUTO);
-};
-
-#define wxSIZER_ROWS  TRUE
-#define wxSIZER_COLS  FALSE
-
-class WXDLLEXPORT wxRowColSizer : public wxSizer
-{
-    DECLARE_DYNAMIC_CLASS(wxRowColSizer)
-
-protected:
-    bool rowOrCol;
-    int rowOrColSize;
-    int xSpacing;
-    int ySpacing;
-
-public:
-    // rowOrCol = TRUE to be laid out in rows, otherwise in columns.
-    wxRowColSizer();
-    wxRowColSizer(wxWindowBase *parent, bool rowOrCol = wxSIZER_ROWS,
-                  int rowsOrColSize = 20, wxSizerBehaviour = wxSizerShrink);
-    ~wxRowColSizer();
-
-    bool Create(wxWindowBase *parent, bool rowOrCol = wxSIZER_ROWS,
-                int rowsOrColSize = 20, wxSizerBehaviour = wxSizerShrink);
-
-    virtual void SetRowOrCol(bool rc) { rowOrCol = rc; }
-    virtual bool GetRowOrCol() { return rowOrCol; }
-    virtual void SetRowOrColSize(int n) { rowOrColSize = n; }
-    virtual int GetRowOrColSize() { return rowOrColSize; }
-    virtual void SetSpacing(int x, int y) { xSpacing = x; ySpacing = y; }
-    virtual void GetSpacing(int *x, int *y) { *x = xSpacing; *y = ySpacing; }
-
-    bool LayoutPhase1(int *);
-    bool LayoutPhase2(int *);
-};
-
-class WXDLLEXPORT wxSpacingSizer : public wxSizer
-{
-    DECLARE_DYNAMIC_CLASS(wxSpacingSizer)
-
-public:
-    wxSpacingSizer();
-    wxSpacingSizer(wxWindowBase *parent, wxRelationship rel, wxWindowBase *other, int spacing);
-    wxSpacingSizer(wxWindowBase *parent);
-    ~wxSpacingSizer();
-
-    bool Create(wxWindowBase *parent, wxRelationship rel, wxWindowBase *other, int sp);
-    bool Create(wxWindowBase *parent);
+    DECLARE_DYNAMIC_CLASS(wxLayoutConstraints)
 };
 
-// ----------------------------------------------------------------------------
-// global functions
-// ----------------------------------------------------------------------------
-
-#if WXWIN_COMPATIBILITY
-    extern bool WXDLLEXPORT wxOldDoLayout(wxWindowBase *win);
-#endif // WXWIN_COMPATIBILITY
-
 #endif
     // _WX_LAYOUTH__