[MacPorts] Notification: MPFramworkGSocWk modified

MacPorts noreply at macports.org
Sun Jul 13 14:48:41 PDT 2008

Changed page "MPFramworkGSocWk" by armahg at macports.org from*
Page URL: <http://trac.macports.org/wiki/MPFramworkGSocWk>
Diff URL: <http://trac.macports.org/wiki/MPFramworkGSocWk?action=diff&version=7>
Revision 7

Index: MPFramworkGSocWk
--- MPFramworkGSocWk (version: 6)
+++ MPFramworkGSocWk (version: 7)
@@ -60,8 +60,97 @@
+= Weeks 6 & 7 =
+So things took a somewhat different (and I think positive) turn these past
+two weeks. I added some more routines for port activation, deactivation
+and uninstallation to MPMacPorts class.
+In addition Randall suggested the following method to be used for
+evaluating strings as tcl commands instead of the original NSArray parsing
+we were doing. This meant that code that originally looked like:
+-(NSURL *)pathToPortIndex:(NSString *)source {
+   return [NSURL fileURLWithPath:
+                 [interpreter evaluateArrayAsString:
+                            [NSArray arrayWithObjects:
+			       @"return [macports::getindex",
+			       source,
+			       @"]",
+			       nil]]];
+to code that looked like:
+-(NSURL *)pathToPortIndex:(NSString *)source {
+  return [NSURL fileURLWithPath:
+	   [interpreter evaluateStringAsString:
+	[NSString stringWithFormat:@"return [macports::getindex %@ ]", source]]];
+This definitely made for much more cleaner code. In fact it led to my writing a
+generic function for evaluating a given Tcl command with an array of arguments.
+Each element in this array can be either an NSString or NSArray for flexilbility.
+Also, there's no limit to the size of the argument array. The method looks
+- (void)execPortProc:(NSString *)procedure withParams:(NSArray *)params {
+	//params can contain either NSStrings or NSArrays
+	NSString * sparams = [NSString stringWithString:@" "];
+	NSEnumerator * penums = [params objectEnumerator];
+	MPInterpreter *interpreter = [MPInterpreter sharedInterpreter];
+	id elem;
+	while (elem = [penums nextObject]) {
+		if ([elem isMemberOfClass:[NSString class]]) {
+			sparams = [sparams stringByAppendingString:elem];
+			sparams = [sparams stringByAppendingString:@" "];
+		}
+		else if ([elem isKindOfClass:[NSArray class]]) {
+			//Maybe I should be more careful in the above if statement and
+			//explicitly check for the classes i'm interested in?
+			sparams = [sparams stringByAppendingString:[elem componentsJoinedByString:@" "]];
+			sparams = [sparams stringByAppendingString:@" "];
+		}
+	}
+	[interpreter evaluateStringAsString:
+	 [NSString stringWithFormat:@"[%@ %@]" , procedure, sparams]];
+thanks Randall.
+Second thing worth mentioning I think I have found a solution to Notifications
+in the framework. I won't give too many details but basically it involves
+having a "bridge" singleton instance class between the Tcl API and Framework.
+When a ui_$priority procedure is calls, it in turn calls a notifications procedure
+which calls a method (and this can be any method) of the "bridge"
+class. This method can be a notification, message to a Framework class, delegate
+triggering method ... the important thing is the Framework is notified of the
+change without having to do a system-wide broadcast (e.g. NSDistributedNotification
+center notification). More details after this has been refined. The 
+current code for it has been checked into svn.
+Finally, I'll be releasing a MidTerm Evaluation version of the Framework today.
+IT HAS NOT BEEN TESTED. The main purpose is for feedback on the current
+functionality as is being advertised by the Docmentation. The main things it
+is currently lacking are incorporation of Authorization, finished Notifications
+and thorough Testing. Any and all feedback is welcome.
+The .dmg and .zip files can be downloaded from svn by doing
+svn co http://svn.macosforge.org/repository/macports/users/armahg/MacPorts_Framework/MPFMidtermRelease.dmg for the dmg
+svn co http://svn.macosforge.org/repository/macports/users/armahg/MacPorts_Framework/MPFMidtermRelease.zip for the .zip file
+and svn co http://svn.macosforge.org/repository/macports/users/armahg/MacPorts_Framework/MPFMidtermRelease/ for the whole folder


* The IP shown here might not mean anything if the user is behind a proxy.

MacPorts <http://www.macports.org/>
Ports system for Mac OS

This is an automated message. Someone at http://www.macports.org/
added your email address to be notified of changes on MacPorts.
If it was not you, please report to http://www.macports.org/.

More information about the macports-changes mailing list