Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/macosx/TransparentTextView.m
blob: 692b1942a7199ca85f84878e194d32a0b507f749 (plain)
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
//
//  TransparentTextView.m
//  Tux Paint
//
//  Created by Martin Fuhrer on Wed Dec 12 2007.
//  Copyright (c) 2007 Martin Fuhrer.
//
//  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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//  (See COPYING.txt)
//

#import "TransparentTextView.h"

@implementation TransparentTextView

- (void)drawViewBackgroundInRect:(NSRect)rect
{
}

- (BOOL)isOpaque
{
    return NO;
}

- (void)activateURLs
{    
	NSTextStorage* textStorage = [self textStorage];
	NSString* string = [textStorage string];
	NSRange searchRange = NSMakeRange(0, [string length]);
	NSRange foundRange;
    
	[textStorage beginEditing];
	do 
    {
		// assume that all URLs are enclosed between < > 
		foundRange = [string rangeOfString:@"<" options:0 range:searchRange];
        
		if (foundRange.length > 0)  //Did we find a URL?
        { 
            NSURL* theURL;
            NSMutableString* theURLString;
            NSDictionary* linkAttributes;
            NSRange endOfURLRange, range;
            
            // restrict the searchRange so that it won't find the same string again
            searchRange.location = foundRange.location + foundRange.length;
            searchRange.length = [string length] - searchRange.location;
            
            // assume the URL ends with >
            endOfURLRange = [string rangeOfString:@">" options:0 range:searchRange];
            
            // set foundRange's length to the length of the URL
            foundRange.location++;
            foundRange.length = endOfURLRange.location - foundRange.location;
            
            // grab the URL from the text and format it properly
            range = [[string substringWithRange:foundRange] rangeOfString:@"@"];
            if (range.length > 0)
                theURLString = [NSMutableString stringWithString:@"mailto:"];
            else
                theURLString = [NSMutableString stringWithString:@"http://"];
            [theURLString appendString:[string substringWithRange:foundRange]];
            
            // generate URL
            theURL = [NSURL URLWithString:theURLString];
            
            // make the link attributes
            linkAttributes = [NSDictionary dictionaryWithObjectsAndKeys: theURL, NSLinkAttributeName,
                [NSColor blueColor], NSForegroundColorAttributeName, nil];
            
            // apply those attributes to the URL in the text
            [textStorage addAttributes:linkAttributes range:foundRange];
		}
    } 
    while (foundRange.length != 0); //repeat the do block until it no longer finds anything
    
	[textStorage endEditing];
}

@end