
#import "KeyInspector.h"
#import "MyBox.h"
#import "Note.h"

@implementation KeyInspector

- awakeFromNib;
{
	MyBox	*myBox;
	View	*sv = [box superview];
	
	[box getFrame:&theFrame];
	[noteButton getFrame:&buttonFrame];
	myBox = [[MyBox alloc]initFrame:&theFrame];
	[myBox setOffsets:0:0];
	[myBox setContentView:[box contentView]];
	[myBox setTitle:[box title]];
	[myBox setController:self];
	[sv addSubview:myBox];
	[noteButton setTransparent:YES];
	[noteButton moveTo:41 :30];
	box = myBox;
	[self refresh];
	[sv display];
    return self;
}
- setX:(float)xc andY:(float)yc andFlags:(int)flags;
{
	int x = xc -theFrame.origin.x -buttonFrame.size.width/2;
	int y = yc-theFrame.origin.y - buttonFrame.size.height/2 -3;
	float z,r;
	int a;
	notationT not;
	Note *myNote;
	
	if(!isEditable)return self;
	if(31<x && x < 71){
		x = 41;
		z = y - 30;
		if(z<0)z=0;
		if(z>27*6.5)z=27*6.5;
		a=z/6.5;
		r =z/6.5 - a;
		if(r>=.5)a++;
		not.nr = a;
		if(NX_COMMANDMASK & flags){
			not.vorz = VORZK;
			goto ende;
		}
		if(NX_ALTERNATEMASK & flags){
			not.vorz = VORZB;
			goto ende;
		}
		not.vorz = VORZ_;
ende:
		if(myNote = [myNR noteByNot:&not]){
			if(not.vorz == VORZB){
				[myNote setB:YES];
			}else{
				[myNote setB:NO];
			}
			[self displayNote:myNote];
			[client newNote:myNote from:self];
		}else{
			NXBeep();
		}
	}
	return self;
}
- clear:sender
{
	[noteButton setTransparent:YES];
	[self refresh];
    return self;
}
- (void)displayNote:(Note *)note;
{
	notationT	*nP;
	
	if(!note)return;
	if([note b]){
		nP = [note not2];
	}else{
		nP = [note not1];
	}
	[noteButton moveTo:41 :30+6.5*(nP->nr)];
	[noteButton setTransparent:NO];
	switch(nP->vorz){
		case VORZ_: [noteButton setTitle:" "];
					break;
		case VORZB: [noteButton setTitle:"b"];
					break;
		case VORZK: [noteButton setTitle:"#"];
					break;
	}
	[self refresh];
}
- (void)refresh;
{
	[noteButton display];
	[box display];
}
@end
