]> git.saurik.com Git - wxWidgets.git/blob - wxPython/src/_constraints.i
Added Brian Victor's Patch
[wxWidgets.git] / wxPython / src / _constraints.i
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: _constraints.i
3 // Purpose: SWIG interface defs for the layout constraints
4 //
5 // Author: Robin Dunn
6 //
7 // Created: 3-July-1997
8 // RCS-ID: $Id$
9 // Copyright: (c) 2003 by Total Control Software
10 // Licence: wxWindows license
11 /////////////////////////////////////////////////////////////////////////////
12
13 // Not a %module
14
15
16 //---------------------------------------------------------------------------
17
18 %{
19 %}
20
21 //---------------------------------------------------------------------------
22 %newgroup;
23
24
25 enum wxEdge
26 {
27 wxLeft, wxTop, wxRight, wxBottom, wxWidth, wxHeight,
28 wxCentre, wxCenter = wxCentre, wxCentreX, wxCentreY
29 };
30
31 enum wxRelationship
32 {
33 wxUnconstrained = 0,
34 wxAsIs,
35 wxPercentOf,
36 wxAbove,
37 wxBelow,
38 wxLeftOf,
39 wxRightOf,
40 wxSameAs,
41 wxAbsolute
42 };
43
44
45 // wxIndividualLayoutConstraint: a constraint on window position
46 class wxIndividualLayoutConstraint : public wxObject
47 {
48 public:
49 // wxIndividualLayoutConstraint();
50 // ~wxIndividualLayoutConstraint();
51
52 void Set(wxRelationship rel, wxWindow *otherW, wxEdge otherE, int val = 0, int marg = wxLAYOUT_DEFAULT_MARGIN);
53
54 //
55 // Sibling relationships
56 //
57 void LeftOf(wxWindow *sibling, int marg = 0);
58 void RightOf(wxWindow *sibling, int marg = 0);
59 void Above(wxWindow *sibling, int marg = 0);
60 void Below(wxWindow *sibling, int marg = 0);
61
62 //
63 // 'Same edge' alignment
64 //
65 void SameAs(wxWindow *otherW, wxEdge edge, int marg = 0);
66
67 // The edge is a percentage of the other window's edge
68 void PercentOf(wxWindow *otherW, wxEdge wh, int per);
69
70 //
71 // Edge has absolute value
72 //
73 void Absolute(int val);
74
75 //
76 // Dimension is unconstrained
77 //
78 void Unconstrained() { relationship = wxUnconstrained; }
79
80 //
81 // Dimension is 'as is' (use current size settings)
82 //
83 void AsIs() { relationship = wxAsIs; }
84
85 //
86 // Accessors
87 //
88 wxWindow *GetOtherWindow();
89 wxEdge GetMyEdge() const;
90 void SetEdge(wxEdge which);
91 void SetValue(int v);
92 int GetMargin();
93 void SetMargin(int m);
94 int GetValue() const;
95 int GetPercent() const;
96 int GetOtherEdge() const;
97 bool GetDone() const;
98 void SetDone(bool d);
99 wxRelationship GetRelationship();
100 void SetRelationship(wxRelationship r);
101
102 // Reset constraint if it mentions otherWin
103 bool ResetIfWin(wxWindow *otherW);
104
105 // Try to satisfy constraint
106 bool SatisfyConstraint(wxLayoutConstraints *constraints, wxWindow *win);
107
108 // Get the value of this edge or dimension, or if this
109 // is not determinable, -1.
110 int GetEdge(wxEdge which, wxWindow *thisWin, wxWindow *other) const;
111
112 };
113
114
115 // wxLayoutConstraints: the complete set of constraints for a window
116 class wxLayoutConstraints : public wxObject
117 {
118 public:
119 %immutable;
120 // Edge constraints
121 wxIndividualLayoutConstraint left;
122 wxIndividualLayoutConstraint top;
123 wxIndividualLayoutConstraint right;
124 wxIndividualLayoutConstraint bottom;
125 // Size constraints
126 wxIndividualLayoutConstraint width;
127 wxIndividualLayoutConstraint height;
128 // Centre constraints
129 wxIndividualLayoutConstraint centreX;
130 wxIndividualLayoutConstraint centreY;
131 %mutable;
132
133 wxLayoutConstraints();
134
135
136 DocDeclA(
137 bool, SatisfyConstraints(wxWindow *win, int *OUTPUT),
138 "SatisfyConstraints(Window win) -> (areSatisfied, noChanges)");
139
140 bool AreSatisfied() const;
141 };
142
143 //---------------------------------------------------------------------------