mirror of
https://github.com/Toxblh/MTMR.git
synced 2026-01-11 01:18:39 +00:00
move CustomSlider to file
This commit is contained in:
parent
9ff68a6948
commit
0956b4ebcd
@ -17,6 +17,7 @@
|
|||||||
6027D1B92080E52A004FFDC7 /* BrightnessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6027D1B72080E52A004FFDC7 /* BrightnessViewController.swift */; };
|
6027D1B92080E52A004FFDC7 /* BrightnessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6027D1B72080E52A004FFDC7 /* BrightnessViewController.swift */; };
|
||||||
6027D1BA2080E52A004FFDC7 /* VolumeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6027D1B82080E52A004FFDC7 /* VolumeViewController.swift */; };
|
6027D1BA2080E52A004FFDC7 /* VolumeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6027D1B82080E52A004FFDC7 /* VolumeViewController.swift */; };
|
||||||
B0008E552080286C003AD4DD /* SupportHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0008E542080286C003AD4DD /* SupportHelpers.swift */; };
|
B0008E552080286C003AD4DD /* SupportHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0008E542080286C003AD4DD /* SupportHelpers.swift */; };
|
||||||
|
B05600D32083E9BB00EB218D /* CustomSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B05600D22083E9BB00EB218D /* CustomSlider.swift */; };
|
||||||
B059D622205E03F5006E6B86 /* TouchBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B059D621205E03F5006E6B86 /* TouchBarController.swift */; };
|
B059D622205E03F5006E6B86 /* TouchBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B059D621205E03F5006E6B86 /* TouchBarController.swift */; };
|
||||||
B059D624205E04F3006E6B86 /* CustomButtonTouchBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B059D623205E04F3006E6B86 /* CustomButtonTouchBarItem.swift */; };
|
B059D624205E04F3006E6B86 /* CustomButtonTouchBarItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B059D623205E04F3006E6B86 /* CustomButtonTouchBarItem.swift */; };
|
||||||
B059D62D205F11E8006E6B86 /* DFRFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B059D62C205F11E8006E6B86 /* DFRFoundation.framework */; };
|
B059D62D205F11E8006E6B86 /* DFRFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B059D62C205F11E8006E6B86 /* DFRFoundation.framework */; };
|
||||||
@ -61,6 +62,7 @@
|
|||||||
6027D1B72080E52A004FFDC7 /* BrightnessViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BrightnessViewController.swift; sourceTree = "<group>"; };
|
6027D1B72080E52A004FFDC7 /* BrightnessViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BrightnessViewController.swift; sourceTree = "<group>"; };
|
||||||
6027D1B82080E52A004FFDC7 /* VolumeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VolumeViewController.swift; sourceTree = "<group>"; };
|
6027D1B82080E52A004FFDC7 /* VolumeViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VolumeViewController.swift; sourceTree = "<group>"; };
|
||||||
B0008E542080286C003AD4DD /* SupportHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportHelpers.swift; sourceTree = "<group>"; };
|
B0008E542080286C003AD4DD /* SupportHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportHelpers.swift; sourceTree = "<group>"; };
|
||||||
|
B05600D22083E9BB00EB218D /* CustomSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSlider.swift; sourceTree = "<group>"; };
|
||||||
B059D621205E03F5006E6B86 /* TouchBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TouchBarController.swift; sourceTree = "<group>"; };
|
B059D621205E03F5006E6B86 /* TouchBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TouchBarController.swift; sourceTree = "<group>"; };
|
||||||
B059D623205E04F3006E6B86 /* CustomButtonTouchBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomButtonTouchBarItem.swift; sourceTree = "<group>"; };
|
B059D623205E04F3006E6B86 /* CustomButtonTouchBarItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomButtonTouchBarItem.swift; sourceTree = "<group>"; };
|
||||||
B059D629205E13E5006E6B86 /* TouchBarPrivateApi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TouchBarPrivateApi.h; sourceTree = "<group>"; };
|
B059D629205E13E5006E6B86 /* TouchBarPrivateApi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TouchBarPrivateApi.h; sourceTree = "<group>"; };
|
||||||
@ -163,6 +165,7 @@
|
|||||||
6027D1B72080E52A004FFDC7 /* BrightnessViewController.swift */,
|
6027D1B72080E52A004FFDC7 /* BrightnessViewController.swift */,
|
||||||
6027D1B82080E52A004FFDC7 /* VolumeViewController.swift */,
|
6027D1B82080E52A004FFDC7 /* VolumeViewController.swift */,
|
||||||
368EDDE620812A1D00E10953 /* ScrollViewItem.swift */,
|
368EDDE620812A1D00E10953 /* ScrollViewItem.swift */,
|
||||||
|
B05600D22083E9BB00EB218D /* CustomSlider.swift */,
|
||||||
);
|
);
|
||||||
path = MTMR;
|
path = MTMR;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -321,6 +324,7 @@
|
|||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
B059D622205E03F5006E6B86 /* TouchBarController.swift in Sources */,
|
B059D622205E03F5006E6B86 /* TouchBarController.swift in Sources */,
|
||||||
|
B05600D32083E9BB00EB218D /* CustomSlider.swift in Sources */,
|
||||||
36C2ECD9207B74B4003CDA33 /* AppleScriptTouchBarItem.swift in Sources */,
|
36C2ECD9207B74B4003CDA33 /* AppleScriptTouchBarItem.swift in Sources */,
|
||||||
B0F8771A207AC1EA00D6E430 /* TouchBarSupport.m in Sources */,
|
B0F8771A207AC1EA00D6E430 /* TouchBarSupport.m in Sources */,
|
||||||
B0008E552080286C003AD4DD /* SupportHelpers.swift in Sources */,
|
B0008E552080286C003AD4DD /* SupportHelpers.swift in Sources */,
|
||||||
|
|||||||
103
MTMR/CustomSlider.swift
Normal file
103
MTMR/CustomSlider.swift
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
//
|
||||||
|
// CustomSlider.swift
|
||||||
|
// MTMR
|
||||||
|
//
|
||||||
|
// Created by Anton Palgunov on 15/04/2018.
|
||||||
|
// Copyright © 2018 Anton Palgunov. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
class CustomSliderCell: NSSliderCell {
|
||||||
|
var knobImage:NSImage!
|
||||||
|
private var _currentKnobRect:NSRect!
|
||||||
|
private var _barRect:NSRect!
|
||||||
|
|
||||||
|
required init(coder aDecoder: NSCoder) {
|
||||||
|
super.init(coder: aDecoder)
|
||||||
|
}
|
||||||
|
|
||||||
|
override init() {
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
init(knob:NSImage?) {
|
||||||
|
knobImage = knob;
|
||||||
|
super.init()
|
||||||
|
}
|
||||||
|
|
||||||
|
override func drawKnob(_ knobRect: NSRect) {
|
||||||
|
|
||||||
|
if (knobImage == nil) {
|
||||||
|
super.drawKnob(knobRect)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_currentKnobRect = knobRect;
|
||||||
|
drawBar(inside: _barRect, flipped: false)
|
||||||
|
|
||||||
|
let newOriginX:CGFloat = knobRect.origin.x *
|
||||||
|
(_barRect.size.width - (knobImage.size.width - knobRect.size.width)) / _barRect.size.width;
|
||||||
|
|
||||||
|
knobImage.draw(at: NSPoint(x: newOriginX, y: knobRect.origin.y+3), from: NSRect(x: 0, y: 0, width: knobImage.size.width, height: knobImage.size.height), operation: NSCompositingOperation.sourceOver, fraction: 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
override func drawBar(inside aRect: NSRect, flipped: Bool) {
|
||||||
|
_barRect = aRect
|
||||||
|
|
||||||
|
var rect = aRect
|
||||||
|
rect.size.height = CGFloat(3)
|
||||||
|
let barRadius = CGFloat(3)
|
||||||
|
let value = CGFloat((self.doubleValue - self.minValue) / (self.maxValue - self.minValue))
|
||||||
|
let finalWidth = CGFloat(value * (self.controlView!.frame.size.width - 12))
|
||||||
|
|
||||||
|
var leftRect = rect
|
||||||
|
leftRect.size.width = finalWidth
|
||||||
|
let bg = NSBezierPath(roundedRect: rect, xRadius: barRadius, yRadius: barRadius)
|
||||||
|
NSColor.lightGray.setFill()
|
||||||
|
bg.fill()
|
||||||
|
let active = NSBezierPath(roundedRect: leftRect, xRadius: barRadius, yRadius: barRadius)
|
||||||
|
NSColor.darkGray.setFill()
|
||||||
|
active.fill()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class CustomSlider:NSSlider {
|
||||||
|
|
||||||
|
var currentValue:CGFloat = 0
|
||||||
|
|
||||||
|
override func setNeedsDisplay(_ invalidRect: NSRect) {
|
||||||
|
super.setNeedsDisplay(invalidRect)
|
||||||
|
}
|
||||||
|
|
||||||
|
override func awakeFromNib() {
|
||||||
|
super.awakeFromNib()
|
||||||
|
if ((self.cell?.isKind(of: CustomSliderCell.self)) == false) {
|
||||||
|
let cell:CustomSliderCell = CustomSliderCell()
|
||||||
|
self.cell = cell
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
convenience init(knob:NSImage?) {
|
||||||
|
self.init()
|
||||||
|
self.cell = CustomSliderCell(knob: knob!)
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
super.init(coder: coder)
|
||||||
|
}
|
||||||
|
|
||||||
|
override init(frame frameRect: NSRect) {
|
||||||
|
super.init(frame: frameRect)
|
||||||
|
}
|
||||||
|
|
||||||
|
func knobImage() -> NSImage {
|
||||||
|
let cell = self.cell as! CustomSliderCell
|
||||||
|
return cell.knobImage
|
||||||
|
}
|
||||||
|
|
||||||
|
func setKnobImage(image:NSImage) {
|
||||||
|
let cell = self.cell as! CustomSliderCell
|
||||||
|
cell.knobImage = image
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -120,96 +120,3 @@ class VolumeViewController: NSCustomTouchBarItem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class CustomSliderCell: NSSliderCell {
|
|
||||||
var knobImage:NSImage!
|
|
||||||
private var _currentKnobRect:NSRect!
|
|
||||||
private var _barRect:NSRect!
|
|
||||||
|
|
||||||
required init(coder aDecoder: NSCoder) {
|
|
||||||
super.init(coder: aDecoder)
|
|
||||||
}
|
|
||||||
|
|
||||||
override init() {
|
|
||||||
super.init()
|
|
||||||
}
|
|
||||||
|
|
||||||
init(knob:NSImage) {
|
|
||||||
knobImage = knob;
|
|
||||||
super.init()
|
|
||||||
}
|
|
||||||
|
|
||||||
override func drawKnob(_ knobRect: NSRect) {
|
|
||||||
|
|
||||||
if (knobImage == nil) {
|
|
||||||
super.drawKnob(knobRect)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_currentKnobRect = knobRect;
|
|
||||||
drawBar(inside: _barRect, flipped: false)
|
|
||||||
|
|
||||||
let newOriginX:CGFloat = knobRect.origin.x *
|
|
||||||
(_barRect.size.width - (knobImage.size.width - knobRect.size.width)) / _barRect.size.width;
|
|
||||||
|
|
||||||
knobImage.draw(at: NSPoint(x: newOriginX, y: knobRect.origin.y+3), from: NSRect(x: 0, y: 0, width: knobImage.size.width, height: knobImage.size.height), operation: NSCompositingOperation.sourceOver, fraction: 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
override func drawBar(inside aRect: NSRect, flipped: Bool) {
|
|
||||||
_barRect = aRect
|
|
||||||
|
|
||||||
var rect = aRect
|
|
||||||
rect.size.height = CGFloat(3)
|
|
||||||
let barRadius = CGFloat(3)
|
|
||||||
let value = CGFloat((self.doubleValue - self.minValue) / (self.maxValue - self.minValue))
|
|
||||||
let finalWidth = CGFloat(value * (self.controlView!.frame.size.width - 12))
|
|
||||||
|
|
||||||
var leftRect = rect
|
|
||||||
leftRect.size.width = finalWidth
|
|
||||||
let bg = NSBezierPath(roundedRect: rect, xRadius: barRadius, yRadius: barRadius)
|
|
||||||
NSColor.lightGray.setFill()
|
|
||||||
bg.fill()
|
|
||||||
let active = NSBezierPath(roundedRect: leftRect, xRadius: barRadius, yRadius: barRadius)
|
|
||||||
NSColor.darkGray.setFill()
|
|
||||||
active.fill()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class CustomSlider:NSSlider {
|
|
||||||
|
|
||||||
var currentValue:CGFloat = 0
|
|
||||||
|
|
||||||
override func setNeedsDisplay(_ invalidRect: NSRect) {
|
|
||||||
super.setNeedsDisplay(invalidRect)
|
|
||||||
}
|
|
||||||
|
|
||||||
override func awakeFromNib() {
|
|
||||||
super.awakeFromNib()
|
|
||||||
if ((self.cell?.isKind(of: CustomSliderCell.self)) == false) {
|
|
||||||
let cell:CustomSliderCell = CustomSliderCell()
|
|
||||||
self.cell = cell
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
convenience init(knob:NSImage) {
|
|
||||||
self.init()
|
|
||||||
self.cell = CustomSliderCell(knob: knob)
|
|
||||||
}
|
|
||||||
|
|
||||||
required init?(coder: NSCoder) {
|
|
||||||
super.init(coder: coder)
|
|
||||||
}
|
|
||||||
|
|
||||||
override init(frame frameRect: NSRect) {
|
|
||||||
super.init(frame: frameRect)
|
|
||||||
}
|
|
||||||
|
|
||||||
func knobImage() -> NSImage {
|
|
||||||
let cell = self.cell as! CustomSliderCell
|
|
||||||
return cell.knobImage
|
|
||||||
}
|
|
||||||
|
|
||||||
func setKnobImage(image:NSImage) {
|
|
||||||
let cell = self.cell as! CustomSliderCell
|
|
||||||
cell.knobImage = image
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user