Revision: 12171
          http://sourceforge.net/p/skim-app/code/12171
Author:   hofman
Date:     2021-03-07 17:23:06 +0000 (Sun, 07 Mar 2021)
Log Message:
-----------
Explicit value transformer class for array of colors

Modified Paths:
--------------
    trunk/NSColor_SKExtensions.m
    trunk/NSValueTransformer_SKExtensions.h
    trunk/NSValueTransformer_SKExtensions.m
    trunk/SKApplicationController.m
    trunk/SKDisplayPreferences.m
    trunk/SKMainToolbarController.m

Modified: trunk/NSColor_SKExtensions.m
===================================================================
--- trunk/NSColor_SKExtensions.m        2021-03-07 16:10:12 UTC (rev 12170)
+++ trunk/NSColor_SKExtensions.m        2021-03-07 17:23:06 UTC (rev 12171)
@@ -120,7 +120,7 @@
 #pragma mark Favorite Colors
 
 + (NSArray *)favoriteColors {
-    NSValueTransformer *transformer = [NSValueTransformer 
arrayTransformerWithValueTransformerForName:SKUnarchiveColorTransformerName];
+    NSValueTransformer *transformer = [NSValueTransformer 
valueTransformerForName:SKUnarchiveColorArrayTransformerName];
     return [transformer transformedValue:[[NSUserDefaults 
standardUserDefaults] arrayForKey:SKSwatchColorsKey]];
 }
 

Modified: trunk/NSValueTransformer_SKExtensions.h
===================================================================
--- trunk/NSValueTransformer_SKExtensions.h     2021-03-07 16:10:12 UTC (rev 
12170)
+++ trunk/NSValueTransformer_SKExtensions.h     2021-03-07 17:23:06 UTC (rev 
12171)
@@ -39,6 +39,7 @@
 #import <Cocoa/Cocoa.h>
 
 extern NSString *SKUnarchiveColorTransformerName;
+extern NSString *SKUnarchiveColorArrayTransformerName;
 extern NSString *SKTypeImageTransformerName;
 extern NSString *SKIsZeroTransformerName;
 extern NSString *SKIsOneTransformerName;
@@ -46,6 +47,4 @@
 
 @interface NSValueTransformer (SKExtensions)
 + (void)registerCustomTransformers;
-+ (NSValueTransformer 
*)arrayTransformerWithValueTransformer:(NSValueTransformer 
*)itemValueTransformer;
-+ (NSValueTransformer *)arrayTransformerWithValueTransformerForName:(NSString 
*)name;
 @end

Modified: trunk/NSValueTransformer_SKExtensions.m
===================================================================
--- trunk/NSValueTransformer_SKExtensions.m     2021-03-07 16:10:12 UTC (rev 
12170)
+++ trunk/NSValueTransformer_SKExtensions.m     2021-03-07 17:23:06 UTC (rev 
12171)
@@ -41,30 +41,22 @@
 #import <SkimNotes/SkimNotes.h>
 
 NSString *SKUnarchiveColorTransformerName = @"SKUnarchiveColor";
+NSString *SKUnarchiveColorArrayTransformerName = @"SKUnarchiveArrayColor";
 NSString *SKTypeImageTransformerName = @"SKTypeImage";
 NSString *SKIsZeroTransformerName = @"SKIsZero";
 NSString *SKIsOneTransformerName = @"SKIsOne";
 NSString *SKIsTwoTransformerName = @"SKIsTwo";
 
-@interface SKOneWayArrayTransformer : NSValueTransformer {
-    NSValueTransformer *valueTransformer;
-}
-- (id)initWithValueTransformer:(NSValueTransformer *)aValueTransformer;
-- (NSArray *)transformedArray:(NSArray *)array usingSelector:(SEL)selector;
+@interface SKUnarchiveColorTransformer : NSValueTransformer
 @end
 
 #pragma mark -
 
-@interface SKTwoWayArrayTransformer : SKOneWayArrayTransformer
+@interface SKUnarchiveColorArrayTransformer : SKUnarchiveColorTransformer
 @end
 
 #pragma mark -
 
-@interface SKUnarchiveColorTransformer : NSValueTransformer
-@end
-
-#pragma mark -
-
 @interface SKTypeImageTransformer : NSValueTransformer
 @end
 
@@ -82,6 +74,7 @@
 
 + (void)registerCustomTransformers {
     [NSValueTransformer setValueTransformer:[[[SKUnarchiveColorTransformer 
alloc] init] autorelease] forName:SKUnarchiveColorTransformerName];
+    [NSValueTransformer 
setValueTransformer:[[[SKUnarchiveColorArrayTransformer alloc] init] 
autorelease] forName:SKUnarchiveColorArrayTransformerName];
     [NSValueTransformer setValueTransformer:[[[SKTypeImageTransformer alloc] 
init] autorelease] forName:SKTypeImageTransformerName];
     [NSValueTransformer setValueTransformer:[[[SKRadioTransformer alloc] 
initWithTargetValue:0] autorelease] forName:SKIsZeroTransformerName];
     [NSValueTransformer setValueTransformer:[[[SKRadioTransformer alloc] 
initWithTargetValue:1] autorelease] forName:SKIsOneTransformerName];
@@ -88,84 +81,10 @@
     [NSValueTransformer setValueTransformer:[[[SKRadioTransformer alloc] 
initWithTargetValue:2] autorelease] forName:SKIsTwoTransformerName];
 }
 
-+ (NSValueTransformer 
*)arrayTransformerWithValueTransformer:(NSValueTransformer *)valueTransformer {
-    if ([[valueTransformer class] allowsReverseTransformation])
-        return [[[SKTwoWayArrayTransformer alloc] 
initWithValueTransformer:valueTransformer] autorelease];
-    else if (valueTransformer)
-        return [[[SKOneWayArrayTransformer alloc] 
initWithValueTransformer:valueTransformer] autorelease];
-    else
-        return nil;
-}
-
-+ (NSValueTransformer *)arrayTransformerWithValueTransformerForName:(NSString 
*)name {
-    return [self arrayTransformerWithValueTransformer:[self 
valueTransformerForName:name]];
-}
-
 @end
 
 #pragma mark -
 
-@implementation SKOneWayArrayTransformer
-
-+ (Class)transformedValueClass {
-    return [NSArray class];
-}
-
-+ (BOOL)allowsReverseTransformation {
-    return NO;
-}
-
-- (id)initWithValueTransformer:(NSValueTransformer *)aValueTransformer {
-    self = [super init];
-    if (self) {
-        if (aValueTransformer) {
-            valueTransformer = [aValueTransformer retain];
-        } else {
-            [self release];
-            self = nil;
-        }
-    }
-    return self;
-}
-
-- (id)init {
-    return [self initWithValueTransformer:[[[NSValueTransformer alloc] init] 
autorelease]];
-}
-
-- (void)dealloc {
-    SKDESTROY(valueTransformer);
-    [super dealloc];
-}
-
-- (NSArray *)transformedArray:(NSArray *)array usingSelector:(SEL)selector {
-    NSMutableArray *transformedArray = [NSMutableArray 
arrayWithCapacity:[array count]];
-    for (id obj in array)
-        [transformedArray addObject:[valueTransformer performSelector:selector 
withObject:obj] ?: [NSNull null]];
-    return transformedArray;
-}
-
-- (id)transformedValue:(id)array {
-    return [self transformedArray:array usingSelector:_cmd];
-}
-
-@end
-
-#pragma mark -
-
-@implementation SKTwoWayArrayTransformer
-
-+ (BOOL)allowsReverseTransformation {
-    return YES;
-}
-
-- (id)reverseTransformedValue:(id)array {
-    return [self transformedArray:array usingSelector:_cmd];
-}
-
-@end
-
-#pragma mark -
-
 @implementation SKUnarchiveColorTransformer
 
 + (Class)transformedValueClass {
@@ -197,6 +116,34 @@
 
 #pragma mark -
 
+@implementation SKUnarchiveColorArrayTransformer
+
++ (Class)transformedValueClass {
+    return [NSArray class];
+}
+
++ (BOOL)allowsReverseTransformation {
+    return YES;
+}
+
+- (id)transformedValue:(id)array {
+    NSMutableArray *transformedArray = [NSMutableArray 
arrayWithCapacity:[array count]];
+    for (id obj in array)
+        [transformedArray addObject:[super transformedValue:obj] ?: [NSNull 
null]];
+    return transformedArray;
+}
+
+- (id)reverseTransformedValue:(id)array {
+    NSMutableArray *transformedArray = [NSMutableArray 
arrayWithCapacity:[array count]];
+    for (id obj in array)
+        [transformedArray addObject:[super reverseTransformedValue:obj] ?: 
[NSData data]];
+    return transformedArray;
+}
+
+@end
+
+#pragma mark -
+
 @implementation SKTypeImageTransformer
 
 + (Class)transformedValueClass {

Modified: trunk/SKApplicationController.m
===================================================================
--- trunk/SKApplicationController.m     2021-03-07 16:10:12 UTC (rev 12170)
+++ trunk/SKApplicationController.m     2021-03-07 17:23:06 UTC (rev 12171)
@@ -869,7 +869,7 @@
 }
 
 - (void)setFavoriteColors:(NSArray *)array {
-    NSValueTransformer *transformer = [NSValueTransformer 
arrayTransformerWithValueTransformerForName:SKUnarchiveColorTransformerName];
+    NSValueTransformer *transformer = [NSValueTransformer 
valueTransformerForName:SKUnarchiveColorArrayTransformerName];
     [[NSUserDefaults standardUserDefaults] setObject:[transformer 
reverseTransformedValue:array] forKey:SKSwatchColorsKey];
 }
 

Modified: trunk/SKDisplayPreferences.m
===================================================================
--- trunk/SKDisplayPreferences.m        2021-03-07 16:10:12 UTC (rev 12170)
+++ trunk/SKDisplayPreferences.m        2021-03-07 17:23:06 UTC (rev 12171)
@@ -83,7 +83,7 @@
 - (void)loadView {
     [super loadView];
     
-    NSValueTransformer *transformer = [NSValueTransformer 
arrayTransformerWithValueTransformerForName:SKUnarchiveColorTransformerName];
+    NSValueTransformer *transformer = [NSValueTransformer 
valueTransformerForName:SKUnarchiveColorArrayTransformerName];
     NSDictionary *options = [NSDictionary dictionaryWithObject:transformer 
forKey:NSValueTransformerBindingOption];
     [colorSwatch bind:@"colors" toObject:[NSUserDefaultsController 
sharedUserDefaultsController] withKeyPath:[@"values." 
stringByAppendingString:SKSwatchColorsKey] options:options];
     [colorSwatch sizeToFit];

Modified: trunk/SKMainToolbarController.m
===================================================================
--- trunk/SKMainToolbarController.m     2021-03-07 16:10:12 UTC (rev 12170)
+++ trunk/SKMainToolbarController.m     2021-03-07 17:23:06 UTC (rev 12171)
@@ -700,7 +700,7 @@
             
         } else if ([identifier 
isEqualToString:SKDocumentToolbarColorSwatchItemIdentifier]) {
             
-            NSValueTransformer *transformer = [NSValueTransformer 
arrayTransformerWithValueTransformerForName:SKUnarchiveColorTransformerName];
+            NSValueTransformer *transformer = [NSValueTransformer 
valueTransformerForName:SKUnarchiveColorArrayTransformerName];
             NSDictionary *options = [NSDictionary 
dictionaryWithObject:transformer forKey:NSValueTransformerBindingOption];
             [colorSwatch bind:@"colors" toObject:[NSUserDefaultsController 
sharedUserDefaultsController] withKeyPath:[@"values." 
stringByAppendingString:SKSwatchColorsKey] options:options];
             [colorSwatch sizeToFit];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to