home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / YellowBox / Kits / MiscTableScroll-138.1 / Examples / ScrollDir / Defaults.m < prev    next >
Encoding:
Text File  |  1998-03-31  |  10.2 KB  |  317 lines

  1. //=============================================================================
  2. //
  3. //    Copyright (C) 1995-1997 by Paul S. McCarthy and Eric Sunshine.
  4. //        Written by Paul S. McCarthy and Eric Sunshine.
  5. //                All Rights Reserved.
  6. //
  7. //    This notice may not be removed from this source code.
  8. //
  9. //    This object is included in the MiscKit by permission from the authors
  10. //    and its use is governed by the MiscKit license, found in the file
  11. //    "License.rtf" in the MiscKit disibution.  Please refer to that file
  12. //    for a list of all applicable permissions and resictions.
  13. //
  14. //=============================================================================
  15. //-----------------------------------------------------------------------------
  16. // Defaults.m
  17. //
  18. //    Simplified interface to NeXT defaults system.
  19. //
  20. //-----------------------------------------------------------------------------
  21. //-----------------------------------------------------------------------------
  22. // $Id: Defaults.m,v 1.3 97/04/15 22:18:33 sunshine Exp $
  23. // $Log:    Defaults.m,v $
  24. // Revision 1.3  97/04/15  22:18:33  sunshine
  25. // 29.3: assert() --> NSAssert() variations.
  26. // 
  27. // Revision 1.2  97/03/22  22:46:43  sunshine
  28. // v29.1: Reordered headers to be in sync with LazyScrollDir.
  29. // 
  30. // Revision 1.1  97/03/21  18:30:31  sunshine
  31. // v28: Defaults manager.
  32. //-----------------------------------------------------------------------------
  33. #import "Defaults.h"
  34. #import <AppKit/NSApplication.h>
  35. #import <AppKit/NSFont.h>
  36. #import <Foundation/NSUserDefaults.h>
  37. #import <limits.h>
  38. #import <stdio.h>
  39.  
  40. #define FONT_NAME_KEY @"Name"
  41. #define FONT_SIZE_KEY @"Size"
  42.  
  43.  
  44. //=============================================================================
  45. // IMPLEMENTATION
  46. //=============================================================================
  47. @implementation Defaults
  48.  
  49. //-----------------------------------------------------------------------------
  50. // commit
  51. //-----------------------------------------------------------------------------
  52. + (void)commit
  53.     {
  54.     [[NSUserDefaults standardUserDefaults] synchronize];
  55.     }
  56.  
  57.  
  58. //-----------------------------------------------------------------------------
  59. // set:str:
  60. //-----------------------------------------------------------------------------
  61. + (void)set:(NSString*)def str:(NSString*)s
  62.     {
  63.     [[NSUserDefaults standardUserDefaults] setObject:s forKey:def];
  64.     }
  65.  
  66.  
  67. //-----------------------------------------------------------------------------
  68. // getStr:fallback:
  69. //-----------------------------------------------------------------------------
  70. + (NSString*)getStr:(NSString*)def fallback:(NSString*)fallback
  71.     {
  72.     NSString* s = [[NSUserDefaults standardUserDefaults] stringForKey:def];
  73.     if (s == 0)
  74.     s = fallback;
  75.     return s;
  76.     }
  77.  
  78.  
  79. //-----------------------------------------------------------------------------
  80. // set:int:
  81. //-----------------------------------------------------------------------------
  82. + (void)set:(NSString*)def int:(int)i
  83.     {
  84.     [[NSUserDefaults standardUserDefaults] setInteger:i forKey:def];
  85.     }
  86.  
  87.  
  88. //-----------------------------------------------------------------------------
  89. // getInt:fallback:
  90. //-----------------------------------------------------------------------------
  91. + (int)getInt:(NSString*)def fallback:(int)fallback
  92.     {
  93.     NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
  94.     if ([defs objectForKey:def] != 0)
  95.     return [defs integerForKey:def];
  96.     else
  97.     return fallback;
  98.     }
  99.  
  100.  
  101. //-----------------------------------------------------------------------------
  102. // getInt:fallback:min:max:
  103. //-----------------------------------------------------------------------------
  104. + (int)getInt:(NSString*)def fallback:(int)f min:(int)imin max:(int)imax
  105.     {
  106.     int ret;
  107.     NSParameterAssert( imin <= imax );
  108.     ret = [self getInt:def fallback:f];
  109.     if (ret < imin)
  110.     ret = imin;
  111.     else if (ret > imax)
  112.     ret = imax;
  113.     return ret;
  114.     }
  115.  
  116.  
  117. //-----------------------------------------------------------------------------
  118. // getInt:fallback:min:
  119. //-----------------------------------------------------------------------------
  120. + (int)getInt:(NSString*)def fallback:(int)fallback min:(int)imin
  121.     {
  122.     return [self getInt:def fallback:fallback min:imin max:INT_MAX];
  123.     }
  124.  
  125.  
  126. //-----------------------------------------------------------------------------
  127. // set:float:
  128. //-----------------------------------------------------------------------------
  129. + (void)set:(NSString*)def float:(float)f
  130.     {
  131.     [[NSUserDefaults standardUserDefaults] setFloat:f forKey:def];
  132.     }
  133.  
  134.  
  135. //-----------------------------------------------------------------------------
  136. // getFloat:fallback:
  137. //-----------------------------------------------------------------------------
  138. + (float)getFloat:(NSString*)def fallback:(float)fallback
  139.     {
  140.     NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
  141.     if ([defs objectForKey:def] != 0)
  142.     return [defs floatForKey:def];
  143.     else
  144.     return fallback;
  145.     }
  146.  
  147.  
  148. //-----------------------------------------------------------------------------
  149. // set:color:
  150. //-----------------------------------------------------------------------------
  151. + (void)set:(NSString*)def color:(NSColor*)c
  152.     {
  153.     NSData* d = [NSArchiver archivedDataWithRootObject:c];
  154.     [[NSUserDefaults standardUserDefaults] setObject:d forKey:def];
  155.     }
  156.  
  157.  
  158. //-----------------------------------------------------------------------------
  159. // getColor:fallback:
  160. //-----------------------------------------------------------------------------
  161. + (NSColor*)getColor:(NSString*)def fallback:(NSColor*)fallback
  162.     {
  163.     NSData* d = [[NSUserDefaults standardUserDefaults] dataForKey:def];
  164.     if (d != 0)
  165.     return [NSUnarchiver unarchiveObjectWithData:d];
  166.     else
  167.     return fallback;
  168.     }
  169.  
  170.  
  171. //-----------------------------------------------------------------------------
  172. // set:bool:
  173. //-----------------------------------------------------------------------------
  174. + (void)set:(NSString*)def bool:(BOOL)b
  175.     {
  176.     [[NSUserDefaults standardUserDefaults] setBool:b forKey:def];
  177.     }
  178.  
  179.  
  180. //-----------------------------------------------------------------------------
  181. // getBool:fallback:
  182. //-----------------------------------------------------------------------------
  183. + (BOOL)getBool:(NSString*)def fallback:(BOOL)fallback
  184.     {
  185.     NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
  186.     if ([defs objectForKey:def] != 0)
  187.     return [defs boolForKey:def];
  188.     else
  189.     return fallback;
  190.     }
  191.  
  192.  
  193. //-----------------------------------------------------------------------------
  194. // set:font:
  195. //-----------------------------------------------------------------------------
  196. + (void)set:(NSString*)def font:(NSFont*)f
  197.     {
  198.     NSDictionary* d = [NSDictionary dictionaryWithObjectsAndKeys:
  199.             [f fontName],
  200.             FONT_NAME_KEY,
  201.             [[NSNumber numberWithFloat:[f pointSize]] stringValue],
  202.             FONT_SIZE_KEY, 0];
  203.     [[NSUserDefaults standardUserDefaults] setObject:d forKey:def];
  204.     }
  205.  
  206.  
  207. //-----------------------------------------------------------------------------
  208. // getFont:fallback:
  209. //-----------------------------------------------------------------------------
  210. + (NSFont*)getFont:(NSString*)def fallback:(NSFont*)fallback
  211.     {
  212.     NSFont* font = fallback;
  213.     NSDictionary* d = [[NSUserDefaults standardUserDefaults]
  214.                 dictionaryForKey:def];
  215.     if (d != 0)
  216.     {
  217.     NSString* name = [d objectForKey:FONT_NAME_KEY];
  218.     if (name != 0 && [name length] > 0)
  219.         {
  220.         NSNumber* size = [d objectForKey:FONT_SIZE_KEY];
  221.         NSFont* new_font = [NSFont fontWithName:name
  222.                 size:[size floatValue]];
  223.         if (new_font != 0)
  224.         font = new_font;
  225.         }
  226.     }
  227.     return font;
  228.     }
  229.  
  230.  
  231. //-----------------------------------------------------------------------------
  232. // set:size:
  233. //-----------------------------------------------------------------------------
  234. + (void)set:(NSString*)def size:(NSSize)s
  235.     {
  236.     NSString* buf = [NSString stringWithFormat:@"%g %g", s.width, s.height];
  237.     [[NSUserDefaults standardUserDefaults] setObject:buf forKey:def];
  238.     }
  239.  
  240.  
  241. //-----------------------------------------------------------------------------
  242. // getSize:fallback:
  243. //-----------------------------------------------------------------------------
  244. + (NSSize)getSize:(NSString*)def fallback:(NSSize)fallback
  245.     {
  246.     NSSize size = fallback;
  247.     NSString* s = [[NSUserDefaults standardUserDefaults] stringForKey:def];
  248.     if (s != 0)
  249.     {
  250.     float w,h;
  251.     NSScanner* scan = [NSScanner scannerWithString:s];
  252.     if ([scan scanFloat:&w] && [scan scanFloat:&h])
  253.         size = NSMakeSize( w, h );
  254.     }
  255.     return size;
  256.     }
  257.  
  258.  
  259. //-----------------------------------------------------------------------------
  260. // set:point:
  261. //-----------------------------------------------------------------------------
  262. + (void)set:(NSString*)def point:(NSPoint)p
  263.     {
  264.     NSString* buf = [NSString stringWithFormat:@"%g %g", p.x, p.y];
  265.     [[NSUserDefaults standardUserDefaults] setObject:buf forKey:def];
  266.     }
  267.  
  268.  
  269. //-----------------------------------------------------------------------------
  270. // getPoint:fallback:
  271. //-----------------------------------------------------------------------------
  272. + (NSPoint)getPoint:(NSString*)def fallback:(NSPoint)fallback
  273.     {
  274.     NSPoint point = fallback;
  275.     NSString* s = [[NSUserDefaults standardUserDefaults] stringForKey:def];
  276.     if (s != 0)
  277.     {
  278.     float x,y;
  279.     NSScanner* scan = [NSScanner scannerWithString:s];
  280.     if ([scan scanFloat:&x] && [scan scanFloat:&y])
  281.         point = NSMakePoint( x, y );
  282.     }
  283.     return point;
  284.     }
  285.  
  286.  
  287. //-----------------------------------------------------------------------------
  288. // set:rect:
  289. //-----------------------------------------------------------------------------
  290. + (void)set:(NSString*)def rect:(NSRect)r
  291.     {
  292.     NSString* buf = [NSString stringWithFormat:@"%g %g %g %g",
  293.             NSMinX(r), NSMinY(r), NSWidth(r), NSHeight(r)];
  294.     [[NSUserDefaults standardUserDefaults] setObject:buf forKey:def];
  295.     }
  296.  
  297.  
  298. //-----------------------------------------------------------------------------
  299. // getRect:fallback:
  300. //-----------------------------------------------------------------------------
  301. + (NSRect)getRect:(NSString*)def fallback:(NSRect)fallback
  302.     {
  303.     NSRect rect = fallback;
  304.     NSString* s = [[NSUserDefaults standardUserDefaults] stringForKey:def];
  305.     if (s != 0)
  306.     {
  307.     float x,y,w,h;
  308.     NSScanner* scan = [NSScanner scannerWithString:s];
  309.     if ([scan scanFloat:&x] && [scan scanFloat:&y] &&
  310.         [scan scanFloat:&w] && [scan scanFloat:&h])
  311.         rect = NSMakeRect( x, y, w, h );
  312.     }
  313.     return rect;
  314.     }
  315.  
  316. @end
  317.