
#import "MyBox.h"
#import "LocationInspector.h"
#import "Note.h"

@implementation LocationInspector

- awakeFromNib;
{
	MyBox	*myBox;
	View	*sv = [box superview];
	
	[box getFrame:&theFrame];
	[fingerButton1 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];
	box = myBox;
	[self clear:self];
	return self;
}
- setX:(float)xc andY:(float)yc andFlags:(int)flags;
{
	int x = xc -theFrame.origin.x -buttonFrame.size.width/2 -4;
	int y = yc-theFrame.origin.y - buttonFrame.size.height/2 -3;
	float z,r;
	int a;
	locationT	loc;
	Note *myNote;
	
	if(!isEditable)return self;
	if(x < 18) x = 18;
	if(x > 483) x = 483;
	if(y < 12) y = 12;
	if(y > 97) y = 97;
	
	z = y - 12;
	if(z<0)z=0;
	if(z>5*17)z=5*17;
	a=z/17;
	r =z/17 - a;
	if(r>=.5)a++;
	loc.string = a;

	z = x - 18;
	if(z<0)z=0;
	if(z>22*(21 + 1/7))z=22*(21 + 1/7);
	a=z/(21 + 1/7);
	r =z/(21 + 1/7) - a;
	if(r>=.5)a++;
	loc.fret = a;

	if(myNote = [myNR noteByLoc:&loc]){
		[self displayNote:myNote];
		[client newNote:myNote from:self];
	}else{
		NXBeep();
	}

	return self;
}
- (void)displayNote:(Note *)note;
{
	id	*idp;
	int	i;
	locationT	*l;
	
	if(!note)return;
	for(idp = &fingerButton1,i=0;idp <= &fingerButton5;idp++,i++){
		l = [note loc:i];
		if(l->string == -1){
			[*idp setTransparent:YES];
		}else{
			[*idp moveTo:18+l->fret*21+l->fret/7 :12+l->string*17];
			[*idp setTransparent:NO];
		}
		[*idp display];
	}
	[self refresh];
}
- clear:sender
{
	id	*idp;
	
	for(idp = &fingerButton1;idp <= &fingerButton5;idp++){
		[*idp setTransparent:YES];
		[*idp display];
	}
	[self refresh];
    return self;
}
- (void)refresh;
{
	[box display];
}

@end
