home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / YellowBox / Kits / MiscTableScroll-138.1 / Examples / LazyScrollDir / Defaults.m < prev    next >
Encoding:
Text File  |  1998-03-31  |  10.1 KB  |  314 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.2 97/04/25 19:51:36 sunshine Exp $
  23. // $Log:    Defaults.m,v $
  24. // Revision 1.2  97/04/25  19:51:36  sunshine
  25. // v14.2: assert() --> NSAssert() variations.
  26. // 
  27. // Revision 1.1  97/03/23  01:58:39  sunshine
  28. // v13.1: Defaults manager.
  29. //-----------------------------------------------------------------------------
  30. #import "Defaults.h"
  31. #import <AppKit/NSApplication.h>
  32. #import <AppKit/NSFont.h>
  33. #import <Foundation/NSUserDefaults.h>
  34. #import <limits.h>
  35. #import <stdio.h>
  36.  
  37. #define FONT_NAME_KEY @"Name"
  38. #define FONT_SIZE_KEY @"Size"
  39.  
  40.  
  41. //=============================================================================
  42. // IMPLEMENTATION
  43. //=============================================================================
  44. @implementation Defaults
  45.  
  46. //-----------------------------------------------------------------------------
  47. // commit
  48. //-----------------------------------------------------------------------------
  49. + (void)commit
  50.     {
  51.     [[NSUserDefaults standardUserDefaults] synchronize];
  52.     }
  53.  
  54.  
  55. //-----------------------------------------------------------------------------
  56. // set:str:
  57. //-----------------------------------------------------------------------------
  58. + (void)set:(NSString*)def str:(NSString*)s
  59.     {
  60.     [[NSUserDefaults standardUserDefaults] setObject:s forKey:def];
  61.     }
  62.  
  63.  
  64. //-----------------------------------------------------------------------------
  65. // getStr:fallback:
  66. //-----------------------------------------------------------------------------
  67. + (NSString*)getStr:(NSString*)def fallback:(NSString*)fallback
  68.     {
  69.     NSString* s = [[NSUserDefaults standardUserDefaults] stringForKey:def];
  70.     if (s == 0)
  71.     s = fallback;
  72.     return s;
  73.     }
  74.  
  75.  
  76. //-----------------------------------------------------------------------------
  77. // set:int:
  78. //-----------------------------------------------------------------------------
  79. + (void)set:(NSString*)def int:(int)i
  80.     {
  81.     [[NSUserDefaults standardUserDefaults] setInteger:i forKey:def];
  82.     }
  83.  
  84.  
  85. //-----------------------------------------------------------------------------
  86. // getInt:fallback:
  87. //-----------------------------------------------------------------------------
  88. + (int)getInt:(NSString*)def fallback:(int)fallback
  89.     {
  90.     NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
  91.     if ([defs objectForKey:def] != 0)
  92.     return [defs integerForKey:def];
  93.     else
  94.     return fallback;
  95.     }
  96.  
  97.  
  98. //-----------------------------------------------------------------------------
  99. // getInt:fallback:min:max:
  100. //-----------------------------------------------------------------------------
  101. + (int)getInt:(NSString*)def fallback:(int)f min:(int)imin max:(int)imax
  102.     {
  103.     int ret;
  104.     NSParameterAssert( imin <= imax );
  105.     ret = [self getInt:def fallback:f];
  106.     if (ret < imin)
  107.     ret = imin;
  108.     else if (ret > imax)
  109.     ret = imax;
  110.     return ret;
  111.     }
  112.  
  113.  
  114. //-----------------------------------------------------------------------------
  115. // getInt:fallback:min:
  116. //-----------------------------------------------------------------------------
  117. + (int)getInt:(NSString*)def fallback:(int)fallback min:(int)imin
  118.     {
  119.     return [self getInt:def fallback:fallback min:imin max:INT_MAX];
  120.     }
  121.  
  122.  
  123. //-----------------------------------------------------------------------------
  124. // set:float:
  125. //-----------------------------------------------------------------------------
  126. + (void)set:(NSString*)def float:(float)f
  127.     {
  128.     [[NSUserDefaults standardUserDefaults] setFloat:f forKey:def];
  129.     }
  130.  
  131.  
  132. //-----------------------------------------------------------------------------
  133. // getFloat:fallback:
  134. //-----------------------------------------------------------------------------
  135. + (float)getFloat:(NSString*)def fallback:(float)fallback
  136.     {
  137.     NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
  138.     if ([defs objectForKey:def] != 0)
  139.     return [defs floatForKey:def];
  140.     else
  141.     return fallback;
  142.     }
  143.  
  144.  
  145. //-----------------------------------------------------------------------------
  146. // set:color:
  147. //-----------------------------------------------------------------------------
  148. + (void)set:(NSString*)def color:(NSColor*)c
  149.     {
  150.     NSData* d = [NSArchiver archivedDataWithRootObject:c];
  151.     [[NSUserDefaults standardUserDefaults] setObject:d forKey:def];
  152.     }
  153.  
  154.  
  155. //-----------------------------------------------------------------------------
  156. // getColor:fallback:
  157. //-----------------------------------------------------------------------------
  158. + (NSColor*)getColor:(NSString*)def fallback:(NSColor*)fallback
  159.     {
  160.     NSData* d = [[NSUserDefaults standardUserDefaults] dataForKey:def];
  161.     if (d != 0)
  162.     return [NSUnarchiver unarchiveObjectWithData:d];
  163.     else
  164.     return fallback;
  165.     }
  166.  
  167.  
  168. //-----------------------------------------------------------------------------
  169. // set:bool:
  170. //-----------------------------------------------------------------------------
  171. + (void)set:(NSString*)def bool:(BOOL)b
  172.     {
  173.     [[NSUserDefaults standardUserDefaults] setBool:b forKey:def];
  174.     }
  175.  
  176.  
  177. //-----------------------------------------------------------------------------
  178. // getBool:fallback:
  179. //-----------------------------------------------------------------------------
  180. + (BOOL)getBool:(NSString*)def fallback:(BOOL)fallback
  181.     {
  182.     NSUserDefaults* defs = [NSUserDefaults standardUserDefaults];
  183.     if ([defs objectForKey:def] != 0)
  184.     return [defs boolForKey:def];
  185.     else
  186.     return fallback;
  187.     }
  188.  
  189.  
  190. //-----------------------------------------------------------------------------
  191. // set:font:
  192. //-----------------------------------------------------------------------------
  193. + (void)set:(NSString*)def font:(NSFont*)f
  194.     {
  195.     NSDictionary* d = [NSDictionary dictionaryWithObjectsAndKeys:
  196.             [f fontName],
  197.             FONT_NAME_KEY,
  198.             [[NSNumber numberWithFloat:[f pointSize]] stringValue],
  199.             FONT_SIZE_KEY, 0];
  200.     [[NSUserDefaults standardUserDefaults] setObject:d forKey:def];
  201.     }
  202.  
  203.  
  204. //-----------------------------------------------------------------------------
  205. // getFont:fallback:
  206. //-----------------------------------------------------------------------------
  207. + (NSFont*)getFont:(NSString*)def fallback:(NSFont*)fallback
  208.     {
  209.     NSFont* font = fallback;
  210.     NSDictionary* d = [[NSUserDefaults standardUserDefaults]
  211.                 dictionaryForKey:def];
  212.     if (d != 0)
  213.     {
  214.     NSString* name = [d objectForKey:FONT_NAME_KEY];
  215.     if (name != 0 && [name length] > 0)
  216.         {
  217.         NSNumber* size = [d objectForKey:FONT_SIZE_KEY];
  218.         NSFont* new_font = [NSFont fontWithName:name
  219.                 size:[size floatValue]];
  220.         if (new_font != 0)
  221.         font = new_font;
  222.         }
  223.     }
  224.     return font;
  225.     }
  226.  
  227.  
  228. //-----------------------------------------------------------------------------
  229. // set:size:
  230. //-----------------------------------------------------------------------------
  231. + (void)set:(NSString*)def size:(NSSize)s
  232.     {
  233.     NSString* buf = [NSString stringWithFormat:@"%g %g", s.width, s.height];
  234.     [[NSUserDefaults standardUserDefaults] setObject:buf forKey:def];
  235.     }
  236.  
  237.  
  238. //-----------------------------------------------------------------------------
  239. // getSize:fallback:
  240. //-----------------------------------------------------------------------------
  241. + (NSSize)getSize:(NSString*)def fallback:(NSSize)fallback
  242.     {
  243.     NSSize size = fallback;
  244.     NSString* s = [[NSUserDefaults standardUserDefaults] stringForKey:def];
  245.     if (s != 0)
  246.     {
  247.     float w,h;
  248.     NSScanner* scan = [NSScanner scannerWithString:s];
  249.     if ([scan scanFloat:&w] && [scan scanFloat:&h])
  250.         size = NSMakeSize( w, h );
  251.     }
  252.     return size;
  253.     }
  254.  
  255.  
  256. //-----------------------------------------------------------------------------
  257. // set:point:
  258. //-----------------------------------------------------------------------------
  259. + (void)set:(NSString*)def point:(NSPoint)p
  260.     {
  261.     NSString* buf = [NSString stringWithFormat:@"%g %g", p.x, p.y];
  262.     [[NSUserDefaults standardUserDefaults] setObject:buf forKey:def];
  263.     }
  264.  
  265.  
  266. //-----------------------------------------------------------------------------
  267. // getPoint:fallback:
  268. //-----------------------------------------------------------------------------
  269. + (NSPoint)getPoint:(NSString*)def fallback:(NSPoint)fallback
  270.     {
  271.     NSPoint point = fallback;
  272.     NSString* s = [[NSUserDefaults standardUserDefaults] stringForKey:def];
  273.     if (s != 0)
  274.     {
  275.     float x,y;
  276.     NSScanner* scan = [NSScanner scannerWithString:s];
  277.     if ([scan scanFloat:&x] && [scan scanFloat:&y])
  278.         point = NSMakePoint( x, y );
  279.     }
  280.     return point;
  281.     }
  282.  
  283.  
  284. //-----------------------------------------------------------------------------
  285. // set:rect:
  286. //-----------------------------------------------------------------------------
  287. + (void)set:(NSString*)def rect:(NSRect)r
  288.     {
  289.     NSString* buf = [NSString stringWithFormat:@"%g %g %g %g",
  290.             NSMinX(r), NSMinY(r), NSWidth(r), NSHeight(r)];
  291.     [[NSUserDefaults standardUserDefaults] setObject:buf forKey:def];
  292.     }
  293.  
  294.  
  295. //-----------------------------------------------------------------------------
  296. // getRect:fallback:
  297. //-----------------------------------------------------------------------------
  298. + (NSRect)getRect:(NSString*)def fallback:(NSRect)fallback
  299.     {
  300.     NSRect rect = fallback;
  301.     NSString* s = [[NSUserDefaults standardUserDefaults] stringForKey:def];
  302.     if (s != 0)
  303.     {
  304.     float x,y,w,h;
  305.     NSScanner* scan = [NSScanner scannerWithString:s];
  306.     if ([scan scanFloat:&x] && [scan scanFloat:&y] &&
  307.         [scan scanFloat:&w] && [scan scanFloat:&h])
  308.         rect = NSMakeRect( x, y, w, h );
  309.     }
  310.     return rect;
  311.     }
  312.  
  313. @end
  314.