This is CornerView.m in view mode; [Download] [Up]
#import "CornerView.h"
#import "Thinker.h"
@implementation CornerView
- initFrame:(const NXRect *)frameRect
{
[super initFrame:frameRect];
image = [NXImage findImageNamed:"corner"];
check = [NXImage findImageNamed:"x"];
return self;
}
static NXPoint z[] = {{5,9},{32,9},{32,30},{5,30}};
- drawSelf:(const NXRect *)rects :(int)rectCount
{
NXPoint zero = {0,0};
[image composite:NX_SOVER toPoint:&zero];
if (state) [check composite:NX_SOVER toPoint:&z[state-1]];
return self;
}
- setState:(int)val
{
state = val;
[self display];
return self;
}
- mouseDown:(NXEvent *)theEvent
{
int i, tstate = 0;
NXPoint p;
NXRect r = {{0,0},{11,11}};
int inCorner = 0;
p = theEvent->location;
[self convertPoint:&p fromView:nil];
for (i=0; i<4; i++)
{
r.origin = z[i];
if (NXPointInRect(&p,&r))
{
tstate = i+1;
inCorner = 1;
break;
}
}
if (tstate == state) state = 0;
else if (inCorner) state = tstate;
[self display];
[BSThinker() setSleepCorner:state];
if (inCorner)
{
[self perform:@selector(saveState:)
with:self
afterDelay:5000
cancelPrevious:YES];
}
return self;
}
- saveState:sender
{
char str[10];
sprintf(str,"%1d", state);
NXWriteDefault([NXApp appName], "hotCorner", str);
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.