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