Author: rmottola
Date: Sun Mar 22 23:41:10 2015
New Revision: 38424

URL: http://svn.gna.org/viewcvs/gnustep?rev=38424&view=rev
Log:
Direct preferences method for setting and getting colors

Modified:
    apps/projectcenter/trunk/ChangeLog
    apps/projectcenter/trunk/Headers/Protocols/Preferences.h
    apps/projectcenter/trunk/PCPrefController.m

Modified: apps/projectcenter/trunk/ChangeLog
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/ChangeLog?rev=38424&r1=38423&r2=38424&view=diff
==============================================================================
--- apps/projectcenter/trunk/ChangeLog  (original)
+++ apps/projectcenter/trunk/ChangeLog  Sun Mar 22 23:41:10 2015
@@ -1,3 +1,9 @@
+2015-03-22 Riccardo Mottola <[email protected]>
+
+       * Headers/Protocols/Preferences.h
+       * PCPrefController.m
+       Direct preferences method for setting and getting colors.
+
 2015-03-22 Riccardo Mottola <[email protected]>
 
        * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m

Modified: apps/projectcenter/trunk/Headers/Protocols/Preferences.h
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/Headers/Protocols/Preferences.h?rev=38424&r1=38423&r2=38424&view=diff
==============================================================================
--- apps/projectcenter/trunk/Headers/Protocols/Preferences.h    (original)
+++ apps/projectcenter/trunk/Headers/Protocols/Preferences.h    Sun Mar 22 
23:41:10 2015
@@ -34,6 +34,7 @@
 @protocol PCPreferences <NSObject>
 
 - (NSColor *)colorFromString:(NSString *)colorString;
+- (NSString *)stringFromColor:(NSColor *)color;
 
 - (NSString *)stringForKey:(NSString *)key;
 - (NSString *)stringForKey:(NSString *)key
@@ -47,6 +48,10 @@
 - (float)floatForKey:(NSString *)key
        defaultValue:(float)defaultValue;
 
+- (NSColor *)colorForKey:(NSString *)key;
+- (NSColor *)colorForKey:(NSString *)key
+        defaultValue:(NSColor *)defaultValue;
+
 - (void)setString:(NSString *)stringValue 
           forKey:(NSString *)aKey
           notify:(BOOL)notify;
@@ -56,7 +61,9 @@
 - (void)setFloat:(float)floatValue
          forKey:(NSString *)aKey
          notify:(BOOL)notify;
-
+- (void)setColor:(NSColor *)color
+         forKey:(NSString *)aKey
+         notify:(BOOL)notify;
 @end
 
 @protocol PCPrefsSection <NSObject>

Modified: apps/projectcenter/trunk/PCPrefController.m
URL: 
http://svn.gna.org/viewcvs/gnustep/apps/projectcenter/trunk/PCPrefController.m?rev=38424&r1=38423&r2=38424&view=diff
==============================================================================
--- apps/projectcenter/trunk/PCPrefController.m (original)
+++ apps/projectcenter/trunk/PCPrefController.m Sun Mar 22 23:41:10 2015
@@ -103,6 +103,30 @@
   return color;
 }
 
+- (NSString *)stringFromColor:(NSColor *)color
+{
+  NSString *colorString;
+
+  colorString = nil;
+  if ([[color colorSpaceName] isEqualToString:NSCalibratedWhiteColorSpace])
+    {
+      colorString = [NSString stringWithFormat:@"White %0.1f", 
+                 [color whiteComponent]];
+    }
+  else
+    {
+      if (![[color colorSpaceName] isEqualToString:NSCalibratedRGBColorSpace])
+       color = [color colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
+      colorString = [NSString stringWithFormat:@"RGB %0.1f %0.1f %0.1f",
+                             [color redComponent], 
+                             [color greenComponent],
+                             [color blueComponent]];
+    }
+
+  NSLog(@"serialized color: '%@'", colorString);
+  return colorString;
+}
+
 // ----------------------------------------------------------------------------
 // --- Accessors
 // ----------------------------------------------------------------------------
@@ -176,6 +200,33 @@
     }
 }
 
+- (NSColor *)colorForKey:(NSString *)key
+{
+  return [self colorForKey:key defaultValue:nil];
+}
+
+- (NSColor *)colorForKey:(NSString *)key
+           defaultValue:(NSColor *)defaultValue
+{
+  NSString *stringValue = [[NSUserDefaults standardUserDefaults]
+                           objectForKey:key];
+
+  if (stringValue)
+    {
+      NSColor *color;
+
+      color = [self colorFromString:stringValue];
+      return color;
+    }
+  else if (defaultValue)
+    {
+      [self setColor:defaultValue forKey:key notify:NO];
+      return defaultValue;
+    }
+
+  return defaultValue; // returns nil
+}
+
 - (void)setString:(NSString *)stringValue 
           forKey:(NSString *)aKey
           notify:(BOOL)notify
@@ -214,6 +265,24 @@
 {
   NSString *stringValue = [NSString stringWithFormat:@"%0.1f", floatValue];
 
+  [[NSUserDefaults standardUserDefaults] setObject:stringValue
+                                           forKey:aKey];
+
+  if (notify)
+    {
+      [[NSNotificationCenter defaultCenter] 
+       postNotificationName:PCPreferencesDidChangeNotification
+                     object:self];
+    }
+}
+
+- (void)setColor:(NSColor *)color 
+          forKey:(NSString *)aKey
+          notify:(BOOL)notify
+{
+  NSString *stringValue;
+
+  stringValue = [self stringFromColor:color];
   [[NSUserDefaults standardUserDefaults] setObject:stringValue
                                            forKey:aKey];
 


_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs

Reply via email to