This is PMArticleText.m in view mode; [Download] [Up]
#import "../Alexandra.h" #import "PMArticleText.h" #import <dbkit/DBTableView.h> @implementation PreferencesManager(ArticleText) //----------------------------------------------------------- // FONT STUFF //----------------------------------------------------------- - showFont:sender; { char nameAndSize[150]; sprintf(nameAndSize,"%s %.0fpt",[font name],[font pointSize]); [aFontField setFont:font]; [aFontField setStringValue:nameAndSize]; return self; } - openFontPanel:sender; { [[aFontField window] makeFirstResponder:aFontField]; [[FontPanel new] panelConvertFont:[aFontField font]]; [[FontManager new] orderFrontFontPanel:sender]; return self; } - changeFont:sender; { font=[[FontManager new] convertFont:font]; [self showFont:self]; [thePanel setDocEdited:YES]; return self; } //----------------------------------------------------------- // DB TABLE VIEW //----------------------------------------------------------- // Achtung diese Methode kann von beiden MiscTableControllern aufgerufen werden. // Macht aber nichts weiter, dass diese Methode nur (oder gerade) in dieser // Katergorie steht. - miscTableController:sender valueDidChangeFor:identifier at:(unsigned int)position; { [self markDirty:sender]; return self; } //----------------------------------------------------------- // HEADER SELECTION //----------------------------------------------------------- /* if(strpbrk([hName stringValue],":\t ")!=NULL){ NXRunAlertPanel("Alexandra","Not a valid header.",NULL,NULL,NULL); return self; } */ //----------------------------------------------------------- // READ/WRITE //----------------------------------------------------------- - readArticleTextPrefs { char *headerList,*header; Font *newFont; float fSize; const char *fontNameSize; char fName[150]; int i; MiscList *rows; [aMode setState:[NXApp defaultIntValue:DEFAULT_HEADER_MODE]==NEWSPAPER_HEADER]; [aFancyBody setState: [NXApp defaultBoolValue:DEFAULT_REWRAP_ARTICLE_TEXT]]; [aPostscriptInline setState:[NXApp defaultBoolValue:DEFAULT_ALLOW_PS_INLINE]]; EM_DURING rows=[[MiscList alloc] init]; if([NXApp defaultIntValue:DEFAULT_HEADER_MODE]==FULL_HEADER) [rows addObject:[[KVPair alloc] initKey:"all" value:""]]; else { headerList=(char *)[NXApp defaultValue:DEFAULT_HEADER_FILTER]; EM_CONDERROR(!headerList,EPREFHeaderPrefMissing,NULL,NULL); headerList=NXCopyStringBufferFromZone(headerList,[self zone]); for(header=strtok(headerList,":");header!=NULL;header=strtok(NULL,":")) [rows addObject:[[KVPair alloc] initKey:header value:""]]; NXZoneFree([self zone],headerList); } for(i=[rows count];i<20;i++) [rows addObject:[[KVPair alloc] init]]; [aHeaderController empty:nil]; [aHeaderController addRowsFrom:rows]; EM_EMPTYHANDLER rows=[rows free]; EM_DURING fontNameSize=[NXApp defaultValue:DEFAULT_ARTICLE_FONT]; EM_CONDERROR(!fontNameSize,EPREFFontPrefMissing,NULL,NULL); sscanf(fontNameSize,"%s %f",fName,&fSize); EM_CONDERROR(fSize<8,EPREFFontTooSmall,(void *)8,NULL); newFont=[Font newFont:fName size:fSize]; EM_CONDERROR(!newFont,EPREFFontNotFound,fName,NULL); font=newFont; [self showFont:self]; EM_EMPTYHANDLER return self; } - writeArticleTextPrefs; { MiscList *pairList=[aHeaderController rows]; char *p,headerList[1000]; // ## HARDCODED LIMIT! const char *header; KVPair *pair; int hmode; [aHeaders endEditing]; hmode=NO_HEADER; *headerList='\0'; p=headerList; for(pair=[pairList setFirstObject]; pair; pair=[pairList setNextObject]) if(![pair isNull]) { header=[pair key]; hmode=SMALL_HEADER; if(!strcasecmp(header,"all")) { strcpy(headerList,"all"); hmode=FULL_HEADER; break; } sprintf(p,"%s:", header); p+=strlen(header)+1; } if([aMode state]) hmode=NEWSPAPER_HEADER; [NXApp setDefault:DEFAULT_HEADER_MODE toInt:hmode]; [NXApp setDefault:DEFAULT_HEADER_FILTER to:headerList]; [NXApp setDefault:DEFAULT_REWRAP_ARTICLE_TEXT toBool:[aFancyBody state]]; [NXApp setDefault:DEFAULT_ALLOW_PS_INLINE toBool:[aPostscriptInline state]]; [NXApp setDefault:DEFAULT_ARTICLE_FONT to:[aFontField stringValue]]; return self; } //----------------------------------------------------------- // THAT'S IT //----------------------------------------------------------- @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.