X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=OSX%2FAppController.m;fp=OSX%2FAppController.m;h=0000000000000000000000000000000000000000;hb=c1b9b55ad8d59dc05ef55e316aebf5863e7dfa56;hp=76911b3ac87deb834354bb7672e2476341bc6eeb;hpb=de460e831dc8578acfa8b72251ab9346c99c1f96;p=xscreensaver diff --git a/OSX/AppController.m b/OSX/AppController.m deleted file mode 100644 index 76911b3a..00000000 --- a/OSX/AppController.m +++ /dev/null @@ -1,200 +0,0 @@ -/* xscreensaver, Copyright (c) 2006 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. - */ - -/* This is just a test harness, really -- it makes a window with an - XScreenSaverGLView in it and a Preferences button, because I don't want - to have to debug these programs by installing them as screen savers - first! - */ - -#import "AppController.h" -#import "XScreenSaverGLView.h" - -@implementation AppController - -- (ScreenSaverView *) makeSaverView -{ - const char *var = "SCREENSAVER_MODULE"; - const char *s = getenv (var); - if (!s || !*s) { - NSAssert1 (0, @"set $%s to the name of the module to run", var); - exit(1); - } - NSString *module = [NSString stringWithCString:s - encoding:NSUTF8StringEncoding]; - NSString *dir = [[[NSBundle mainBundle] bundlePath] - stringByDeletingLastPathComponent]; - NSString *name = [module stringByAppendingPathExtension:@"saver"]; - NSString *path = [dir stringByAppendingPathComponent:name]; - NSBundle *bundleToLoad = [NSBundle bundleWithPath:path]; - Class new_class = [bundleToLoad principalClass]; - NSAssert1 (new_class, @"unable to load \"%@\"", path); - - NSRect rect; - rect.origin.x = rect.origin.y = 0; - rect.size.width = 320; - rect.size.height = 240; - - id instance = [[new_class alloc] initWithFrame:rect isPreview:YES]; - NSAssert1 (instance, @"unable to instantiate %@", new_class); - return (ScreenSaverView *) instance; -} - - -- (void) openPreferences: (int) which -{ - ScreenSaverView *sv = (which ? saverView1 : saverView0); - NSAssert (sv, @"no saver view"); - NSWindow *prefs = [sv configureSheet]; - - [NSApp beginSheet:prefs - modalForWindow:[sv window] - modalDelegate:self - didEndSelector:@selector(preferencesClosed:returnCode:contextInfo:) - contextInfo:nil]; - int code = [NSApp runModalForWindow:prefs]; - - /* Restart the animation if the "OK" button was hit, but not if "Cancel". - We have to restart *both* animations, because the xlockmore-style - ones will blow up if one re-inits but the other doesn't. - */ - if (code != NSCancelButton) { - if (saverView0) [saverView0 stopAnimation]; - if (saverView1) [saverView1 stopAnimation]; - if (saverView0) [saverView0 startAnimation]; - if (saverView1) [saverView1 startAnimation]; - } -} - -- (void) openPreferences0: (NSObject *) button -{ - [self openPreferences:0]; -} - -- (void) openPreferences1: (NSObject *) button -{ - [self openPreferences:1]; -} - -- (void) preferencesClosed: (NSWindow *) sheet - returnCode: (int) returnCode - contextInfo: (void *) contextInfo -{ - [NSApp stopModalWithCode:returnCode]; -} - - -- (void) makeWindow: (ScreenSaverView *)sv which:(int)which -{ - NSRect rect; - - if (which) - saverView1 = sv; - else - saverView0 = sv; - - // make a "Preferences" button - // - rect.origin.x = rect.origin.y = 0; - rect.size.width = rect.size.height = 10; - NSButton *pb = [[NSButton alloc] initWithFrame:rect]; - [pb setTitle:@"Preferences"]; - [pb setBezelStyle:NSRoundedBezelStyle]; - [pb sizeToFit]; - rect.origin.x = ([sv frame].size.width - - [pb frame].size.width) / 2; - [pb setFrameOrigin:rect.origin]; - - // grab the click - // - [pb setTarget:self]; - if (which) - [pb setAction:@selector(openPreferences1:)]; - else - [pb setAction:@selector(openPreferences0:)]; - - // make a box to wrap the saverView - // - rect = [sv frame]; - rect.origin.x = 0; - rect.origin.y = [pb frame].origin.y + [pb frame].size.height; - NSBox *gbox = [[NSBox alloc] initWithFrame:rect]; - rect.size.width = rect.size.height = 10; - [gbox setContentViewMargins:rect.size]; - [gbox setTitlePosition:NSNoTitle]; - [gbox addSubview:sv]; - [gbox sizeToFit]; - - // make a box to wrap the other two boxes - // - rect.origin.x = rect.origin.y = 0; - rect.size.width = [gbox frame].size.width; - rect.size.height = [gbox frame].size.height + [gbox frame].origin.y; - NSBox *pbox = [[NSBox alloc] initWithFrame:rect]; - [pbox setTitlePosition:NSNoTitle]; - [pbox setBorderType:NSNoBorder]; - [pbox addSubview:gbox]; - [pbox addSubview:pb]; - [pbox sizeToFit]; - - // and make a window to hold that. - // - NSScreen *screen = [NSScreen mainScreen]; - rect = [pbox frame]; - rect.origin.x = ([screen frame].size.width - rect.size.width) / 2; - rect.origin.y = ([screen frame].size.height - rect.size.height) / 2; - - rect.origin.x += rect.size.width * (which ? 0.55 : -0.55); - - NSWindow *window = [[NSWindow alloc] - initWithContentRect:rect - styleMask:(NSTitledWindowMask | - NSClosableWindowMask | - NSMiniaturizableWindowMask | - NSResizableWindowMask) - backing:NSBackingStoreBuffered - defer:YES - screen:screen]; - [window setTitle:@"XScreenSaver"]; - [window setMinSize:[window frameRectForContentRect:rect].size]; - - [[window contentView] addSubview:pbox]; - - [sv setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; - [pb setAutoresizingMask:NSViewMinXMargin|NSViewMaxXMargin]; - [gbox setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; - [pbox setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; - - [window setFrameAutosaveName:(which - ? @"SaverDebugWindow1" - : @"SaverDebugWindow0")]; - [window setFrameUsingName:[window frameAutosaveName]]; - - [window makeKeyAndOrderFront:window]; - - [sv startAnimation]; -} - - -- (void)applicationDidFinishLaunching: (NSNotification *) n -{ - [self makeWindow:[self makeSaverView] which:0]; - [self makeWindow:[self makeSaverView] which:1]; -} - -/* When the window closes, exit (even if prefs still open.) -*/ -- (BOOL) applicationShouldTerminateAfterLastWindowClosed: (NSApplication *) n -{ - return YES; -} - -@end