This is MMFileCell.m in view mode; [Download] [Up]
/* written by Joe Freeman of NeXT Computer Inc.
* Version 2
* As with all my code, use at your own risk
*
*
* MMFileCell.[hm]
* Cell used by the multi media text object to implement file attachments
*
* Notes:
* 1) This object generates attachments similar to mail.
* The format is identical ... see note in MMText for
* incompatible explanations
*
* Text objects expect the embeded graphic objects to implement
* highlight:inView:lit:
* drawSelf:inView:
* trackMouse:inRect:ofView:
* calcCellSize:
* readRichText:forView:
* writeRichText:forView:
*
*/
/* Generated by Interface Builder */
#import "MMFileCell.h"
#import "MMText.h" /* for the filename method */
#import <libc.h> /* MAXPATHLEN */
#import <stdio.h>
#import <strings.h>
#import <appkit/Application.h>
#import <appkit/Listener.h>
#import <appkit/Speaker.h>
#import <appkit/NXImage.h>
#import <appkit/NXBitmapImageRep.h>
#import <appkit/NXEPSImageRep.h>
#import <appkit/tiff.h> /* NX_TIFF_COMPRESSION_NONE */
#import <dpsclient/dpsNeXT.h> /* NX_COPY */
#import <streams/streams.h>
@implementation MMFileCell:MMCell
static char rcsstring[] =
"@(#)Object:MMFileCell.m Developer:Joe Freeman Version:2 July, 1991";
/* assume that we just want the image of the file and we save the pointer */
- initFromFile: (const char *)filename copy:(BOOL)flag
{
char *tiff;
int length;
int okFlag;
id speaker = [NXApp appSpeaker];
NXStream *stream;
self = [super initFromFile: filename copy:flag];
theImage = [NXImage findImageNamed: filename];
if (!theImage){
[speaker setSendPort:
NXPortFromName(NX_WORKSPACEREQUEST, NULL)];
[speaker getFileIconFor:filename
TIFF: &tiff
TIFFLength: &length
ok: &okFlag];
if (okFlag){
stream = NXOpenMemory(tiff, length, NX_READONLY);
theImage = [[NXImage alloc]
initFromStream: stream ];
NXCloseMemory(stream, NX_FREEBUFFER);
}else{
theImage = [[NXImage alloc]
initFromFile: "/usr/lib/nib/default_app_icon.tiff" ];
}
[theImage setName:filename];
} else {
/* reload image because value may have changed (doubtful)*/
[theImage useFromFile:filename];
}
if (copyFlag){
if (rindex(filename,'/'))
strcpy(saveName,(char *)(rindex(filename,'/')+1));
else
strcpy(saveName,filename);
} else {
strcpy(saveName,filename);
}
return self;
}
- initFromFile: (const char *)filename requestedByView: aView;
{
[self initFromFile:filename copy:[aView copyAttachments]];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.