More Box work.
This commit is contained in:
parent
39d36f30b5
commit
cacc4f1ed6
|
@ -9,17 +9,33 @@ struct BoxControl {
|
|||
class Box : NSView, Control {
|
||||
private var controls: [BoxControl]
|
||||
private var parent: Control?
|
||||
private var vertical: Bool
|
||||
private var padded: Bool
|
||||
|
||||
init(_ padded: Bool) {
|
||||
private var primaryDirPrefix: String
|
||||
private var secondaryDirPrefix: String
|
||||
|
||||
init(vertical: Bool, padded: Bool) {
|
||||
self.controls = []
|
||||
self.parent = nil
|
||||
self.vertical = vertical
|
||||
self.padded = padded
|
||||
|
||||
self.primaryDirPrefix = "H:"
|
||||
self.secondaryDirPrefix = "V:"
|
||||
if self.vertical {
|
||||
self.primaryDirPrefix = "V:"
|
||||
self.secondaryDirPrefix = "H:"
|
||||
}
|
||||
|
||||
super.init(frame: NSZeroRect)
|
||||
self.translatesAutoresizingMaskIntoConstraints = false
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("can't use this constructor, sorry")
|
||||
}
|
||||
|
||||
func Add(control: Control, stretchy: Stretchy) {
|
||||
var c BoxControl
|
||||
|
||||
|
@ -27,7 +43,7 @@ class Box : NSView, Control {
|
|||
c.stretchy = stretchy
|
||||
self.addSubview(c.c.View())
|
||||
self.controls.append(c)
|
||||
// TODO relayout
|
||||
self.relayout()
|
||||
}
|
||||
|
||||
func View() -> NSView {
|
||||
|
@ -37,4 +53,27 @@ class Box : NSView, Control {
|
|||
func SetParent(p: Control) {
|
||||
self.parent = p
|
||||
}
|
||||
|
||||
// TODO stretchiness
|
||||
// - we will need a trailing view if there are no stretchy controls
|
||||
private func relayout() {
|
||||
if self.children.count == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
self.removeConstraints(self.constraints)
|
||||
|
||||
// first collect the views
|
||||
var views = [String: NSView]()
|
||||
var n = 0
|
||||
for c in self.controls {
|
||||
views["view\(n)"] = c.c.View()
|
||||
}
|
||||
|
||||
// next, assemble the views in the primary direction
|
||||
// they all go in a straight line
|
||||
|
||||
// next: assemble the views in the secondary direction
|
||||
// each of them will span the secondary direction
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue