Files
UltraGrid/gui/UltraGrid GUI/UGController.m
Martin Pulec bb5b84d9ea Restructuralize directory structure
* content of ultragrid/ subdirector moved to root
2012-07-02 18:24:25 +02:00

114 lines
2.2 KiB
Objective-C

//
// UGController.m
// UltraGrid GUI
//
// Created by Martin Pulec on 11/4/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "UGController.h"
@implementation UGController
-(id) init
{
[super init];
execPath = [[NSBundle mainBundle] pathForAuxiliaryExecutable:@"uv"];
return self;
}
-(NSString *) getOutput: (id) param
{
task = [[NSTask alloc] init];
[task setLaunchPath:execPath];
NSArray *arguments;
if([param isKindOfClass: [NSString class]]) {
arguments = [param componentsSeparatedByString:@" "];
} else {
arguments = param;
}
[task setArguments: arguments];
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
[task setStandardError: pipe];
file = [pipe fileHandleForReading];
[task launch];
[task waitUntilExit];
NSData *data;
data = [file readDataToEndOfFile];
NSString *string;
string = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
return string;
}
-(NSFileHandle*) getOutputHandle: (id) param
{
task = [[NSTask alloc] init];
[task setLaunchPath:execPath];
NSArray *arguments;
if([param isKindOfClass: [NSString class]]) {
arguments = [param componentsSeparatedByString:@" "];
} else {
arguments = param;
}
[task setArguments: arguments];
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
[task setStandardError: pipe];
file = [pipe fileHandleForReading];
[task launch];
return file;
}
-(NSMutableArray*) getOptionsFromUG: (NSString *) param
{
NSString *string = [self getOutput: param];
NSArray *array = [string componentsSeparatedByCharactersInSet:
[NSCharacterSet newlineCharacterSet]];
NSMutableArray *ret = [NSMutableArray arrayWithCapacity: 20];
for(NSString *item in array)
{
if([item length] > 0 &&
[[NSCharacterSet whitespaceCharacterSet] characterIsMember: [item characterAtIndex:0]]) {
NSString *out = [item stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceCharacterSet]];
NSLog(@"retuned: %@", out);
[ret addObject: out];
}
}
return ret;
}
-(BOOL) taskIsRunning
{
return [task isRunning];
}
-(void) stop
{
[task interrupt];sleep(1);;
[task terminate];
}
-(NSTask*) task
{
return task;
}
@end