home *** CD-ROM | disk | FTP | other *** search
- /* Generated by Interface Builder */
-
- #import "PageView.h"
- #import "SheetView.h"
- #import "appkit/Scroller.h"
- #import "TeXviewObject.h"
- #import "TVWindow.h"
- #import <dpsclient/wraps.h>
- #import "dviAccessors.h"
- #import <strings.h>
- #import <appkit/Application.h>
- #import "ComScroll.h"
- #import <appkit/TextField.h>
- #import <mach/mach.h>
-
- extern real screendpi ;
- extern int paranoia ;
- extern PageView *myPageView ;
- extern Window *tvWindow ;
- extern SheetView *myView ;
- extern TeXviewObject *myTeXviewObject ;
- extern shalfword rvvsize, rhhsize ;
- extern Boolean mocked ;
- extern NXRect *initsizewindow() ;
- extern initWasOnScreen() ;
- extern void error() ;
-
- extern void reportname() ;
- extern void recalculate() ;
- extern void PSflush(), TPSinit() ;
- extern void makenewdoc() ;
-
- const char *legit_types[] = { "dvi", "tex", "latex", "ltx", NULL } ;
-
- @implementation PageView
-
- + newFrame:(const NXRect *)theFrame
- {
- NXRect tempRect ;
-
- self = [super newFrame:theFrame];
- [self setHorizScrollerRequired:YES];
- [self setVertScrollerRequired:YES];
- /* [self setDynamicScrolling:YES];
- [self setBackgroundGray:0.433];
- [self setAutoresizeSubviews:YES];
- [self setBorderType:NX_NOBORDER]; */
- myPageView = self ;
- myOpenPanel = nil ;
- NX_X(&tempRect) = 0 ;
- NX_Y(&tempRect) = 0 ;
- NX_WIDTH(&tempRect) = 1036 ;
- NX_HEIGHT(&tempRect) = 1336 ;
- myView = [SheetView newFrame:&tempRect] ;
- [self setDocView:myView] ;
- reportname(NOFILETITLE) ;
- [[self window] setExcludedFromWindowsMenu:YES] ;
- TPSinit() ;
- recalculate() ;
- return self;
- }
-
- - drawSelf:(NXRect *)rects :(int)rectCount
- {
- [super drawSelf:rects:rectCount] ;
- return self ;
- }
-
- - setPageNum:anObject
- {
- pageNum = anObject ;
- return self;
- }
-
- - setConsole:anObject
- {
- NXRect *tr ;
-
- console = anObject ;
- [[console window] setExcludedFromWindowsMenu:YES] ;
- if (tr=initsizewindow(1)) {
- [[(ComScroll *)console window] placeWindow:tr] ;
- if (initWasOnScreen()) {
- [[console window] orderFront:self] ;
- } else {
- [[console window] orderOut:self] ;
- }
- }
- return self;
- }
-
- - getConsole
- {
- return console ;
- }
-
- - setTex:anObject
- {
- NXRect *tr ;
-
- tex = anObject ;
- [[tex window] setExcludedFromWindowsMenu:YES] ;
- if (tr=initsizewindow(2)) {
- [[(ComScroll *)tex window] placeWindow:tr] ;
- if (initWasOnScreen()) {
- [[tex window] orderFront:self] ;
- } else {
- [[tex window] orderOut:self] ;
- }
- }
- return self;
- }
-
- - getTeX
- {
- return tex ;
- }
-
- - setCommand:anObject
- {
- NXRect *tr ;
-
- command = anObject ;
- [command setExcludedFromWindowsMenu:YES] ;
- [command removeFromEventMask:(NX_KEYDOWNMASK | NX_KEYUPMASK)] ;
- if (tr=initsizewindow(3)) {
- [command moveTo:tr->origin.x:tr->origin.y] ;
- if (initWasOnScreen()) {
- [command orderFront:self] ;
- } else {
- [command orderOut:self] ;
- }
- }
- return self;
- }
-
- - getCommand
- {
- return command ;
- }
-
- - setPageStuff:anObject
- {
- pageStuff = anObject ;
- pageStuff = [pageStuff setContentView:nil] ;
- [self addSubview:pageStuff] ;
- [self tile] ;
- return self ;
- }
-
- - getPageStuff;
- {
- return pageStuff ;
- }
-
- - tile
- {
- NXRect r1, r2 ;
- Scroller *h ;
-
- [super tile] ;
- if (pageStuff == 0)
- return self ;
- h = [self horizScroller] ;
- [h getFrame:&r2] ;
- [pageStuff getFrame:&r1] ;
- r2.size.width -= r1.size.width ;
- r1.origin.x = r2.size.width + r2.origin.x ;
- r1.origin.y = r2.origin.y ;
- [h setFrame:&r2] ;
- [pageStuff setFrame:&r1] ;
- return self ;
- }
-
- - lastPage:sender
- {
- dviLastPage() ;
- return self;
- }
-
- - openPanel
- {
- if (!myOpenPanel) myOpenPanel = [OpenPanel new];
- return (myOpenPanel);
- }
-
- - update
- {
- if ([self needsDisplay])
- [self display] ;
- return self ;
- }
-
- - openFile:sender
- {
- if ([[self openPanel] runModalForTypes:legit_types])
- dviOpenFile((char *)[[self openPanel] filename]) ;
- return self;
- }
-
- - reOpenFile:sender
- {
- dviReOpenFile() ;
- return self;
- }
-
- - nextPage:sender
- {
- dviNextPage() ;
- return self;
- }
-
- - firstPage:sender
- {
- dviFirstPage() ;
- return self;
- }
-
- - zoomUnzoom:sender
- {
- dviZoomUnzoom() ;
- return self;
- }
-
- - mockUnmock:sender
- {
- dviMock(-1) ;
- return self;
- }
-
- - mock:sender
- {
- dviMock(1) ;
- return self ;
- }
-
- - unMock:sender
- {
- dviMock(0) ;
- return self ;
- }
-
- - setMockSwitch:anObject
- {
- mockSwitch = anObject ;
- [self upMock] ;
- return self ;
- }
-
- void upmock(void) {
- [myPageView upMock] ;
- }
-
- - upMock {
- [mockSwitch setState:mocked] ;
- return self ;
- }
-
- - unzoom:sender
- {
- [myTeXviewObject unzoom] ;
- dviUnzoom() ;
- return self;
- }
-
- - prevPage:sender
- {
- dviPrevPage() ;
- return self;
- }
-
- - zoom:sender
- {
- [myTeXviewObject zoom] ;
- dviZoom() ;
- return self;
- }
-
- - closeFile:sender
- {
- dviCloseFile() ;
- return self;
- }
-
- - gotoPage:sender
- {
- dviGotoPage((char *)[sender stringValueAt:0]) ;
- return self;
- }
-
- void getpagenum(s)
- char *s ;
- {
- [myPageView getpagenum:s] ;
- }
-
- - getpagenum:(char *)s
- {
- strcpy(s, [pageNum stringValue]) ;
- return self ;
- }
-
-
- - fireRandom:sender
- {
- [myTeXviewObject firePage] ;
- return self ;
- }
-
- void pagereport(pagenum, seq)
- integer pagenum, seq ;
- {
- char str[30] ;
-
- if (seq == 0)
- sprintf(str, "%ld", pagenum) ;
- else
- sprintf(str, "%ld.%ld", pagenum, seq) ;
- [myTeXviewObject setPageNum:str] ;
- PSflush() ;
- }
-
- char realnameoffile[255] ;
-
- void reportname(s)
- char *s ;
- {
- static char *oldname ;
-
- if (s) {
- oldname = s ;
- if (*s != '*' || s[1] != ' ')
- strcpy(realnameoffile, s) ;
- else
- realnameoffile[0] = 0 ;
- } else
- realnameoffile[0] = 0 ;
- [[myPageView window] setTitleAsFilename:oldname] ;
- }
-
- - changeDPI:(id)sender
- {
- [myTeXviewObject popIt:sender] ;
- return self ;
- }
-
- #define MILLION 1000000
-
- static int lastxsize = MILLION, lastysize = MILLION ;
-
- - noScrollUpdates
- {
- [myPageView setDisplayOnScroll:NO] ;
- [myPageView setCopyOnScroll:NO] ;
- return self ;
- }
-
- - scrollUpdates
- {
- [myPageView setDisplayOnScroll:YES] ;
- [myPageView setCopyOnScroll:YES] ;
- return self ;
- }
-
- - cachePosition:(int)x:(int)y
- {
- NXSize s ;
-
- [self getContentSize:&s] ;
- if (s.width + 16 > lastxsize)
- xcache = 0.5 ;
- else
- xcache = [[self horizScroller] floatValue] ;
- if (s.height + 16 > lastysize)
- ycache = 0.5 ;
- else
- ycache = [[self vertScroller] floatValue] ;
- if (lastxsize == MILLION) { /* cheat these values in */
- xcache = 0.5 ;
- ycache = 0.0 ;
- }
- return self ;
- }
-
- static float scroller_to_pos(float x1, float x2, float s) {
- if (x2 < x1)
- return s * (x1 - x2) ;
- else
- return 0 ;
- }
-
- - unCachePosition:(int)x:(int)y
- {
- NXSize size ;
- NXPoint t ;
-
- [self getContentSize:&size] ;
- t.x = scroller_to_pos((float)x, size.width, xcache) ;
- t.y = scroller_to_pos((float)y, size.height, 1.0-ycache) ;
- [myView scrollPoint:&t] ;
- lastxsize = x ;
- lastysize = y ;
- return self ;
- }
-
- /* moves down about a screenful. */
-
- - (int)moveDown:(int)shiftstate;
- {
- NXSize s ;
- NXPoint t ;
- float ypos = [[self vertScroller] floatValue] ;
- float xpos = [[self horizScroller] floatValue] ;
- float f ;
-
- shiftstate = 1 << (2 * shiftstate) ;
- [self getContentSize:&s] ;
- if (ypos > 0.95 || s.height + 16 >= rvvsize)
- return 0 ;
- if (2 * s.height < rvvsize)
- f = s.height / (rvvsize - s.height) - 0.02 ;
- else
- f = 1.0 ;
- if (f < 0.02)
- f = 0.02 ;
- f /= shiftstate ;
- ypos += f ;
- if (ypos > 1.0)
- ypos = 1.0 ;
- t.y = scroller_to_pos((float)rvvsize, s.height, 1.0 - ypos) ;
- t.x = scroller_to_pos((float)rhhsize, s.width, xpos) ;
- [myView scrollPoint:&t] ;
- return 1 ;
- }
-
- /* moves up about a screenful. */
-
- - (int)moveUp:(int)shiftstate;
- {
- NXSize s ;
- NXPoint t ;
- float ypos = [[self vertScroller] floatValue] ;
- float xpos = [[self horizScroller] floatValue] ;
- float f ;
-
- shiftstate = 1 << (2 * shiftstate) ;
- [self getContentSize:&s] ;
- if (ypos < 0.05 || s.height + 16 >= rvvsize)
- return 0 ;
- if (2 * s.height < rvvsize)
- f = s.height / (rvvsize - s.height) - 0.02 ;
- else
- f = 1.0 ;
- if (f < 0.02)
- f = 0.02 ;
- f /= shiftstate ;
- ypos -= f ;
- if (ypos < 0.0)
- ypos = 0.0 ;
- t.y = scroller_to_pos((float)rvvsize, s.height, 1.0 - ypos) ;
- t.x = scroller_to_pos((float)rhhsize, s.width, xpos) ;
- [myView scrollPoint:&t] ;
- return 1 ;
- }
-
- - (int)moveRight:(int)shiftstate
- {
- NXSize s ;
- NXPoint t ;
- float ypos = [[self vertScroller] floatValue] ;
- float xpos = [[self horizScroller] floatValue] ;
- float f ;
-
- shiftstate = 1 << (2 * shiftstate) ;
- [self getContentSize:&s] ;
- if (s.width + 16 >= rhhsize)
- return 0 ;
- if (2 * s.width < rhhsize)
- f = s.width / (rhhsize - s.width) - 0.02 ;
- else
- f = 1.0 ;
- if (f < 0.02)
- f = 0.02 ;
- f /= shiftstate ;
- xpos += f ;
- if (xpos > 1.0)
- xpos = 1.0 ;
- t.y = scroller_to_pos((float)rvvsize, s.height, 1.0 - ypos) ;
- t.x = scroller_to_pos((float)rhhsize, s.width, xpos) ;
- [myView scrollPoint:&t] ;
- return 1 ;
- }
-
- - (int)moveLeft:(int)shiftstate
- {
- NXSize s ;
- NXPoint t ;
- float ypos = [[self vertScroller] floatValue] ;
- float xpos = [[self horizScroller] floatValue] ;
- float f ;
-
- shiftstate = 1 << (2 * shiftstate) ;
- [self getContentSize:&s] ;
- if (s.width + 16 >= rhhsize)
- return 0 ;
- if (2 * s.width < rhhsize)
- f = s.width / (rhhsize - s.width) - 0.02 ;
- else
- f = 1.0 ;
- if (f < 0.02)
- f = 0.02 ;
- f /= shiftstate ;
- xpos -= f ;
- if (xpos < 0.0)
- xpos = 0.0 ;
- t.y = scroller_to_pos((float)rvvsize, s.height, 1.0 - ypos) ;
- t.x = scroller_to_pos((float)rhhsize, s.width, xpos) ;
- [myView scrollPoint:&t] ;
- return 1 ;
- }
-
- - Bot:(int)quiet;
- {
- NXSize s ;
- NXPoint t ;
- float xpos = [[self horizScroller] floatValue] ;
-
- if (quiet)
- [self noScrollUpdates] ;
- [self getContentSize:&s] ;
- t.y = scroller_to_pos((float)rvvsize, s.height, 0.0) ;
- t.x = scroller_to_pos((float)rhhsize, s.width, xpos) ;
- [myView scrollPoint:&t] ;
- if (quiet)
- [self scrollUpdates] ;
- return self ;
- }
-
- - Top:(int)quiet;
- {
- NXSize s ;
- NXPoint t ;
- float xpos = [[self horizScroller] floatValue] ;
-
- if (quiet)
- [self noScrollUpdates] ;
- [self getContentSize:&s] ;
- t.y = scroller_to_pos((float)rvvsize, s.height, 1.0) ;
- t.x = scroller_to_pos((float)rhhsize, s.width, xpos) ;
- [myView scrollPoint:&t] ;
- if (quiet)
- [self scrollUpdates] ;
- return self ;
- }
-
- void bringupwindow(void) {
- NXRect *tr ;
-
- if (tr = initsizewindow(0))
- [[myPageView window] placeWindow:tr] ;
- tvWindow = [myPageView window] ;
- [[myPageView window] makeKeyAndOrderFront:0] ;
- }
-
- - setPositionText:anObject
- {
- positionText = anObject ;
- return self ;
- }
-
- - setPositionRadio:anObject
- {
- positionRadio = anObject ;
- return self ;
- }
-
- static float units[] = { 1.0, 2.54, 72.27, 72.0, 84.725 } ;
- static int curunits = 0 ;
- static NXPoint posevent = {0.0, 0.0}, prevposevent = {0.0, 0.0} ;
- static char *unitnames[] = { "inches", "centimeters", "points",
- "PostScript units", "pico-light-seconds", 0 } ;
- - changeUnits:sender
- {
- curunits = (curunits + 1) ;
- if (unitnames[curunits] == 0)
- curunits = 0 ;
- [self updatePosition] ;
- return self ;
- }
-
- - updatePosition
- {
- NXPoint pagepos ;
- NXPoint deltapos ;
- char tempbuf[300] ;
-
- if (positionText && screendpi > 1.0) {
- pagepos = posevent ;
- deltapos = prevposevent ;
- pagepos.x *= units[curunits] / screendpi ;
- pagepos.y *= units[curunits] / screendpi ;
- deltapos.x *= units[curunits] / screendpi ;
- deltapos.y *= units[curunits] / screendpi ;
- sprintf(tempbuf,
- "Click at (%.3g,%.3g) is (%.3g,%.3g) from previous click in %s.",
- pagepos.x, pagepos.y, pagepos.x - deltapos.x, pagepos.y - deltapos.y,
- unitnames[curunits]) ;
- [(TextField *)positionText setStringValue:tempbuf] ;
- }
- return self ;
- }
-
- - reportPosition:(NXEvent *)event
- {
- if (myView && positionText && screendpi > 1.0) {
- prevposevent = posevent ;
- posevent = (event->location) ;
- posevent.x -= 8.0 ;
- posevent.y -= 8.0 ;
- [myView convertPoint:&posevent fromView:nil] ;
- [self updatePosition] ;
- }
- return self ;
- }
-
- - mouseDown: (NXEvent *) ptr
- {
- NXPoint newLoc, oldLoc;
- NXEvent *nextEvent;
- int oldMask;
- NXRect myRect;
- int numdrags = 0 ;
-
- oldMask =
- [window addToEventMask:(NX_LMOUSEUPMASK | NX_LMOUSEDRAGGEDMASK)];
- [self lockFocus];
-
- oldLoc = ptr->location;
- [self convertPoint:&oldLoc fromView:nil];
-
- nextEvent =
- [NXApp getNextEvent:(NX_LMOUSEUPMASK | NX_LMOUSEDRAGGEDMASK)];
- while (nextEvent->type == NX_LMOUSEDRAGGED){
- numdrags++ ;
- newLoc = nextEvent->location;
- [self convertPoint:&newLoc fromView:nil];
- [myView getVisibleRect:&myRect];
- myRect.origin.x -= newLoc.x - oldLoc.x;
- myRect.origin.y += newLoc.y - oldLoc.y;
- [myView scrollRectToVisible: &myRect];
- oldLoc = newLoc;
- nextEvent =
- [NXApp getNextEvent:(NX_LMOUSEUPMASK | NX_LMOUSEDRAGGEDMASK)];
- }
- [self unlockFocus];
- [window setEventMask:oldMask];
- if (numdrags == 0)
- [self reportPosition:nextEvent] ;
- return self;
- }
-
- void writeconsole(const char *s) {
- static char wcbuf[1024] ;
- strcpy(wcbuf, s) ;
- strcat(wcbuf, "\n") ;
- [((ComScroll *)[myPageView getConsole]) addText:wcbuf] ;
- }
-
- void mysystem(const char *s) {
- if (paranoia)
- system(s) ;
- else
- [((ComScroll *)[myPageView getConsole]) logCommand:s inBack:0] ;
- }
-
- void consoletofront() {
- [[((ComScroll *)[myPageView getConsole]) window] makeKeyAndOrderFront:0] ;
- }
-
- void textofront() {
- [[((ComScroll *)[myPageView getTeX]) window] makeKeyAndOrderFront:0] ;
- }
-
- void commandup() {
- [[myPageView getCommand] orderFront:0] ;
- }
-
- void previewtofront() {
- [[myPageView window] makeKeyAndOrderFront:0] ;
- }
-
- void myasyncsystem(const char *s) {
- textofront() ;
- [((ComScroll *)[myPageView getTeX]) logCommand:s inBack:1] ;
- }
-
- extern void reTeXit() ;
-
- - TeXtexit:sender {
- reTeXit("tex -v \"%s\"") ;
- return self ;
- }
- - TeXlatexit:sender {
- reTeXit("latex -v \"%s\"") ;
- return self ;
- }
- - TeXslitexit:sender {
- reTeXit("slitex -v \"%s\"") ;
- return self ;
- }
- - TeXbibtexit:sender {
- reTeXit("bibtex \"%s\"") ;
- return self ;
- }
- - TeXamstexit:sender {
- reTeXit("amstex -v \"%s\"") ;
- return self ;
- }
- - openManual:sender {
- dviOpenFile("/usr/tex/ntman.dvi") ;
- return self ;
- }
- - TeXcustomexit:sender {
- reTeXit("%C -v \"%s\"") ;
- return self ;
- }
- - TeXdefaultexit:sender {
- reTeXit("%L -v \"%s\"") ;
- return self ;
- }
- - TeXmakeit:sender {
- reTeXit("make \"%s.dvi\"") ;
- return self ;
- }
- - clearBuffer:sender {
- ComScroll *c = 0 ;
-
- if (console && [[(ComScroll *)console window] isKeyWindow])
- c = console ;
- else if (tex && [[(ComScroll *)tex window] isKeyWindow])
- c = tex ;
- if (c)
- [c clear] ;
- return self ;
- }
-
- - appDidBecomeActive:(id)sender;
- {
- /* [tvWindow makeKeyAndOrderFront:self] ; */
- return self ;
- }
-
- - servercalled
- {
- return self ;
- }
-
- /*
- * What we do here is we try to find data of type NXFilenamePboardType,
- * and then open it up.
- */
- - serverOpen:(id)pb userData:(const char *)userData error:(char **)msg {
- char *data ;
- int len ;
- char *const *s ;
- char *const *types = [pb types] ;
-
- [self servercalled] ;
- for (s=types; *s; s++)
- if (*s == NXFilenamePboardType)
- break ;
- dviSaveFormat(userData) ;
- if (*s && [pb readType:NXFilenamePboardType data:&data length:&len]) {
- dviOpenFile(data) ;
- vm_deallocate(task_self(), (vm_address_t)data, len) ;
- }
- return self ;
- }
-
- /*
- * The rest actually ignore the filename, since the user may be editing
- * an auxilliary file.
- */
- - serverReopen:(id)pb userData:(const char *)userData error:(char **)msg {
- [self servercalled] ;
- [self reOpenFile:self] ;
- return self ;
- }
-
- - serverCommand:(id)pb userData:(const char *)userData error:(char **)msg {
- [self servercalled] ;
- reTeXit(userData) ;
- return self ;
- }
-
- - serverMakeEquation:(id)pb userData:(const char *)userData
- error:(char **)msg {
- char *data, *p ;
- int len ;
- char *const *s ;
- char *const *types = [pb types] ;
- FILE *f ;
- char tempname[40] ;
- char cmd[120] ;
- extern char *mktemp() ;
- extern void unlink() ;
- extern int system() ;
-
- [self servercalled] ;
- for (s=types; *s; s++)
- if (*s == NXAsciiPboardType)
- break ;
- if (*s && [pb readType:NXAsciiPboardType data:&data length:&len]) {
- strcpy(tempname, "TeXEQN.XXXXXX") ;
- p = mktemp(tempname) ;
- p = p + strlen(p) ;
- strcpy(p, ".tex") ;
- f = fopen(tempname, "w") ;
- if (f == 0) {
- *msg = "Couldn't open temporary file" ;
- return self ;
- }
- fwrite(data, 1, len, f) ;
- fputs("\n \\nopagenumbers \\bye\n", f) ;
- fclose(f) ;
- *p = 0 ;
- sprintf(cmd, ((userData && *userData) ? userData :
- "tex %s.tex ; dvips %s.dvi -E -n 1 -o %s.eps -P epsf"),
- tempname, tempname, tempname) ;
- system(cmd) ; /* we want to use mysystem */
- strcpy(p, ".eps") ;
- f = fopen(tempname, "r") ;
- if (f) {
- int nlen ;
- char *mbuf ;
- const char *nt[1] ;
-
- nt[0] = NXPostScriptPboardType ;
- fseek(f, 0L, 2) ;
- nlen = ftell(f) ;
- fseek(f, 0L, 0) ;
- mbuf = malloc(nlen) ;
- if (mbuf == 0)
- error("! no memory?") ;
- fread(mbuf, 1, nlen, f) ;
- [pb declareTypes:nt num:1 owner:NULL] ;
- [pb writeType:NXPostScriptPboardType data:mbuf length:nlen] ;
- free(mbuf) ;
- fclose(f) ;
- } else
- *msg = "Output file didn't get created, somehow" ;
- vm_deallocate(task_self(), (vm_address_t)data, len) ;
- strcpy(p, ".dvi") ; unlink(tempname) ;
- strcpy(p, ".log") ; unlink(tempname) ;
- strcpy(p, ".tex") ; unlink(tempname) ;
- strcpy(p, ".eps") ; unlink(tempname) ;
- }
- return self ;
- }
-
- extern char basename[] ;
-
- - validRequestorForSendType:(NXAtom)sendType andReturnType:(NXAtom)returnType {
- printf("Someone's asking for %s but getting %s\n",
- (sendType ? sendType : ""), (returnType ? returnType : "")) ;
- if (sendType == NXFilenamePboardType && returnType == 0 && basename[0])
- return self ;
- else
- return nil ;
- }
-
- - (BOOL)writeSelectionToPasteboard:(Pasteboard *)pboard types:(NXAtom *)types
- /*
- * If one of the requested types is one of the ones we handle,
- * then we put our selection in the Pasteboard.
- */
- {
- while (types && *types) {
- if (*types == NXFilenamePboardType)
- break ;
- types++;
- }
- if (types && *types && basename[0]) {
- char tempname[1000] ;
- strcpy(tempname, basename) ;
- strcat(tempname, ".tex") ;
- [pboard writeType:*types data:tempname length:(strlen(tempname))] ;
- return YES;
- } else {
- return NO;
- }
- }
-
- extern char LastFormat[], CustomFormat[] ;
-
- - setDefaultformat:sender {
- defaultformat = sender ;
- [self upDefaultformat:self] ;
- return self ;
- }
- - setCustomformat:sender {
- customformat = sender ;
- [self upCustomformat:self] ;
- return self ;
- }
- - newDefaultformat:sender {
- char *p = (char *)[sender stringValueAt:0] ;
- while (*p <= ' ' && *p)
- p++ ;
- strcpy(LastFormat, p) ;
- p = LastFormat ;
- while (*p > ' ')
- p++ ;
- *p = 0 ;
- return self ;
- }
- - newCustomformat:sender {
- char *p = (char *)[sender stringValueAt:0] ;
- while (*p <= ' ' && *p)
- p++ ;
- strcpy(CustomFormat, p) ;
- p = CustomFormat ;
- while (*p > ' ')
- p++ ;
- *p = 0 ;
- return self ;
- }
- - upDefaultformat:sender {
- [(TextField *)defaultformat setStringValue:LastFormat] ;
- return self ;
- }
- - upCustomformat:sender {
- [(TextField *)customformat setStringValue:CustomFormat] ;
- return self ;
- }
- void upformats(void) {
- [myPageView upDefaultformat:0] ;
- [myPageView upCustomformat:0] ;
- }
- @end
-