This is TVPrint.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import "TVPrint.h" #import "stdio.h" #import "strings.h" #import "appkit/SavePanel.h" @implementation TVPrint /******************************************************************************/ struct printVals printVals = { 1270, 0, 1, 0, 0, 0, 1, "" } ; extern char realnameoffile[] ; extern FILE *dvifile ; extern void mysystem(const char *s) ; extern void configure() ; extern void error() ; extern void qstatus() ; - setUpRealPanel { static int inited = 0 ; if (inited == 0) { realPanel = [TVPPanel new] ; [realPanel setAccessoryView:[self setContentView:nil]] ; configure() ; pi = [NXApp printInfo] ; [self loadPanel] ; inited = 1 ; } return self ; } - makeKeyAndOrderFront:anObject; { if (dvifile == NULL) { error("no file in window") ; return self ; } [self setUpRealPanel] ; [self callDvips:[realPanel runModal]] ; [realPanel orderOut:anObject] ; return self ; } - setReversed:anObject { Reversed = anObject; return self; } - setSynch:anObject { Synch = anObject; return self ; } - setOptions:anObject { Options = anObject; return self; } - setCustomDPI:anObject { CustomDPI = anObject; return self; } - setCollated:anObject { Collated = anObject; return self; } - setCompressed:anObject { Compressed = anObject; return self; } static const char *numberp(const char *s, int *p) { int negative = 0 ; int val = 0 ; while (*s && *s <= ' ') s++ ; if (*s == '-') { negative = 1 ; s++ ; } while ('0' <= *s && *s <= '9') val = val * 10 + (*s++ - '0') ; while (*s && *s <= ' ') s++ ; *p = val ; if (*s) return s ; else return 0 ; } /* static const char *pagep(const char *s, int *p, int *seq) { const char *pp = numberp(s, p) ; if (pp == 0) { *seq = -1 ; return pp ; } if (*pp != '.') return pp ; return numberp(pp+1, seq) ; } */ - SetCustomdpi:sender { printVals.customchosen = [sender state] ; if (numberp([CustomDPI stringValue], &printVals.customdpi) == 0) ; else [CustomDPI selectText:sender] ; return self; } - SetOptions:sender { strcpy(printVals.options, [Options stringValue]) ; return self; } - SetCompressed:sender { printVals.compressed = [sender state] ; return self; } - SetCustomResolution:sender { if (numberp([CustomDPI stringValue], &printVals.customdpi) == 0) ; else [CustomDPI selectText:sender] ; return self; } - SetReversed:sender { printVals.reversed = [sender state] ; return self; } - SetSync:sender { printVals.sync = [sender state] ; return self; } - SetCollated:sender { printVals.collated = [sender state] ; return self; } - SetResolution:sender { return self; } - callDvips:(int)tofile; { #define EOSB (sysbuffer+strlen(sysbuffer)) char sysbuffer[1024] ; /* We get these two values to be sure they are up to date */ strcpy(printVals.options, [Options stringValue]) ; (void)numberp([CustomDPI stringValue], &printVals.customdpi) ; if (tofile == NX_CANCELTAG || tofile == NX_PREVIEWTAG) return self ; if (realnameoffile[0] == 0) return self ; strcpy(sysbuffer, "dvips") ; if ([pi copies] > 1) { if (printVals.collated) strcat(sysbuffer, " -C ") ; else strcat(sysbuffer, " -c ") ; sprintf(EOSB, "%d", [pi copies]) ; } if (! [pi isAllPages]) { if ([pi firstPage] > -2000000000) { strcat(sysbuffer, " -p ") ; sprintf(EOSB, "%d", [pi firstPage]) ; } if ([pi lastPage] < 2000000000) { strcat(sysbuffer, " -l ") ; sprintf(EOSB, "%d", [pi lastPage]) ; } } if (printVals.customchosen || [pi resolution]) { strcat(sysbuffer, " -D ") ; sprintf(EOSB, "%d", printVals.customchosen ? printVals.customdpi : [pi resolution]) ; } if (printVals.reversed) strcat(sysbuffer, " -r") ; else strcat(sysbuffer, " -r0") ; if ([pi isManualFeed]) strcat(sysbuffer, " -m") ; if (printVals.compressed) strcat(sysbuffer, " -Z") ; else strcat(sysbuffer, " -Z0") ; if (tofile == NX_SAVETAG) { /* this is a kludge; anyone got a better way? */ strcat(sysbuffer, " -o \"") ; strcat(sysbuffer, [[SavePanel new] filename]) ; strcat(sysbuffer, "\"") ; } else if ((tofile == NX_OKTAG || tofile == NX_FAXTAG) && [pi printerName]) { strcat(sysbuffer, " -o \"\\!lpr -P ") ; strcat(sysbuffer, [pi printerName]) ; strcat(sysbuffer, "\"") ; } if (printVals.options[0]) { strcat(sysbuffer, " ") ; strcat(sysbuffer, printVals.options) ; } strcat(sysbuffer, " \"") ; strcat(sysbuffer, realnameoffile) ; strcat(sysbuffer, "\"") ; if (printVals.sync == 0) strcat(sysbuffer, " &") ; qstatus(sysbuffer) ; mysystem(sysbuffer) ; return self ; } - loadPanel { [CustomDPI setIntValue:printVals.customdpi] ; [Collated setState:printVals.collated] ; [Reversed setState:printVals.reversed] ; [Compressed setState:printVals.compressed] ; [Synch setState:printVals.sync] ; [Options setStringValue:printVals.options] ; return self ; } @end @implementation TVPPanel + new { return [super new] ; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.