This is IconGrabView.m in view mode; [Download] [Up]
#import "IconGrabView.h"
@implementation IconGrabView
-initWithFrame:(NSRect)rect
{
[super initWithFrame:rect];
[self registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType,nil]];
return self;
}
-(void)drawRect:(NSRect)rect
{
NSPoint offset={ 0,0 };
NSColor *white=[NSColor whiteColor];
NSRectFillListWithColors( &rect, &white, 1 );
if ( !icon && filename ) {
icon = [[[NSWorkspace sharedWorkspace] iconForFile:filename] retain];
if (!icon ) {
filename=nil;
}
}
if ( icon ) {
offset.x = ([self frame].size.width - [icon size].width) / 2;
offset.y = ([self frame].size.height - [icon size].height) / 2;
[icon compositeToPoint:offset operation:NSCompositeSourceOver];
}
}
-(BOOL)acceptsFirstResponder
{
return YES;
}
-(unsigned int)draggingEntered:(id <NSDraggingInfo>)sender
{
return NSDragOperationCopy;
}
- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender
{
return YES;
}
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
{
if ( filename ) {
[filename release];
filename=nil;
}
if ( icon ) {
[icon release];
icon=nil;
}
filename = [[[[sender draggingPasteboard] propertyListForType:NSFilenamesPboardType] objectAtIndex:0] retain];
[self setNeedsDisplay:YES];
return YES;
}
-(void)copy:sender
{
id pasteboard = [NSPasteboard generalPasteboard];
[pasteboard declareTypes:[NSArray arrayWithObjects:NSTIFFPboardType,nil] owner:self];
[pasteboard setData:[icon TIFFRepresentation] forType:NSTIFFPboardType];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.