Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- - (id)initWithWindow:(NSWindow *)window {
- self = [super initWithWindow:window];
- if (self) {
- // Initialization code here.
- }
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(readPipe:) name:NSFileHandleReadCompletionNotification object:nil];
- return self;
- }
- -(void) watchFile:(NSNotification *)notification {
- NSString *path = [[notification userInfo] valueForKey:@"path"];
- task = [[NSTask alloc] init];
- [task setLaunchPath:@"/usr/bin/compass"];
- [task setCurrentDirectoryPath:path];
- NSArray *arguments;
- arguments = [NSArray arrayWithObjects: @"watch",@"--boring", nil];
- [task setArguments: arguments];
- NSPipe *outPipe, *errPipe;
- outPipe = [NSPipe pipe];
- errPipe = [NSPipe pipe];
- [task setStandardOutput: outPipe];
- [task setStandardError: errPipe];
- [task setStandardInput: [NSPipe pipe]];
- standardHandle = [outPipe fileHandleForReading];
- [standardHandle readInBackgroundAndNotify];
- errorHandle = [errPipe fileHandleForReading];
- [errorHandle readInBackgroundAndNotify];
- [self setSplitterPosition:0.0f];
- [task launch];
- }
- -(void)readPipe:(NSNotification *)notification {
- NSLog(@"reading pipe");
- NSData *data;
- NSString *text;
- if(!([notification object] == standardHandle) && !([notification object] == errorHandle)) {
- return;
- }
- data = [[notification userInfo] objectForKey:NSFileHandleNotificationDataItem];
- text = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
- if ([data length] == 0) {
- //error
- [self setSplitterPosition:150.0f];
- return;
- }
- [terminalViewController updateTerminal:text];
- if(![text isEqualToString:@"n"]) [self growlAlert:text title:@"Compapp"];
- [text release];
- if(task) [[notification object] readInBackgroundAndNotify];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement