libui/macarea/alt/scrollertest.swift

149 lines
4.3 KiB
Swift
Raw Normal View History

// 9 september 2015
// from misctestprogs/scratcmac.swift 17 august 2015
import Cocoa
var keepAliveMainwin: NSWindow? = nil
var pprogram: AnyObject? = nil
class intrinsicSizeScrollbar : NSScroller {
// notes: default intrinsic size is (-1,-1)
override var intrinsicContentSize: NSSize {
get {
var s = super.intrinsicContentSize
s.height = NSScroller.scrollerWidthForControlSize(
self.controlSize,
scrollerStyle: self.scrollerStyle)
return s
}
}
}
class program : NSObject {
private var nhspinb: NSTextField
private var nvspinb: NSTextField
private var scrollbar: NSScroller
init(_ contentView: NSView) {
self.nhspinb = newTextField()
self.nvspinb = newTextField()
var ss = NSScroller.preferredScrollerStyle()
var ccs = NSScroller.scrollerWidthForControlSize(
NSControlSize.RegularControlSize,
scrollerStyle: ss)
self.scrollbar = intrinsicSizeScrollbar(frame: NSMakeRect(0, 0, ccs * 5, ccs))
self.scrollbar.scrollerStyle = ss
self.scrollbar.knobStyle = NSScrollerKnobStyle.Default
self.scrollbar.controlTint = NSControlTint.DefaultControlTint
self.scrollbar.controlSize = NSControlSize.RegularControlSize
//TODO self.scrollbar.arrowPosition = NSScrollArrowPosition.ScrollerArrowsDefaultSetting
self.scrollbar.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(self.nhspinb)
contentView.addSubview(self.nvspinb)
contentView.addSubview(self.scrollbar)
var views: [String: NSView] = [
"nhspinb": nhspinb,
"nvspinb": nvspinb,
"scrollbar": scrollbar,
]
addConstraint(contentView, "V:|-[nhspinb]-[scrollbar]-|", views)
addConstraint(contentView, "V:|-[nvspinb]-[scrollbar]-|", views)
addConstraint(contentView, "H:|-[nhspinb]-[nvspinb]-|", views)
addConstraint(contentView, "H:|-[scrollbar]-|", views)
}
}
class intrinsicWidthTextField : NSTextField {
override var intrinsicContentSize: NSSize {
get {
var s = super.intrinsicContentSize
s.width = 96
return s
}
}
}
func newTextField() -> NSTextField {
var tf: NSTextField
var cell: NSTextFieldCell
tf = intrinsicWidthTextField(frame: NSZeroRect)
tf.selectable = true
tf.font = NSFont.systemFontOfSize(NSFont.systemFontSizeForControlSize(NSControlSize.RegularControlSize))
tf.bordered = false
tf.bezelStyle = NSTextFieldBezelStyle.SquareBezel
tf.bezeled = true
cell = tf.cell() as! NSTextFieldCell
cell.lineBreakMode = NSLineBreakMode.ByClipping
cell.scrollable = true
tf.translatesAutoresizingMaskIntoConstraints = false
return tf
}
func newLabel(text: String) -> NSTextField {
var tf: NSTextField
var cell: NSTextFieldCell
tf = NSTextField(frame: NSZeroRect)
tf.stringValue = text
tf.editable = false
tf.selectable = false
tf.drawsBackground = false
tf.font = NSFont.systemFontOfSize(NSFont.systemFontSizeForControlSize(NSControlSize.RegularControlSize))
tf.bordered = false
tf.bezelStyle = NSTextFieldBezelStyle.SquareBezel
tf.bezeled = false
cell = tf.cell() as! NSTextFieldCell
cell.lineBreakMode = NSLineBreakMode.ByClipping
cell.scrollable = true
tf.translatesAutoresizingMaskIntoConstraints = false
return tf
}
func appLaunched() {
var mainwin = NSWindow(
contentRect: NSMakeRect(0, 0, 320, 240),
styleMask: (NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask),
backing: NSBackingStoreType.Buffered,
defer: true)
var contentView = mainwin.contentView as! NSView
pprogram = program(contentView)
mainwin.cascadeTopLeftFromPoint(NSMakePoint(20, 20))
mainwin.makeKeyAndOrderFront(mainwin)
keepAliveMainwin = mainwin
}
func addConstraint(view: NSView, constraint: String, views: [String: NSView]) {
var constraints = NSLayoutConstraint.constraintsWithVisualFormat(
constraint,
options: NSLayoutFormatOptions(0),
metrics: nil,
views: views)
view.addConstraints(constraints)
}
class appDelegate : NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(note: NSNotification) {
appLaunched()
}
func applicationShouldTerminateAfterLastWindowClosed(app: NSApplication) -> Bool {
return true
}
}
func main() {
var app = NSApplication.sharedApplication()
app.setActivationPolicy(NSApplicationActivationPolicy.Regular)
// NSApplication.delegate is weak; if we don't use the temporary variable, the delegate will die before it's used
var delegate = appDelegate()
app.delegate = delegate
app.run()
}
main()