Some layout.swift changes. Added support for the metrics parameter and a fitting size calculation function; this will be needed for the next experiment with boxes.
This commit is contained in:
parent
22599c3428
commit
819d778b46
|
@ -90,8 +90,6 @@ class Box : NSView, Control {
|
||||||
self.parent = p
|
self.parent = p
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO stretchiness
|
|
||||||
// - we will need a trailing view if there are no stretchy controls
|
|
||||||
private func relayout() {
|
private func relayout() {
|
||||||
var constraint: String
|
var constraint: String
|
||||||
|
|
||||||
|
@ -144,19 +142,19 @@ class Box : NSView, Control {
|
||||||
constraint += "[noStretchyView]"
|
constraint += "[noStretchyView]"
|
||||||
}
|
}
|
||||||
constraint += "|"
|
constraint += "|"
|
||||||
var constraints = mkconstraints(constraint, views)
|
var constraints = mkconstraints(constraint, nil, views)
|
||||||
self.addConstraints(constraints)
|
self.addConstraints(constraints)
|
||||||
|
|
||||||
// next: assemble the views in the secondary direction
|
// next: assemble the views in the secondary direction
|
||||||
// each of them will span the secondary direction
|
// each of them will span the secondary direction
|
||||||
for i in 0..<n {
|
for i in 0..<n {
|
||||||
constraint = "\(self.secondaryDirPrefix)|[view\(i)]|"
|
constraint = "\(self.secondaryDirPrefix)|[view\(i)]|"
|
||||||
var constraints = mkconstraints(constraint, views)
|
var constraints = mkconstraints(constraint, nil, views)
|
||||||
self.addConstraints(constraints)
|
self.addConstraints(constraints)
|
||||||
}
|
}
|
||||||
if firstStretchy == -1 { // and again to the no-stretchy view
|
if firstStretchy == -1 { // and again to the no-stretchy view
|
||||||
constraint = "\(self.secondaryDirPrefix)|[noStretchyView]|"
|
constraint = "\(self.secondaryDirPrefix)|[noStretchyView]|"
|
||||||
var constraints = mkconstraints(constraint, views)
|
var constraints = mkconstraints(constraint, nil, views)
|
||||||
self.addConstraints(constraints)
|
self.addConstraints(constraints)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
// 8 august 2015
|
// 8 august 2015
|
||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
func mkconstraints(constraint: String, views: [String: NSView]) -> [AnyObject] {
|
func mkconstraints(constraint: String, metrics: [String: Double]?, views: [String: NSView]) -> [AnyObject] {
|
||||||
return NSLayoutConstraint.constraintsWithVisualFormat(
|
return NSLayoutConstraint.constraintsWithVisualFormat(
|
||||||
constraint,
|
constraint,
|
||||||
options: NSLayoutFormatOptions(0),
|
options: NSLayoutFormatOptions(0),
|
||||||
metrics: nil,
|
metrics: metrics,
|
||||||
views: views)
|
views: views)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,3 +38,11 @@ func setHorzHuggingPri(view: NSView, priority: NSLayoutPriority) {
|
||||||
func setVertHuggingPri(view: NSView, priority: NSLayoutPriority) {
|
func setVertHuggingPri(view: NSView, priority: NSLayoutPriority) {
|
||||||
setHuggingPri(view, priority, NSLayoutConstraintOrientation.Vertical)
|
setHuggingPri(view, priority, NSLayoutConstraintOrientation.Vertical)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func fittingAlignmentSize(view: NSView) -> NSSize {
|
||||||
|
var s = view.fittingSize
|
||||||
|
// the fitting size is for a frame rect; we need an alignment rect
|
||||||
|
var r = NSMakeRect(0, 0, s.width, s.height)
|
||||||
|
r = view.alignmentRectForFrame(r)
|
||||||
|
return r.size
|
||||||
|
}
|
||||||
|
|
|
@ -50,11 +50,11 @@ nspinbox++
|
||||||
"t": self.t,
|
"t": self.t,
|
||||||
"s": self.s,
|
"s": self.s,
|
||||||
]
|
]
|
||||||
var constraints = mkconstraints("H:|[t]-[s]|", views)
|
var constraints = mkconstraints("H:|[t]-[s]|", nil, views)
|
||||||
self.addConstraints(constraints)
|
self.addConstraints(constraints)
|
||||||
constraints = mkconstraints("V:|[t]|", views)
|
constraints = mkconstraints("V:|[t]|", nil, views)
|
||||||
self.addConstraints(constraints)
|
self.addConstraints(constraints)
|
||||||
constraints = mkconstraints("V:|[s]|", views)
|
constraints = mkconstraints("V:|[s]|", nil, views)
|
||||||
self.addConstraints(constraints)
|
self.addConstraints(constraints)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,11 +76,11 @@ class Window : NSWindow, Control {
|
||||||
}
|
}
|
||||||
|
|
||||||
var constraint = "H:|" + margin + "[view]" + margin + "|"
|
var constraint = "H:|" + margin + "[view]" + margin + "|"
|
||||||
var constraints = mkconstraints(constraint, views)
|
var constraints = mkconstraints(constraint, nil, views)
|
||||||
contentView.addConstraints(constraints)
|
contentView.addConstraints(constraints)
|
||||||
|
|
||||||
constraint = "V:|" + margin + "[view]" + margin + "|"
|
constraint = "V:|" + margin + "[view]" + margin + "|"
|
||||||
constraints = mkconstraints(constraint, views)
|
constraints = mkconstraints(constraint, nil, views)
|
||||||
contentView.addConstraints(constraints)
|
contentView.addConstraints(constraints)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue