home *** CD-ROM | disk | FTP | other *** search
/ Education Sampler 1992 [NeXTSTEP] / Education_1992_Sampler.iso / SoundAndMusic / Hyperupic / Hyperupic.app / TextView.m < prev   
Text File  |  1992-08-10  |  3KB  |  108 lines

  1. /*
  2. **  TextView.m, implementation of scrolling text stuff for TextLab.
  3. **  Copyright 1989 NeXT, Inc.  All Rights Reserved.
  4. **  Author: Bruce Blumberg
  5. **
  6. **  You may freely copy, distribute and reuse the code in this example.
  7. **  NeXT disclaims any warranty of any kind, expressed or implied, as to
  8. **  its fitness for any particular use.
  9. */
  10.  
  11.  
  12. #import <appkit/appkit.h>
  13. #import "TextView.h"
  14.  
  15. @implementation TextView:ScrollView
  16.  
  17. - initFrame:(const NXRect *)frameRect
  18. {
  19.     NXRect rect = {0.0, 0.0, 0.0, 0.0};
  20.     
  21.     /* initialize view */
  22.     [super initFrame:frameRect];
  23.     
  24.     /* specify scrollbars */
  25.     [[self setVertScrollerRequired:YES] setHorizScrollerRequired:NO];
  26.  
  27.     [self getContentSize:&(rect.size)];
  28.     theText = [self newText:&rect];
  29.     [self setDocView:theText];
  30.     [theText setSel:0 :0];    
  31.     
  32.     // The following two lines allow the resizing of the scrollview
  33.     // to be passed down to the docView (in this case, the text view 
  34.     // itself).
  35.  
  36.     [contentView setAutoresizeSubviews:YES];
  37.     [contentView setAutosizing:NX_HEIGHTSIZABLE | NX_WIDTHSIZABLE];
  38.  
  39.     // Create enclosing window and bring it upfront
  40.     [self makeEnclosingWindow:frameRect];
  41.     [[[window setTitle:"Untitled"] display] makeKeyAndOrderFront:self];
  42.         
  43.     return self;
  44. }
  45.  
  46. - makeEnclosingWindow:(const NXRect *)rect
  47. {
  48.     textWindow = [[Window alloc] initContent:rect
  49.                  style:NX_TITLEDSTYLE
  50.                  backing:NX_BUFFERED
  51.                  buttonMask:NX_ALLBUTTONS
  52.                  defer:NO];
  53.     [textWindow setContentView:self];
  54.     [textWindow setBackgroundGray:NX_WHITE];
  55.     [textWindow setFreeWhenClosed:YES];
  56.     
  57.     return self;
  58. }
  59.     
  60. - newText:(const NXRect *)frameRect
  61. {
  62.     id    text;
  63.     NXSize aSize = {1.0E38, 1.0E38};
  64.     
  65.     text = [[Text alloc] initFrame:frameRect
  66.                  text:NULL
  67.              alignment:NX_LEFTALIGNED];
  68.     [text setOpaque:YES];
  69.     [[[[[text notifyAncestorWhenFrameChanged:YES]
  70.                 setVertResizable:YES]
  71.                     setHorizResizable:NO]
  72.                     setMonoFont:NO]
  73.                         setDelegate:self];
  74.     
  75.     [text setMinSize:&(frameRect->size)];
  76.     [text setMaxSize:&aSize];
  77.     [text setAutosizing:NX_HEIGHTSIZABLE | NX_WIDTHSIZABLE];
  78.     
  79.     [text setCharFilter:NXEditorFilter];
  80.     return text;
  81. }
  82.  
  83. - (int) textLength {
  84.  
  85.   return [theText textLength];
  86. }
  87.  
  88. - replaceSel: (char *) words {
  89.  
  90.   [theText replaceSel:words];
  91.   return self;
  92. }
  93.  
  94. - setSel: (int) alen : (int) blen {
  95.  
  96.   [theText setSel:alen :blen];
  97.   return self;
  98. }
  99.  
  100. - setTitle: (char *) theTitle {
  101.  
  102.   [textWindow setTitle:theTitle];
  103.   return self;
  104. }
  105.  
  106.  
  107. @end
  108.