More Box work.
This commit is contained in:
parent
39d36f30b5
commit
cacc4f1ed6
|
@ -9,17 +9,33 @@ struct BoxControl {
|
||||||
class Box : NSView, Control {
|
class Box : NSView, Control {
|
||||||
private var controls: [BoxControl]
|
private var controls: [BoxControl]
|
||||||
private var parent: Control?
|
private var parent: Control?
|
||||||
|
private var vertical: Bool
|
||||||
private var padded: Bool
|
private var padded: Bool
|
||||||
|
|
||||||
init(_ padded: Bool) {
|
private var primaryDirPrefix: String
|
||||||
|
private var secondaryDirPrefix: String
|
||||||
|
|
||||||
|
init(vertical: Bool, padded: Bool) {
|
||||||
self.controls = []
|
self.controls = []
|
||||||
self.parent = nil
|
self.parent = nil
|
||||||
|
self.vertical = vertical
|
||||||
self.padded = padded
|
self.padded = padded
|
||||||
|
|
||||||
|
self.primaryDirPrefix = "H:"
|
||||||
|
self.secondaryDirPrefix = "V:"
|
||||||
|
if self.vertical {
|
||||||
|
self.primaryDirPrefix = "V:"
|
||||||
|
self.secondaryDirPrefix = "H:"
|
||||||
|
}
|
||||||
|
|
||||||
super.init(frame: NSZeroRect)
|
super.init(frame: NSZeroRect)
|
||||||
self.translatesAutoresizingMaskIntoConstraints = false
|
self.translatesAutoresizingMaskIntoConstraints = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("can't use this constructor, sorry")
|
||||||
|
}
|
||||||
|
|
||||||
func Add(control: Control, stretchy: Stretchy) {
|
func Add(control: Control, stretchy: Stretchy) {
|
||||||
var c BoxControl
|
var c BoxControl
|
||||||
|
|
||||||
|
@ -27,7 +43,7 @@ class Box : NSView, Control {
|
||||||
c.stretchy = stretchy
|
c.stretchy = stretchy
|
||||||
self.addSubview(c.c.View())
|
self.addSubview(c.c.View())
|
||||||
self.controls.append(c)
|
self.controls.append(c)
|
||||||
// TODO relayout
|
self.relayout()
|
||||||
}
|
}
|
||||||
|
|
||||||
func View() -> NSView {
|
func View() -> NSView {
|
||||||
|
@ -37,4 +53,27 @@ class Box : NSView, Control {
|
||||||
func SetParent(p: Control) {
|
func SetParent(p: Control) {
|
||||||
self.parent = p
|
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