Skip to content

Instantly share code, notes, and snippets.

@typemytype
Created April 23, 2019 15:23
Show Gist options
  • Select an option

  • Save typemytype/e3771d87dde7b1837c9d91ef9283fdd6 to your computer and use it in GitHub Desktop.

Select an option

Save typemytype/e3771d87dde7b1837c9d91ef9283fdd6 to your computer and use it in GitHub Desktop.
import AppKit
layoutAttribute = {
"left": AppKit.NSLayoutAttributeLeft,
"right": AppKit.NSLayoutAttributeRight,
"top": AppKit.NSLayoutAttributeTop,
"bottom": AppKit.NSLayoutAttributeBottom,
"leading": AppKit.NSLayoutAttributeLeading,
"trailing": AppKit.NSLayoutAttributeTrailing,
"width": AppKit.NSLayoutAttributeWidth,
"height": AppKit.NSLayoutAttributeHeight,
"centerX": AppKit.NSLayoutAttributeCenterX,
"centerY": AppKit.NSLayoutAttributeCenterY,
"baseline": AppKit.NSLayoutAttributeBaseline,
"lastBaseline": AppKit.NSLayoutAttributeLastBaseline,
"firstBaseline": AppKit.NSLayoutAttributeFirstBaseline,
}
layoutRelation = {
"<=": AppKit.NSLayoutRelationLessThanOrEqual,
"==": AppKit.NSLayoutRelationEqual,
">=": AppKit.NSLayoutRelationGreaterThanOrEqual
}
import vanilla
w = vanilla.Window((400, 400), minSize=(200, 200))
w.v1 = vanilla.TextEditor("auto", "editor 1")
w.v2 = vanilla.TextEditor("auto", "editor 2")
constraints = [
dict(view1=w.v1, view2=w, attribute1="top", attribute2="top", relation="=="),
dict(view1=w.v1, view2=w, attribute1="bottom", attribute2="centerY", relation="=="),
dict(view1=w.v1, view2=w, attribute1="left", attribute2="left", relation="=="),
dict(view1=w.v1, view2=w, attribute1="right", attribute2="right", relation="=="),
dict(view1=w.v2, view2=w.v1, attribute1="top", attribute2="bottom", relation="=="),
dict(view1=w.v2, view2=w, attribute1="bottom", attribute2="bottom", relation="=="),
dict(view1=w.v2, view2=w, attribute1="left", attribute2="left", relation="=="),
dict(view1=w.v2, view2=w, attribute1="right", attribute2="right", relation="=="),
]
view = w._getContentView()
layoutConstraints = []
for constraint in constraints:
view1 = constraint["view1"]
view1 = view1._getContentView()
view2 = constraint["view2"]
view2 = view2._getContentView()
constraint = AppKit.NSLayoutConstraint.constraintWithItem_attribute_relatedBy_toItem_attribute_multiplier_constant_(
view1,
layoutAttribute[constraint["attribute1"]],
layoutRelation[constraint.get("relation", "==")],
view2,
layoutAttribute[constraint["attribute2"]],
constraint.get("multiplier", 1),
constraint.get("constant", 0)
)
layoutConstraints.append(constraint)
view.addConstraints_(layoutConstraints)
w.open()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment