]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_constraints.i
fixed deadlock when calling wxPostEvent() from worker thread
[wxWidgets.git] / wxPython / src / _constraints.i
index e7be8174fe6b824aa67cda4985612a300a236aeb..2af1005bf312e0018ab813a3e06aff584803e6e3 100644 (file)
@@ -42,97 +42,271 @@ enum wxRelationship
 };
 
 
-// wxIndividualLayoutConstraint: a constraint on window position
+DocStr(wxIndividualLayoutConstraint,
+"Objects of this class are stored in the `wx.LayoutConstraints` class as
+one of eight possible constraints that a window can be involved in.
+You will never need to create an instance of
+wx.IndividualLayoutConstraint, rather you should create a
+`wx.LayoutConstraints` instance and use the individual contstraints
+that it contains.", "
+
+Constraints are initially set to have the relationship
+wx.Unconstrained, which means that their values should be calculated
+by looking at known constraints.
+
+The Edge specifies the type of edge or dimension of a window.
+
+Edges
+------
+    ==================  ==============================================
+    wx.Left             The left edge.
+    wx.Top              The top edge.
+    wx.Right            The right edge.
+    wx.Bottom           The bottom edge.
+    wx.CentreX          The x-coordinate of the centre of the window.
+    wx.CentreY          The y-coordinate of the centre of the window. 
+    ==================  ==============================================
+
+
+The Relationship specifies the relationship that this edge or
+dimension has with another specified edge or dimension. Normally, the
+user doesn't use these directly because functions such as Below and
+RightOf are a convenience for using the more general Set function.
+
+Relationships
+-------------
+    ==================  ==============================================
+    wx.Unconstrained    The edge or dimension is unconstrained
+                        (the default for edges.)
+    wx.AsIs             The edge or dimension is to be taken from the current
+                        window position or size (the default for dimensions.)
+    wx.Above            The edge should be above another edge.
+    wx.Below            The edge should be below another edge.
+    wx.LeftOf           The edge should be to the left of another edge.
+    wx.RightOf          The edge should be to the right of another edge.
+    wx.SameAs           The edge or dimension should be the same as another edge
+                        or dimension.
+    wx.PercentOf        The edge or dimension should be a percentage of another
+                        edge or dimension.
+    wx.Absolute         The edge or dimension should be a given absolute value.
+    ==================  ==============================================
+
+:see: `wx.LayoutConstraints`, `wx.Window.SetConstraints`
+");
+
+
 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;
+    DocDeclStr(
+        void , Set(wxRelationship rel, wxWindow *otherW, wxEdge otherE,
+                   int val = 0, int marg = wxLAYOUT_DEFAULT_MARGIN),
+        "Sets the properties of the constraint. Normally called by one of the
+convenience functions such as Above, RightOf, SameAs.", "");
+    
+
+     DocDeclStr(
+        void , LeftOf(wxWindow *sibling, int marg = 0),
+        "Constrains this edge to be to the left of the given window, with an
+optional margin. Implicitly, this is relative to the left edge of the
+other window.", "");
+    
+    DocDeclStr(
+        void , RightOf(wxWindow *sibling, int marg = 0),
+        "Constrains this edge to be to the right of the given window, with an
+optional margin. Implicitly, this is relative to the right edge of the
+other window.", "");
+    
+    DocDeclStr(
+        void , Above(wxWindow *sibling, int marg = 0),
+        "Constrains this edge to be above the given window, with an optional
+margin. Implicitly, this is relative to the top edge of the other
+window.", "");
+    
+    DocDeclStr(
+        void , Below(wxWindow *sibling, int marg = 0),
+        "Constrains this edge to be below the given window, with an optional
+margin. Implicitly, this is relative to the bottom edge of the other
+window.", "");
+
+    DocDeclStr(
+        void , SameAs(wxWindow *otherW, wxEdge edge, int marg = 0),
+        "Constrains this edge or dimension to be to the same as the edge of the
+given window, with an optional margin.", "");
+    
+
+    DocDeclStr(
+        void , PercentOf(wxWindow *otherW, wxEdge wh, int per),
+        "Constrains this edge or dimension to be to a percentage of the given
+window, with an optional margin.", "");
+    
+
+    DocDeclStr(
+        void , Absolute(int val),
+        "Constrains this edge or dimension to be the given absolute value.", "");
+
+    DocDeclStr(
+        void , Unconstrained(),
+        "Sets this edge or dimension to be unconstrained, that is, dependent on
+other edges and dimensions from which this value can be deduced.", "");
+    
+
+    DocDeclStr(
+        void , AsIs(),
+        "Sets this edge or constraint to be whatever the window's value is at
+the moment. If either of the width and height constraints are *as is*,
+the window will not be resized, but moved instead. This is important
+when considering panel items which are intended to have a default
+size, such as a button, which may take its size from the size of the
+button label.", "");
+    
+
+    DocDeclStr(
+        wxWindow *, GetOtherWindow(),
+        "", "");
+        
+    DocDeclStr(
+        wxEdge , GetMyEdge() const,
+        "", "");
+    
+    DocDeclStr(
+        void , SetEdge(wxEdge which),
+        "", "");
+    
+    DocDeclStr(
+        void , SetValue(int v),
+        "", "");
+    
+    DocDeclStr(
+        int , GetMargin(),
+        "", "");
+    
+    DocDeclStr(
+        void , SetMargin(int m),
+        "", "");
+    
+    DocDeclStr(
+        int , GetValue() const,
+        "", "");
+    
+    DocDeclStr(
+        int , GetPercent() const,
+        "", "");
+    
+    DocDeclStr(
+        int , GetOtherEdge() const,
+        "", "");
+    
+    DocDeclStr(
+        bool , GetDone() const,
+        "", "");
+    
+    DocDeclStr(
+        void , SetDone(bool d),
+        "", "");
+    
+    DocDeclStr(
+        wxRelationship , GetRelationship(),
+        "", "");
+    
+    DocDeclStr(
+        void , SetRelationship(wxRelationship r),
+        "", "");
+    
+
+    DocDeclStr(
+        bool , ResetIfWin(wxWindow *otherW),
+        "Reset constraint if it mentions otherWin", "");
+    
+
+    DocDeclStr(
+        bool , SatisfyConstraint(wxLayoutConstraints *constraints, wxWindow *win),
+        "Try to satisfy constraint", "");
+    
+
+    DocDeclStr(
+        int , GetEdge(wxEdge which, wxWindow *thisWin, wxWindow *other) const,
+        "Get the value of this edge or dimension, or if this\n"
+        "is not determinable, -1.", "");
 
+    %property(Done, GetDone, SetDone, doc="See `GetDone` and `SetDone`");
+    %property(Margin, GetMargin, SetMargin, doc="See `GetMargin` and `SetMargin`");
+    %property(MyEdge, GetMyEdge, doc="See `GetMyEdge`");
+    %property(OtherEdge, GetOtherEdge, doc="See `GetOtherEdge`");
+    %property(OtherWindow, GetOtherWindow, doc="See `GetOtherWindow`");
+    %property(Percent, GetPercent, doc="See `GetPercent`");
+    %property(Relationship, GetRelationship, SetRelationship, doc="See `GetRelationship` and `SetRelationship`");
+    %property(Value, GetValue, SetValue, doc="See `GetValue` and `SetValue`");
+    
 };
 
 
-// wxLayoutConstraints: the complete set of constraints for a window
+DocStr(wxLayoutConstraints,
+"**Note:** constraints are now deprecated and you should use sizers
+instead.
+
+Objects of this class can be associated with a window to define its
+layout constraints, with respect to siblings or its parent.
+
+The class consists of the following eight constraints of class
+wx.IndividualLayoutConstraint, some or all of which should be accessed
+directly to set the appropriate constraints.
+
+    * left: represents the left hand edge of the window
+    * right: represents the right hand edge of the window
+    * top: represents the top edge of the window
+    * bottom: represents the bottom edge of the window
+    * width: represents the width of the window
+    * height: represents the height of the window
+    * centreX: represents the horizontal centre point of the window
+    * centreY: represents the vertical centre point of the window 
+
+Most constraints are initially set to have the relationship
+wxUnconstrained, which means that their values should be calculated by
+looking at known constraints. The exceptions are width and height,
+which are set to wxAsIs to ensure that if the user does not specify a
+constraint, the existing width and height will be used, to be
+compatible with panel items which often have take a default size. If
+the constraint is ``wx.AsIs``, the dimension will not be changed.
+
+:see: `wx.IndividualLayoutConstraint`, `wx.Window.SetConstraints`
+", "");
+       
+
 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;
+
+    DocCtorStr(
+        wxLayoutConstraints(),
+        "", "");
+
+    ~wxLayoutConstraints();
     
-    wxLayoutConstraints();
+    DocDeclA(
+        bool, SatisfyConstraints(wxWindow *win, int *OUTPUT),
+        "SatisfyConstraints(Window win) -> (areSatisfied, noChanges)");
 
-    bool SatisfyConstraints(wxWindow *win, int *OUTPUT);
     bool AreSatisfied() const;
 };