This is BBInfo.m in view mode; [Download] [Up]
/* BBInfo.m
*
* Handles the Icon switching in the Info panel. Just basic actions.
*
* For interface-info see the header file. The comments in this file mostly
* cover only the real implementation details.
*
* Written by: Thomas Engel
* Created: 25.10.1993 (Copyleft)
* Last modified: 07.05.1994
*/
#import "BBInfo.h"
#import "BBImageAnimator.h"
#define INFOSHOWINGICONBEAKER 1 // please use enum..
#define INFOSHOWINGICONTOMI 2
#define INFOSHOWINGICONWOLFY 3
#define INFOSHOWINGANIMATION 4
#define INFOANIMATEEYECLOSE 1 // let make it a enum..
@implementation BBInfo
- init
{
self = [super init];
if( !self ) return self;
// OK. We really are an object...here we go with our init.
currentIcon = INFOSHOWINGICONBEAKER;
animationRunning = NO;
return self;
}
- makeKeyAndOrderFront:sender;
{
if( !panel )
{
if( [NXApp loadNibSection:"Info.nib" owner:self] == nil )
NXRunAlertPanel( NULL, "Couldn't load Info.nib",
"OK", NULL, NULL );
}
[panel makeKeyAndOrderFront: self];
return self;
}
- switchToBeakerIcon:sender;
{
if( !animationRunning &&
currentIcon != INFOSHOWINGICONBEAKER )
{
[imageButton setImage:[beakerImage image]];
[textField setStringValue:[beakerText stringValue]];
currentIcon = INFOSHOWINGICONBEAKER;
}
return self;
}
- switchToTomiIcon:sender;
{
if( !animationRunning &&
currentIcon != INFOSHOWINGICONTOMI )
{
[imageButton setImage:[tomiImage image]];
[textField setStringValue:[tomiText stringValue]];
currentIcon = INFOSHOWINGICONTOMI;
}
return self;
}
- switchToWolfyIcon:sender;
{
if( !animationRunning &&
currentIcon != INFOSHOWINGICONWOLFY )
{
[imageButton setImage:[wolfyImage image]];
[textField setStringValue:[wolfyText stringValue]];
currentIcon = INFOSHOWINGICONWOLFY;
}
return self;
}
- switchToNextIcon:sender;
{
switch( currentIcon )
{
case INFOSHOWINGICONBEAKER:
return [self switchToTomiIcon:self];
case INFOSHOWINGICONTOMI:
return [self switchToWolfyIcon:self];
case INFOSHOWINGICONWOLFY:
return [self switchToBeakerIcon:self];
}
return self;
}
- startRandomAnimation:sender;
{
// if there is no animation running right now...
if( animationRunning ) return self;
// register that a animation will run and choose a random animator-obj
// To be able to switch to a original Image we have to tell this object
// that if is now shoning the AnimationImages
[self switchToBeakerIcon:self];
animationRunning = YES;
currentIcon = INFOSHOWINGANIMATION;
currentAnimator = eyeCloseAnimator;
[currentAnimator setDelegate:self];
[currentAnimator startAnimation:self];
return self;
}
- animationDidStop:sender
{
// After the animation we have to switch to the original BeakerIcon
// we are also registered as the animators delegate.
animationRunning = NO;
[self switchToBeakerIcon:self];
return self;
}
- windowWillClose:sender
{
// WeÂre the InfoPanels delegate. So we can stop a animation even if it
// has not finished yet.
if( animationRunning ) [currentAnimator stopAnimation];
return self;
}
@end
/*
* History: 07.05.94 Switched to BBInfo.
*
* 19.01.94 Added the textFields.
*
*
* Bugs: - No
*/These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.