X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=OSX%2FXScreenSaverConfigSheet.m;h=7220d2c214485bcad29d649166aceca9973b34d2;hb=2762a7d7cf8d83e68b8f635941f6609119d630ae;hp=b32e47612a15fe7e2ac36867b227044d114c351a;hpb=b81f521c5ad7022ac12db18ca8fcdd9fb063831e;p=xscreensaver diff --git a/OSX/XScreenSaverConfigSheet.m b/OSX/XScreenSaverConfigSheet.m index b32e4761..7220d2c2 100644 --- a/OSX/XScreenSaverConfigSheet.m +++ b/OSX/XScreenSaverConfigSheet.m @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 2006-2012 Jamie Zawinski +/* xscreensaver, Copyright (c) 2006-2013 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -533,7 +533,12 @@ static void layout_group (NSView *group, BOOL horiz_p); if ([active_text_field canResignFirstResponder]) [active_text_field resignFirstResponder]; NSString *pref_key = [pref_keys objectAtIndex: [sender tag]]; - double v = [sender value]; + + // Hacky API. See comment in InvertedSlider.m. + double v = ([sender isKindOfClass: [InvertedSlider class]] + ? [(InvertedSlider *) sender transformedValue] + : [sender value]); + if (v == (int) v) [userDefaultsController setInteger:v forKey:pref_key]; else @@ -689,7 +694,11 @@ static void layout_group (NSView *group, BOOL horiz_p); if ([control isKindOfClass:[UISlider class]]) { sel = @selector(sliderAction:); - [(UISlider *) control setValue: dval]; + // Hacky API. See comment in InvertedSlider.m. + if ([control isKindOfClass:[InvertedSlider class]]) + [(InvertedSlider *) control setTransformedValue: dval]; + else + [(UISlider *) control setValue: dval]; } else if ([control isKindOfClass:[UISwitch class]]) { sel = @selector(switchAction:); [(UISwitch *) control setOn: ((int) dval != 0)]; @@ -3409,10 +3418,10 @@ wrap_with_buttons (NSWindow *window, NSView *panel) controls on itself that are hooked up to the appropriate preferences. The default size of the view is just big enough to hold them all. */ -- (id)initWithXMLFile: (NSString *) xml_file - options: (const XrmOptionDescRec *) _opts - controller: (NSUserDefaultsController *) _prefs - defaults: (NSDictionary *) _defs +- (id)initWithXML: (NSData *) xml_data + options: (const XrmOptionDescRec *) _opts + controller: (NSUserDefaultsController *) _prefs + defaults: (NSDictionary *) _defs { # ifndef USE_IPHONE self = [super init]; @@ -3428,40 +3437,16 @@ wrap_with_buttons (NSWindow *window, NSView *panel) userDefaultsController = _prefs; [userDefaultsController retain]; - NSURL *furl = [NSURL fileURLWithPath:xml_file]; - - if (!furl) { - NSAssert1 (0, @"can't URLify \"%@\"", xml_file); - return nil; - } - -#if 0 // -- the old way - NSError *err = nil; - NSXMLDocument *xmlDoc = [[NSXMLDocument alloc] - initWithContentsOfURL:furl - options:(NSXMLNodePreserveWhitespace | - NSXMLNodePreserveCDATA) - error:&err]; - if (!xmlDoc || err) { - if (err) - NSAssert2 (0, @"XML Error: %@: %@", - xml_file, [err localizedDescription]); - return nil; - } - - traverse_tree (prefs, self, opts, [xmlDoc rootElement]); -#endif /* 0 */ - + NSXMLParser *xmlDoc = [[NSXMLParser alloc] initWithData:xml_data]; - NSXMLParser *xmlDoc = [[NSXMLParser alloc] initWithContentsOfURL:furl]; if (!xmlDoc) { - NSAssert1 (0, @"XML Error: %@", xml_file); + NSAssert1 (0, @"XML Error: %@", xml_data); return nil; } [xmlDoc setDelegate:self]; if (! [xmlDoc parse]) { NSError *err = [xmlDoc parserError]; - NSAssert2 (0, @"XML Error: %@: %@", xml_file, err); + NSAssert2 (0, @"XML Error: %@: %@", xml_data, err); return nil; }