This is FSCInfoPanel.m in view mode; [Download] [Up]
/* ** Copyright (c) 1995 Friday Software & Consulting, Inc. All Rights Reserved. ** ** Author: <bbum@friday.com> */ /* This object is included in the MiscKit by permission from the author ** and its use is governed by the MiscKit license, found in the file ** "LICENSE.rtf" in the MiscKit distribution. Please refer to that file ** for a list of all applicable permissions and restrictions. */ #import <appkit/appkit.h> #import "FSCInfoPanel.h" #import "FooFaraw.h" #import "ScaledView.h" @interface FSCInfoPanel (PrivateAPI) - startTE; - stopTE; @end @implementation FSCInfoPanel + sharedInstance { static id sharedInstance = nil; if(!sharedInstance) { sharedInstance = [self allocFromZone:[self zone]]; [sharedInstance init]; } return sharedInstance; } - orderFront:sender { if(!panel) [NXApp loadNibSection:"FSCInfoPanel.nib" owner:self]; [panel center]; [panel makeKeyAndOrderFront:sender]; [self startTE]; return self; } - doIE { NXEvent dummyEvent, *evnt; [scaledView lockFocus]; do { [scaledView oneStep]; [scaledView oneStep]; // do two steps evnt=[NXApp peekNextEvent:NX_ALLEVENTS into:&dummyEvent waitFor:0 threshold:NX_BASETHRESHOLD]; } while(infoRun && !evnt); [scaledView unlockFocus]; return self; } void itehandler(DPSTimedEntry te, double time, void *tobj) { [(id)tobj doIE]; } - startTE { if(!infoRun){ ientry=DPSAddTimedEntry(0.02, &itehandler, self, NX_BASETHRESHOLD); infoRun=YES; } return self; } - stopTE { if(infoRun){ infoRun=NO; DPSRemoveTimedEntry(ientry); } return self; } - windowWillClose:sender { if (sender==panel) { [self stopTE]; } return self; } - windowDidBecomeKey:sender { if (sender==panel) { [self startTE]; } return self; } - windowDidResignKey:sender { if (sender==panel) { [self stopTE]; } return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.