]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_constraints.i
Merged the wxPy_newswig branch into the HEAD branch (main trunk)
[wxWidgets.git] / wxPython / src / _constraints.i
diff --git a/wxPython/src/_constraints.i b/wxPython/src/_constraints.i
new file mode 100644 (file)
index 0000000..e7be817
--- /dev/null
@@ -0,0 +1,139 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        _constraints.i
+// Purpose:     SWIG interface defs for the layout constraints
+//
+// Author:      Robin Dunn
+//
+// Created:     3-July-1997
+// RCS-ID:      $Id$
+// Copyright:   (c) 2003 by Total Control Software
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// Not a %module
+
+
+//---------------------------------------------------------------------------
+
+%{
+%}
+
+//---------------------------------------------------------------------------
+%newgroup;
+
+
+enum wxEdge
+{
+    wxLeft, wxTop, wxRight, wxBottom, wxWidth, wxHeight,
+    wxCentre, wxCenter = wxCentre, wxCentreX, wxCentreY
+};
+
+enum wxRelationship
+{
+    wxUnconstrained = 0,
+    wxAsIs,
+    wxPercentOf,
+    wxAbove,
+    wxBelow,
+    wxLeftOf,
+    wxRightOf,
+    wxSameAs,
+    wxAbsolute
+};
+
+
+// wxIndividualLayoutConstraint: a constraint on window position
+class wxIndividualLayoutConstraint : public wxObject
+{
+public:
+//    wxIndividualLayoutConstraint();
+//    ~wxIndividualLayoutConstraint();
+
+    void Set(wxRelationship rel, wxWindow *otherW, wxEdge otherE, int val = 0, int marg = wxLAYOUT_DEFAULT_MARGIN);
+
+    //
+    // Sibling relationships
+    //
+    void LeftOf(wxWindow *sibling, int marg = 0);
+    void RightOf(wxWindow *sibling, int marg = 0);
+    void Above(wxWindow *sibling, int marg = 0);
+    void Below(wxWindow *sibling, int marg = 0);
+
+    //
+    // 'Same edge' alignment
+    //
+    void SameAs(wxWindow *otherW, wxEdge edge, int marg = 0);
+
+    // The edge is a percentage of the other window's edge
+    void PercentOf(wxWindow *otherW, wxEdge wh, int per);
+
+    //
+    // Edge has absolute value
+    //
+    void Absolute(int val);
+
+    //
+    // Dimension is unconstrained
+    //
+    void Unconstrained() { relationship = wxUnconstrained; }
+
+    //
+    // Dimension is 'as is' (use current size settings)
+    //
+    void AsIs() { relationship = wxAsIs; }
+
+    //
+    // Accessors
+    //
+    wxWindow *GetOtherWindow();
+    wxEdge GetMyEdge() const;
+    void SetEdge(wxEdge which);
+    void SetValue(int v);
+    int GetMargin();
+    void SetMargin(int m);
+    int GetValue() const;
+    int GetPercent() const;
+    int GetOtherEdge() const;
+    bool GetDone() const;
+    void SetDone(bool d);
+    wxRelationship GetRelationship();
+    void SetRelationship(wxRelationship r);
+
+    // Reset constraint if it mentions otherWin
+    bool ResetIfWin(wxWindow *otherW);
+
+    // Try to satisfy constraint
+    bool SatisfyConstraint(wxLayoutConstraints *constraints, wxWindow *win);
+
+    // Get the value of this edge or dimension, or if this
+    // is not determinable, -1.
+    int GetEdge(wxEdge which, wxWindow *thisWin, wxWindow *other) const;
+
+};
+
+
+// wxLayoutConstraints: the complete set of constraints for a window
+class wxLayoutConstraints : public wxObject
+{
+public:
+    %immutable;
+    // Edge constraints
+    wxIndividualLayoutConstraint left;
+    wxIndividualLayoutConstraint top;
+    wxIndividualLayoutConstraint right;
+    wxIndividualLayoutConstraint bottom;
+    // Size constraints
+    wxIndividualLayoutConstraint width;
+    wxIndividualLayoutConstraint height;
+    // Centre constraints
+    wxIndividualLayoutConstraint centreX;
+    wxIndividualLayoutConstraint centreY;
+    %mutable;
+    
+    wxLayoutConstraints();
+
+    bool SatisfyConstraints(wxWindow *win, int *OUTPUT);
+    bool AreSatisfied() const;
+};
+
+//---------------------------------------------------------------------------