This is MiscAwakeAction.m in view mode; [Download] [Up]
// Copyright (C) 1995 Steve Hayman // Use is governed by the MiscKit license #import "MiscAwakeAction.h" #import <apps/InterfaceBuilder.h> #define AWAKE_ACTION_VERSION 0 @implementation MiscAwakeAction /* * The meat of the class. Send a message somewhere. */ - fire { if ( _target && action && [_target respondsTo:action] ) { [_target perform:action with:self]; } return self; } /* * We get "awakeFromNib" when our nib file is loaded by a running * application, after all the outlets are set up. * Good time to fire the target/action. */ - awakeFromNib { return [self fire]; } /* * Bug in 3.1 and later: [NXApp isTestingInterface] always yields * NO during read/write/awake. Use this workaround. See NeXTanswers * #1525. This idea is from FilenameList.m in the StringList miniexample */ - awake { // test to see if mainMenu is visible, which it isn't while test // interface mode is being set up. if([NXApp conformsTo:@protocol(IB)]) { if(! [[NXApp mainMenu] isVisible]) { // main menu not visible, must be entering test mode // (although this also happens when we are loading a .nib // at IB startup time, i.e. if you doubleclick on a .nib // and ib is opening it while starting up. no big deal. return [self perform:@selector(fire) with:nil afterDelay:1 cancelPrevious:YES]; } } return nil; } - target { return _target; } - setTarget:t { _target = t; return self; } - (SEL)action { return action; } - setAction:(SEL)a { action = a; return self; } - read:(NXTypedStream *)stream { int version; [super read:stream]; version = NXTypedStreamClassVersion(stream, "MiscAwakeAction"); switch (version) { case AWAKE_ACTION_VERSION: NXReadTypes(stream, "@:", &_target, &action); if ( [NXApp respondsTo:@selector(isTestingInterface)] && [NXApp isTestingInterface] ) { [self perform:@selector(fire) with:nil afterDelay:1 cancelPrevious:YES]; } break; default: NXLogError("[%s %s] - unknown version of %s in typed stream", [[self class] name], sel_getName(_cmd), [[self class] name]); break; } return self; } - write:(NXTypedStream *)stream { [super write:stream]; NXWriteTypes(stream, "@:", &_target, &action); return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.