VocalEasel/Sources/VLLogWindow.mm
Matthias Neeracher 8cdf61cf07 Log on main thread
2017-11-24 06:01:22 +01:00

60 lines
1.3 KiB
Plaintext

//
// File: VLLogWindow.mm - Manage output log window
//
// Author(s):
//
// (MN) Matthias Neeracher
//
// Copyright © 2005-2007 Matthias Neeracher
//
#import "VLLogWindow.h"
@implementation VLLogWindow
- (id)init
{
self = [super initWithWindowNibName:@"VLLogWindow"];
logText = [[NSMutableString alloc] initWithCapacity:1000];
return self;
}
- (void)dealloc
{
[logText autorelease];
[super dealloc];
}
- (IBAction)printDocument:(id)sender
{
[log print: sender];
}
- (NSString *)windowTitleForDocumentDisplayName:(NSString *)displayName
{
return [displayName stringByAppendingString: @" - Log"];
}
- (void) logFromFileHandle:(NSFileHandle *) h
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSData * data;
[logText setString: @""];
[log setString: logText];
while ((data = [h availableData]) && [data length]) {
NSString * append = [[[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding] autorelease];
dispatch_sync(dispatch_get_main_queue(), ^{
[logText appendString: append];
[log setString: logText];
[log scrollRangeToVisible: NSMakeRange([logText length], 0)];
});
[pool release];
pool = [[NSAutoreleasePool alloc] init];
}
[pool release];
}
@end