This is DisplayFilter.m in view mode; [Download] [Up]
/* -*-C-*-
*******************************************************************************
*
* File: DisplayFilter.m
* RCS: $Header: /usr/local/lib/cvs/EnhanceMail/DisplayFilter.m,v 1.1.1.5 1996/06/25 13:44:07 cedman Exp $
* Description:
* Author: Carl Edman
* Created: Fri Oct 13 11:48:05 1995
* Modified: Tue Jun 25 09:33:13 1996 (Carl Edman) cedman@capitalist.princeton.edu
* Language: C
* Package: N/A
* Status: Experimental (Do Not Distribute)
*
* (C) Copyright 1995, but otherwise this file is perfect freeware.
*
*******************************************************************************
*/
#import "EnhanceMail.h"
#import "DisplayFilter.h"
#import "Preferences.h"
#import "PGP.h"
#import "XImageURL.h"
@implementation EnhanceDisplayFilter
+ finishLoading:(struct mach_header *)header
{
[NXApp addDisplayFilter:[[self alloc] init]];
return self;
}
- (void)doSmilies:(Text *)txt
{
int start,end,ostart,oend;
const char *c,*d;
char *smilyreg,*smilyname;
Cell *smilycell;
for(c=EnhanceSmilies;*c;)
{
for(d=c;(*d!='\0') && (*d!='\n');d++);
smilyreg=strncpy(alloca(d-c+1),c,d-c);
smilyreg[d-c]='\0';
if (!*d) break;
c=d+1;
for(d=c;(*d!='\0') && (*d!='\n');d++);
smilyname=strncpy(alloca(d-c+1),c,d-c);
smilyname[d-c]='\0';
if (*d) d++;
c=d;
start=end=0;
smilycell=nil;
[txt setSel:start:end];
while(1)
{
ostart=start;
oend=end;
if ([txt findRegExpr:smilyreg ignoreCase:NO loc1:&start loc2:&end]) break;
if (ostart>=end) break;
[txt setSel:start:end];
if (smilycell==nil)
{
NXImage *smilyimage=[[NXImage alloc] initNameInPath:smilyname];
if (smilyimage==nil) continue;
[smilyimage setName:smilyname];
smilycell=[[Cell alloc] initIconCell:smilyname];
}
if (smilycell==nil)
break;
[txt replaceSelWithCell:smilycell];
}
}
}
- (void)willDisplayText:(Text *)txt
{
if (EnhanceExpandSmilies) [self doSmilies:txt];
}
- (void)willDisplayMessage:(MailMessage *)mes
{
if (EnhanceUsePGP) [[EnhancePGP new] decodePGP:mes];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.