From d3a98cf6cbc3bd0b9efc570f58e8812c03931c18 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 16 Oct 2018 10:08:48 +0200 Subject: Original 5.40 --- OSX/XScreenSaverConfigSheet.h | 79 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 OSX/XScreenSaverConfigSheet.h (limited to 'OSX/XScreenSaverConfigSheet.h') diff --git a/OSX/XScreenSaverConfigSheet.h b/OSX/XScreenSaverConfigSheet.h new file mode 100644 index 0000000..b2fd489 --- /dev/null +++ b/OSX/XScreenSaverConfigSheet.h @@ -0,0 +1,79 @@ +/* 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 + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* XScreenSaver uses XML files to describe the user interface for configuring + the various screen savers. These files live in .../hacks/config/ and + say relatively high level things like: "there should be a checkbox + labelled "Leave Trails", and when it is checked, add the option '-trails' + to the command line when launching the program." + + This code reads that XML and constructs a Cocoa interface from it. + The Cocoa controls are hooked up to NSUserDefaultsController to save + those settings into the MacOS preferences system. The Cocoa preferences + names are the same as the resource names specified in the screenhack's + 'options' array (we use that array to map the command line switches + specified in the XML to the resource names to use). + */ + +#ifdef USE_IPHONE +# import +# import +# define NSView UIView +# define NSUserDefaultsController NSUserDefaults +#else +# import +#endif + +#import "jwxyz.h" + +#import + +#undef USE_PICKER_VIEW + +@interface XScreenSaverConfigSheet : +# ifdef USE_IPHONE + UITableViewController +# else + NSWindow +# endif +{ + NSString *saver_name; + NSUserDefaultsController *userDefaultsController; + NSUserDefaultsController *globalDefaultsController; + NSDictionary *defaultOptions; + const XrmOptionDescRec *opts; + id xml_root, xml_parsing; + +# ifdef USE_IPHONE + UITextField *active_text_field; + NSMutableArray *controls; + NSMutableArray *pref_ctls; // UIControl objects, with index = c.tag + NSMutableArray *pref_keys; // ...and their corresponding resources +# ifdef USE_PICKER_VIEW + NSMutableArray *picker_values; +# endif +# endif + +} + +- (id)initWithXML: (NSData *) xml_data + options: (const XrmOptionDescRec *) opts + controller: (NSUserDefaultsController *) prefs + globalController: (NSUserDefaultsController *) globalPrefs + defaults: (NSDictionary *) defs; + +@end -- cgit v1.2.3-55-g7522