diff --git a/MPGUI/MPActionLauncher.m b/MPGUI/MPActionLauncher.m index d9fea89..9c3fc3d 100644 --- a/MPGUI/MPActionLauncher.m +++ b/MPGUI/MPActionLauncher.m @@ -32,6 +32,7 @@ static MPActionLauncher *sharedActionLauncher = nil; } - (id)init { + [self subscribeToNotifications]; if (sharedActionLauncher == nil) { ports = [NSMutableArray arrayWithCapacity:1]; sharedActionLauncher = self; @@ -87,7 +88,7 @@ static MPActionLauncher *sharedActionLauncher = nil; - (void)cancelPortProcess { // TODO: display confirmation dialog - NSTask *task = [[MPInterpreter sharedInterpreter] task]; + NSTask *task = [MPInterpreter task]; if(task != nil && [task isRunning]) { [task terminate]; } @@ -96,26 +97,31 @@ static MPActionLauncher *sharedActionLauncher = nil; #pragma mark Private Methods implementation - (void)subscribeToNotifications { - /* - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector() - name:MPINFO object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector() - name:MPERROR object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector() - name:MPWARN object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector() - name:MPDEBUG object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector() - name:MPDEFAULT object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector() +// [[NSNotificationCenter defaultCenter] addObserver:self +// selector:@selector() +// name:MPINFO object:nil]; +// [[NSNotificationCenter defaultCenter] addObserver:self +// selector:@selector() +// name:MPERROR object:nil]; +// [[NSNotificationCenter defaultCenter] addObserver:self +// selector:@selector() +// name:MPWARN object:nil]; +// [[NSNotificationCenter defaultCenter] addObserver:self +// selector:@selector() +// name:MPDEBUG object:nil]; +// [[NSNotificationCenter defaultCenter] addObserver:self +// selector:@selector() +// name:MPDEFAULT object:nil]; + [[NSDistributedNotificationCenter defaultCenter] addObserver:self + selector:@selector(gotMPMSG:) name:MPMSG object:nil]; - */ + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(gotMPMSG:) + name:MPMSG object:nil]; +} + +- (void)gotMPMSG:(NSNotification *)notification { + NSLog(@"GOT MPMSG NOTIFICATION"); } @end diff --git a/MPGUI/MPActionsController.m b/MPGUI/MPActionsController.m index 320556c..b0556bc 100644 --- a/MPGUI/MPActionsController.m +++ b/MPGUI/MPActionsController.m @@ -64,7 +64,6 @@ [tableController hidePredicateEditor:self]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *pkgPath = [defaults objectForKey:@"PKGPath"]; - if (pkgPath == nil) { [self openPreferences:self]; } else { diff --git a/MacPorts_Framework/MPHelperTool.m b/MacPorts_Framework/MPHelperTool.m index 6d11813..354f89a 100644 --- a/MacPorts_Framework/MPHelperTool.m +++ b/MacPorts_Framework/MPHelperTool.m @@ -53,7 +53,6 @@ #include - //According to the docs all I need is //the file descriptor that MPNotifications //obtained when creating the server socket diff --git a/MacPorts_Framework/MPInterpreter.h b/MacPorts_Framework/MPInterpreter.h index 51bc372..0bad992 100644 --- a/MacPorts_Framework/MPInterpreter.h +++ b/MacPorts_Framework/MPInterpreter.h @@ -104,11 +104,7 @@ +(void) setPKGPath:(NSString*)newPath; -+(id) delegate; - -+(void) setDelegate:(id)newDelegate; - --(NSTask*) task; ++(NSTask*) task; //Internal methods -(BOOL) setOptionsForNewTclPort:(NSArray *)options; diff --git a/MacPorts_Framework/MPInterpreter.m b/MacPorts_Framework/MPInterpreter.m index 25c33bc..239b761 100644 --- a/MacPorts_Framework/MPInterpreter.m +++ b/MacPorts_Framework/MPInterpreter.m @@ -165,15 +165,6 @@ int Notifications_Command(ClientData clientData, Tcl_Interp *interpreter, int ob //tool static NSString * tclInterpreterPkgPath = nil; -+(id) delegate { - return delegate; -} - -+(void) setDelegate:(id)newDelegate { - delegate = newDelegate; -} - - +(NSString*) PKGPath { return PKGPath; } @@ -470,7 +461,7 @@ static NSString * tclInterpreterPkgPath = nil; *mportError = nil; firstResult = [self evaluateStringWithMPPortProcess:statement error:mportError]; - + //Because of string results of methods like mportsync (which returns the empty string) //the only way to truly check for an error is to check the mportError parameter. //If it is nil then there was no error, if not we re-evaluate with privileges using @@ -684,11 +675,12 @@ static NSString * tclInterpreterPkgPath = nil; } while (theProxy == nil); - [theProxy evaluateString:statement delegate:delegate]; + [theProxy evaluateString:statement]; + [aTask waitUntilExit]; return nil; } -- (NSTask*) task { ++ (NSTask*) task { return aTask; } diff --git a/MacPorts_Framework/MPMacPorts.m b/MacPorts_Framework/MPMacPorts.m index 95bdc3c..1aea69c 100644 --- a/MacPorts_Framework/MPMacPorts.m +++ b/MacPorts_Framework/MPMacPorts.m @@ -59,15 +59,6 @@ [MPInterpreter setPKGPath:newPath]; } -+(id) notificationsDelegate { - return [MPInterpreter delegate]; -} - -+(void) setNotificationsDelegate:(id)newDelegate { - [MPInterpreter setDelegate:newDelegate]; -} - - + (MPMacPorts *)sharedInstance { return [self sharedInstanceWithPkgPath:[MPInterpreter PKGPath] portOptions:nil]; } diff --git a/MacPorts_Framework/MPPortProcess.m b/MacPorts_Framework/MPPortProcess.m index cefd099..04d79f1 100644 --- a/MacPorts_Framework/MPPortProcess.m +++ b/MacPorts_Framework/MPPortProcess.m @@ -23,13 +23,8 @@ return self; } -- (oneway void)setDelegate:(byref id)newDelegate { - delegate = newDelegate; -} - -- (oneway void)evaluateString:(bycopy id)statement delegate:(byref id)newDelegate { +- (oneway void)evaluateString:(bycopy id)statement { // TODO Handle the posible errors and notifications - delegate = newDelegate; Tcl_Eval(interpreter, [statement UTF8String]); exit(0); } diff --git a/MacPorts_Framework/SimpleLog.h b/MacPorts_Framework/SimpleLog.h index 5bc1300..033355d 100644 --- a/MacPorts_Framework/SimpleLog.h +++ b/MacPorts_Framework/SimpleLog.h @@ -9,6 +9,4 @@ #include -id delegate; - int SimpleLog_Command(ClientData clientData, Tcl_Interp *interpreter, int objc, Tcl_Obj *CONST objv[]); \ No newline at end of file diff --git a/MacPorts_Framework/SimpleLog.m b/MacPorts_Framework/SimpleLog.m index eb9773b..d8ade26 100644 --- a/MacPorts_Framework/SimpleLog.m +++ b/MacPorts_Framework/SimpleLog.m @@ -11,18 +11,14 @@ #define MPSEPARATOR @"_&MP&_" -@interface NSObject (SimpleLogDelegate) --(void)processDidBeginRunning; --(void)processDidEndRunning; -@end - int SimpleLog_Command(ClientData clientData, Tcl_Interp *interpreter, int objc, Tcl_Obj *CONST objv[]){ int returnCode = TCL_OK; NSArray *msgType = [[NSString stringWithUTF8String:Tcl_GetString(*(++objv))] componentsSeparatedByString:@" "]; NSString *msg = [NSString stringWithUTF8String:Tcl_GetString(*(++objv))]; - [delegate doSomething]; + [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"MPMsgNotification" object:msg]; + //[[NSDistributedNotificationCenter defaultCenter] postNotificationName: object:msg]; NSLog(@"%@ : %@",[msgType objectAtIndex:0], msg);