diff --git a/macarea/alt/scrollertest.swift b/macarea/alt/scrollertest.swift deleted file mode 100644 index 44049c13..00000000 --- a/macarea/alt/scrollertest.swift +++ /dev/null @@ -1,285 +0,0 @@ -// 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, NSTextFieldDelegate { - private var nhspinb: NSTextField - private var nhformatter: NSNumberFormatter - - private var scrollbar: NSScroller - - private var info: NSTextField - - init(_ contentView: NSView) { - var views: [String: NSView] - - var nhlabel = newLabel("H Max") - nhlabel.setContentHuggingPriority(1000, forOrientation: NSLayoutConstraintOrientation.Horizontal) - self.nhspinb = newTextField() - - var container1 = newContainerView() - container1.addSubview(nhlabel) - container1.addSubview(self.nhspinb) - views = [ - "nhlabel": nhlabel, - "nhspinb": self.nhspinb, - ] - addConstraint(container1, "H:|[nhlabel]-[nhspinb]|", views) - addConstraint(container1, "V:|[nhlabel]|", views) - addConstraint(container1, "V:|[nhspinb]|", views) - - 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.arrowsPosition = NSScrollArrowPosition.ScrollerArrowsDefaultSetting - self.scrollbar.translatesAutoresizingMaskIntoConstraints = false - - self.info = newLabel("") - - contentView.addSubview(container1) - contentView.addSubview(self.scrollbar) - contentView.addSubview(self.info) - views = [ - "container1": container1, - "scrollbar": self.scrollbar, - "info": self.info, - ] - addConstraint(contentView, "V:|-[container1]-[scrollbar]-[info]-|", views) - addConstraint(contentView, "H:|-[container1]-|", views) - addConstraint(contentView, "H:|-[scrollbar]-|", views) - addConstraint(contentView, "H:|-[info]-|", views) - - self.nhformatter = newNumberFormatter(0, 100000) - - super.init() - - self.nhspinb.formatter = self.nhformatter - self.nhspinb.integerValue = 0 - self.nhspinb.delegate = self - - self.scrollbar.target = self - self.scrollbar.action = "onScroll:" - - var nc = NSNotificationCenter.defaultCenter() - nc.addObserver(self, - selector: "scrollbarSizeChanged:", - name: NSViewFrameDidChangeNotification, - object: self.scrollbar) - // this will post a notification, causing an update - self.scrollbar.postsFrameChangedNotifications = true - } - - override func controlTextDidChange(note: NSNotification) { - update() - } - - func scrollbarSizeChanged(note: NSNotification) { - update() - } - - func update() { - var swidth = self.scrollbar.frame.width - var max = CGFloat(self.nhspinb.integerValue) - if max == 0 { - self.scrollbar.knobProportion = 0 - // this hides the knob - self.scrollbar.enabled = false - self.updateLabels() - return - } - self.scrollbar.knobProportion = swidth / max - self.scrollbar.enabled = true - self.updateLabels() - } - - func lineincr() -> CGFloat { - var swidth = self.scrollbar.frame.width - var max = CGFloat(self.nhspinb.integerValue) - swidth - if max <= 0 { - return 0 - } - return 1.0 / max - } - - func pageincr() -> CGFloat { - return self.lineincr() * self.scrollbar.frame.width - } - - @IBAction func onScroll(sender: AnyObject) { - switch self.scrollbar.hitPart { - case NSScrollerPart.NoPart: - // do nothing - break - case NSScrollerPart.DecrementPage: - self.scrollbar.doubleValue -= Double(self.pageincr()) - case NSScrollerPart.Knob: - // do nothing - break - case NSScrollerPart.IncrementPage: - self.scrollbar.doubleValue += Double(self.pageincr()) - case NSScrollerPart.DecrementLine: - self.scrollbar.doubleValue -= Double(self.lineincr()) - case NSScrollerPart.IncrementLine: - self.scrollbar.doubleValue += Double(self.lineincr()) - case NSScrollerPart.KnobSlot: - // do nothing - break - } - self.updateLabels() - } - - func updateLabels() { - var swidth = self.scrollbar.frame.width - var max = CGFloat(self.nhspinb.integerValue) - swidth - if max < 0 { - max = 0 - } - var infostr = "Width: \(swidth)" - infostr += "\nProportion: \(self.scrollbar.knobProportion)" - infostr += "\nDouble Value: \(self.scrollbar.doubleValue)" - var scaledValue = Int(self.scrollbar.doubleValue * Double(max)) - infostr += "\nScaled: \(scaledValue)" - var lineincr: CGFloat = 0 - if max != 0 { - lineincr = 1.0 / max - } - infostr += "\nLine Increment: \(lineincr)" - infostr += "\nPage Increment: \(lineincr * swidth)" - self.info.stringValue = infostr - } -} - -func newNumberFormatter(min: Int, max: Int) -> NSNumberFormatter { - var nf = NSNumberFormatter() - nf = NSNumberFormatter() - nf.formatterBehavior = NSNumberFormatterBehavior.Behavior10_4 - nf.localizesFormat = false - nf.usesGroupingSeparator = false - nf.hasThousandSeparators = false - nf.allowsFloats = false - nf.minimum = min - nf.maximum = max - return nf -} - -func newContainerView() -> NSView { - var v = NSView(frame: NSZeroRect) - v.translatesAutoresizingMaskIntoConstraints = false - return v -} - -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 - tf.setContentCompressionResistancePriority(1000, forOrientation: NSLayoutConstraintOrientation.Vertical) - 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 - tf.setContentHuggingPriority(250, forOrientation: NSLayoutConstraintOrientation.Horizontal) - 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()