File: TrivialTextView.m

package info (click to toggle)
gnustep-examples 1%3A1.2.0-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 1,952 kB
  • ctags: 270
  • sloc: objc: 14,381; makefile: 65
file content (121 lines) | stat: -rw-r--r-- 3,074 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
 *  TrivialTextView.m: A Text View for Finger.app
 *
 *  Copyright (c) 2000 Free Software Foundation, Inc.
 *  
 *  Author: Nicola Pero
 *  Date: February 2000
 *
 *  This sample program is part of GNUstep.
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#import <FingerIncludeAll.h>
#import "TrivialTextView.h"

@implementation TrivialTextView
-(id) init
{
  NSDictionary *dict;

  dict = [NSDictionary dictionaryWithObjectsAndKeys: 
			 [NSFont userFixedPitchFontOfSize: 0], 
		       NSFontAttributeName,
		       [NSColor textColor], 
		       NSForegroundColorAttributeName,
		       nil];
  ASSIGN (normal, dict);

  dict = [NSDictionary dictionaryWithObjectsAndKeys:
			 [NSFont boldSystemFontOfSize: 0], 
		       NSFontAttributeName,
		       [NSColor textColor], 
		       NSForegroundColorAttributeName,
		       nil];
  ASSIGN (bold, dict); 

  return [super init];
}
-(void) dealloc
{
  RELEASE (normal);
  RELEASE (bold);
  TEST_RELEASE (str);
  [super dealloc];
}
-(void) setString: (NSString *)s
{
  NSMutableAttributedString *attr;

  attr = [[NSMutableAttributedString alloc] initWithString:  s
					    attributes: normal];
  AUTORELEASE (attr);
  ASSIGN (str, attr);
  [self sizeToFit];
}
-(NSString *)string
{
  return [str string];
}
-(void) appendAttributedString: (NSMutableAttributedString *)s
{
  if (str)
    [str appendAttributedString: s];
  else
    ASSIGN (str, s);
  
  [self sizeToFit];  
}
-(void) appendString: (NSString *)s
{
  NSMutableAttributedString *attr;
  
  attr = [[NSMutableAttributedString alloc] initWithString:  s
					    attributes: normal];
  AUTORELEASE (attr);
  [self appendAttributedString: attr];
}
-(void) appendBoldString: (NSString *)s
{
  NSMutableAttributedString *attr;
  
  attr = [[NSMutableAttributedString alloc] initWithString:  s
					    attributes: bold];
  AUTORELEASE (attr);
  /* Now we check that the last character in the text is a newline. 
     If it isn't, we append a newline to it before the bold string */
  if ([[str mutableString] hasSuffix: @"\n"] == NO)
    [self appendString: @"\n"];

  [self appendAttributedString: attr];
}
-(void) sizeToFit
{
  if (str)
    [self setFrameSize: [str size]];
  else
    [self setFrameSize: NSZeroSize];

  /* A hard way of acting but anyway we want no risks */
  [[self window] display];
}
-(void) drawRect: (NSRect)rect
{
  if (str) 
    [str drawInRect: [self bounds]];
}
@end