scide: DocManager - report warnings via the status bar
[supercollider.git] / editors / scapp / HTMLRenderer.m
blobc0a53d81dc1de3ef4191a812df45eb3adaf35b92
1 #import "HTMLRenderer.h"
3 //#define DEBUG
5 #ifdef DEBUG
6         #define Log(fmt, ...) NSLog(fmt, ##__VA_ARGS__)
7 #else
8         #define Log(fmt, ...)
9 #endif
11 @implementation HTMLRenderer
12 + (NSAttributedString *)attributedStringWithURL:(NSURL *)url {
13         HTMLRenderer *htmlRenderer = [[HTMLRenderer alloc] init];
14         NSAttributedString *attributedString = [htmlRenderer attributedStringWithURL:url];
15         [htmlRenderer release];
16         return attributedString;
19 - (id)init {
20         if((self = [super init]) == nil)
21                 return nil;
22                 
23         renderLock = [[NSConditionLock alloc] initWithCondition:0];
24         finishedRendering = 0;
25         renderWebView = [[WebView alloc] initWithFrame:NSMakeRect(0., 0., 2000., 100.) frameName:nil groupName:nil];
26         [renderWebView setFrameLoadDelegate:self];
28         return self;
31 - (NSAttributedString *)attributedStringWithURL:(NSURL *)url {
32         
33         finishedRendering = 0;
34         [self renderHTMLFragment:url];
35         
36         if(finishedRendering == 1)
37                 return [(id <WebDocumentText>)[[[renderWebView mainFrame] frameView] documentView] attributedString];
38         else
39                 return nil;
42 - (void)renderHTMLFragment:(NSURL *)url {
43         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
45         [NSThread setThreadPriority:1.0];
46         [renderLock lock];
47         
48         [[renderWebView mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
50         while(!finishedRendering)
51                 [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.05]];
52         
53         [renderLock unlockWithCondition:1];
54         [pool release];
57 - (void)dealloc {
58         [renderLock release];
59         [renderWebView release];
60         [super dealloc];
63 - (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame {
64         finishedRendering = -1;
67 - (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame {
68         finishedRendering = -1;
71 - (void)webView:(WebView *) sender didFinishLoadForFrame:(WebFrame *) frame {
72         finishedRendering = 1;
75 @end