// 8 august 2015 import Cocoa func mkconstraints(constraint: String, metrics: [String: CGFloat]?, views: [String: NSView]) -> [AnyObject] { return NSLayoutConstraint.constraintsWithVisualFormat( constraint, options: NSLayoutFormatOptions(0), metrics: metrics, views: views) } // the swift bridge isn't perfect; it won't recognize these properly // thanks to Eridius in freenode/#swift-lang let myNSLayoutPriorityRequired: NSLayoutPriority = 1000 let myNSLayoutPriorityDefaultHigh: NSLayoutPriority = 750 let myNSLayoutPriorityDragThatCanResizeWindow: NSLayoutPriority = 510 let myNSLayoutPriorityWindowSizeStayPut: NSLayoutPriority = 500 let myNSLayoutPriorityDragThatCannotResizeWindow: NSLayoutPriority = 490 let myNSLayoutPriorityDefaultLow: NSLayoutPriority = 250 let myNSLayoutPriorityFittingSizeCompression: NSLayoutPriority = 50 func horzHuggingPri(view: NSView) -> NSLayoutPriority { return view.contentHuggingPriorityForOrientation(NSLayoutConstraintOrientation.Horizontal) } func vertHuggingPri(view: NSView) -> NSLayoutPriority { return view.contentHuggingPriorityForOrientation(NSLayoutConstraintOrientation.Vertical) } func setHuggingPri(view: NSView, priority: NSLayoutPriority, orientation: NSLayoutConstraintOrientation) { view.setContentHuggingPriority(priority, forOrientation: orientation) } func setHorzHuggingPri(view: NSView, priority: NSLayoutPriority) { setHuggingPri(view, priority, NSLayoutConstraintOrientation.Horizontal) } func setVertHuggingPri(view: NSView, priority: NSLayoutPriority) { setHuggingPri(view, priority, NSLayoutConstraintOrientation.Vertical) } // use the fitting size, not the intrinsic content size, for the case of recursive views without an intrinsic content size 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 }