home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / UNIX / Programming / GDBbundle-1.0-MIS / src / TextEdit / MyTextView.m < prev    next >
Encoding:
Text File  |  1997-08-16  |  2.0 KB  |  69 lines

  1. /* MyTextView.m created by ovidiu on Sat 29-Mar-1997 */
  2.  
  3. #import <AppKit/AppKit.h>
  4. #import "MyTextView.h"
  5. #import "Preferences.h"
  6. #import "LineAndCharacterRange.h"
  7.  
  8. @implementation MyTextView
  9.  
  10. - (NSString*)linesContainingSelection:(NSRange*)linesRange
  11. {
  12.     NSString* string = [[[self layoutManager] textStorage] string];
  13.     int length = [string length];
  14.     NSRange range = [[[self layoutManager] firstTextView] selectedRange];
  15.     NSRange beginningOfLine, endOfLine;
  16.     NSRange finalRange;
  17.  
  18.     beginningOfLine = [string rangeOfString:@"\n"
  19.                                     options:NSBackwardsSearch
  20.                                       range:NSMakeRange(0, range.location)];
  21.     if (!beginningOfLine.length)
  22.         beginningOfLine.location = 0;
  23.     else
  24.         beginningOfLine.location++;
  25.  
  26.     endOfLine = [string rangeOfString:@"\n" options:0 range:NSMakeRange(range.location + range.length, length - range.location - range.length)];
  27.     if (!endOfLine.length)
  28.         endOfLine.location = length;
  29.     else
  30.         endOfLine.location++;
  31.  
  32.     finalRange.location = beginningOfLine.location;
  33.     finalRange.length = endOfLine.location - beginningOfLine.location;
  34.     if (linesRange)
  35.         *linesRange = finalRange;
  36.     return [string substringWithRange:finalRange];
  37. }
  38.  
  39. - (void)insertText:(NSString*)aString
  40. {
  41.     id lineRangeViewer = [LineAndCharacterRange sharedInstance];
  42.     unichar c = [aString characterAtIndex:0];
  43.  
  44.     if (c == 0x0192) // Alt-f
  45.         [self moveWordForward:nil];
  46.     else if (c == 0x2211) // Alt-b
  47.         [self moveWordBackward:nil];
  48.     else if (c == 0x007f) // Alt-Backspace
  49.         [self deleteWordBackward:nil];
  50.     else if (c == 0x0394) // Alt-d
  51.         [self deleteWordForward:nil];
  52.     else
  53.         [super insertText:aString];
  54.  
  55.     if ([lineRangeViewer autoupdate])
  56.         [lineRangeViewer updateInfo];
  57. }
  58.  
  59. - (void)doCommandBySelector:(SEL)aSelector
  60. {
  61.     id lineRangeViewer = [LineAndCharacterRange sharedInstance];
  62.  
  63.     [super doCommandBySelector:aSelector];
  64.     if ([lineRangeViewer autoupdate])
  65.         [lineRangeViewer updateInfo];
  66. }
  67.  
  68. @end
  69.