home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3.4.17 [SPARC, PA-RISC] / nextstep33_risc.iso / NextLibrary / TeX / tex / src / texview / TeXviewObject.m < prev    next >
Encoding:
Text File  |  1993-01-27  |  5.0 KB  |  268 lines

  1. /* Generated by Interface Builder */
  2.  
  3. #import "TeXviewObject.h"
  4. #import "structures.h"
  5. #import "dviAccessors.h"
  6. #import <dpsclient/wraps.h>
  7. #import <strings.h>
  8.  
  9. @implementation TeXviewObject
  10.  
  11. TeXviewObject *myTeXviewObject ;
  12. extern int existsize100[] ;
  13. extern void todpi(), error() ;
  14. extern void recalculate(), resetsizes() ;
  15. extern void display() ;
  16. extern void saveconfig() ;
  17. extern float screendpi ;
  18. extern Boolean generatefonts, pagedrawn ;
  19.  
  20. static char text[20] ;
  21. char *dpistring(i)
  22. int i ;
  23. {
  24.    sprintf(text, "%3d", i) ;
  25.    return(text) ;
  26. }
  27.  
  28. void reportnewdpi() {
  29.    [myTeXviewObject setDpiTitle:dpistring((int)(screendpi+0.5))] ;
  30. }
  31.  
  32. - setDpiTitle:(char *)s
  33. {
  34.    int i ;
  35.  
  36.    i = [popup indexOfItem:s] ;
  37.    if (i != -1) {
  38.       [[popup itemList] selectCellAt:i:0] ;
  39.       [dpiPopup setTitle:s] ;
  40.    }
  41.    return self ;
  42. }
  43.  
  44. - setSizeMatrix:anObject
  45. {
  46.    sizeMatrix = anObject ;
  47.    [self setsizes] ;
  48.    return self ;
  49. }
  50.  
  51. - setGenerateButtons:anObject
  52. {
  53.    generateButtons = anObject ;
  54.    [self setsizes] ;
  55.    return self ;
  56. }
  57.  
  58. - setStatus:anObject
  59. {
  60.    status = anObject ;
  61.    return self ;
  62. }
  63.  
  64. - setZoomed:anObject
  65. {
  66.    zoomed = anObject ;
  67.    return self ;
  68. }
  69.  
  70. - zoom
  71. {
  72.    return [zoomed setState:1] ;
  73. }
  74.  
  75. - unzoom
  76. {
  77.    return [zoomed setState:0] ;
  78. }
  79.  
  80. - getStatus
  81. {
  82.    return status ;
  83. }
  84.  
  85. extern void writeconsole() ;
  86.  
  87. void setstatus(s)
  88. const char *s ;
  89. {
  90.    writeconsole(s) ;
  91.    [[myTeXviewObject getStatus] setStringValue:s] ;
  92.    PSflush() ;
  93. }
  94.  
  95. void qstatus(s)
  96. const char *s ;
  97. {
  98.    [[myTeXviewObject getStatus] setStringValue:s] ;
  99.    PSflush() ;
  100. }
  101.  
  102. - setDpiPopup:anObject
  103. {
  104.     id popuplist ;
  105.     int i ;
  106.  
  107.     dpiPopup = anObject;
  108.     myTeXviewObject = self ;
  109.     popup = [PopUpList new] ;
  110.     popuplist = popup ;
  111.     [popup changeButtonTitle:YES] ; /* we'll do it ourselves */
  112.     for (i=1; i<13; i++)
  113.        [popuplist addItem:dpistring(existsize100[i])] ;
  114.     [popuplist addItem:dpistring(300)] ;
  115.     [popuplist addItem:dpistring(400)] ;
  116.     NXAttachPopUpList(anObject, popuplist) ;
  117.     [popup setAction:@selector(cdpi:)] ;
  118.     [popup setTarget:myTeXviewObject] ;
  119.     return self;
  120. }
  121.  
  122. - popIt:anObject
  123. {
  124.     [popup popUp:anObject] ;
  125.     return self ;
  126. }
  127.  
  128. - setPageForm:anObject
  129. {
  130.     pageForm = anObject;
  131.     return self;
  132. }
  133.  
  134. - setPageNum:(char *)p
  135. {
  136.     [pageForm setStringValue:p at:0] ;
  137.     return self ;
  138. }
  139.  
  140. static NXEvent ne ;
  141.  
  142. - cdpi:anObject
  143. {
  144.     ne.type = NX_APPDEFINED ;
  145.     strcpy(ne.data.compound.misc.C, [[anObject selectedCell] title]) ;
  146.     DPSPostEvent(&ne, 1) ;
  147.     return self ;
  148. }
  149.  
  150. - firePage
  151. {
  152.     [pageForm selectTextAt:0] ;
  153.     return self ;
  154. }
  155.  
  156. NXEvent nw ;
  157. - startRandom:(NXEvent *)e
  158. {
  159.     [pageForm setStringValue:"" at:0] ;
  160.     [pageForm selectTextAt:0] ;
  161.     nw = *e ;
  162.     DPSPostEvent(&nw, 1) ;
  163.     return self ;
  164. }
  165.  
  166. - changeGenerate:(Matrix *)anObject
  167. {
  168.     generatefonts = ! [anObject selectedRow] ;
  169.     return self ;
  170. }
  171. extern real defhsize, defvsize, defhmarg, defvmarg ;
  172. extern real hsize, vsize, hmarg, vmarg ;
  173. static int error_inc ;
  174. static real check(siz, low, high, def)
  175. real siz, low, high, def ;
  176. {
  177.    error_inc = 0 ;
  178.    if (siz < low) {
  179.       error("Size too small") ;
  180.       return(def) ;
  181.    } else if (siz > high) {
  182.       error("Size too large") ;
  183.       return(def) ;
  184.    } else {
  185.       error_inc = 1 ;
  186.       return(siz) ;
  187.    }
  188. }
  189. int checksizes(anObject)
  190. id anObject ;
  191. {
  192.    float newsize ;
  193.    int i ;
  194.  
  195.    for (i=0; i<4; i++) {
  196.       newsize = [[anObject cellAt:i:0] floatValue] ;
  197.       switch (i) {
  198. case 0:   hsize = check(newsize, 1.0, 50.0, 8.5) ; break ;
  199. case 1:   vsize = check(newsize, 1.0, 50.0, 11.0) ; break ;
  200. case 2:   hmarg = check(newsize, -5.0, 5.0, 1.0) ; break ;
  201. case 3:   vmarg = check(newsize, -5.0, 5.0, 1.0) ; break ;
  202.       }
  203.       if (error_inc == 0) {
  204.          [anObject selectCellAt:i:0] ;
  205.          return 1 ;
  206.       }
  207.    }
  208.    recalculate() ;
  209.    return 0 ;
  210. }
  211. - changeSize:(Matrix *)anObject
  212. {
  213.     float newsize ;
  214.     int i ;
  215.  
  216.     newsize = [[anObject selectedCell] floatValue] ;
  217.     switch (i=[anObject selectedRow]) {
  218. case 0:   hsize = check(newsize, 1.0, 50.0, 8.5) ; break ;
  219. case 1:   vsize = check(newsize, 1.0, 50.0, 11.0) ; break ;
  220. case 2:   hmarg = check(newsize, -5.0, 5.0, 1.0) ; break ;
  221. case 3:   vmarg = check(newsize, -5.0, 5.0, 1.0) ; break ;
  222.     }
  223.     recalculate() ;
  224.     [anObject selectCellAt:(i + error_inc) % 4:0] ;
  225.     return self ;
  226. }
  227.  
  228. - setsizes
  229. {
  230.    if (generatefonts)
  231.       [generateButtons selectCellAt:0:0] ;
  232.    else
  233.       [generateButtons selectCellAt:1:0] ;
  234.    [[sizeMatrix cellAt:0:0] setFloatValue:hsize] ;
  235.    [[sizeMatrix cellAt:1:0] setFloatValue:vsize] ;
  236.    [[sizeMatrix cellAt:2:0] setFloatValue:hmarg] ;
  237.    [[sizeMatrix cellAt:3:0] setFloatValue:vmarg] ;
  238.    return self ;
  239. }
  240. - saveConfig:(Matrix *)anObject
  241. {
  242.     if (checksizes(sizeMatrix))
  243.        return self ;
  244.     defhsize = hsize ;
  245.     defvsize = vsize ;
  246.     defhmarg = hmarg ;
  247.     defvmarg = vmarg ;
  248.     if ([anObject selectedRow] == 0)
  249.        saveconfig() ;
  250.     [[anObject window] orderOut:anObject] ;
  251.     pagedrawn = 0 ;
  252.     display() ;
  253.     return self ;
  254. }
  255. - defaultSize:anObject
  256. {
  257.     resetsizes() ;
  258.     pagedrawn = 0 ;
  259.     return self ;
  260. }
  261.  
  262. void notifysizes() {
  263.    if (myTeXviewObject)
  264.       [myTeXviewObject setsizes] ;
  265. }
  266.  
  267. @end
  268.