ftp.nice.ch/pub/next/text/tex/apps/TeXview-kp0.25.s.tar.gz#/TeXview-grey/TeXviewObject.m

This is TeXviewObject.m in view mode; [Download] [Up]

/* Generated by Interface Builder */

#import "TeXviewObject.h"
#import "PageView.h"
#import "structures.h"
#import "dviAccessors.h"
#import <dpsclient/wraps.h>
#import <strings.h>

#include <kpathsea/proginit.h>
#include <kpathsea/progname.h>

@implementation TeXviewObject

TeXviewObject *myTeXviewObject ;
extern PageView *myPageView;
extern int existsize100[] ;
extern void todpi(), error() ;
extern void recalculate(), resetsizes() ;
extern void display() ;
extern void saveconfig() ;
extern float screendpi ;
extern Boolean generatefonts, pagedrawn ;

Boolean	shouldGray=YES;
Boolean	scrollers=YES;
Boolean	scrollMode=YES;


static char text[20] ;
char *dpistring(i)
int i ;
{
   sprintf(text, "%3d", i) ;
   return(text) ;
}

void reportnewdpi() {
   [myTeXviewObject setDpiTitle:dpistring((int)(screendpi+0.5))] ;
}

- setDpiTitle:(char *)s
{
   int i ;

   i = [popup indexOfItem:s] ;
   if (i != -1) {
      [[popup itemList] selectCellAt:i:0] ;
      [dpiPopup setTitle:s] ;
   }
   return self ;
}

- setSizeMatrix:anObject
{
   sizeMatrix = anObject ;
   [self setsizes] ;
   return self ;
}

- setGenerateButtons:anObject
{
   generateButtons = anObject ;
   [self setsizes] ;
   return self ;
}

- setStatus:anObject
{
   status = anObject ;
   return self ;
}

- setZoomed:anObject
{
   zoomed = anObject ;
   return self ;
}

- zoom
{
   return [zoomed setState:1] ;
}

- unzoom
{
   return [zoomed setState:0] ;
}

- getStatus
{
   return status ;
}

extern void writeconsole() ;

void setstatus(s)
const char *s ;
{
   writeconsole(s) ;
   [[myTeXviewObject getStatus] setStringValue:s] ;
   PSflush() ;
}

void qstatus(s)
const char *s ;
{
   [[myTeXviewObject getStatus] setStringValue:s] ;
   PSflush() ;
}

- setDpiPopup:anObject
{
    id popuplist ;
    int i ;

    dpiPopup = anObject;
    myTeXviewObject = self ;
    popup = [PopUpList new] ;
    popuplist = popup ;
    [popup changeButtonTitle:YES] ; /* we'll do it ourselves */
    for (i=1; i<20; i++)
       [popuplist addItem:dpistring(existsize100[i])] ;
    [popuplist addItem:dpistring(300)] ;
    [popuplist addItem:dpistring(400)] ;
    [popuplist addItem:dpistring(600)] ;
    NXAttachPopUpList(anObject, popuplist) ;
    [popup setAction:@selector(cdpi:)] ;
    [popup setTarget:myTeXviewObject] ;
    return self;
}

- popIt:anObject
{
    [popup popUp:anObject] ;
    return self ;
}

- setPageForm:anObject
{
    pageForm = anObject;
    return self;
}

- setPageNum:(char *)p
{
    [pageForm setStringValue:p at:0] ;
    return self ;
}

static NXEvent ne ;

- cdpi:anObject
{
    ne.type = NX_APPDEFINED ;
    strcpy(ne.data.compound.misc.C, [[anObject selectedCell] title]) ;
    DPSPostEvent(&ne, 1) ;
    return self ;
}

- firePage
{
    [pageForm selectTextAt:0] ;
    return self ;
}

NXEvent nw ;
- startRandom:(NXEvent *)e
{
    [pageForm setStringValue:"" at:0] ;
    [pageForm selectTextAt:0] ;
    nw = *e ;
    DPSPostEvent(&nw, 1) ;
    return self ;
}


extern int actualdpi ;

- changeGenerate:(Matrix *)anObject
{
    Boolean tmp=(![anObject selectedRow]);
	if(tmp!=generatefonts) {
	    generatefonts=tmp;
        kpse_init_prog ("XDVI", actualdpi, NULL, (generatefonts==1),"cmr10");
	}
    return self ;
}
extern real defhsize, defvsize, defhmarg, defvmarg ;
extern real hsize, vsize, hmarg, vmarg ;
static int error_inc ;
static real check(siz, low, high, def)
real siz, low, high, def ;
{
   error_inc = 0 ;
   if (siz < low) {
      error("Size too small") ;
      return(def) ;
   } else if (siz > high) {
      error("Size too large") ;
      return(def) ;
   } else {
      error_inc = 1 ;
      return(siz) ;
   }
}
int checksizes(anObject)
id anObject ;
{
   float newsize ;
   int i ;

   for (i=0; i<4; i++) {
      newsize = [[anObject cellAt:i:0] floatValue] ;
      switch (i) {
case 0:   hsize = check(newsize, 1.0, 50.0, 8.5) ; break ;
case 1:   vsize = check(newsize, 1.0, 50.0, 11.0) ; break ;
case 2:   hmarg = check(newsize, -5.0, 5.0, 1.0) ; break ;
case 3:   vmarg = check(newsize, -5.0, 5.0, 1.0) ; break ;
      }
      if (error_inc == 0) {
         [anObject selectCellAt:i:0] ;
         return 1 ;
      }
   }
   recalculate() ;
   return 0 ;
}
- changeSize:(Matrix *)anObject
{
    float newsize ;
    int i ;

    newsize = [[anObject selectedCell] floatValue] ;
    switch (i=[anObject selectedRow]) {
case 0:   hsize = check(newsize, 1.0, 50.0, 8.5) ; break ;
case 1:   vsize = check(newsize, 1.0, 50.0, 11.0) ; break ;
case 2:   hmarg = check(newsize, -5.0, 5.0, 1.0) ; break ;
case 3:   vmarg = check(newsize, -5.0, 5.0, 1.0) ; break ;
    }
    recalculate() ;
    [anObject selectCellAt:(i + error_inc) % 4:0] ;
    return self ;
}

- setsizes
{
   if (generatefonts)
      [generateButtons selectCellAt:0:0] ;
   else
      [generateButtons selectCellAt:1:0] ;
   [[sizeMatrix cellAt:0:0] setFloatValue:hsize] ;
   [[sizeMatrix cellAt:1:0] setFloatValue:vsize] ;
   [[sizeMatrix cellAt:2:0] setFloatValue:hmarg] ;
   [[sizeMatrix cellAt:3:0] setFloatValue:vmarg] ;
   return self ;
}
- saveConfig:(Matrix *)anObject
{
    if (checksizes(sizeMatrix))
       return self ;
    defhsize = hsize ;
    defvsize = vsize ;
    defhmarg = hmarg ;
    defvmarg = vmarg ;
    if ([anObject selectedRow] == 0)
       saveconfig() ;
    [[anObject window] orderOut:anObject] ;
    pagedrawn = 0 ;
    display() ;
    return self ;
}
- defaultSize:anObject
{
    resetsizes() ;
    pagedrawn = 0 ;
    return self ;
}


- setDoScrollers:sender
{
	scrollers=[sender intValue];
	[myPageView scrollersChanged:self];
	display();
	return self;
}

- setDoGray:sender
{
	shouldGray=[sender intValue];
//	newdpi();
	display();
	
	printf("gray now %d\n",shouldGray);
	return self;
}
- setNotDoGray:sender
{
	shouldGray=![sender intValue];
	newdpi();
   pagedrawn = 1;
//	[myView setDrawn];
	display();
	
	printf("gray now %d\n",shouldGray);
	return self;
}

- updateFromDefaults
{
//	[grayButton setIntValue:shouldGray];
	printf("before update from defaults:  gray=%d, scrollers=%d\n", shouldGray,scrollers);
	loadconfig();
	printf("after update from defaults:  gray=%d, scrollers=%d\n", shouldGray,scrollers);
	[self setDoScrollers:[scrollButton setIntValue:scrollers]];
	[multipleColumnScrollButton setIntValue:scrollMode];
	return self;
}

- (BOOL)doGray				{	return shouldGray;	}
- (BOOL)shouldDoScrollers	{	
	printf("scroller = %d\n",scrollers);
	return YES;
//	return scrollers;
	
}
- (BOOL)multiColumnScroll
{
	scrollMode=YES;
	if ( multipleColumnScrollButton )
		scrollMode = [multipleColumnScrollButton intValue];
	return scrollMode;
}

void notifysizes() {
   if (myTeXviewObject)
      [myTeXviewObject setsizes] ;
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.