[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 */
|
/* Begin PBXBuildFile section */
|
||||||
C03904B31F43CF3F00C74022 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */; };
|
C03904B31F43CF3F00C74022 /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */; };
|
||||||
C09161701F3F5AE6009C4263 /* PreferencesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C091616F1F3F5AE6009C4263 /* PreferencesViewController.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 */; };
|
C0BBE36B1F2E816500E68524 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0BBE36A1F2E816500E68524 /* AppDelegate.swift */; };
|
||||||
C0BBE36D1F2E816500E68524 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0BBE36C1F2E816500E68524 /* ViewController.swift */; };
|
C0BBE36D1F2E816500E68524 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0BBE36C1F2E816500E68524 /* ViewController.swift */; };
|
||||||
C0BBE36F1F2E816500E68524 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C0BBE36E1F2E816500E68524 /* Assets.xcassets */; };
|
C0BBE36F1F2E816500E68524 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C0BBE36E1F2E816500E68524 /* Assets.xcassets */; };
|
||||||
|
@ -47,6 +48,7 @@
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = "<group>"; };
|
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>"; };
|
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; };
|
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>"; };
|
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>"; };
|
C0BBE36C1F2E816500E68524 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||||
|
@ -160,8 +162,9 @@
|
||||||
C0BBE3A31F2E81C700E68524 /* Metaballs.swift */,
|
C0BBE3A31F2E81C700E68524 /* Metaballs.swift */,
|
||||||
C0CE7BFF1F362C3F001516B6 /* Geometry.swift */,
|
C0CE7BFF1F362C3F001516B6 /* Geometry.swift */,
|
||||||
C0DF1D781F3789DC0038B0A0 /* Memory.swift */,
|
C0DF1D781F3789DC0038B0A0 /* Memory.swift */,
|
||||||
C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */,
|
C0B906D41F45432700B5F89B /* Preferences.swift */,
|
||||||
C091616F1F3F5AE6009C4263 /* PreferencesViewController.swift */,
|
C091616F1F3F5AE6009C4263 /* PreferencesViewController.swift */,
|
||||||
|
C03904B11F43CF3700C74022 /* PreferencesWindowController.swift */,
|
||||||
);
|
);
|
||||||
path = MetaballsKit;
|
path = MetaballsKit;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -382,6 +385,7 @@
|
||||||
files = (
|
files = (
|
||||||
C03904B31F43CF3F00C74022 /* PreferencesWindowController.swift in Sources */,
|
C03904B31F43CF3F00C74022 /* PreferencesWindowController.swift in Sources */,
|
||||||
C0DF1D791F3789DC0038B0A0 /* Memory.swift in Sources */,
|
C0DF1D791F3789DC0038B0A0 /* Memory.swift in Sources */,
|
||||||
|
C0B906D51F45432700B5F89B /* Preferences.swift in Sources */,
|
||||||
C0BBE3A41F2E81C700E68524 /* Metaballs.swift in Sources */,
|
C0BBE3A41F2E81C700E68524 /* Metaballs.swift in Sources */,
|
||||||
C0CE7C001F362C3F001516B6 /* Geometry.swift in Sources */,
|
C0CE7C001F362C3F001516B6 /* Geometry.swift in Sources */,
|
||||||
C09161701F3F5AE6009C4263 /* PreferencesViewController.swift in Sources */,
|
C09161701F3F5AE6009C4263 /* PreferencesViewController.swift in Sources */,
|
||||||
|
|
|
@ -8,8 +8,51 @@
|
||||||
|
|
||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
class PreferencesWindowController: NSWindowController {
|
extension UserDefaults {
|
||||||
override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
|
var color0: Float4? {
|
||||||
print("prepare for segue:\(segue), sender:\(String(describing: sender))")
|
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