Revision: 12170
          http://sourceforge.net/p/skim-app/code/12170
Author:   hofman
Date:     2021-03-07 16:10:12 +0000 (Sun, 07 Mar 2021)
Log Message:
-----------
Use custom unarchive value transformer for colors that can also read keyed 
archived data, in case we would want to save them keyed in the future, so it 
can support sRGB colors

Modified Paths:
--------------
    trunk/DisplayPreferences.xib
    trunk/NSColor_SKExtensions.m
    trunk/NSUserDefaults_SKExtensions.m
    trunk/NSValueTransformer_SKExtensions.h
    trunk/NSValueTransformer_SKExtensions.m
    trunk/NotesPreferences.xib
    trunk/SKApplicationController.m
    trunk/SKDisplayPreferences.m
    trunk/SKMainToolbarController.m
    trunk/SKNotesPreferences.m

Modified: trunk/DisplayPreferences.xib
===================================================================
--- trunk/DisplayPreferences.xib        2021-03-06 20:08:56 UTC (rev 12169)
+++ trunk/DisplayPreferences.xib        2021-03-07 16:10:12 UTC (rev 12170)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" 
toolsVersion="16097.3" targetRuntime="MacOSX.Cocoa" 
propertyAccessControl="none" useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" 
toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" 
useAutolayout="YES">
     <dependencies>
         <deployment identifier="macosx"/>
         <development version="8000" identifier="xcode"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" 
version="16097.3"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" 
version="17701"/>
         <capability name="documents saved in the Xcode 8 format" 
minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -162,9 +162,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="17" id="107"/>
                         <accessibilityConnection property="title" 
destination="14" id="59"/>
-                        <binding destination="61" name="value" 
keyPath="values.SKBackgroundColor" id="76">
+                        <binding destination="61" name="value" 
keyPath="values.SKBackgroundColor" id="Voc-wr-z1x">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                         <outlet property="nextKeyView" destination="17" 
id="51"/>
@@ -175,9 +175,9 @@
                     <color key="color" red="0.0" green="0.0" blue="0.0" 
alpha="1" colorSpace="calibratedRGB"/>
                     <connections>
                         <accessibilityConnection property="title" 
destination="15" id="53"/>
-                        <binding destination="61" name="value" 
keyPath="values.SKFullScreenBackgroundColor" id="75">
+                        <binding destination="61" name="value" 
keyPath="values.SKFullScreenBackgroundColor" id="bk8-ZT-keW">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -203,9 +203,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="24" id="102"/>
                         <accessibilityConnection property="title" 
destination="25" id="55"/>
-                        <binding destination="61" name="value" 
keyPath="values.SKReadingBarColor" id="79">
+                        <binding destination="61" name="value" 
keyPath="values.SKReadingBarColor" id="OOD-Bb-5l9">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -296,7 +296,7 @@
                     <rect key="frame" x="147" y="287" width="71" height="25"/>
                     <popUpButtonCell key="cell" type="push" title="None" 
bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" 
borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" 
selectedItem="ixy-vI-kGX" id="VYe-A3-h8D">
                         <behavior key="behavior" lightByBackground="YES" 
lightByGray="YES"/>
-                        <font key="font" metaFont="system"/>
+                        <font key="font" metaFont="menu"/>
                         <menu key="menu" id="N9m-fi-zeA">
                             <items>
                                 <menuItem title="None" state="on" 
id="ixy-vI-kGX"/>

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

Modified: trunk/NSUserDefaults_SKExtensions.m
===================================================================
--- trunk/NSUserDefaults_SKExtensions.m 2021-03-06 20:08:56 UTC (rev 12169)
+++ trunk/NSUserDefaults_SKExtensions.m 2021-03-07 16:10:12 UTC (rev 12170)
@@ -46,6 +46,10 @@
     NSData *data = [self dataForKey:key];
     if (data) {
         color = [NSUnarchiver unarchiveObjectWithData:data];
+        if (color == nil)
+            color = [NSKeyedUnarchiver unarchiveObjectWithData:data];
+        if ([color isKindOfClass:[NSColor class]] == NO)
+            color = nil;
     } else {
         NSArray *array = [self arrayForKey:key];
         if ([array count]) {

Modified: trunk/NSValueTransformer_SKExtensions.h
===================================================================
--- trunk/NSValueTransformer_SKExtensions.h     2021-03-06 20:08:56 UTC (rev 
12169)
+++ trunk/NSValueTransformer_SKExtensions.h     2021-03-07 16:10:12 UTC (rev 
12170)
@@ -38,6 +38,7 @@
 
 #import <Cocoa/Cocoa.h>
 
+extern NSString *SKUnarchiveColorTransformerName;
 extern NSString *SKTypeImageTransformerName;
 extern NSString *SKIsZeroTransformerName;
 extern NSString *SKIsOneTransformerName;

Modified: trunk/NSValueTransformer_SKExtensions.m
===================================================================
--- trunk/NSValueTransformer_SKExtensions.m     2021-03-06 20:08:56 UTC (rev 
12169)
+++ trunk/NSValueTransformer_SKExtensions.m     2021-03-07 16:10:12 UTC (rev 
12170)
@@ -40,6 +40,7 @@
 #import "NSImage_SKExtensions.h"
 #import <SkimNotes/SkimNotes.h>
 
+NSString *SKUnarchiveColorTransformerName = @"SKUnarchiveColor";
 NSString *SKTypeImageTransformerName = @"SKTypeImage";
 NSString *SKIsZeroTransformerName = @"SKIsZero";
 NSString *SKIsOneTransformerName = @"SKIsOne";
@@ -59,6 +60,11 @@
 
 #pragma mark -
 
+@interface SKUnarchiveColorTransformer : NSValueTransformer
+@end
+
+#pragma mark -
+
 @interface SKTypeImageTransformer : NSValueTransformer
 @end
 
@@ -75,6 +81,7 @@
 @implementation NSValueTransformer (SKExtensions)
 
 + (void)registerCustomTransformers {
+    [NSValueTransformer setValueTransformer:[[[SKUnarchiveColorTransformer 
alloc] init] autorelease] forName:SKUnarchiveColorTransformerName];
     [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];
@@ -159,6 +166,37 @@
 
 #pragma mark -
 
+@implementation SKUnarchiveColorTransformer
+
++ (Class)transformedValueClass {
+    return [NSColor class];
+}
+
++ (BOOL)allowsReverseTransformation {
+    return YES;
+}
+
+- (id)transformedValue:(id)value {
+    if ([value isKindOfClass:[NSData class]] == NO)
+        return nil;
+    NSColor *color = [NSUnarchiver unarchiveObjectWithData:value];
+    if (color == nil)
+        color = [NSKeyedUnarchiver unarchiveObjectWithData:value];
+    if ([color isKindOfClass:[NSColor class]] == NO)
+        return nil;
+    return color;
+}
+
+- (id)reverseTransformedValue:(id)value {
+    if ([value isKindOfClass:[NSColor class]] == NO)
+        return nil;
+    return [NSArchiver archivedDataWithRootObject:value];
+}
+
+@end
+
+#pragma mark -
+
 @implementation SKTypeImageTransformer
 
 + (Class)transformedValueClass {

Modified: trunk/NotesPreferences.xib
===================================================================
--- trunk/NotesPreferences.xib  2021-03-06 20:08:56 UTC (rev 12169)
+++ trunk/NotesPreferences.xib  2021-03-07 16:10:12 UTC (rev 12170)
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" 
toolsVersion="16097.3" targetRuntime="MacOSX.Cocoa" 
propertyAccessControl="none" useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" 
toolsVersion="17701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" 
useAutolayout="YES">
     <dependencies>
         <deployment identifier="macosx"/>
         <development version="8000" identifier="xcode"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" 
version="16097.3"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" 
version="17701"/>
         <capability name="documents saved in the Xcode 8 format" 
minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -34,9 +34,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="4" id="154"/>
                         <accessibilityConnection property="title" 
destination="3" id="75"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKFreeTextNoteColor" id="86">
+                        <binding destination="84" name="value" 
keyPath="values.SKFreeTextNoteColor" id="blO-ar-64V">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -55,9 +55,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="21" id="155"/>
                         <accessibilityConnection property="title" 
destination="5" id="80"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKAnchoredNoteColor" id="92">
+                        <binding destination="84" name="value" 
keyPath="values.SKAnchoredNoteColor" id="KmW-cG-rzI">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -76,9 +76,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="35" id="158"/>
                         <accessibilityConnection property="title" 
destination="7" id="71"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKCircleNoteColor" id="88">
+                        <binding destination="84" name="value" 
keyPath="values.SKCircleNoteColor" id="hmz-QU-9Wz">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -97,9 +97,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="37" id="160"/>
                         <accessibilityConnection property="title" 
destination="9" id="83"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKSquareNoteColor" id="101">
+                        <binding destination="84" name="value" 
keyPath="values.SKSquareNoteColor" id="YE8-cg-YNa">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -118,9 +118,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="12" id="162"/>
                         <accessibilityConnection property="title" 
destination="11" id="78"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKHighlightNoteColor" id="90">
+                        <binding destination="84" name="value" 
keyPath="values.SKHighlightNoteColor" id="ZIX-tq-vP4">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -159,9 +159,9 @@
                     <color key="color" red="1" green="0.0" blue="0.0" 
alpha="1" colorSpace="calibratedRGB"/>
                     <connections>
                         <accessibilityConnection property="title" 
destination="15" id="82"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKStrikeOutNoteColor" id="103">
+                        <binding destination="84" name="value" 
keyPath="values.SKStrikeOutNoteColor" id="E9W-hU-3Cy">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -180,9 +180,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="6" id="157"/>
                         <accessibilityConnection property="title" 
destination="17" id="72"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKInkNoteColor" id="105">
+                        <binding destination="84" name="value" 
keyPath="values.SKInkNoteColor" id="17q-Y6-ZRp">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -350,9 +350,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="10" id="161"/>
                         <accessibilityConnection property="title" 
destination="38" id="69"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKSquareNoteInteriorColor" id="107">
+                        <binding destination="84" name="value" 
keyPath="values.SKSquareNoteInteriorColor" id="izC-Td-IAa">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>
@@ -371,9 +371,9 @@
                     <connections>
                         <accessibilityConnection property="link" 
destination="10" id="267"/>
                         <accessibilityConnection property="title" 
destination="263" id="265"/>
-                        <binding destination="84" name="value" 
keyPath="values.SKLineNoteInteriorColor" id="272">
+                        <binding destination="84" name="value" 
keyPath="values.SKLineNoteInteriorColor" id="0IZ-in-jwa">
                             <dictionary key="options">
-                                <string 
key="NSValueTransformerName">NSUnarchiveFromData</string>
+                                <string 
key="NSValueTransformerName">SKUnarchiveColor</string>
                             </dictionary>
                         </binding>
                     </connections>

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

Modified: trunk/SKDisplayPreferences.m
===================================================================
--- trunk/SKDisplayPreferences.m        2021-03-06 20:08:56 UTC (rev 12169)
+++ trunk/SKDisplayPreferences.m        2021-03-07 16:10:12 UTC (rev 12170)
@@ -83,7 +83,7 @@
 - (void)loadView {
     [super loadView];
     
-    NSValueTransformer *transformer = [NSValueTransformer 
arrayTransformerWithValueTransformerForName:NSUnarchiveFromDataTransformerName];
+    NSValueTransformer *transformer = [NSValueTransformer 
arrayTransformerWithValueTransformerForName:SKUnarchiveColorTransformerName];
     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-06 20:08:56 UTC (rev 12169)
+++ trunk/SKMainToolbarController.m     2021-03-07 16:10:12 UTC (rev 12170)
@@ -700,7 +700,7 @@
             
         } else if ([identifier 
isEqualToString:SKDocumentToolbarColorSwatchItemIdentifier]) {
             
-            NSValueTransformer *transformer = [NSValueTransformer 
arrayTransformerWithValueTransformerForName:NSUnarchiveFromDataTransformerName];
+            NSValueTransformer *transformer = [NSValueTransformer 
arrayTransformerWithValueTransformerForName:SKUnarchiveColorTransformerName];
             NSDictionary *options = [NSDictionary 
dictionaryWithObject:transformer forKey:NSValueTransformerBindingOption];
             [colorSwatch bind:@"colors" toObject:[NSUserDefaultsController 
sharedUserDefaultsController] withKeyPath:[@"values." 
stringByAppendingString:SKSwatchColorsKey] options:options];
             [colorSwatch sizeToFit];

Modified: trunk/SKNotesPreferences.m
===================================================================
--- trunk/SKNotesPreferences.m  2021-03-06 20:08:56 UTC (rev 12169)
+++ trunk/SKNotesPreferences.m  2021-03-07 16:10:12 UTC (rev 12170)
@@ -44,6 +44,7 @@
 #import "NSGraphics_SKExtensions.h"
 #import "NSImage_SKExtensions.h"
 #import "NSShadow_SKExtensions.h"
+#import "NSValueTransformer_SKExtensions.h"
 
 #define VALUES_KEY_PATH(key) [@"values." stringByAppendingString:key]
 
@@ -85,7 +86,7 @@
     [lineLineWell bind:SKLineWellEndLineStyleKey toObject:sudc 
withKeyPath:VALUES_KEY_PATH(SKLineNoteEndLineStyleKey) options:nil];
     BIND_LINE_WELL(inkLineWell, Ink, SKLineWellDisplayStyleSimpleLine);
     
-    NSDictionary *options = [NSDictionary 
dictionaryWithObjectsAndKeys:NSUnarchiveFromDataTransformerName, 
NSValueTransformerNameBindingOption, nil];
+    NSDictionary *options = [NSDictionary 
dictionaryWithObjectsAndKeys:SKUnarchiveColorTransformerName, 
NSValueTransformerNameBindingOption, nil];
     [textFontWell setHasTextColor:YES];
     [textFontWell bind:@"textColor" toObject:sudc 
withKeyPath:VALUES_KEY_PATH(SKFreeTextNoteFontColorKey) options:options];
 }

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