[kit] Add an extension to UserDefaults object to mediate reading/writing values we care about
This commit is contained in:
parent
73a4bec59c
commit
72fc00d1ca
2 changed files with 51 additions and 4 deletions
|
@ -9,6 +9,7 @@
|
|||
/* Begin PBXBuildFile section */
|
||||
C03904B31F43CF3F00C74022 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */; };
|
||||
C09161701F3F5AE6009C4263 /* PreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C091616F1F3F5AE6009C4263 /* PreferencesViewController.swift */; };
|
||||
C0B906D51F45432700B5F89B /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0B906D41F45432700B5F89B /* Preferences.swift */; };
|
||||
C0BBE36B1F2E816500E68524 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0BBE36A1F2E816500E68524 /* AppDelegate.swift */; };
|
||||
C0BBE36D1F2E816500E68524 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0BBE36C1F2E816500E68524 /* ViewController.swift */; };
|
||||
C0BBE36F1F2E816500E68524 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C0BBE36E1F2E816500E68524 /* Assets.xcassets */; };
|
||||
|
@ -47,6 +48,7 @@
|
|||
/* Begin PBXFileReference section */
|
||||
C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = "<group>"; };
|
||||
C091616F1F3F5AE6009C4263 /* PreferencesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesViewController.swift; sourceTree = "<group>"; };
|
||||
C0B906D41F45432700B5F89B /* Preferences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; };
|
||||
C0BBE3671F2E816500E68524 /* Metaballs.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Metaballs.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C0BBE36A1F2E816500E68524 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
||||
C0BBE36C1F2E816500E68524 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||
|
@ -160,8 +162,9 @@
|
|||
C0BBE3A31F2E81C700E68524 /* Metaballs.swift */,
|
||||
C0CE7BFF1F362C3F001516B6 /* Geometry.swift */,
|
||||
C0DF1D781F3789DC0038B0A0 /* Memory.swift */,
|
||||
C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */,
|
||||
C0B906D41F45432700B5F89B /* Preferences.swift */,
|
||||
C091616F1F3F5AE6009C4263 /* PreferencesViewController.swift */,
|
||||
C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */,
|
||||
);
|
||||
path = MetaballsKit;
|
||||
sourceTree = "<group>";
|
||||
|
@ -382,6 +385,7 @@
|
|||
files = (
|
||||
C03904B31F43CF3F00C74022 /* PreferencesWindowController.swift in Sources */,
|
||||
C0DF1D791F3789DC0038B0A0 /* Memory.swift in Sources */,
|
||||
C0B906D51F45432700B5F89B /* Preferences.swift in Sources */,
|
||||
C0BBE3A41F2E81C700E68524 /* Metaballs.swift in Sources */,
|
||||
C0CE7C001F362C3F001516B6 /* Geometry.swift in Sources */,
|
||||
C09161701F3F5AE6009C4263 /* PreferencesViewController.swift in Sources */,
|
||||
|
|
|
@ -8,8 +8,51 @@
|
|||
|
||||
import Cocoa
|
||||
|
||||
class PreferencesWindowController: NSWindowController {
|
||||
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
|
||||
print("prepare for segue:\(segue), sender:\(String(describing: sender))")
|
||||
extension UserDefaults {
|
||||
var color0: Float4? {
|
||||
get {
|
||||
return float4(forKey: "color0")
|
||||
}
|
||||
set {
|
||||
set(newValue, forKey: "color0")
|
||||
}
|
||||
}
|
||||
|
||||
var color1: Float4? {
|
||||
get {
|
||||
return float4(forKey: "color1")
|
||||
}
|
||||
set {
|
||||
set(newValue, forKey: "color1")
|
||||
}
|
||||
}
|
||||
|
||||
var color2: Float4? {
|
||||
get {
|
||||
return float4(forKey: "color2")
|
||||
}
|
||||
set {
|
||||
set(newValue, forKey: "color2")
|
||||
}
|
||||
}
|
||||
|
||||
var color3: Float4? {
|
||||
get {
|
||||
return float4(forKey: "color3")
|
||||
}
|
||||
set {
|
||||
set(newValue, forKey: "color3")
|
||||
}
|
||||
}
|
||||
|
||||
func float4(forKey key: String) -> Float4? {
|
||||
guard let values = array(forKey: key) as? [Float], values.count >= 4 else {
|
||||
return nil
|
||||
}
|
||||
return Float4(values[0], values[1], values[2], values[3])
|
||||
}
|
||||
|
||||
func set(value: Float4, forKey key: String) {
|
||||
set([Float](float4: value), forKey: key)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue