mirror of
https://github.com/outbackdingo/UltraGrid.git
synced 2026-03-21 18:40:16 +00:00
114 lines
2.2 KiB
Objective-C
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
|