From b827b7ffce7b1e3ffe44e4409926703d5ec1daa7 Mon Sep 17 00:00:00 2001 From: Alexandre Wilhelm Date: Wed, 5 Nov 2014 12:57:03 -0800 Subject: [PATCH] New: xCodeCapp 3.2, command objj on each processing files or on the entire project This pull requests adds a nice feature to xCodeCapp, now each time a fill is processing, xCodeCapp will launch the command objj to check the compilation issues. If it finds something, it will show them up on the classic error panel. This basically show import warnings, warnings you don't catch with your browser but only during the build of the application. Objj is only launched if no errors was found after the first parsing (the parser which translate a file to objective-c). This feature can be disabled on the preferences panel. The menu has a new menu item "Check Compilation Issues". This action will launch objj on each files of the project and shows warnings and errors found. The command objj will take automatically the OBJJ_INCLUDE_PATH in the index.html or index-debug.html. This options can be disabled in the preferences panel as well. This PR only works with the PR #2248 --- Tools/XcodeCapp/XcodeCapp/AppController.m | 32 +- Tools/XcodeCapp/XcodeCapp/Info.plist | 4 +- .../XcodeCapp/ProcessSourceOperation.m | 25 +- Tools/XcodeCapp/XcodeCapp/UserDefaults.h | 3 + Tools/XcodeCapp/XcodeCapp/UserDefaults.m | 4 +- Tools/XcodeCapp/XcodeCapp/XcodeCapp.h | 7 +- Tools/XcodeCapp/XcodeCapp/XcodeCapp.m | 269 +++++- .../XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib | 779 +++++++++++++++--- 8 files changed, 977 insertions(+), 146 deletions(-) diff --git a/Tools/XcodeCapp/XcodeCapp/AppController.m b/Tools/XcodeCapp/XcodeCapp/AppController.m index 86aa8c3d7..e72307bd3 100644 --- a/Tools/XcodeCapp/XcodeCapp/AppController.m +++ b/Tools/XcodeCapp/XcodeCapp/AppController.m @@ -138,21 +138,23 @@ AppController *SharedAppControllerInstance = nil; - (void)registerDefaultPreferences { NSDictionary *appDefaults = @{ - kDefaultLastEventId: [NSNumber numberWithUnsignedLongLong:kFSEventStreamEventIdSinceNow], - kDefaultFirstLaunch: @YES, - kDefaultFirstLaunchVersion: @2.0, - kDefaultXCCAPIMode: [NSNumber numberWithInt:kXCCAPIModeAuto], - kDefaultXCCReactToInodeMod: @YES, - kDefaultXCCReopenLastProject: @YES, - kDefaultXCCAutoOpenErrorsPanelOnErrors: @YES, - kDefaultXCCAutoOpenErrorsPanelOnCappLint: @YES, - kDefaultXCCAutoShowNotificationOnErrors: @YES, - kDefaultXCCAutoShowNotificationOnCappLint: @YES, - kDefaultXCCProjectHistory: [NSArray new], - kDefaultMaxRecentProjects: @20, - kDefaultLogLevel: [NSNumber numberWithInt:LOG_LEVEL_WARN], - kDefaultAutoOpenXcodeProject: @YES, - kDefaultUseSymlinkWhenCreatingProject: @YES + kDefaultLastEventId: [NSNumber numberWithUnsignedLongLong:kFSEventStreamEventIdSinceNow], + kDefaultFirstLaunch: @YES, + kDefaultFirstLaunchVersion: @2.0, + kDefaultXCCAPIMode: [NSNumber numberWithInt:kXCCAPIModeAuto], + kDefaultXCCReactToInodeMod: @YES, + kDefaultXCCReopenLastProject: @YES, + kDefaultXCCAutoOpenErrorsPanelOnErrors: @YES, + kDefaultXCCAutoOpenErrorsPanelOnCappLint: @YES, + kDefaultXCCAutoShowNotificationOnErrors: @YES, + kDefaultXCCAutoShowNotificationOnCappLint: @YES, + kDefaultXCCProjectHistory: [NSArray new], + kDefaultMaxRecentProjects: @20, + kDefaultLogLevel: [NSNumber numberWithInt:LOG_LEVEL_WARN], + kDefaultAutoOpenXcodeProject: @YES, + kDefaultUseSymlinkWhenCreatingProject: @YES, + kDefaultXCCUseDebugFrameworkWithObjj: @YES, + kDefaultXCCShouldProcessObjj: @YES }; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; diff --git a/Tools/XcodeCapp/XcodeCapp/Info.plist b/Tools/XcodeCapp/XcodeCapp/Info.plist index 7f59ef93d..ddb9c5a21 100644 --- a/Tools/XcodeCapp/XcodeCapp/Info.plist +++ b/Tools/XcodeCapp/XcodeCapp/Info.plist @@ -21,11 +21,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - 3.1 + 3.2 CFBundleSignature ???? CFBundleVersion - 3.1 + 3.2 LSApplicationCategoryType public.app-category.developer-tools LSUIElement diff --git a/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m b/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m index 81e9b7cf6..51786d82a 100644 --- a/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m +++ b/Tools/XcodeCapp/XcodeCapp/ProcessSourceOperation.m @@ -45,7 +45,7 @@ NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; - NSDictionary *info = @{ @"projectId":self.projectId, @"path":self.sourcePath }; + NSDictionary *info = @{ @"projectId":self.projectId, @"path":self.sourcePath}; [center postNotificationName:XCCConversionDidStartNotification object:self userInfo:info]; DDLogVerbose(@"Conversion started: %@", self.sourcePath); @@ -74,7 +74,7 @@ self.xcc.parserPath, self.projectPath, self.sourcePath - ]; + ]; notificationTitle = @"Objective-J source processed"; } @@ -141,7 +141,7 @@ @try { NSArray *errors = [response propertyList]; - + for (NSDictionary *error in errors) { [self postErrorNotificationForPath:error[@"path"] line:[error[@"line"] intValue] message:error[@"message"] status:status]; @@ -158,14 +158,23 @@ } else if (!self.xcc.isLoadingProject) { - BOOL showFinalNotification = YES; + BOOL showFinalNotification = NO; + + // At this point, we should only detect warnings + if ([self.xcc shouldProcessWithObjjWarnings]) + { + showFinalNotification = [self.xcc checkObjjWarningsForPath:[NSArray arrayWithObject:self.sourcePath]]; + [self.xcc showObjjWarnings]; + } + else + { + showFinalNotification = YES; + } if ([self.xcc shouldProcessWithCappLint]) { - showFinalNotification = [self.xcc checkCappLintForPath:[NSArray arrayWithObject:self.sourcePath]]; - - if (!showFinalNotification) - [self.xcc showCappLintErrors]; + showFinalNotification = [self.xcc checkCappLintForPath:[NSArray arrayWithObject:self.sourcePath]] && showFinalNotification; + [self.xcc showCappLintWarnings]; } if (showFinalNotification) diff --git a/Tools/XcodeCapp/XcodeCapp/UserDefaults.h b/Tools/XcodeCapp/XcodeCapp/UserDefaults.h index a89476cd0..903fd7b6c 100644 --- a/Tools/XcodeCapp/XcodeCapp/UserDefaults.h +++ b/Tools/XcodeCapp/XcodeCapp/UserDefaults.h @@ -19,8 +19,11 @@ extern NSString * const kDefaultXCCReactToInodeMod; extern NSString * const kDefaultXCCReopenLastProject; extern NSString * const kDefaultXCCAutoOpenErrorsPanelOnErrors; extern NSString * const kDefaultXCCAutoOpenErrorsPanelOnCappLint; +extern NSString * const kDefaultXCCAutoOpenErrorsPanelOnObjjWarnings; extern NSString * const kDefaultXCCAutoShowNotificationOnErrors; extern NSString * const kDefaultXCCAutoShowNotificationOnCappLint; +extern NSString * const kDefaultXCCUseDebugFrameworkWithObjj; +extern NSString * const kDefaultXCCShouldProcessObjj; extern NSString * const kDefaultXCCProjectHistory; extern NSString * const kDefaultLastOpenedPath; extern NSString * const kDefaultPathModificationDates; diff --git a/Tools/XcodeCapp/XcodeCapp/UserDefaults.m b/Tools/XcodeCapp/XcodeCapp/UserDefaults.m index aee5793ae..18e976581 100644 --- a/Tools/XcodeCapp/XcodeCapp/UserDefaults.m +++ b/Tools/XcodeCapp/XcodeCapp/UserDefaults.m @@ -19,6 +19,8 @@ NSString * const kDefaultXCCAutoOpenErrorsPanelOnErrors = @"XCCAutoOpenErrorsPan NSString * const kDefaultXCCAutoOpenErrorsPanelOnCappLint = @"XCCAutoOpenErrorsPanelOnCappLint"; NSString * const kDefaultXCCAutoShowNotificationOnErrors = @"XCCAutoOpenShowNotificationErrors"; NSString * const kDefaultXCCAutoShowNotificationOnCappLint = @"XCCAutoShowNotificationOnCappLint"; +NSString * const kDefaultXCCUseDebugFrameworkWithObjj = @"XCCUseDebugFrameworkWithObjj"; +NSString * const kDefaultXCCShouldProcessObjj = @"XCCShouldProcessObjj"; NSString * const kDefaultXCCProjectHistory = @"XCCProjectHistory"; NSString * const kDefaultLastOpenedPath = @"LastOpenedPath"; NSString * const kDefaultPathModificationDates = @"pathModificationDates"; @@ -26,4 +28,4 @@ NSString * const kDefaultMaxRecentProjects = @"maxRecentProjects"; NSString * const kDefaultLogLevel = @"logLevel"; NSString * const kDefaultAutoOpenXcodeProject = @"autoOpenXcodeProject"; NSString * const kDefaultUseSymlinkWhenCreatingProject = @"useSymlinkWhenCreatingProject"; -NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch = @"updateCappuccinoWithLastVersionOfMasterBranch"; +NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch = @"updateCappuccinoWithLastVersionOfMasterBranch"; \ No newline at end of file diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h index 09f9ae64f..ef7b756c5 100644 --- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h +++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.h @@ -156,9 +156,14 @@ extern NSString * const XCCCappLintDidEndNotification; - (NSDictionary*)createProject:(NSString*)aPath; +- (void)showCappLintWarnings; +- (void)showObjjWarnings; + - (BOOL)shouldProcessWithCappLint; - (BOOL)checkCappLintForPath:(NSArray*)paths; -- (void)showCappLintErrors; + +- (BOOL)shouldProcessWithObjjWarnings; +- (BOOL)checkObjjWarningsForPath:(NSArray*)paths; - (void)updateCappuccino; diff --git a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m index 36ebc6c63..52f3920f6 100644 --- a/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m +++ b/Tools/XcodeCapp/XcodeCapp/XcodeCapp.m @@ -76,6 +76,8 @@ static NSArray *XCCDefaultIgnoredPathPredicates = nil; NSString * const XCCCappLintDidStartNotification = @"XCCCappLintDidStartNotification"; NSString * const XCCCappLintDidEndNotification = @"XCCCappLintDidEndNotification"; +NSString * const XCCObjjDidStartNotification = @"XCCObjjDidStartNotification"; +NSString * const XCCObjjDidEndNotification = @"XCCObjjDidEndNotification"; @interface XcodeCapp () @@ -1694,6 +1696,13 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, || [defaults boolForKey:kDefaultXCCAutoShowNotificationOnCappLint]; } +- (BOOL)shouldProcessWithObjjWarnings +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + return ([defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnErrors] || [defaults boolForKey:kDefaultXCCAutoShowNotificationOnErrors]) && [defaults boolForKey:kDefaultXCCShouldProcessObjj]; +} + - (void)showErrors { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; @@ -1704,41 +1713,96 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, } } -- (void)showCappLintErrors +- (void)showCappLintWarnings { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - if ([defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnCappLint] && self.errorList.count) + NSUInteger numberError = [self.errorList count]; + NSDictionary *firstError; + NSUInteger i = 0; + + for (i = 0; i < numberError; i++) + { + NSDictionary *dict = [self.errorList objectAtIndex:i]; + + if ([[dict valueForKey:@"type"] isEqualToString: @"capp_lint"]) + { + firstError = dict; + break; + } + } + + if ([defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnCappLint] && firstError) [self openErrorsPanel:self]; - if ([defaults boolForKey:kDefaultXCCAutoShowNotificationOnCappLint]) + if ([defaults boolForKey:kDefaultXCCAutoShowNotificationOnCappLint] && firstError) { - NSUInteger numberError = [self.errorList count]; + NSDictionary *error = [self.errorList objectAtIndex:0]; + NSString *filename = [error objectForKey:@"path"]; + + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInteger:self.projectId] , @"projectId", + @"Code Style Issues", @"title", + filename.lastPathComponent , @"message", + nil]; + + [self wantUserNotificationWithInfo:dict]; + } +} + +- (void)showObjjWarnings +{ + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + + NSUInteger numberError = [self.errorList count]; + NSDictionary *firstError; + NSUInteger i = 0; + + for (i = 0; i < numberError; i++) + { + NSDictionary *dict = [self.errorList objectAtIndex:i]; - if (numberError) + if ([[dict valueForKey:@"type"] isEqualToString: @"objj"]) { - NSDictionary *error = [self.errorList objectAtIndex:0]; - NSString *filename = [error objectForKey:@"path"]; - - NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithInteger:self.projectId] , @"projectId", - @"Code Style Issues", @"title", - filename.lastPathComponent , @"message", - nil]; - - [self wantUserNotificationWithInfo:dict]; + firstError = dict; + break; } } + + if ([defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnErrors] && firstError) + [self openErrorsPanel:self]; + + if ([defaults boolForKey:kDefaultXCCAutoShowNotificationOnErrors] && firstError) + { + NSDictionary *error = [self.errorList objectAtIndex:0]; + NSString *filename = [error objectForKey:@"path"]; + + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInteger:self.projectId] , @"projectId", + @"Compiling Issues", @"title", + filename.lastPathComponent , @"message", + nil]; + + [self wantUserNotificationWithInfo:dict]; + } } - (void)pruneProcessingErrorsForProjectPath:(NSString *)path +{ + [self pruneProcessingErrorsForProjectPath:path type:nil]; +} + +- (void)pruneProcessingErrorsForProjectPath:(NSString *)path type:(NSString*)type { // Remove all errors for the path being processed NSIndexSet *matchingErrors = [self.errorList indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { - return [[obj valueForKey:@"path"] isEqualToString:path]; + if (type) + return ([[obj valueForKey:@"path"] isEqualToString:path] || [[obj valueForKey:@"realPath"] isEqualToString:path]) && [[obj valueForKey:@"type"] isEqualToString:type]; + else + return [[obj valueForKey:@"path"] isEqualToString:path] || [[obj valueForKey:@"realPath"] isEqualToString:path]; }]; - + [self.errorListController removeObjectsAtArrangedObjectIndexes:matchingErrors]; } @@ -1758,6 +1822,170 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, return index != NSNotFound; } +#pragma mark - objjj check + +- (NSString*)_getObjjIncludePaths +{ + NSRegularExpression *regulareExpressionFramework = [NSRegularExpression regularExpressionWithPattern:@"OBJJ_INCLUDE_PATHS ?= ?\\[\"(.*)\"\\," options:0 error:nil]; + + NSString *indexPath; + + if ([[NSUserDefaults standardUserDefaults] boolForKey:kDefaultXCCUseDebugFrameworkWithObjj]) + indexPath = [NSString stringWithFormat:@"%@/index-debug.html", self.projectPath]; + else + indexPath = [NSString stringWithFormat:@"%@/index.html", self.projectPath]; + + NSDictionary *taskResult = [self runTaskWithLaunchPath:@"/bin/cat" arguments:[NSMutableArray arrayWithObject:indexPath] returnType:kTaskReturnTypeAny]; + + NSString *response = taskResult[@"response"]; + + NSArray *matches = [regulareExpressionFramework matchesInString:response options:0 range:NSMakeRange(0, [response length])]; + + for (NSTextCheckingResult *match in matches) + return [response substringWithRange:[match rangeAtIndex:1]]; + + return @"Frameworks/"; +} + +- (BOOL)checkObjjWarningsForPath:(NSArray*)paths +{ + DDLogVerbose(@"Checking path %@ with objj", paths); + + NSUInteger numberOfFiles = [paths count]; + + if (!numberOfFiles) + return YES; + + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidStartNotification object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCObjjDidStartNotification object:self]; + + NSMutableArray *arguments = [NSMutableArray arrayWithObjects:@"-I", [self _getObjjIncludePaths], @"-m", nil]; + [arguments addObjectsFromArray:paths]; + + NSDictionary *taskResult = [self runTaskWithLaunchPath:self.executablePaths[@"objj"] + arguments:arguments + returnType:kTaskReturnTypeStdOut]; + + NSInteger status = [taskResult[@"status"] intValue]; + NSString *response = taskResult[@"response"]; + + if (status == 0 && [response length] == 0) + { + [[NSNotificationCenter defaultCenter] postNotificationName:XCCObjjDidEndNotification object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self]; + return YES; + } + + NSMutableArray *errors = [NSMutableArray arrayWithArray:[response componentsSeparatedByString:@"\n\n"]]; + + NSInteger numberOfErrors = [errors count]; + NSInteger i = 0; + NSMutableArray *dicts = [NSMutableArray array]; + + // When checking of the entire project, we have to be ready to find errors + NSRegularExpression *regulareExpressionFramework = [NSRegularExpression regularExpressionWithPattern:@"([\\S\\s]*)(WARNING|ERROR) line ([0-9]*) in file\\:(.*)\\: ([\\S\\s]*)" options:0 error:nil]; + + NSString *filePath; + + if ([paths count] == 1) + filePath = [paths firstObject]; + + for (i = 0; i < numberOfErrors; i++) + { + NSMutableString *error = (NSMutableString*)[errors objectAtIndex:i]; + NSString *line; + NSString *path; + NSString *messageError; + + // We have an extra new line for the first error + if (i == 0) + error = (NSMutableString*)[error substringFromIndex:1]; + + NSArray *matches = [regulareExpressionFramework matchesInString:error options:0 range:NSMakeRange(0, [error length])]; + NSInteger j = 0; + + if (![matches count]) + { + DDLogVerbose(@"Error %@ has been ignored by xCodeCapp, the error doesn't respect any pattern", error); + continue; + } + + for (NSTextCheckingResult *match in matches) + { + for (j = 0; j < [match numberOfRanges]; j++) + { + switch (j) { + case 1: + messageError = [error substringWithRange:[match rangeAtIndex:j]]; + break; + + case 3: + line = [error substringWithRange:[match rangeAtIndex:j]]; + break; + + case 4: + path = [error substringWithRange:[match rangeAtIndex:j]]; + break; + + case 5: + messageError = [NSString stringWithFormat:@"Compiling issue at line %@ of file %@:\n%@ \n%@", line, path.lastPathComponent, [error substringWithRange:[match rangeAtIndex:j]], messageError]; + break; + + default: + break; + } + } + } + + // Make sure to delete all the compilations issue form the tableView + [self pruneProcessingErrorsForProjectPath:path type:@"objj"]; + + // Path and realPath are needed, we can get error on ViewController2.j while checking ViewController.j. + // When recompiling ViewController.j, realPath is used to know which errors have to be erased form the table + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithInt:[line intValue]], @"line", + messageError , @"message", + (filePath ? filePath:path), @"path", + @"objj", @"type", + path , @"realPath", + nil]; + + // Compiler can show several times the same errors + if (![dicts containsObject:dict] && ![self.errorList containsObject:dict]) + [dicts addObject:dict]; + + } + + [self performSelectorOnMainThread:@selector(objjCompilerDidGenerateError:) withObject:dicts waitUntilDone:YES]; + + self.isProcessing = NO; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCObjjDidEndNotification object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self]; + + return NO; +} + +- (IBAction)checkProjectWithObjj:(id)sender +{ + [self clearErrors:self]; + + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + [center addObserver:self selector:@selector(objjDidEndNotification:) name:XCCObjjDidEndNotification object:nil]; + + [self performSelectorInBackground:@selector(checkObjjWarningsForPath:) withObject:self.xCodeCappTargetedFiles]; +} + +- (void)objjDidEndNotification:(NSNotification*)aNotification +{ + [self showObjjWarnings]; + [[NSNotificationCenter defaultCenter] removeObserver:self name:XCCObjjDidEndNotification object:nil]; +} + +- (void)objjCompilerDidGenerateError:(NSArray*)errors +{ + [self.errorListController addObjects:errors]; +} + #pragma mark - capp_lint @@ -1773,7 +2001,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, - (void)cappLintDidEndNotification:(NSNotification*)aNotification { - [self showCappLintErrors]; + [self showCappLintWarnings]; [[NSNotificationCenter defaultCenter] removeObserver:self name:XCCCappLintDidEndNotification object:nil]; } @@ -1840,18 +2068,19 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, NSInteger positionOfSecondColon = [errorWithoutPath rangeOfString:@":"].location; line = [errorWithoutPath substringToIndex:positionOfSecondColon]; - NSString *messageError = [NSString stringWithFormat:@"Code style issue: %@ \n%@", path.lastPathComponent, errorWithoutPath]; + NSString *messageError = [NSString stringWithFormat:@"Code style issue at line %@ of file %@:\n%@", line, path.lastPathComponent, errorWithoutPath]; NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithInt:[line intValue]], @"line", messageError , @"message", path, @"path", + @"capp_lint", @"type", nil]; [dicts addObject:dict]; } - [self performSelectorOnMainThread:@selector(cappLintConversionDidGenerateError:) withObject:dicts waitUntilDone:NO]; + [self performSelectorOnMainThread:@selector(cappLintConversionDidGenerateError:) withObject:dicts waitUntilDone:YES]; self.isProcessing = NO; [[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self]; diff --git a/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib b/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib index 3efdd46af..239798b27 100644 --- a/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib +++ b/Tools/XcodeCapp/XcodeCapp/en.lproj/MainMenu.xib @@ -2,13 +2,13 @@ 1060 - 13C1021 - 5056 - 1265.19 - 697.40 + 14A389 + 6250 + 1343.14 + 755.00 - 5056 - 5056 + 6250 + 6250 NSArrayController @@ -108,6 +108,14 @@ + + Check Compilation Issues + + 2147483647 + + + + Check Project Code Style @@ -235,7 +243,7 @@ - + 256 @@ -243,8 +251,6 @@ 268 {{164, 20}, {203, 143}} - - YES 68157504 @@ -254,7 +260,7 @@ YUBhcGFyYWppdGEuY29tCiAgICAKICAgIEFsZXhhbmRyZSBXaWxoZWxtCiAgICBhbGV4YW5kcmUud2ls aGVsbWZyQGdtYWlsLmNvbQoKT3JpZ2luYWwgQ29jb2EgdmVyc2lvbiBkZXZlbG9wZWQgYnk6CiAgICBB bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ - .LucidaGrandeUI + YES 11 3100 @@ -281,7 +287,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 266 {{164, 171}, {221, 74}} - YES @@ -329,7 +334,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {{17, 108}, {128, 128}} - YES @@ -349,11 +353,9 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {402, 247} - - - {{0, 0}, {1440, 878}} + {{0, 0}, {1440, 877}} {10000000000000, 10000000000000} NO @@ -368,7 +370,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {315, 77} - + 256 @@ -384,7 +386,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 256 {550, 201} - YES NO @@ -461,20 +462,21 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {{1, 1}, {550, 201}} - 4 + YES -2147483392 {{1, 273}, {512, 16}} - NO + _doScroller: + 1 _doScroller: @@ -484,16 +486,16 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ -2147483392 {{535, 1}, {16, 45}} - NO + _doScroller: + _doScroller: {{-1, 35}, {552, 203}} - 133682 @@ -509,7 +511,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 289 {{352, 8}, {85, 19}} - {250, 750} YES @@ -518,7 +519,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 134217728 Clear - .LucidaGrandeUI + YES 12 787 @@ -538,7 +539,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 292 {{20, 8}, {85, 19}} - {250, 750} YES @@ -563,8 +563,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 289 {{445, 8}, {85, 19}} - - {250, 750} YES @@ -585,11 +583,9 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {550, 237} - - - {{1440, -180}, {1920, 1058}} + {{1440, -180}, {1920, 1057}} {315, 99} {10000000000000, 10000000000000} errorPanel @@ -598,7 +594,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 3 2 - {{1964, 505}, {369, 415}} + {{1964, 505}, {369, 473}} 1618478080 Preferences NSWindow @@ -629,7 +625,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 0 Load the most recent project on launch - .LucidaGrandeUI + YES 13 1044 @@ -732,7 +728,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ -2076180416 2048 - .LucidaGrandeUI + YES 13 1301 @@ -804,7 +800,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ - {{17, 245}, {332, 155}} + {{17, 303}, {332, 155}} @@ -813,15 +809,13 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 67108864 134217728 Projects - - LucidaGrande - 11 - 16 - + - - 3 - MCAwLjgAA + + 6 + System + labelColor + @@ -841,7 +835,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 - {{146, 12}, {171, 18}} + {{149, 12}, {171, 18}} @@ -866,7 +860,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 - {{16, 39}, {126, 17}} + {{16, 40}, {126, 17}} @@ -886,7 +880,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 - {{146, 38}, {171, 18}} + {{149, 37}, {171, 18}} @@ -908,14 +902,64 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ NO + + + 268 + {{16, 93}, {192, 18}} + + + + YES + + -2080374784 + 0 + Look for compilation issues + + + 1211912448 + 2 + + + + + 400 + 75 + + NO + + + + 268 + {{16, 67}, {301, 18}} + + + + YES + + -2080374784 + 0 + Use include path from the index-debug file + + + 1211912448 + 2 + + + + + 400 + 75 + + NO + - {{1, 1}, {330, 66}} + {{1, 1}, {330, 124}} - + - {{17, 159}, {332, 82}} + {{17, 159}, {332, 140}} @@ -924,12 +968,9 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 67108864 134217728 File processing - + - - 3 - MCAwLjgAA - + 1 @@ -1035,10 +1076,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ Code style - - 3 - MCAwLjgwMDAwMDAxMTkAA - + 1 @@ -1095,12 +1133,9 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 67108864 134217728 Update - + - - 3 - MCAwLjgAA - + 1 @@ -1109,12 +1144,12 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ NO - {369, 415} + {369, 473} - {{1440, -180}, {1920, 1058}} + {{1440, -180}, {1920, 1057}} {10000000000000, 10000000000000} xcc-prefs YES @@ -1155,7 +1190,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ - {{0, 0}, {1440, 878}} + {{0, 0}, {1440, 877}} {10000000000000, 10000000000000} YES @@ -1186,7 +1221,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ - + 256 @@ -1194,6 +1229,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 {{18, 22}, {251, 17}} + _NS:397 {251, 750} @@ -1216,6 +1252,8 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 {{269, 13}, {74, 32}} + + _NS:9 YES @@ -1239,6 +1277,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 268 {{20, 45}, {317, 20}} + _NS:9 {250, 250} @@ -1247,10 +1286,12 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ {357, 84} + + _NS:21 - {{0, 0}, {1440, 878}} + {{0, 0}, {1440, 877}} {10000000000000, 10000000000000} updatingCappuccinoPanel YES @@ -1258,7 +1299,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ NO - + delegate @@ -1507,6 +1548,22 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 30N-ga-LBo + + + save: + + + + kBr-PF-Ng7 + + + + save: + + + + HyN-S0-KXD + openXcodeProject: @@ -1531,14 +1588,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 774 - - - checkProjectWithCappLint: - - - - cNV-We-Why - clearErrors: @@ -1619,6 +1668,22 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ HJ3-bt-3EP + + + checkProjectWithCappLint: + + + + bwf-Gu-ART + + + + checkProjectWithObjj: + + + + oPW-bl-Ydt + values.XCCReopenLastProject @@ -2021,6 +2086,22 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ uwx-aq-p86 + + + enabled: projectPath.length + + + + + + enabled: projectPath.length + enabled + projectPath.length + 2 + + + a7g-oH-Wxj + value: values.XCCAutoOpenShowNotificationErrors @@ -2061,6 +2142,46 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ aof-Pn-nzf + + + value: values.kDefaultXCCUseDebugFrameworkWithObjj + + + + + + value: values.kDefaultXCCUseDebugFrameworkWithObjj + value + values.kDefaultXCCUseDebugFrameworkWithObjj + + NSValidatesImmediately + + + 2 + + + 8Eb-cw-Tsj + + + + value: values.XCCShouldProcessObjj + + + + + + value: values.XCCShouldProcessObjj + value + values.XCCShouldProcessObjj + + NSValidatesImmediately + + + 2 + + + 4tf-7Y-tid + @@ -2115,6 +2236,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ + @@ -2466,9 +2588,11 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ 848 - + + + @@ -2699,6 +2823,37 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ + + wDc-Ir-hmE + + + + + + + + beY-m1-Aia + + + + + wGK-ie-cgv + + + + + + + + fJB-o4-AhU + + + + + SNH-t4-Ay7 + + + @@ -2744,6 +2899,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ + {-243.5, 329.5} com.apple.InterfaceBuilder.CocoaPlugin @@ -2757,6 +2913,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2909,6 +3066,7 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin @@ -2958,12 +3116,18 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + ToolTip @@ -2986,6 +3150,30 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + + ToolTip + + ToolTip + + When an error or warning occurs, automatically open the Errors & Warnings panel + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + ToolTip + + ToolTip + + When an error or warning occurs, automatically open the Errors & Warnings panel + + + + com.apple.InterfaceBuilder.CocoaPlugin + + @@ -3002,9 +3190,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ id id id - id - id - id @@ -3023,18 +3208,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ openHelp: id - - openPreferences: - id - - - showInFinder: - id - - - updateCappuccino: - id - NSPanel @@ -3092,7 +3265,53 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ IBProjectSource - ./Classes/AppController.h + ../XcodeCapp/AppController.h + + + + AppController + + id + id + id + id + id + id + id + + + + createProject: + id + + + loadProject: + id + + + openAbout: + id + + + openHelp: + id + + + openPreferences: + id + + + showInFinder: + id + + + updateCappuccino: + id + + + + IBProjectSource + ../XcodeCapp/AppController.m @@ -3168,7 +3387,373 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ IBProjectSource - ./Classes/XcodeCapp.h + ../XcodeCapp/XcodeCapp.h + + + + XcodeCapp + + id + id + id + id + id + id + id + + + + checkProjectWithCappLint: + id + + + checkProjectWithObjj: + id + + + clearErrors: + id + + + openErrorInEditor: + id + + + openErrorsPanel: + id + + + openXcodeProject: + id + + + synchronizeProject: + id + + + + IBProjectSource + ../XcodeCapp/XcodeCapp.m + + + + + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSArrayController + NSObjectController + + IBFrameworkSource + AppKit.framework/Headers/NSArrayController.h + + + + NSBox + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSBox.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSController + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSController.h + + + + NSFontManager + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSImageCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSImageCell.h + + + + NSImageView + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSImageView.h + + + + NSManagedObjectContext + NSObject + + IBFrameworkSource + CoreData.framework/Headers/NSManagedObjectContext.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMenuItemCell + NSButtonCell + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItemCell.h + + + + NSObjectController + NSController + + IBFrameworkSource + AppKit.framework/Headers/NSObjectController.h + + + + NSPanel + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSPanel.h + + + + NSPopUpButton + NSButton + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButton.h + + + + NSPopUpButtonCell + NSMenuItemCell + + IBFrameworkSource + AppKit.framework/Headers/NSPopUpButtonCell.h + + + + NSProgressIndicator + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSProgressIndicator.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableView + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSUserDefaultsController + NSController + + IBFrameworkSource + AppKit.framework/Headers/NSUserDefaultsController.h + + + + NSView + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + PDFView + NSView + + id + id + id + id + id + id + id + id + id + id + + + + goBack: + id + + + goForward: + id + + + goToFirstPage: + id + + + goToLastPage: + id + + + goToNextPage: + id + + + goToPreviousPage: + id + + + selectAll: + id + + + takeBackgroundColorFrom: + id + + + zoomIn: + id + + + zoomOut: + id + + + + IBFrameworkSource + Quartz.framework/Frameworks/PDFKit.framework/Headers/PDFView.h @@ -3180,10 +3765,6 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ com.apple.InterfaceBuilder.CocoaPlugin.macosx - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 @@ -3191,8 +3772,8 @@ bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ YES 3 - {11, 11} - {10, 3} + {12, 12} + {10, 2} {15, 15} {128, 128}