| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: layout.h
- // Purpose: interface of layout constraints classes
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- enum wxEdge
- {
- wxLeft, wxTop, wxRight, wxBottom, wxWidth, wxHeight,
- wxCentre, wxCenter = wxCentre, wxCentreX, wxCentreY
- };
- enum wxRelationship
- {
- wxUnconstrained,
- wxAsIs,
- wxPercentOf,
- wxAbove,
- wxBelow,
- wxLeftOf,
- wxRightOf,
- wxSameAs,
- wxAbsolute
- };
- const int wxLAYOUT_DEFAULT_MARGIN = 0;
- // ----------------------------------------------------------------------------
- // wxIndividualLayoutConstraint: a constraint on window position
- // ----------------------------------------------------------------------------
- class wxIndividualLayoutConstraint : public wxObject
- {
- public:
- wxIndividualLayoutConstraint();
- // note that default copy ctor and assignment operators are ok
- virtual ~wxIndividualLayoutConstraint();
- void Set(wxRelationship rel,
- wxWindow *otherW,
- wxEdge otherE,
- int val = 0,
- int margin = wxLAYOUT_DEFAULT_MARGIN);
- //
- // Sibling relationships
- //
- void LeftOf(wxWindow *sibling, int margin = wxLAYOUT_DEFAULT_MARGIN);
- void RightOf(wxWindow *sibling, int margin = wxLAYOUT_DEFAULT_MARGIN);
- void Above(wxWindow *sibling, int margin = wxLAYOUT_DEFAULT_MARGIN);
- void Below(wxWindow *sibling, int margin = wxLAYOUT_DEFAULT_MARGIN);
- //
- // 'Same edge' alignment
- //
- void SameAs(wxWindow *otherW, wxEdge edge, int margin = wxLAYOUT_DEFAULT_MARGIN);
- // 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();
- //
- // Dimension is 'as is' (use current size settings)
- //
- void AsIs();
- //
- // 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:
- // Edge constraints
- wxIndividualLayoutConstraint left;
- wxIndividualLayoutConstraint top;
- wxIndividualLayoutConstraint right;
- wxIndividualLayoutConstraint bottom;
- // Size constraints
- wxIndividualLayoutConstraint width;
- wxIndividualLayoutConstraint height;
- // Centre constraints
- wxIndividualLayoutConstraint centreX;
- wxIndividualLayoutConstraint centreY;
- wxLayoutConstraints();
- // note that default copy ctor and assignment operators are ok
- virtual ~wxLayoutConstraints();
- bool SatisfyConstraints(wxWindow *win, int *noChanges);
- bool AreSatisfied() const;
- };
|