ftp.nice.ch/pub/next/text/tex/apps/texview.3.a9.s.tar.gz#/texview/TVPrint.m

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.