New: XcodeCapp 3 tweaks...
- Renamed XcodeSupport to .XcodeSupport. - Added "Reset Project" to menu, it closes the project in Xcode if necessary, removes .XcodeSupport and .xcodeproj, then reloads. - Added separate preferences for showing errors panel on warnings/errors. You may not want to see the panel if there are category warnings. - New status icons (again). - If an error occurs, the status icon turns red when all processing is done. - Reworked notifications. Objective-J parsing is notified when done. Xib conversion notifies at beginning and end, because it typically takes a few seconds. Individual file notifications are suppressed if a project is being loaded.
@@ -40,7 +40,6 @@
|
||||
+ (AppController *)sharedAppController;
|
||||
|
||||
- (IBAction)listenToProject:(id)aSender;
|
||||
- (IBAction)openInXcode:(id)aSender;
|
||||
- (IBAction)openHelp:(id)aSender;
|
||||
- (IBAction)openAbout:(id)aSender;
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ AppController *SharedAppControllerInstance = nil;
|
||||
@property (nonatomic) NSImage *iconActive;
|
||||
@property (nonatomic) NSImage *iconInactive;
|
||||
@property (nonatomic) NSImage *iconWorking;
|
||||
@property (nonatomic) NSImage *iconError;
|
||||
@property (nonatomic) NSMenu *menuHistory;
|
||||
@property NSStatusItem *statusItem;
|
||||
|
||||
@@ -104,15 +105,16 @@ AppController *SharedAppControllerInstance = nil;
|
||||
- (void)registerDefaults
|
||||
{
|
||||
NSDictionary *appDefaults = @{
|
||||
kDefaultLastEventId: [NSNumber numberWithUnsignedLongLong:kFSEventStreamEventIdSinceNow],
|
||||
kDefaultFirstLaunch: @YES,
|
||||
kDefaultFirstLaunchVersion: @2.0,
|
||||
kDefaultXCCAPIMode: [NSNumber numberWithInt:kXCCAPIModeAuto],
|
||||
kDefaultXCCReactMode: @YES,
|
||||
kDefaultXCCReopenLastProject: @YES,
|
||||
kDefaultXCCAutoOpenErrorsPanel: @YES,
|
||||
kDefaultXCCProjectHistory: [NSArray new],
|
||||
kDefaultMaxRecentProjects: @20
|
||||
kDefaultLastEventId: [NSNumber numberWithUnsignedLongLong:kFSEventStreamEventIdSinceNow],
|
||||
kDefaultFirstLaunch: @YES,
|
||||
kDefaultFirstLaunchVersion: @2.0,
|
||||
kDefaultXCCAPIMode: [NSNumber numberWithInt:kXCCAPIModeAuto],
|
||||
kDefaultXCCReactMode: @YES,
|
||||
kDefaultXCCReopenLastProject: @YES,
|
||||
kDefaultXCCAutoOpenErrorsPanelOnWarnings: @YES,
|
||||
kDefaultXCCAutoOpenErrorsPanelOnErrors: @YES,
|
||||
kDefaultXCCProjectHistory: [NSArray new],
|
||||
kDefaultMaxRecentProjects: @20
|
||||
};
|
||||
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
@@ -171,6 +173,14 @@ AppController *SharedAppControllerInstance = nil;
|
||||
return _iconWorking;
|
||||
}
|
||||
|
||||
- (NSImage *)iconError
|
||||
{
|
||||
if (!_iconError)
|
||||
_iconError = [NSImage imageNamed:@"icon-error"];
|
||||
|
||||
return _iconError;
|
||||
}
|
||||
|
||||
- (NSMenu *)menuHistory
|
||||
{
|
||||
if (!_menuHistory)
|
||||
@@ -205,7 +215,7 @@ AppController *SharedAppControllerInstance = nil;
|
||||
- (void)XcodeCappConversionDidStop:(NSNotification *)aNotification
|
||||
{
|
||||
if (!self.xcc.isLoadingProject)
|
||||
self.statusItem.image = self.iconActive;
|
||||
self.statusItem.image = self.xcc.hasErrors ? self.iconError : self.iconActive;
|
||||
}
|
||||
|
||||
- (void)XcodeCappDidPopulateProject:(NSNotification *)aNotification
|
||||
@@ -214,7 +224,7 @@ AppController *SharedAppControllerInstance = nil;
|
||||
|
||||
- (void)XcodeCappListeningDidStart:(NSNotification *)aNotification
|
||||
{
|
||||
self.statusItem.image = self.iconActive;
|
||||
self.statusItem.image = self.xcc.hasErrors ? self.iconError : self.iconActive;
|
||||
self.menuItemListen.title = [NSString stringWithFormat:@"Close “%@”", self.xcc.currentProjectPath.lastPathComponent];
|
||||
self.menuItemListen.action = @selector(stopListening:);
|
||||
}
|
||||
@@ -308,15 +318,6 @@ AppController *SharedAppControllerInstance = nil;
|
||||
[self updateHistoryMenu];
|
||||
}
|
||||
|
||||
- (IBAction)openInXcode:(id)aSender
|
||||
{
|
||||
if (!self.xcc.currentProjectPath)
|
||||
return;
|
||||
|
||||
DLog(@"Opening Xcode project at: %@", self.xcc.XcodeSupportProjectURL.path);
|
||||
system([[NSString stringWithFormat:@"open \"%@\"", self.xcc.XcodeSupportProjectURL.path] UTF8String]);
|
||||
}
|
||||
|
||||
- (IBAction)openHelp:(id)aSender
|
||||
{
|
||||
[self.helpTextView readRTFDFromFile:[[NSBundle mainBundle] pathForResource:@"help" ofType:@"rtfd"]];
|
||||
|
||||
|
Before Width: | Height: | Size: 612 B After Width: | Height: | Size: 635 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 714 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 635 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 759 B |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.5 KiB |
@@ -41,8 +41,7 @@ function raise(pos, message)
|
||||
throw syntaxError;
|
||||
}
|
||||
|
||||
var hasWarnings = false,
|
||||
errors = [],
|
||||
var errors = [],
|
||||
xcc = ObjectiveJ.acorn.walk.make(
|
||||
{
|
||||
ClassDeclarationStatement: function(node, st, c)
|
||||
@@ -54,7 +53,7 @@ var hasWarnings = false,
|
||||
@"path": node.loc.source,
|
||||
@"line": node.loc.start.line
|
||||
}];
|
||||
hasWarnings = true;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -159,7 +158,8 @@ function main(args)
|
||||
tokens = ObjectiveJ.acorn.parse(source, { locations:true, sourceFile:sourceFile }),
|
||||
classesInformation = [],
|
||||
ObjectiveCSource = "",
|
||||
ObjectiveCHeader = "";
|
||||
ObjectiveCHeader = "",
|
||||
hasErrors = NO;
|
||||
|
||||
compile(tokens, classesInformation, xcc);
|
||||
|
||||
@@ -218,6 +218,8 @@ function main(args)
|
||||
@"path": sourceFile,
|
||||
@"line": e.line
|
||||
}];
|
||||
|
||||
hasErrors = YES;
|
||||
}
|
||||
|
||||
if ([errors count])
|
||||
@@ -225,7 +227,9 @@ function main(args)
|
||||
var plist = [CPPropertyListSerialization dataFromPropertyList:errors format:CPPropertyListXMLFormat_v1_0];
|
||||
|
||||
print([plist rawString]);
|
||||
OS.exit(1);
|
||||
|
||||
// If there were category warnings, hasErrors is NO, so return a warning status
|
||||
OS.exit(hasErrors ? 1 : 2);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import re
|
||||
import sys
|
||||
from mod_pbxproj import XcodeProject
|
||||
|
||||
XCODE_SUPPORT_FOLDER = "XcodeSupport"
|
||||
XCODE_SUPPORT_FOLDER = ".XcodeSupport"
|
||||
SLASH_REPLACEMENT = u"∕" # DIVISION SLASH Unicode U+2215
|
||||
STRING_RE = re.compile(ur"^\s*<string>(.*)</string>\s*$", re.MULTILINE)
|
||||
FRAMEWORKS_RE = re.compile(ur"^(.+/Frameworks/(?:Debug|Source)/([^/]+))/.+$")
|
||||
|
||||
@@ -51,6 +51,9 @@ extern NSString * const XCCListeningDidStartNotification;
|
||||
- (IBAction)openErrorsPanel:(id)sender;
|
||||
- (IBAction)clearErrors:(id)sender;
|
||||
- (IBAction)openErrorInEditor:(id)sender;
|
||||
- (IBAction)openInXcode:(id)aSender;
|
||||
- (IBAction)resetProject:(id)aSender;
|
||||
|
||||
- (void)start;
|
||||
- (void)stop;
|
||||
- (void)listenToProjectAtPath:(NSString *)path;
|
||||
@@ -63,6 +66,7 @@ extern NSString * const XCCListeningDidStartNotification;
|
||||
- (void)handleFileModificationAtPath:(NSString*)path notify:(BOOL)shouldNotify;
|
||||
- (void)handleFileRemovalAtPath:(NSString*)path;
|
||||
- (void)updateUserDefaultsWithLastEventId;
|
||||
- (BOOL)hasErrors;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -39,6 +39,27 @@ enum XCCLineSpecifier {
|
||||
};
|
||||
typedef enum XCCLineSpecifier XCCLineSpecifier;
|
||||
|
||||
enum {
|
||||
XCCStatusCodeError = 1,
|
||||
XCCStatusCodeWarning = 2
|
||||
};
|
||||
|
||||
const char *XCCCloseProjectScript =
|
||||
"tell application \"Xcode\"\n"
|
||||
"set docs to (document of every window)\n"
|
||||
"repeat with doc in docs\n"
|
||||
"if class of doc is workspace document then\n"
|
||||
"set docURL to file of doc\n"
|
||||
"set docPath to docURL as text\n"
|
||||
"set docPath to POSIX path of docPath\n"
|
||||
"if docPath begins with \"%@\" then\n"
|
||||
"close doc\n"
|
||||
"return\n"
|
||||
"end if\n"
|
||||
"end if\n"
|
||||
"end repeat\n"
|
||||
"end tell";
|
||||
|
||||
NSString * const XCCDidPopulateProjectNotification = @"XCCDidPopulateProjectNotification";
|
||||
NSString * const XCCConversionDidStartNotification = @"XCCConversionDidStartNotification";
|
||||
NSString * const XCCConversionDidStopNotification = @"XCCConversionDidStopNotification";
|
||||
@@ -67,6 +88,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
@property NSString *profilePath;
|
||||
@property NSString *shellPath;
|
||||
@property NSString *PBXModifierScriptPath;
|
||||
@property NSString *closeProjectScriptSource;
|
||||
@property NSString *supportPath;
|
||||
@property NSDate *appStartedTimestamp;
|
||||
@property NSMutableDictionary *pathModificationDates;
|
||||
@@ -115,7 +137,8 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
self.errorList = [NSMutableArray arrayWithCapacity:10];
|
||||
self.fm = [NSFileManager defaultManager];
|
||||
self.ignoredPathRegexes = [NSMutableArray new];
|
||||
self.parserPath = [[NSBundle mainBundle] pathForResource:@"parser" ofType:@"j"];
|
||||
self.parserPath = [[[NSBundle mainBundle] sharedSupportPath] stringByAppendingPathComponent:@"parser.j"];
|
||||
self.closeProjectScriptSource = [NSString stringWithUTF8String:XCCCloseProjectScript];
|
||||
self.lastEventId = [[NSUserDefaults standardUserDefaults] objectForKey:kDefaultLastEventId];
|
||||
self.appStartedTimestamp = [NSDate date];
|
||||
self.projectPathsForSourcePaths = [NSMutableDictionary new];
|
||||
@@ -192,24 +215,24 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
|
||||
NSURL *projectURL = [NSURL fileURLWithPath:self.currentProjectPath];
|
||||
self.XcodeSupportProjectURL = [NSURL URLWithString:self.XcodeSupportProjectName relativeToURL:projectURL];
|
||||
self.supportPath = [[NSURL URLWithString:@"XcodeSupport" relativeToURL:projectURL] path];
|
||||
self.supportPath = [[NSURL URLWithString:@".XcodeSupport" relativeToURL:projectURL] path];
|
||||
self.XcodeSupportPBXPath = [self.XcodeSupportProjectURL.path stringByAppendingPathComponent:@"project.pbxproj"];
|
||||
self.PBXModifierScriptPath = [[NSBundle mainBundle] pathForResource:@"pbxprojModifier" ofType:@"py"];
|
||||
self.PBXModifierScriptPath = [[[NSBundle mainBundle] sharedSupportPath] stringByAppendingPathComponent:@"pbxprojModifier.py"];
|
||||
|
||||
// Create the template project if it doesn't exist
|
||||
if (![self.fm fileExistsAtPath:self.supportPath])
|
||||
{
|
||||
NSLog(@"%@ Xcode support folder created at: %@", NSStringFromSelector(_cmd), self.XcodeSupportProjectURL.path);
|
||||
NSLog(@"Xcode support folder created at: %@", self.XcodeSupportProjectURL.path);
|
||||
[self.fm createDirectoryAtPath:self.XcodeSupportProjectURL.path withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
|
||||
DLog(@"%@ Copying project.pbxproj from %@ to %@", NSStringFromSelector(_cmd), self.XcodeTemplatePBXPath, self.XcodeSupportProjectURL.path);
|
||||
DLog(@"Copying project.pbxproj from %@ to %@", self.XcodeTemplatePBXPath, self.XcodeSupportProjectURL.path);
|
||||
[self.fm copyItemAtPath:self.XcodeTemplatePBXPath toPath:self.XcodeSupportPBXPath error:nil];
|
||||
|
||||
DLog(@"%@ Reading the content of the project.pbxproj", NSStringFromSelector(_cmd));
|
||||
DLog(@"Reading the content of the project.pbxproj");
|
||||
NSMutableString *PBXContent = [NSMutableString stringWithContentsOfFile:self.XcodeSupportPBXPath encoding:NSUTF8StringEncoding error:nil];
|
||||
|
||||
[PBXContent writeToFile:self.XcodeSupportPBXPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
|
||||
DLog(@"%@ PBX file adapted to the project", NSStringFromSelector(_cmd));
|
||||
DLog(@"PBX file adapted to the project");
|
||||
|
||||
[self.fm createDirectoryAtPath:self.supportPath withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
|
||||
@@ -226,9 +249,6 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
*/
|
||||
- (void)populateXcodeProject:(BOOL)shouldNotify
|
||||
{
|
||||
if (shouldNotify)
|
||||
[self notifyUserWithTitle:@"Loading project" message:self.currentProjectPath.lastPathComponent];
|
||||
|
||||
// First populate with all non-framework code
|
||||
[self populateXcodeProjectWithProjectRelativePath:@""];
|
||||
|
||||
@@ -242,10 +262,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
[self populateXcodeProjectWithProjectRelativePath:@"Resources"];
|
||||
|
||||
if (shouldNotify)
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:XCCDidPopulateProjectNotification object:self userInfo:nil];
|
||||
[self notifyUserWithTitle:@"Project loaded" message:self.currentProjectPath.lastPathComponent];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)populateXcodeProjectWithProjectRelativePath:(NSString *)aProjectPath
|
||||
@@ -329,6 +346,8 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
- (void)listenToProjectAtPath:(NSString *)path
|
||||
{
|
||||
self.isLoadingProject = YES;
|
||||
|
||||
[self notifyUserWithTitle:@"Loading project…" message:path.lastPathComponent];
|
||||
|
||||
[self clearErrors:self];
|
||||
self.currentProjectPath = path;
|
||||
@@ -348,9 +367,36 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] setObject:self.currentProjectPath forKey:kDefaultLastOpenedPath];
|
||||
|
||||
[self notifyUserWithTitle:@"Listening to project" message:self.currentProjectPath.lastPathComponent];
|
||||
[self notifyUserWithTitle:@"Project loaded" message:self.currentProjectPath.lastPathComponent];
|
||||
}
|
||||
|
||||
- (IBAction)openInXcode:(id)aSender
|
||||
{
|
||||
if (!self.currentProjectPath)
|
||||
return;
|
||||
|
||||
DLog(@"Opening Xcode project at: %@", self.XcodeSupportProjectURL.path);
|
||||
system([[NSString stringWithFormat:@"open \"%@\"", self.XcodeSupportProjectURL.path] UTF8String]);
|
||||
}
|
||||
|
||||
- (IBAction)resetProject:(id)aSender
|
||||
{
|
||||
NSString *projectPath = self.currentProjectPath;
|
||||
|
||||
[self stop];
|
||||
|
||||
// Close the project in Xcode if it's open
|
||||
NSString *source = [NSString stringWithFormat:self.closeProjectScriptSource, projectPath];
|
||||
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:source];
|
||||
|
||||
NSAppleEventDescriptor *descriptor;
|
||||
descriptor = [script executeAndReturnError:nil];
|
||||
|
||||
[self.fm removeItemAtURL:self.XcodeSupportProjectURL error:nil];
|
||||
[self.fm removeItemAtPath:self.supportPath error:nil];
|
||||
|
||||
[self listenToProjectAtPath:projectPath];
|
||||
}
|
||||
|
||||
#pragma mark - Event Stream
|
||||
|
||||
@@ -371,7 +417,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
|
||||
if (self.supportsFileBasedListening)
|
||||
{
|
||||
DLog(@"%@ Initializing the FSEventStream at file level (clean)", NSStringFromSelector(_cmd));
|
||||
DLog(@"Initializing the FSEventStream at file level (clean)");
|
||||
flags = kFSEventStreamCreateFlagUseCFTypes | kFSEventStreamCreateFlagNoDefer | kFSEventStreamCreateFlagFileEvents;
|
||||
}
|
||||
else
|
||||
@@ -464,7 +510,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
|
||||
if (!self.supportsFileLevelAPI)
|
||||
{
|
||||
DLog(@"%@ System doesn't support file level API", NSStringFromSelector(_cmd));
|
||||
DLog(@"System doesn't support file level API");
|
||||
[defaults setObject:[NSNumber numberWithInt:kXCCAPIModeFolder] forKey:kDefaultXCCAPIMode];
|
||||
}
|
||||
|
||||
@@ -485,7 +531,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
|
||||
if (self.supportsFileBasedListening)
|
||||
{
|
||||
DLog(@"%@ using 10.7+ mode listening (clean)", NSStringFromSelector(_cmd));
|
||||
DLog(@"using 10.7+ mode listening (clean)");
|
||||
|
||||
self.currentAPIMode = @"File level (Lion)";
|
||||
self.isUsingFileLevelAPI = YES;
|
||||
@@ -493,7 +539,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
}
|
||||
else
|
||||
{
|
||||
DLog(@"%@ using 10.6 mode listening (dirty)", NSStringFromSelector(_cmd));
|
||||
DLog(@"using 10.6 mode listening (dirty)");
|
||||
self.reactToInodeModification = NO;
|
||||
self.currentAPIMode = @"Folder level (Snow Leopard)";
|
||||
self.isUsingFileLevelAPI = NO;
|
||||
@@ -615,10 +661,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
return;
|
||||
|
||||
NSString *projectPath = [self projectPathForSourcePath:path];
|
||||
BOOL success = [self processModifiedFileAtPath:path projectSourcePath:projectPath notify:shouldNotify];
|
||||
|
||||
if (success)
|
||||
[self notifyUserWithTitle:@"File successfully processed" message:path.lastPathComponent];
|
||||
[self processModifiedFileAtPath:path projectSourcePath:projectPath notify:shouldNotify];
|
||||
}
|
||||
|
||||
- (BOOL)processModifiedFileAtPath:(NSString *)realSourcePath projectSourcePath:(NSString *)projectSourcePath notify:(BOOL)shouldNotify
|
||||
@@ -629,35 +672,33 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
|
||||
NSArray *arguments = nil;
|
||||
NSArray *pbxArguments = nil;
|
||||
NSString *growlTitle = nil;
|
||||
NSString *growlMessage = nil;
|
||||
NSString *response = nil;
|
||||
|
||||
NSString *projectRelativePath = [projectSourcePath substringFromIndex:self.currentProjectPath.length + 1];
|
||||
NSString *notificationTitle = nil;
|
||||
NSString *notificationMessage = projectRelativePath.lastPathComponent;
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:XCCConversionDidStartNotification object:self];
|
||||
|
||||
// Remove all errors for the path being processed
|
||||
BOOL (^pathMatcher)(id obj, NSUInteger idx, BOOL *stop);
|
||||
|
||||
pathMatcher = ^(id obj, NSUInteger idx, BOOL *stop)
|
||||
{
|
||||
return [[obj valueForKey:@"path"] isEqualToString:realSourcePath];
|
||||
};
|
||||
|
||||
NSIndexSet *matchingErrors = [self.errorList indexesOfObjectsPassingTest:pathMatcher];
|
||||
NSIndexSet *matchingErrors = [self.errorList indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop)
|
||||
{
|
||||
return [[obj valueForKey:@"path"] isEqualToString:realSourcePath];
|
||||
}];
|
||||
|
||||
[self.errorListController removeObjectsAtArrangedObjectIndexes:matchingErrors];
|
||||
|
||||
if ([self isXibFile:realSourcePath])
|
||||
{
|
||||
// nib2cib can take a while to run, show a message while the conversion is happening
|
||||
[self notifyUserWithTitle:@"Converting xib…" message:projectRelativePath.lastPathComponent];
|
||||
|
||||
arguments = @[
|
||||
@"-c",
|
||||
[NSString stringWithFormat:@"source '%@'; nib2cib --no-colors '%@'", self.profilePath, realSourcePath],
|
||||
@""
|
||||
];
|
||||
|
||||
growlTitle = @"Converting xib...";
|
||||
growlMessage = projectRelativePath.lastPathComponent;
|
||||
notificationTitle = @"Xib converted";
|
||||
}
|
||||
else if ([self isObjjFile:realSourcePath])
|
||||
{
|
||||
@@ -679,23 +720,20 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
projectSourcePath]
|
||||
];
|
||||
|
||||
growlTitle = @"Processing Objective-J source...";
|
||||
growlMessage = projectRelativePath.lastPathComponent;
|
||||
notificationTitle = @"Objective-J source processed";
|
||||
}
|
||||
else if ([self isXCCIgnoreFile:realSourcePath])
|
||||
{
|
||||
[self computeIgnoredPaths];
|
||||
growlTitle = @"Parsing .xcodecapp-ignore...";
|
||||
growlMessage = @"Updating ignored paths";
|
||||
notificationTitle = @"Parsed .xcodecapp-ignore";
|
||||
notificationMessage = @"Ignored paths updated";
|
||||
arguments = nil;
|
||||
}
|
||||
|
||||
// Run the task and get the response if needed
|
||||
if (arguments)
|
||||
{
|
||||
DLog(@"%@ Running conversion task...", NSStringFromSelector(_cmd));
|
||||
|
||||
[self notifyUserWithTitle:growlTitle message:growlMessage];
|
||||
DLog(@"Running conversion task...");
|
||||
|
||||
NSDictionary *taskResult = [self runTaskWithLaunchPath:self.shellPath
|
||||
arguments:arguments
|
||||
@@ -704,7 +742,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
NSInteger status = [taskResult[@"status"] intValue];
|
||||
response = taskResult[@"response"];
|
||||
|
||||
DLog(@"%@ Conversion task result/response: %ld/%@", NSStringFromSelector(_cmd), status, response);
|
||||
DLog(@"Conversion task result/response: %ld/%@", status, response);
|
||||
|
||||
if (status != 0)
|
||||
{
|
||||
@@ -715,40 +753,54 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
|
||||
if ([self isXibFile:realSourcePath])
|
||||
{
|
||||
notificationTitle = @"Error converting xib";
|
||||
|
||||
NSString *message = [NSString stringWithFormat:@"%@\n%@", realSourcePath.lastPathComponent, response];
|
||||
[self.errorListController addObject:@{ @"message":message, @"path":realSourcePath }];
|
||||
[self.errorListController addObject:@{ @"message":message, @"path":realSourcePath, @"status":taskResult[@"status"] }];
|
||||
}
|
||||
else
|
||||
{
|
||||
notificationTitle = [(XCCStatusCodeError ? @"Error" : @"Warning") stringByAppendingString:@" parsing Objective-J source"];
|
||||
|
||||
NSArray *errors = [response propertyList];
|
||||
|
||||
for (NSDictionary *error in errors)
|
||||
{
|
||||
NSMutableDictionary *newError = [error mutableCopy];
|
||||
newError[@"message"] = [NSString stringWithFormat:@"%@, line %d\n%@", [error[@"path"] lastPathComponent], [error[@"line"] intValue], error[@"message"]];
|
||||
newError[@"status"] = taskResult[@"status"];
|
||||
[self.errorListController addObject:newError];
|
||||
}
|
||||
}
|
||||
|
||||
if ([[NSUserDefaults standardUserDefaults] boolForKey:kDefaultXCCAutoOpenErrorsPanel])
|
||||
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
if ((status == XCCStatusCodeError && [defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnErrors]) ||
|
||||
(status == XCCStatusCodeWarning && [defaults boolForKey:kDefaultXCCAutoOpenErrorsPanelOnWarnings]))
|
||||
{
|
||||
[self openErrorsPanel:self];
|
||||
}
|
||||
|
||||
[self notifyUserWithTitle:@"Error processing file" message:projectRelativePath.lastPathComponent];
|
||||
[self notifyUserWithTitle:notificationTitle message:notificationMessage];
|
||||
}
|
||||
else if (!self.isLoadingProject)
|
||||
{
|
||||
[self notifyUserWithTitle:notificationTitle message:notificationMessage];
|
||||
}
|
||||
}
|
||||
|
||||
if (pbxArguments)
|
||||
{
|
||||
DLog(@"%@ Running update PBX task...", NSStringFromSelector(_cmd));
|
||||
DLog(@"Running update PBX task...");
|
||||
|
||||
NSDictionary *taskResult;
|
||||
taskResult = [self runTaskWithLaunchPath:self.shellPath arguments:pbxArguments returnType:kTaskReturnTypeStdOut];
|
||||
|
||||
DLog(@"%@ Update PBX Task result/response: %@/%@", NSStringFromSelector(_cmd), taskResult[@"status"], taskResult[@"response"]);
|
||||
DLog(@"Update PBX Task result/response: %@/%@", taskResult[@"status"], taskResult[@"response"]);
|
||||
}
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:XCCConversionDidStopNotification object:self];
|
||||
DLog(@"%@ Processed: %@", NSStringFromSelector(_cmd), realSourcePath);
|
||||
DLog(@"Processed: %@", realSourcePath);
|
||||
|
||||
return success;
|
||||
}
|
||||
@@ -823,13 +875,13 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
NSString *shadowHeaderPath = [shadowBasePath stringByAppendingPathExtension:@"h"];
|
||||
NSString *shadowImplementationPath = [shadowBasePath stringByAppendingPathExtension:@"m"];
|
||||
|
||||
DLog(@"%@ Removing shadow header file: %@", NSStringFromSelector(_cmd), shadowHeaderPath);
|
||||
DLog(@"Removing shadow header file: %@", shadowHeaderPath);
|
||||
[self.fm removeItemAtPath:shadowHeaderPath error:nil];
|
||||
|
||||
DLog(@"%@ Removing shadow implementation file: %@", NSStringFromSelector(_cmd), shadowImplementationPath);
|
||||
DLog(@"Removing shadow implementation file: %@", shadowImplementationPath);
|
||||
[self.fm removeItemAtPath:shadowImplementationPath error:nil];
|
||||
|
||||
DLog(@"%@ Removing PBX reference", NSStringFromSelector(_cmd));
|
||||
DLog(@"Removing PBX reference");
|
||||
NSString *projectSourcePath = [self projectPathForSourcePath:sourcePath];
|
||||
|
||||
NSArray *pbxArguments = @[
|
||||
@@ -845,7 +897,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
|
||||
taskResult = [self runTaskWithLaunchPath:self.shellPath arguments:pbxArguments returnType:kTaskReturnTypeStdOut];
|
||||
|
||||
DLog(@"%@ PBX Reference removal status/response: %@/%@", NSStringFromSelector(_cmd), taskResult[@"status"], taskResult[@"response"]);
|
||||
DLog(@"PBX Reference removal status/response: %@/%@", taskResult[@"status"], taskResult[@"response"]);
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -951,7 +1003,7 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
return ignore;
|
||||
}
|
||||
|
||||
#pragma mark - Errors panel
|
||||
#pragma mark - Errors
|
||||
|
||||
- (IBAction)openErrorsPanel:(id)aSender
|
||||
{
|
||||
@@ -1082,6 +1134,16 @@ NSArray *XCCDefaultIgnoredPathRegexes = nil;
|
||||
self.errorListController.content = self.errorList;
|
||||
}
|
||||
|
||||
- (BOOL)hasErrors
|
||||
{
|
||||
NSInteger index = [self.errorList indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop)
|
||||
{
|
||||
return [[obj valueForKey:@"status"] intValue] == XCCStatusCodeError;
|
||||
}];
|
||||
|
||||
return index != NSNotFound;
|
||||
}
|
||||
|
||||
#pragma mark - User notifications
|
||||
|
||||
- (NSString *)applicationNameForGrowl
|
||||
|
||||
@@ -17,7 +17,8 @@ extern NSString * const kDefaultFirstLaunchVersion;
|
||||
extern NSString * const kDefaultXCCAPIMode;
|
||||
extern NSString * const kDefaultXCCReactMode;
|
||||
extern NSString * const kDefaultXCCReopenLastProject;
|
||||
extern NSString * const kDefaultXCCAutoOpenErrorsPanel;
|
||||
extern NSString * const kDefaultXCCAutoOpenErrorsPanelOnWarnings;
|
||||
extern NSString * const kDefaultXCCAutoOpenErrorsPanelOnErrors;
|
||||
extern NSString * const kDefaultXCCProjectHistory;
|
||||
extern NSString * const kDefaultLastOpenedPath;
|
||||
extern NSString * const kDefaultPathModificationDates;
|
||||
|
||||
@@ -15,7 +15,8 @@ NSString * const kDefaultFirstLaunchVersion = @"firstLaunchVersion";
|
||||
NSString * const kDefaultXCCAPIMode = @"XCCAPIMode";
|
||||
NSString * const kDefaultXCCReactMode = @"XCCReactMode";
|
||||
NSString * const kDefaultXCCReopenLastProject = @"XCCReopenLastProject";
|
||||
NSString * const kDefaultXCCAutoOpenErrorsPanel = @"XCCAutoOpenErrorsPanel";
|
||||
NSString * const kDefaultXCCAutoOpenErrorsPanelOnWarnings = @"XCCAutoOpenErrorsPanelOnWarnings";
|
||||
NSString * const kDefaultXCCAutoOpenErrorsPanelOnErrors = @"XCCAutoOpenErrorsPanelOnErrors";
|
||||
NSString * const kDefaultXCCProjectHistory = @"XCCProjectHistory";
|
||||
NSString * const kDefaultLastOpenedPath = @"LastOpenedPath";
|
||||
NSString * const kDefaultPathModificationDates = @"pathModificationDates";
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
</object>
|
||||
<array key="IBDocument.IntegratedClassDependencies">
|
||||
<string>NSArrayController</string>
|
||||
<string>NSBox</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSButtonCell</string>
|
||||
<string>NSCustomObject</string>
|
||||
@@ -86,6 +85,14 @@
|
||||
<reference key="NSOnImage" ref="457724053"/>
|
||||
<reference key="NSMixedImage" ref="103460472"/>
|
||||
</object>
|
||||
<object class="NSMenuItem" id="854121054">
|
||||
<reference key="NSMenu" ref="280310327"/>
|
||||
<string key="NSTitle">Reset Project</string>
|
||||
<string key="NSKeyEquiv"/>
|
||||
<int key="NSMnemonicLoc">2147483647</int>
|
||||
<reference key="NSOnImage" ref="457724053"/>
|
||||
<reference key="NSMixedImage" ref="103460472"/>
|
||||
</object>
|
||||
<object class="NSMenuItem" id="261599420">
|
||||
<reference key="NSMenu" ref="280310327"/>
|
||||
<bool key="NSIsDisabled">YES</bool>
|
||||
@@ -181,7 +188,7 @@
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{164, 23}, {172, 98}}</string>
|
||||
<reference key="NSSuperview" ref="694242143"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="987022105">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
@@ -195,7 +202,7 @@ Y29tA</string>
|
||||
<int key="NSfFlags">3100</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="1002122285"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="490108544">
|
||||
<object class="NSColor" key="NSBackgroundColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textBackgroundColor</string>
|
||||
@@ -221,7 +228,6 @@ Y29tA</string>
|
||||
<int key="NSvFlags">266</int>
|
||||
<string key="NSFrame">{{164, 140}, {160, 14}}</string>
|
||||
<reference key="NSSuperview" ref="694242143"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1002122285"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="1043848996">
|
||||
@@ -260,7 +266,6 @@ Y29tA</string>
|
||||
</set>
|
||||
<string key="NSFrame">{{17, 46}, {128, 128}}</string>
|
||||
<reference key="NSSuperview" ref="694242143"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="547689164"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -283,7 +288,6 @@ Y29tA</string>
|
||||
</array>
|
||||
<string key="NSFrameSize">{358, 185}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="953620552"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
|
||||
@@ -518,36 +522,37 @@ Y29tA</string>
|
||||
<object class="NSWindowTemplate" id="817657916">
|
||||
<int key="NSWindowStyleMask">3</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{529, 541}, {336, 198}}</string>
|
||||
<string key="NSWindowRect">{{529, 541}, {341, 155}}</string>
|
||||
<int key="NSWTFlags">1685586944</int>
|
||||
<string key="NSWindowTitle">Preferences</string>
|
||||
<string key="NSWindowClass">NSWindow</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<object class="NSView" key="NSWindowView" id="145921208">
|
||||
<nil key="NSNextResponder"/>
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<array class="NSMutableArray" key="NSSubviews">
|
||||
<object class="NSButton" id="745745556">
|
||||
<object class="NSButton" id="527635531">
|
||||
<reference key="NSNextResponder" ref="145921208"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 43}, {282, 18}}</string>
|
||||
<string key="NSFrame">{{18, 119}, {295, 18}}</string>
|
||||
<reference key="NSSuperview" ref="145921208"/>
|
||||
<reference key="NSNextKeyView" ref="911700242"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="91964537"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="534768275">
|
||||
<object class="NSButtonCell" key="NSCell" id="332414041">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">React to inode meta information changes</string>
|
||||
<string key="NSContents">Listen to the most recent project on launch</string>
|
||||
<object class="NSFont" key="NSSupport" id="22344846">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="745745556"/>
|
||||
<reference key="NSControlView" ref="527635531"/>
|
||||
<int key="NSButtonFlags">1211912448</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage" id="844111305">
|
||||
<object class="NSCustomResource" key="NSNormalImage" id="123219516">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSSwitch</string>
|
||||
</object>
|
||||
@@ -561,70 +566,23 @@ Y29tA</string>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="911700242">
|
||||
<reference key="NSNextResponder" ref="145921208"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 20}, {284, 17}}</string>
|
||||
<reference key="NSSuperview" ref="145921208"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="783098791">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents">In "File level" API mode, react to touch, chown, etc.</string>
|
||||
<object class="NSFont" key="NSSupport">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">11</double>
|
||||
<int key="NSfFlags">16</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="911700242"/>
|
||||
<reference key="NSBackgroundColor" ref="2058410"/>
|
||||
<object class="NSColor" key="NSTextColor">
|
||||
<int key="NSColorSpace">1</int>
|
||||
<bytes key="NSRGB">MC4zNDU1Mjg0ODM0IDAuMzQ1NTI4NDgzNCAwLjM0NTUyODQ4MzQAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSButton" id="527635531">
|
||||
<reference key="NSNextResponder" ref="145921208"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 162}, {295, 18}}</string>
|
||||
<reference key="NSSuperview" ref="145921208"/>
|
||||
<reference key="NSNextKeyView" ref="529575548"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="332414041">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Listen to the most recent project on launch</string>
|
||||
<reference key="NSSupport" ref="22344846"/>
|
||||
<reference key="NSControlView" ref="527635531"/>
|
||||
<int key="NSButtonFlags">1211912448</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="844111305"/>
|
||||
<reference key="NSAlternateImage" ref="978619751"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSButton" id="529575548">
|
||||
<reference key="NSNextResponder" ref="145921208"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 132}, {300, 18}}</string>
|
||||
<string key="NSFrame">{{37, 58}, {81, 18}}</string>
|
||||
<reference key="NSSuperview" ref="145921208"/>
|
||||
<reference key="NSNextKeyView" ref="624731292"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="774318108"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="503199239">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Automatically open Errors & Warnings panel</string>
|
||||
<string key="NSContents">Warnings</string>
|
||||
<reference key="NSSupport" ref="22344846"/>
|
||||
<reference key="NSControlView" ref="529575548"/>
|
||||
<int key="NSButtonFlags">1211912448</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="844111305"/>
|
||||
<reference key="NSNormalImage" ref="123219516"/>
|
||||
<reference key="NSAlternateImage" ref="978619751"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
@@ -633,35 +591,37 @@ Y29tA</string>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSBox" id="941049068">
|
||||
<object class="NSButton" id="774318108">
|
||||
<reference key="NSNextResponder" ref="145921208"/>
|
||||
<int key="NSvFlags">10</int>
|
||||
<string key="NSFrame">{{18, 76}, {300, 5}}</string>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{139, 58}, {60, 18}}</string>
|
||||
<reference key="NSSuperview" ref="145921208"/>
|
||||
<reference key="NSNextKeyView" ref="745745556"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<string key="NSOffsets">{0, 0}</string>
|
||||
<object class="NSTextFieldCell" key="NSTitleCell">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="624731292"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="368407823">
|
||||
<int key="NSCellFlags">-2080374784</int>
|
||||
<int key="NSCellFlags2">0</int>
|
||||
<string key="NSContents">Box</string>
|
||||
<string key="NSContents">Errors</string>
|
||||
<reference key="NSSupport" ref="22344846"/>
|
||||
<reference key="NSBackgroundColor" ref="490108544"/>
|
||||
<object class="NSColor" key="NSTextColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MCAwLjgwMDAwMDAxMTkAA</bytes>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="774318108"/>
|
||||
<int key="NSButtonFlags">1211912448</int>
|
||||
<int key="NSButtonFlags2">2</int>
|
||||
<reference key="NSNormalImage" ref="123219516"/>
|
||||
<reference key="NSAlternateImage" ref="978619751"/>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
<int key="NSBorderType">3</int>
|
||||
<int key="NSBoxType">2</int>
|
||||
<int key="NSTitlePosition">0</int>
|
||||
<bool key="NSTransparent">NO</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="624731292">
|
||||
<reference key="NSNextResponder" ref="145921208"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 101}, {106, 17}}</string>
|
||||
<string key="NSFrame">{{17, 21}, {106, 17}}</string>
|
||||
<reference key="NSSuperview" ref="145921208"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1001907295"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1535</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
@@ -680,9 +640,10 @@ Y29tA</string>
|
||||
<object class="NSPopUpButton" id="1001907295">
|
||||
<reference key="NSNextResponder" ref="145921208"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{126, 95}, {56, 26}}</string>
|
||||
<string key="NSFrame">{{126, 15}, {56, 26}}</string>
|
||||
<reference key="NSSuperview" ref="145921208"/>
|
||||
<reference key="NSNextKeyView" ref="941049068"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSPopUpButtonCell" key="NSCell" id="404840621">
|
||||
@@ -747,8 +708,31 @@ Y29tA</string>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="91964537">
|
||||
<reference key="NSNextResponder" ref="145921208"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{18, 84}, {306, 17}}</string>
|
||||
<reference key="NSSuperview" ref="145921208"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="529575548"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:1535</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="346990638">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents">Automatically open Errors & Warnings panel on:</string>
|
||||
<reference key="NSSupport" ref="22344846"/>
|
||||
<string key="NSCellIdentifier">_NS:1535</string>
|
||||
<reference key="NSControlView" ref="91964537"/>
|
||||
<reference key="NSBackgroundColor" ref="2058410"/>
|
||||
<reference key="NSTextColor" ref="824548534"/>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
</array>
|
||||
<string key="NSFrameSize">{336, 198}</string>
|
||||
<string key="NSFrameSize">{341, 155}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="527635531"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
|
||||
@@ -1024,14 +1008,6 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
</object>
|
||||
<int key="connectionID">619</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">openInXcode:</string>
|
||||
<reference key="source" ref="993249905"/>
|
||||
<reference key="destination" ref="798304033"/>
|
||||
</object>
|
||||
<int key="connectionID">620</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">menuItemHistory</string>
|
||||
@@ -1096,6 +1072,14 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
</object>
|
||||
<int key="connectionID">792</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">save:</string>
|
||||
<reference key="source" ref="942006162"/>
|
||||
<reference key="destination" ref="774318108"/>
|
||||
</object>
|
||||
<int key="connectionID">821</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">errorTable</string>
|
||||
@@ -1153,40 +1137,20 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<int key="connectionID">786</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">value: values.XCCReactMode</string>
|
||||
<reference key="source" ref="745745556"/>
|
||||
<reference key="destination" ref="942006162"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="745745556"/>
|
||||
<reference key="NSDestination" ref="942006162"/>
|
||||
<string key="NSLabel">value: values.XCCReactMode</string>
|
||||
<string key="NSBinding">value</string>
|
||||
<string key="NSKeyPath">values.XCCReactMode</string>
|
||||
<object class="NSDictionary" key="NSOptions">
|
||||
<string key="NS.key.0">NSValidatesImmediately</string>
|
||||
<boolean value="YES" key="NS.object.0"/>
|
||||
</object>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">openInXcode:</string>
|
||||
<reference key="source" ref="1027936551"/>
|
||||
<reference key="destination" ref="798304033"/>
|
||||
</object>
|
||||
<int key="connectionID">629</int>
|
||||
<int key="connectionID">815</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">enabled: isUsingFileLevelAPI</string>
|
||||
<reference key="source" ref="745745556"/>
|
||||
<reference key="destination" ref="1027936551"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="745745556"/>
|
||||
<reference key="NSDestination" ref="1027936551"/>
|
||||
<string key="NSLabel">enabled: isUsingFileLevelAPI</string>
|
||||
<string key="NSBinding">enabled</string>
|
||||
<string key="NSKeyPath">isUsingFileLevelAPI</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">resetProject:</string>
|
||||
<reference key="source" ref="1027936551"/>
|
||||
<reference key="destination" ref="854121054"/>
|
||||
</object>
|
||||
<int key="connectionID">630</int>
|
||||
<int key="connectionID">816</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
@@ -1351,15 +1315,15 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">value: values.XCCAutoOpenErrorsPanel</string>
|
||||
<string key="label">value: values.XCCAutoOpenErrorsPanelOnWarnings</string>
|
||||
<reference key="source" ref="529575548"/>
|
||||
<reference key="destination" ref="942006162"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="529575548"/>
|
||||
<reference key="NSDestination" ref="942006162"/>
|
||||
<string key="NSLabel">value: values.XCCAutoOpenErrorsPanel</string>
|
||||
<string key="NSLabel">value: values.XCCAutoOpenErrorsPanelOnWarnings</string>
|
||||
<string key="NSBinding">value</string>
|
||||
<string key="NSKeyPath">values.XCCAutoOpenErrorsPanel</string>
|
||||
<string key="NSKeyPath">values.XCCAutoOpenErrorsPanelOnWarnings</string>
|
||||
<object class="NSDictionary" key="NSOptions">
|
||||
<string key="NS.key.0">NSValidatesImmediately</string>
|
||||
<boolean value="YES" key="NS.object.0"/>
|
||||
@@ -1367,7 +1331,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">793</int>
|
||||
<int key="connectionID">823</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
@@ -1385,6 +1349,42 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
</object>
|
||||
<int key="connectionID">810</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">enabled: currentProjectPath.length</string>
|
||||
<reference key="source" ref="854121054"/>
|
||||
<reference key="destination" ref="1027936551"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="854121054"/>
|
||||
<reference key="NSDestination" ref="1027936551"/>
|
||||
<string key="NSLabel">enabled: currentProjectPath.length</string>
|
||||
<string key="NSBinding">enabled</string>
|
||||
<string key="NSKeyPath">currentProjectPath.length</string>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">812</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBBindingConnection" key="connection">
|
||||
<string key="label">value: values.XCCAutoOpenErrorsPanelOnErrors</string>
|
||||
<reference key="source" ref="774318108"/>
|
||||
<reference key="destination" ref="942006162"/>
|
||||
<object class="NSNibBindingConnector" key="connector">
|
||||
<reference key="NSSource" ref="774318108"/>
|
||||
<reference key="NSDestination" ref="942006162"/>
|
||||
<string key="NSLabel">value: values.XCCAutoOpenErrorsPanelOnErrors</string>
|
||||
<string key="NSBinding">value</string>
|
||||
<string key="NSKeyPath">values.XCCAutoOpenErrorsPanelOnErrors</string>
|
||||
<object class="NSDictionary" key="NSOptions">
|
||||
<string key="NS.key.0">NSValidatesImmediately</string>
|
||||
<boolean value="YES" key="NS.object.0"/>
|
||||
</object>
|
||||
<int key="NSNibBindingConnectorVersion">2</int>
|
||||
</object>
|
||||
</object>
|
||||
<int key="connectionID">824</int>
|
||||
</object>
|
||||
</array>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<array key="orderedObjects">
|
||||
@@ -1432,6 +1432,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<reference ref="768182782"/>
|
||||
<reference ref="798304033"/>
|
||||
<reference ref="413460646"/>
|
||||
<reference ref="854121054"/>
|
||||
</array>
|
||||
<reference key="parent" ref="0"/>
|
||||
</object>
|
||||
@@ -1521,31 +1522,14 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<reference key="object" ref="145921208"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="527635531"/>
|
||||
<reference ref="529575548"/>
|
||||
<reference ref="941049068"/>
|
||||
<reference ref="745745556"/>
|
||||
<reference ref="911700242"/>
|
||||
<reference ref="624731292"/>
|
||||
<reference ref="1001907295"/>
|
||||
<reference ref="91964537"/>
|
||||
<reference ref="529575548"/>
|
||||
<reference ref="774318108"/>
|
||||
</array>
|
||||
<reference key="parent" ref="817657916"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">559</int>
|
||||
<reference key="object" ref="911700242"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="783098791"/>
|
||||
</array>
|
||||
<reference key="parent" ref="145921208"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">561</int>
|
||||
<reference key="object" ref="745745556"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="534768275"/>
|
||||
</array>
|
||||
<reference key="parent" ref="145921208"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">563</int>
|
||||
<reference key="object" ref="527635531"/>
|
||||
@@ -1559,16 +1543,6 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<reference key="object" ref="332414041"/>
|
||||
<reference key="parent" ref="527635531"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">578</int>
|
||||
<reference key="object" ref="534768275"/>
|
||||
<reference key="parent" ref="745745556"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">580</int>
|
||||
<reference key="object" ref="783098791"/>
|
||||
<reference key="parent" ref="911700242"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">581</int>
|
||||
<reference key="object" ref="348787045"/>
|
||||
@@ -1770,11 +1744,6 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<reference key="object" ref="503199239"/>
|
||||
<reference key="parent" ref="529575548"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">794</int>
|
||||
<reference key="object" ref="941049068"/>
|
||||
<reference key="parent" ref="145921208"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">797</int>
|
||||
<reference key="object" ref="953620552"/>
|
||||
@@ -1842,6 +1811,37 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<reference key="object" ref="653444688"/>
|
||||
<reference key="parent" ref="929273598"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">811</int>
|
||||
<reference key="object" ref="854121054"/>
|
||||
<reference key="parent" ref="280310327"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">817</int>
|
||||
<reference key="object" ref="91964537"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="346990638"/>
|
||||
</array>
|
||||
<reference key="parent" ref="145921208"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">818</int>
|
||||
<reference key="object" ref="346990638"/>
|
||||
<reference key="parent" ref="91964537"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">819</int>
|
||||
<reference key="object" ref="774318108"/>
|
||||
<array class="NSMutableArray" key="children">
|
||||
<reference ref="368407823"/>
|
||||
</array>
|
||||
<reference key="parent" ref="145921208"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">820</int>
|
||||
<reference key="object" ref="368407823"/>
|
||||
<reference key="parent" ref="774318108"/>
|
||||
</object>
|
||||
</array>
|
||||
</object>
|
||||
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||
@@ -1873,12 +1873,8 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<dictionary class="NSMutableDictionary" key="557.IBAttributePlaceholdersKey"/>
|
||||
<string key="557.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="558.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="559.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="561.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="563.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="576.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="578.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="580.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="581.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="582.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="583.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@@ -1918,7 +1914,6 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
</object>
|
||||
<string key="789.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="790.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="794.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="797.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="798.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="801.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
@@ -1929,12 +1924,25 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<string key="806.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="807.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="808.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="811.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="817.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="818.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<object class="NSMutableDictionary" key="819.IBAttributePlaceholdersKey">
|
||||
<string key="NS.key.0">ToolTip</string>
|
||||
<object class="IBToolTipAttribute" key="NS.object.0">
|
||||
<string key="name">ToolTip</string>
|
||||
<reference key="object" ref="774318108"/>
|
||||
<string key="toolTip">When an error or warning occurs, automatically open the Errors & Warnings panel</string>
|
||||
</object>
|
||||
</object>
|
||||
<string key="819.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string key="820.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||
<nil key="activeLocalization"/>
|
||||
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">810</int>
|
||||
<int key="maxID">824</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
@@ -1945,7 +1953,7 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<string key="listenToProject:">id</string>
|
||||
<string key="openAbout:">id</string>
|
||||
<string key="openHelp:">id</string>
|
||||
<string key="openInXcode:">id</string>
|
||||
<string key="openPreferences:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="listenToProject:">
|
||||
@@ -1960,8 +1968,8 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<string key="name">openHelp:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="openInXcode:">
|
||||
<string key="name">openInXcode:</string>
|
||||
<object class="IBActionInfo" key="openPreferences:">
|
||||
<string key="name">openPreferences:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
@@ -2052,6 +2060,8 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<string key="clearErrors:">id</string>
|
||||
<string key="openErrorInEditor:">id</string>
|
||||
<string key="openErrorsPanel:">id</string>
|
||||
<string key="openInXcode:">id</string>
|
||||
<string key="resetProject:">id</string>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="actionInfosByName">
|
||||
<object class="IBActionInfo" key="clearErrors:">
|
||||
@@ -2066,6 +2076,14 @@ AAEAAQAAAT0AAwAAAAEAAgAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA</bytes>
|
||||
<string key="name">openErrorsPanel:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="openInXcode:">
|
||||
<string key="name">openInXcode:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
<object class="IBActionInfo" key="resetProject:">
|
||||
<string key="name">resetProject:</string>
|
||||
<string key="candidateClassName">id</string>
|
||||
</object>
|
||||
</dictionary>
|
||||
<dictionary class="NSMutableDictionary" key="outlets">
|
||||
<string key="errorListController">NSArrayController</string>
|
||||
|
||||