The link to storing NSColor in defaults was helpful. It reinforced what I
thought I already knew, but it appears that real problem was storing a
system color, [NSColor selectedMenuItemColor], instead of a color constant
such as [NSColor blueColor]. I created a simple project just to help
troubleshoot the issue. Here is the code if anyone wants to take a look.
you'll need window with an NSColorWell bound to NSUserDefaults
"values.textColor". If anyone can provide some insight as to why I can't use
[NSColor selectedMenuItemColor] as it should just return an NSColor which
should be suitable for the colorwell, I'd appreciate it. One thing I did
notice in gdb is that when I print the color's description, I get this for
selectedMenuItemColor:

*NSNamedColorSpace System selectedMenuItemColor*

*But for blueColor, I get this:*

**
*

NSCalibratedRGBColorSpace 0 0 1 1

But I would think that any NSColor should work just fine.
*

Thanks

@implementation ColorBindings

+(void)initialize{


 NSMutableDictionary *defaults = [NSMutableDictionary dictionary];



NSColor * color = [NSColor selectedMenuItemColor];

[defaults setObject:[NSArchiver archivedDataWithRootObject:color] forKey:
@"textColor"];

 [[NSUserDefaultsController sharedUserDefaultsController] setInitialValues
:defaults];

[[NSUserDefaultsController sharedUserDefaultsController]
setAppliesImmediately:YES];

 }


-(id)init{

 return (self = [super init]);

}


-(IBAction)changeTextColor:(id)sender{


 [self setTextColor:[sender color]];

NSData * colorData = [NSArchiver archivedDataWithRootObject:[self textColor
]];

[[[NSUserDefaultsController sharedUserDefaultsController] values]
setValue:colorData
forKey:@"textColor"];

 [[[NSUserDefaultsController sharedUserDefaultsController] defaults]
synchronize];


}


-(void)setTextColor:(NSColor *)newColor{


 if(textColor != newColor){

[textColor release];

textColor = [newColor retain];

}

}


-(NSColor *) textColor{

return textColor;

}

@end
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to