|
TOC | PREV | NEXT
//
// GifWell.h
//
#import <AppKit/AppKit.h>
@interface GifWell:NSControl
{
id image;
NSString *path;
}
- (void)setFile:(NSString *)aPath;
@end
#import "GifWell.h"
@implementation GifWell
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent {return YES;}
- (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent *)theEvent
{
return YES; // see NSView.rtfd for full explanation
}
- (unsigned int)draggingSourceOperationMaskForLocal:(BOOL)flag
{
if (flag) return NSDragOperationCopy;
return NSDragOperationCopy|NSDragOperationGeneric|NSDragOperationLink;
}
- (BOOL)copyDataTo:pboard
{
if (path != nil) {
[pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:self];
[pboard setPropertyList:[NSArray arrayWithObject:path] forType:NSFilenamesPboardType];
return YES;
} else return NO;
}
- (void)setFile:(NSString *)aPath
{
[path autorelease];
[image release];
if (!aPath) {
path = image = nil;
} else {
path = [aPath copy];
image = [[[NSWorkspace sharedWorkspace] iconForFile:aPath]retain];
}
[self display];
}
- (void)drawRect:(NSRect)rects
{
NSDrawGrayBezel([self bounds] , [self bounds]);
if (image != nil) {
NSPoint p;
NSSize sz = [image size];
p.x = ([self bounds].size.width - sz.width)/2.;
p.y = ([self bounds].size.height - sz.height)/2.;
[image compositeToPoint:p operation:NSCompositeSourceOver];
}
}
- (void)mouseDown:(NSEvent *)e
{
NSPoint location;
NSSize size;
NSPasteboard *pb = [NSPasteboard pasteboardWithName:(NSString *) NSDragPboard];
if ([self copyDataTo:pb]) {
size = [image size];
location.x = ([self bounds].size.width - size.width)/2;
location.y = ([self bounds].size.height - size.height)/2;
[self dragImage:image at:location offset:NSZeroSize event:(NSEvent *)e pasteboard:pb source:self slideBack:YES];
}
}
@end
TOC | PREV | NEXT
Created by Stone Design's Create on 4/30/1998
|
|