From 1efdea953cf8606d484dfb48687d2ff9897430c3 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Tue, 11 Feb 2025 01:28:42 -0800 Subject: [PATCH] Rubber Band: Fix preferences disabling items The items not applicable to Finer / R3 engine were not being disabled properly. Change the dialog to use a transformer to disable them on the preferences value instead of coding it, since the code didn't seem to work. Signed-off-by: Christopher Snowhill --- .../Preferences/Base.lproj/Preferences.xib | 95 +++++++++++++------ .../Preferences/GeneralPreferencesPlugin.m | 5 + .../Preferences.xcodeproj/project.pbxproj | 6 ++ .../Preferences/RubberbandEngineTransformer.h | 19 ++++ .../Preferences/RubberbandEngineTransformer.m | 53 +++++++++++ Preferences/Preferences/RubberbandPane.h | 8 -- Preferences/Preferences/RubberbandPane.m | 7 -- 7 files changed, 151 insertions(+), 42 deletions(-) create mode 100644 Preferences/Preferences/RubberbandEngineTransformer.h create mode 100644 Preferences/Preferences/RubberbandEngineTransformer.m diff --git a/Preferences/Preferences/Base.lproj/Preferences.xib b/Preferences/Preferences/Base.lproj/Preferences.xib index d6e8b6757..bc6a20321 100644 --- a/Preferences/Preferences/Base.lproj/Preferences.xib +++ b/Preferences/Preferences/Base.lproj/Preferences.xib @@ -18,6 +18,7 @@ + @@ -383,8 +384,8 @@ - + @@ -411,14 +412,6 @@ - - - - - - - - @@ -1194,7 +1187,7 @@ - + @@ -1206,8 +1199,8 @@ - + @@ -1219,13 +1212,20 @@ + + + + RubberbandEngineTransformer + + + - + @@ -1236,8 +1236,13 @@ - + + + + RubberbandEngineTransformer + + @@ -1249,13 +1254,20 @@ + + + + RubberbandEngineTransformer + + + - + @@ -1266,8 +1278,13 @@ - + + + + RubberbandEngineTransformer + + @@ -1279,13 +1296,20 @@ + + + + RubberbandEngineTransformer + + + - + @@ -1296,8 +1320,13 @@ - + + + + RubberbandEngineTransformer + + @@ -1315,7 +1344,7 @@ - + @@ -1326,8 +1355,8 @@ - + @@ -1339,13 +1368,20 @@ + + + + RubberbandEngineTransformer + + + - + @@ -1356,8 +1392,13 @@ - + + + + RubberbandEngineTransformer + + @@ -1375,7 +1416,7 @@ - + @@ -1386,8 +1427,8 @@ - + @@ -1405,7 +1446,7 @@ - + @@ -1416,8 +1457,8 @@ - + @@ -1435,7 +1476,7 @@ - + @@ -1446,8 +1487,8 @@ - + diff --git a/Preferences/Preferences/GeneralPreferencesPlugin.m b/Preferences/Preferences/GeneralPreferencesPlugin.m index 2eb325f19..9d99376a5 100644 --- a/Preferences/Preferences/GeneralPreferencesPlugin.m +++ b/Preferences/Preferences/GeneralPreferencesPlugin.m @@ -10,6 +10,7 @@ #import "ColorToValueTransformer.h" #import "PathToFileTransformer.h" #import "TimeIntervalToStringTransformer.h" +#import "RubberbandEngineTransformer.h" @implementation GeneralPreferencesPlugin @@ -25,6 +26,10 @@ NSValueTransformer *timeIntervalToStringTransformer = [[TimeIntervalToStringTransformer alloc] init]; [NSValueTransformer setValueTransformer:timeIntervalToStringTransformer forName:@"TimeIntervalToStringTransformer"]; + + NSValueTransformer *rubberbandEngineTransformer = [[RubberbandEngineTransformer alloc] init]; + [NSValueTransformer setValueTransformer:rubberbandEngineTransformer + forName:@"RubberbandEngineTransformer"]; } + (NSArray *)preferencePanes { diff --git a/Preferences/Preferences/Preferences.xcodeproj/project.pbxproj b/Preferences/Preferences/Preferences.xcodeproj/project.pbxproj index 5a010673a..043d21932 100644 --- a/Preferences/Preferences/Preferences.xcodeproj/project.pbxproj +++ b/Preferences/Preferences/Preferences.xcodeproj/project.pbxproj @@ -22,6 +22,7 @@ 8307D31728606EAF000FF8EB /* growl@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8307D31328606EAF000FF8EB /* growl@2x.png */; }; 8307D31828606EAF000FF8EB /* general.png in Resources */ = {isa = PBXBuildFile; fileRef = 8307D31428606EAF000FF8EB /* general.png */; }; 8307D31928606EAF000FF8EB /* growl.png in Resources */ = {isa = PBXBuildFile; fileRef = 8307D31528606EAF000FF8EB /* growl.png */; }; + 832650FC2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 832650FB2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m */; }; 833A899F286FF3850022E036 /* TimeIntervalToStringTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 833A899E286FF3850022E036 /* TimeIntervalToStringTransformer.m */; }; 83651DA527322C8700A2C097 /* MIDIFlavorBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 83651DA327322C8700A2C097 /* MIDIFlavorBehaviorArrayController.m */; }; 8372053718E3DEAF007EFAD4 /* ResamplerBehaviorArrayController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8372053618E3DEAF007EFAD4 /* ResamplerBehaviorArrayController.m */; }; @@ -107,6 +108,8 @@ 8307D31328606EAF000FF8EB /* growl@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "growl@2x.png"; path = "Icons/growl@2x.png"; sourceTree = ""; }; 8307D31428606EAF000FF8EB /* general.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = general.png; path = Icons/general.png; sourceTree = ""; }; 8307D31528606EAF000FF8EB /* growl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = growl.png; path = Icons/growl.png; sourceTree = ""; }; + 832650FB2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RubberbandEngineTransformer.m; sourceTree = ""; }; + 832650FF2D5B4A2D00CC7D8F /* RubberbandEngineTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RubberbandEngineTransformer.h; sourceTree = ""; }; 833A899D286FF3850022E036 /* TimeIntervalToStringTransformer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TimeIntervalToStringTransformer.h; sourceTree = ""; }; 833A899E286FF3850022E036 /* TimeIntervalToStringTransformer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TimeIntervalToStringTransformer.m; sourceTree = ""; }; 833F681B1CDBCAA700AFB9F0 /* es */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -333,6 +336,8 @@ 83A3B72B283AE04800CC6593 /* ColorToValueTransformer.m */, 833A899D286FF3850022E036 /* TimeIntervalToStringTransformer.h */, 833A899E286FF3850022E036 /* TimeIntervalToStringTransformer.m */, + 832650FF2D5B4A2D00CC7D8F /* RubberbandEngineTransformer.h */, + 832650FB2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m */, ); name = Transformers; sourceTree = ""; @@ -509,6 +514,7 @@ 8E07AA8A0AAC8EA200A4B32F /* GeneralPreferencesPlugin.m in Sources */, 83EF495F17FBC96A00642E3C /* VolumeBehaviorArrayController.m in Sources */, 17C643380B8A77CC00C53518 /* OutputsArrayController.m in Sources */, + 832650FC2D5B4A2100CC7D8F /* RubberbandEngineTransformer.m in Sources */, 8307D30528604D8B000FF8EB /* SandboxPathBehaviorController.m in Sources */, 8307D30B286057B5000FF8EB /* GeneralPane.m in Sources */, 83A3B72C283AE04800CC6593 /* ColorToValueTransformer.m in Sources */, diff --git a/Preferences/Preferences/RubberbandEngineTransformer.h b/Preferences/Preferences/RubberbandEngineTransformer.h new file mode 100644 index 000000000..89e3499bd --- /dev/null +++ b/Preferences/Preferences/RubberbandEngineTransformer.h @@ -0,0 +1,19 @@ +// +// RubberbandEngineTransformer.h +// Preferences +// +// Created by Christopher Snowhill on 2/11/25. +// + +#ifndef RubberbandEngineTransformer_h +#define RubberbandEngineTransformer_h + +NS_ASSUME_NONNULL_BEGIN + +@interface RubberbandEngineTransformer : NSValueTransformer + +@end + +NS_ASSUME_NONNULL_END + +#endif /* EngineTransformer_h */ diff --git a/Preferences/Preferences/RubberbandEngineTransformer.m b/Preferences/Preferences/RubberbandEngineTransformer.m new file mode 100644 index 000000000..9f1d098d7 --- /dev/null +++ b/Preferences/Preferences/RubberbandEngineTransformer.m @@ -0,0 +1,53 @@ +// +// EngineTransformer.m +// Preferences +// +// Created by Christopher Snowhill on 2/11/25. +// + +#import + +#import "RubberbandEngineTransformer.h" + +@implementation RubberbandEngineTransformer ++ (Class)transformedValueClass { + return [NSNumber class]; +} ++ (BOOL)allowsReverseTransformation { + return NO; +} + +- (id)transformedValue:(id)value { + if(value == nil) return @(YES); + + if([value isKindOfClass:[NSString class]]) { + NSString *stringValue = value; + if([stringValue isEqualToString:@"finer"]) { + return @(NO); + } + } + + return @(YES); +} + +@end + + + + + + + + + + + + + + + + + + + + diff --git a/Preferences/Preferences/RubberbandPane.h b/Preferences/Preferences/RubberbandPane.h index 96d9567ce..69e06931c 100644 --- a/Preferences/Preferences/RubberbandPane.h +++ b/Preferences/Preferences/RubberbandPane.h @@ -18,15 +18,7 @@ @end @interface RubberbandPane : GeneralPreferencePane { - IBOutlet NSTextField *transientsLabel; - IBOutlet NSPopUpButton *transientsButton; - IBOutlet NSTextField *detectorLabel; - IBOutlet NSPopUpButton *detectorButton; - IBOutlet NSTextField *phaseLabel; - IBOutlet NSPopUpButton *phaseButton; IBOutlet RubberbandWindowArrayController *windowBehavior; - IBOutlet NSTextField *smoothingLabel; - IBOutlet NSPopUpButton *smoothingButton; } - (IBAction)changeState:(id)sender; diff --git a/Preferences/Preferences/RubberbandPane.m b/Preferences/Preferences/RubberbandPane.m index 7e009f6c1..5df1492ad 100644 --- a/Preferences/Preferences/RubberbandPane.m +++ b/Preferences/Preferences/RubberbandPane.m @@ -29,13 +29,6 @@ NSUserDefaults *defaults = [[NSUserDefaultsController sharedUserDefaultsController] defaults]; BOOL engineR3 = [[defaults stringForKey:@"rubberbandEngine"] isEqualToString:@"finer"]; - [transientsLabel setEnabled:!engineR3]; - [transientsButton setEnabled:!engineR3]; - [phaseLabel setEnabled:!engineR3]; - [phaseButton setEnabled:!engineR3]; - [smoothingLabel setEnabled:!engineR3]; - [smoothingButton setEnabled:!engineR3]; - [windowBehavior reinitWithEngine:engineR3]; if(engineR3) {