[70194] branches/gsoc10-gui

tzikis at macports.org tzikis at macports.org
Sun Aug 1 08:19:18 PDT 2010


Revision: 70194
          http://trac.macports.org/changeset/70194
Author:   tzikis at macports.org
Date:     2010-08-01 08:19:14 -0700 (Sun, 01 Aug 2010)
Log Message:
-----------
Moved the conflicts and default_variants fetching from the GUI to the port. variants selection/installation complete

Modified Paths:
--------------
    branches/gsoc10-gui/MacPorts_Framework/MPPort.h
    branches/gsoc10-gui/MacPorts_Framework/MPPort.m
    branches/gsoc10-gui/Pallet/MPActionsController.h
    branches/gsoc10-gui/Pallet/MPActionsController.m

Modified: branches/gsoc10-gui/MacPorts_Framework/MPPort.h
===================================================================
--- branches/gsoc10-gui/MacPorts_Framework/MPPort.h	2010-08-01 12:04:15 UTC (rev 70193)
+++ branches/gsoc10-gui/MacPorts_Framework/MPPort.h	2010-08-01 15:19:14 UTC (rev 70194)
@@ -149,6 +149,16 @@
 
 
 /*!
+ @brief Computes the NSMutableArray object for key "defaults_variants" of the port
+ */
+- (void)checkDefaults;
+
+/*!
+ @brief Computes the conflicts of the port
+ */
+- (void)checkConflicts;
+
+/*!
  @brief Executes the specified target for this MPPort
  @param target NSString target to be executed for this MPPort
  @param options An NSArray of NSStrings for the various options for this target

Modified: branches/gsoc10-gui/MacPorts_Framework/MPPort.m
===================================================================
--- branches/gsoc10-gui/MacPorts_Framework/MPPort.m	2010-08-01 12:04:15 UTC (rev 70193)
+++ branches/gsoc10-gui/MacPorts_Framework/MPPort.m	2010-08-01 15:19:14 UTC (rev 70194)
@@ -388,7 +388,105 @@
 - (void)upgradeWithError:(NSError **)mError {
 	[self execPortProc:@"mportupgrade" withOptions:nil version:@"" error:mError];
 }
+- (void)checkDefaults
+{
+	//Check for default variants only if this is the first time we are checking
+	if ([self objectForKey:@"default_variants"] == nil)
+	{
+		//NSArray *defaultVariants = [port valueForKey:@"defaultVariants"];
+		NSMutableArray *defaultVariants= [NSMutableArray arrayWithCapacity:10];
+		char port_command[256];
+		
+		//Build the port variants command
+		strcpy(port_command, "port variants ");
+		strcat(port_command, [[self objectForKey:@"name"] cStringUsingEncoding: NSASCIIStringEncoding]);
+		strcat(port_command, " | grep \"\\[+]\" | sed 's/.*\\]//; s/:.*//' >> mpfw_default_variants");
+		
+		//Make the CLI call
+		system(port_command);
+		//Open the output file
+		FILE * file = fopen("mpfw_default_variants", "r");
+		
+		//Read all default_variants
+		char buffer[256];
+		while(!feof(file))
+		{
+			char * temp = fgets(buffer,256,file);
+			if(temp == NULL) continue;
+			buffer[strlen(buffer)-1]='\0';
+			//Add the variant in the Array
+			[defaultVariants addObject:[NSString stringWithCString:buffer]];
+		}
+		//Close and delete
+		fclose(file);
+		unlink("mpfw_default_variants");
+		
+		NSLog(@"Default variants count: %i", [defaultVariants count]);
+		//Code for fetching default variants
+		[self setObject:[NSString stringWithString:[defaultVariants componentsJoinedByString:@" "]]  forKey:@"default_variantsAsString"];
+		[self setObject:defaultVariants forKey:@"default_variants"];		
+	}
 
+}
+
+- (void)checkConflicts;
+{
+	//Check for only if this is the first time we are checking
+	if ([self objectForKey:@"conflicts"] == nil)
+	{
+		
+		NSMutableArray *conflicts = [NSMutableArray arrayWithCapacity:20];
+		
+		char *script= " | python -c \"import re,sys;lines=sys.stdin.readlines();print '\\n'.join('%s,%s' % (re.sub(r'[\\W]','',lines[i-1].split()[0].rstrip(':')),','.join(l.strip().split()[3:])) for i, l in enumerate(lines) if l.strip().startswith('* conflicts'))\" >> /tmp/mpfw_conflict";
+		char command[512];
+		strcpy(command,"port variants ");
+		strcat(command, [[self name] UTF8String]);
+		strcat(command, script);
+		//printf("\n%s\n", command);
+		system(command);
+		
+		//Open the output file
+		FILE * file = fopen("/tmp/mpfw_conflict", "r");
+		
+		//Read all conflicts
+		char buffer[256];
+		while(!feof(file))
+		{
+			char * temp = fgets(buffer,256,file);
+			if(temp == NULL) continue;
+			buffer[strlen(buffer)-1]='\0';
+			//Add the variant in the Array
+			//printf("buffer:\n%s\n",buffer);
+			
+			char *token;
+			char *search = ",";
+			
+			token = strtok(buffer, search);
+			//printf("token: %s\n",token);
+			if(token == NULL) break;
+			
+			NSString *variant = [NSString stringWithCString:token];
+			NSMutableArray *conflictsWith=[NSMutableArray arrayWithCapacity:10];
+			NSLog(@"%@", variant);
+			while ((token = strtok(NULL, search)) != NULL)
+			{
+				NSLog(@"token: %@",[NSString stringWithCString:token]);
+				[conflictsWith addObject:[NSString stringWithCString:token]];
+				//NSLog(@"count %i",[[checkboxes[i] conflictsWith] count]);
+			}
+			
+			NSDictionary *variantConflictsWith = [NSDictionary dictionaryWithObject:conflictsWith forKey:variant];
+			[conflicts addObject:variantConflictsWith];
+			//[defaultVariants addObject:[NSString stringWithCString:buffer]];
+		}
+		//Close and delete
+		fclose(file);
+		unlink("/tmp/mpfw_conflict");		
+
+		[self setObject:conflicts forKey:@"conflicts"];
+	}		
+}
+
 -(void)configureWithOptions:(NSArray *)options variants:(NSArray *)variants error:(NSError **)mError {
 	[self exec:@"configure" withOptions:options variants:variants error:mError];
 }

Modified: branches/gsoc10-gui/Pallet/MPActionsController.h
===================================================================
--- branches/gsoc10-gui/Pallet/MPActionsController.h	2010-08-01 12:04:15 UTC (rev 70193)
+++ branches/gsoc10-gui/Pallet/MPActionsController.h	2010-08-01 15:19:14 UTC (rev 70194)
@@ -60,7 +60,7 @@
 - (IBAction)toggleInfoPanel: (id) sender;
 
 -(IBAction)clickCheckbox:(id)sender;
--(void)checkConflicts: (NSString*) portName;
+-(void)setConflicts: (MPPort*) port;
 
 - (void)queueOperation: (NSString*) operation portName: (NSString*) name portObject: (id) port variants: (NSMutableArray*) variants;
 

Modified: branches/gsoc10-gui/Pallet/MPActionsController.m
===================================================================
--- branches/gsoc10-gui/Pallet/MPActionsController.m	2010-08-01 12:04:15 UTC (rev 70193)
+++ branches/gsoc10-gui/Pallet/MPActionsController.m	2010-08-01 15:19:14 UTC (rev 70194)
@@ -97,35 +97,10 @@
 			[checkboxes[i] setAlphaValue:0];
 		}
 		//NSLog(@"Port variants:");
+		//Call checkDefaults to compute the NSMutableArray for key default_variants
+		[port checkDefaults];		
+		NSMutableArray *defaultVariants= [port objectForKey:@"default_variants"];
 		
-		//NSArray *defaultVariants = [port valueForKey:@"defaultVariants"];
-		NSMutableArray *defaultVariants= [NSMutableArray arrayWithCapacity:10];
-		char port_command[256];
-		
-		//Build the port variants command
-		strcpy(port_command, "port variants ");
-		strcat(port_command, [[port objectForKey:@"name"] cStringUsingEncoding: NSASCIIStringEncoding]);
-		strcat(port_command, " | grep \"\\[+]\" | sed 's/.*\\]//; s/:.*//' >> mpfw_default_variants");
-		
-		//Make the CLI call
-		system(port_command);
-		//Open the output file
-		FILE * file = fopen("mpfw_default_variants", "r");
-		
-		//Read all default_variants
-		char buffer[256];
-		while(!feof(file))
-		{
-			char * temp = fgets(buffer,256,file);
-			if(temp == NULL) continue;
-			buffer[strlen(buffer)-1]='\0';
-			//Add the variant in the Array
-			[defaultVariants addObject:[NSString stringWithCString:buffer]];
-		}
-		//Close and delete
-		fclose(file);
-		unlink("mpfw_default_variants");
-		
 		NSLog(@"Default variants count: %i", [defaultVariants count]);
 		for(UInt i=0; i<[[port valueForKey:@"variants"] count];i++)
 		{
@@ -153,8 +128,7 @@
 			 
 		}
 		//NSLog(@"End of Variants");
-		
-		[self checkConflicts:[port valueForKey:@"name"]];
+		[self setConflicts:port];
 
 		
 		[variantsPanel makeKeyAndOrderFront:self];
@@ -304,63 +278,26 @@
 	 
 }
 
--(void)checkConflicts: (NSString *) portName
-{
+-(void)setConflicts: (MPPort *) port
+{	
+	//Initialize the conflicts NSMutableArray for the port, if it wasn't already initialized
+	[port checkConflicts];
+
+	NSArray *conflicts = [port objectForKey:@"conflicts"];
 	
-	char *script= " | python -c \"import re,sys;lines=sys.stdin.readlines();print '\\n'.join('%s,%s' % (re.sub(r'[\\W]','',lines[i-1].split()[0].rstrip(':')),','.join(l.strip().split()[3:])) for i, l in enumerate(lines) if l.strip().startswith('* conflicts'))\" >> /tmp/mpfw_conflict";
-	char command[512];
-	strcpy(command,"port variants ");
-	strcat(command, [portName UTF8String]);
-	strcat(command, script);
-	//printf("\n%s\n", command);
-	system(command);
-	
-	//Open the output file
-	FILE * file = fopen("/tmp/mpfw_conflict", "r");
-	
-	//Read all default_variants
-	char buffer[256];
-	while(!feof(file))
+	for(UInt j=0; j< [conflicts count];j++)
 	{
-		char * temp = fgets(buffer,256,file);
-		if(temp == NULL) continue;
-		buffer[strlen(buffer)-1]='\0';
-		//Add the variant in the Array
-		//printf("buffer:\n%s\n",buffer);
-		
-		char *token;
-		char *search = ",";
-		
-		token = strtok(buffer, search);
-		//printf("token: %s\n",token);
-		if(token == NULL) break;
-		
 		UInt i;
-		for(i=0; i<10; i++)
+		for( i=0; i<10; i++)
 		{
-			//NSLog(@"%@ %@",[checkboxes[i] title], [NSString stringWithCString:token]);
-
-			if ([[checkboxes[i] title] isEqualToString:[NSString stringWithCString:token]])
+			if ([[conflicts objectAtIndex:j] objectForKey:[checkboxes[i] title]] != nil)
 			{
 				break;
 			}
-		}
-		[checkboxes[i] setConflictsWith:[NSMutableArray array]];
-		NSLog(@"checkbox: %i",i);
-		while ((token = strtok(NULL, search)) != NULL)
-		{
-			//NSLog(@"token: %@",[NSString stringWithCString:token]);
-			[[checkboxes[i] conflictsWith] addObject:[NSString stringWithCString:token]];
-			//NSLog(@"count %i",[[checkboxes[i] conflictsWith] count]);
-		}
-		
-		//[defaultVariants addObject:[NSString stringWithCString:buffer]];
+		 }
+		//NSLog(@"checkbox that conflicts: %@", [checkboxes[i] title]);
+		[checkboxes[i] setConflictsWith:[[conflicts objectAtIndex:j] objectForKey:[checkboxes[i] title]]];
 	}
-	//Close and delete
-	fclose(file);
-	unlink("/tmp/mpfw_conflict");
-
-	
 }
 
 -(BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem {
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20100801/74f8ef27/attachment.html>


More information about the macports-changes mailing list