New: updating Cappuccino from xCodeCapp

This PR add the possibility to update cappuccino from xCodeCapp. How does it work :

- Create a temporary file for cappuccino
- Download Cappuccino. The downloaded Cappuccino will be either the last release or the last version of the master branch (option in the preference)
- Make a jake clean
- Make a jake install

There is a small window to follow the progress of the install (3 steps ; download - clean - install).
If there is a issue with the install, the developer will be notify with which step failed (xCodeCapp internally log everything).
The environment var CAPP_NOSUDO is set to 1. It means, if a developer did a bootstrap or a previous jake install in sudo, the update of cappuccino will fail.

Changed the credit of xCodeCapp and pass it to the version 3.1
This commit is contained in:
Alexandre Wilhelm
2014-05-01 18:52:28 -07:00
parent 86d186e279
commit 4806c52ba6
7 changed files with 885 additions and 31 deletions
@@ -527,4 +527,11 @@ AppController *SharedAppControllerInstance = nil;
self.menuItemHistory.enabled = [projectHistory count] > 0;
}
#pragma mark - Cappuccino methods
- (IBAction)updateCappuccino:(id)sender
{
[self.xcc performSelectorInBackground:@selector(updateCappuccino) withObject:nil];
}
@end
+6 -2
View File
@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>XCCLastCappuccinoReleaseURL</key>
<string>https://github.com/cappuccino/cappuccino/archive/0.9.7.zip</string>
<key>XCCLastCappuccinoMasterBranchURL</key>
<string>https://github.com/cappuccino/cappuccino/archive/master.zip</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
@@ -17,11 +21,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>3.0.6</string>
<string>3.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>3.0.6</string>
<string>3.1</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
<key>LSUIElement</key>
+1
View File
@@ -28,5 +28,6 @@ extern NSString * const kDefaultMaxRecentProjects;
extern NSString * const kDefaultLogLevel;
extern NSString * const kDefaultAutoOpenXcodeProject;
extern NSString * const kDefaultUseSymlinkWhenCreatingProject;
extern NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch;
#endif
+1
View File
@@ -26,3 +26,4 @@ NSString * const kDefaultMaxRecentProjects = @"maxRecentProjects";
NSString * const kDefaultLogLevel = @"logLevel";
NSString * const kDefaultAutoOpenXcodeProject = @"autoOpenXcodeProject";
NSString * const kDefaultUseSymlinkWhenCreatingProject = @"useSymlinkWhenCreatingProject";
NSString * const kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch = @"updateCappuccinoWithLastVersionOfMasterBranch";
+9
View File
@@ -101,6 +101,9 @@ extern NSString * const XCCCappLintDidEndNotification;
// Whether we are currently processing source files
@property BOOL isProcessing;
// Whether we are currently processing source files
@property BOOL isCappuccinoUpdating;
// Whether $CAPP_BUILD is defined or not
@property BOOL isCappBuildDefined;
@@ -118,6 +121,10 @@ extern NSString * const XCCCappLintDidEndNotification;
@property (unsafe_unretained) IBOutlet NSTableView *errorTable;
@property (strong) IBOutlet NSArrayController *errorListController;
@property (strong) IBOutlet NSProgressIndicator *progressIndicator;
@property (strong) IBOutlet NSTextField *fieldCurrentTask;
@property (strong) IBOutlet NSPanel *updatingCappuccinoPanel;
- (IBAction)openErrorsPanel:(id)sender;
- (IBAction)clearErrors:(id)sender;
- (IBAction)openErrorInEditor:(id)sender;
@@ -153,6 +160,8 @@ extern NSString * const XCCCappLintDidEndNotification;
- (BOOL)checkCappLintForPath:(NSArray*)paths;
- (void)showCappLintErrors;
- (void)updateCappuccino;
@end
@interface XcodeCapp (SnowLeopard)
+251 -4
View File
@@ -230,7 +230,8 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
@"/usr/local/bin",
@"/usr/local/narwhal/bin",
@"~/narwhal/bin",
@"~/bin"
@"~/bin",
@"/usr/bin"
];
NSMutableArray *paths = [self.environmentPaths mutableCopy];
@@ -242,8 +243,11 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
// Make sure we are using jsc as the narwhal engine!
self.environment[@"NARWHAL_ENGINE"] = @"jsc";
// Make sure to not do something in sudo
self.environment[@"CAPP_NOSUDO"] = @"1";
self.executables = @[@"python", @"narwhal-jsc", @"objj", @"nib2cib", @"capp", @"capp_lint"];
self.executables = @[@"python", @"narwhal-jsc", @"objj", @"nib2cib", @"capp", @"capp_lint", @"jake", @"curl", @"unzip", @"rm"];
// This is used to get the env var of $CAPP_BUILD
NSDictionary *processEnvironment = [[NSProcessInfo processInfo] environment];
@@ -1265,15 +1269,29 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
#pragma mark - Shell Helpers
/*!
Run an NSTask with the given arguments
@param launchPath The executable to launch
@param arguments NSArray containing the NSTask arguments
@param returnType Determines whether to return stdout, stderr, either, or nothing in the response
@return NSDictionary containing the return status (NSNumber) and the response (NSString)
*/
- (NSDictionary *)runTaskWithLaunchPath:(NSString *)launchPath arguments:(NSArray *)arguments returnType:(XCCTaskReturnType)returnType
{
return [self runTaskWithLaunchPath:launchPath arguments:arguments returnType:returnType currentDirectoryPath:nil];
}
/*!
Run an NSTask with the given arguments
@param launchPath The executable to launch
@param arguments NSArray containing the NSTask arguments
@param returnType Determines whether to return stdout, stderr, either, or nothing in the response
@param the currentDirectoryPath for the task
@return NSDictionary containing the return status (NSNumber) and the response (NSString)
*/
- (NSDictionary *)runTaskWithLaunchPath:(NSString *)launchPath arguments:(NSArray *)arguments returnType:(XCCTaskReturnType)returnType
- (NSDictionary *)runTaskWithLaunchPath:(NSString *)launchPath arguments:(NSArray *)arguments returnType:(XCCTaskReturnType)returnType currentDirectoryPath:(NSString*)aCurrentDirectoryPath
{
NSTask *task = [NSTask new];
@@ -1282,7 +1300,10 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
task.environment = self.environment;
task.standardOutput = [NSPipe pipe];
task.standardError = [NSPipe pipe];
if (aCurrentDirectoryPath)
task.currentDirectoryPath = aCurrentDirectoryPath;
[task launch];
DDLogVerbose(@"Task launched: %@\n%@", launchPath, arguments);
@@ -1336,6 +1357,7 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
return YES;
}
#pragma mark - Source Files Management
- (BOOL)isObjjFile:(NSString *)path
@@ -1843,6 +1865,231 @@ void fsevents_callback(ConstFSEventStreamRef streamRef,
[self.errorListController addObjects:errors];
}
#pragma mark - Cappuccino update
- (void)updateCappuccino
{
[[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidStartNotification object:self];
[[NSApplication sharedApplication] activateIgnoringOtherApps:YES];
[self.updatingCappuccinoPanel makeKeyAndOrderFront:self];
self.isCappuccinoUpdating = YES;
[self.progressIndicator startAnimation:self];
[self.progressIndicator setMaxValue:4];
[self.progressIndicator setDoubleValue:0];
NSString *temporaryFolder = NSTemporaryDirectory();
if(![self _hasInitializedUpdateCappuccinoFromFolder:temporaryFolder] ||
![self _hasCleanedInstallOfCappuccinoFromFolder:temporaryFolder] ||
![self _hasInstalledCappuccinoFromFolder:temporaryFolder])
return;
[self notifyUserWithTitle:@"Update Cappuccino" message:@"Updating of Cappuccino completed"];
[self _incrementeProgressBarAndUpdateInformationFieldWithMessage:@"Updating completed"];
[self.progressIndicator stopAnimation:self];
self.isCappuccinoUpdating = NO;
[[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self];
}
- (BOOL)_hasInitializedUpdateCappuccinoFromFolder:(NSString*)aFolder
{
//Be sure to remove an old install
NSMutableArray *rmArguments = [NSMutableArray arrayWithObjects:@"-r", @"cappuccino", nil];
[self runTaskWithLaunchPath:self.executablePaths[@"rm"]
arguments:rmArguments
returnType:kTaskReturnTypeAny
currentDirectoryPath:aFolder];
[self _incrementeProgressBarAndUpdateInformationFieldWithMessage:@"Downloading Cappuccino"];
// Download the file
NSString *cappuccinoURL;
if ([[NSUserDefaults standardUserDefaults] boolForKey:kDefaultUpdateCappuccinoWithLastVersionOfMasterBranch])
cappuccinoURL = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"XCCLastCappuccinoMasterBranchURL"];
else
cappuccinoURL = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"XCCLastCappuccinoReleaseURL"];
NSString *destination = [NSString stringWithFormat:@"%@cappuccino.zip", aFolder];
NSMutableArray *arguments = [NSMutableArray arrayWithObjects:@"-Lk", cappuccinoURL, @"-o", destination, nil];
NSDictionary *taskResult = [self runTaskWithLaunchPath:self.executablePaths[@"curl"]
arguments:arguments
returnType:kTaskReturnTypeStdOut];
NSInteger status = [taskResult[@"status"] intValue];
if (status > 1)
{
[self _updatingCappuccinoFailedWithMessage:@"Unable to download Cappuccino"];
return NO;
}
//Unzip the file
NSMutableArray *unzipArguments = [NSMutableArray arrayWithObjects:@"-u", @"-o", @"-q", @"-d", @"cappuccino", @"cappuccino.zip", nil];
NSDictionary *unzipTaskResult = [self runTaskWithLaunchPath:self.executablePaths[@"unzip"]
arguments:unzipArguments
returnType:kTaskReturnTypeAny
currentDirectoryPath:aFolder];
NSInteger unzipStatus = [unzipTaskResult[@"status"] intValue];
if (unzipStatus >= 1)
{
DDLogVerbose(@"Unable to unzip Cappuccino");
[self _updatingCappuccinoFailedWithMessage:@"Unable to unzip Cappuccino"];
return NO;
}
return YES;
}
- (BOOL)_hasCleanedInstallOfCappuccinoFromFolder:(NSString*)aFolder
{
NSString* path = [self _cappuccinoPathForFolder:aFolder];
[self _incrementeProgressBarAndUpdateInformationFieldWithMessage:@"Jake clean"];
//Jake clean
NSMutableArray *jakeCleanArguments = [NSMutableArray arrayWithObjects:@"clean", nil];
NSDictionary *jakeCleanTaskResult = [self runJakeTaskWithArguments:jakeCleanArguments currentDirectoryPath:path];
NSInteger jakeInstallStatus = [jakeCleanTaskResult[@"status"] intValue];
if (jakeInstallStatus == 1)
{
DDLogVerbose(@"Jake clean failed: %@", jakeCleanTaskResult[@"response"]);
[self _updatingCappuccinoFailedWithMessage:@"Jake clean failed"];
return NO;
}
return YES;
}
- (BOOL)_hasInstalledCappuccinoFromFolder:(NSString*)aFolder
{
NSString* path = [self _cappuccinoPathForFolder:aFolder];
[self _incrementeProgressBarAndUpdateInformationFieldWithMessage:@"Jake install"];
//Jake install
NSMutableArray *jakeInstallArguments = [NSMutableArray arrayWithObjects:@"install", nil];
NSDictionary *jakeInstallTaskResult = [self runJakeTaskWithArguments:jakeInstallArguments currentDirectoryPath:path];
NSInteger jakeInstallStatus = [jakeInstallTaskResult[@"status"] intValue];
if (jakeInstallStatus == 1)
{
DDLogVerbose(@"Jake install failed: %@", jakeInstallTaskResult[@"response"]);
[self _updatingCappuccinoFailedWithMessage:@"Jake install failed"];
return NO;
}
return YES;
}
- (NSDictionary*)runJakeTaskWithArguments:(NSMutableArray*)arguments currentDirectoryPath:(NSString*)aCurrentDirectoryPath
{
NSString *launchPath = self.executablePaths[@"jake"];
NSTask *task = [NSTask new];
task.launchPath = launchPath;
task.arguments = arguments;
task.environment = self.environment;
task.standardOutput = [NSPipe new];
task.standardError = [NSPipe new];
if (aCurrentDirectoryPath)
task.currentDirectoryPath = aCurrentDirectoryPath;
// This is needed to log the jake
NSFileHandle* fhOut = [task.standardOutput fileHandleForReading];
[fhOut readInBackgroundAndNotify];
NSFileHandle* fhErr = [task.standardError fileHandleForReading];
[fhErr readInBackgroundAndNotify];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jakeReceivedData:) name:NSFileHandleReadCompletionNotification object:fhOut];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(jakeReceivedError:) name:NSFileHandleReadCompletionNotification object:fhErr];
[task launch];
DDLogVerbose(@"Task launched: %@\n%@", launchPath, arguments);
[task waitUntilExit];
DDLogVerbose(@"Task exited: %@:%d", launchPath, task.terminationStatus);
NSNumber *status = [NSNumber numberWithInt:task.terminationStatus];
NSData *data = nil;
if ([status intValue] == 0)
data = [[task.standardOutput fileHandleForReading] availableData];
else
data = [[task.standardError fileHandleForReading] availableData];
NSString *response = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSFileHandleReadCompletionNotification object:fhOut];
[[NSNotificationCenter defaultCenter] removeObserver:self name:NSFileHandleReadCompletionNotification object:fhErr];
return @{@"status" : status, @"response" : response};
}
-(void)jakeReceivedData:(NSNotification*)notification
{
NSData *data = [[notification userInfo] objectForKey:NSFileHandleNotificationDataItem];
NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
DDLogVerbose(@"%@", string);
[[notification object] readInBackgroundAndNotify];
}
-(void)jakeReceivedError:(NSNotification*)notification
{
NSData *data = [[notification userInfo] objectForKey:NSFileHandleNotificationDataItem];
NSString *string = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
DDLogVerbose(@"%@", string);
}
/*!
This return the current path where the tmp cappuccino was downloaded
*/
- (NSString*)_cappuccinoPathForFolder:(NSString*)aFolder
{
NSFileManager *fileManger = [NSFileManager defaultManager];
NSString *contentOfCappuccinoFolder = [[fileManger contentsOfDirectoryAtPath:[NSString stringWithFormat:@"%@cappuccino", aFolder] error:nil] firstObject];
return [NSString stringWithFormat:@"%@cappuccino/%@", aFolder, contentOfCappuccinoFolder];
}
- (void)_incrementeProgressBarAndUpdateInformationFieldWithMessage:(NSString*)aString
{
double currentValue = [self.progressIndicator doubleValue];
[self.progressIndicator setDoubleValue:++currentValue];
[self.fieldCurrentTask setStringValue:[NSString stringWithFormat:@"Step %.0f/%.0f : %@", [self.progressIndicator doubleValue], [self.progressIndicator maxValue], aString]];
}
- (void)_updatingCappuccinoFailedWithMessage:(NSString*)aMessage
{
[self.progressIndicator stopAnimation:self];
[self.progressIndicator setDoubleValue:0];
[self.fieldCurrentTask setStringValue:[NSString stringWithFormat:@"Issue : %@", aMessage]];
[self notifyUserWithTitle:@"Error updating Cappuccino" message:aMessage];
self.isCappuccinoUpdating = NO;
[[NSNotificationCenter defaultCenter] postNotificationName:XCCBatchDidEndNotification object:self];
}
#pragma mark - User notifications
- (NSString *)applicationNameForGrowl
+610 -25
View File
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1060</int>
<string key="IBDocument.SystemVersion">13D43</string>
<string key="IBDocument.SystemVersion">13C64</string>
<string key="IBDocument.InterfaceBuilderVersion">5056</string>
<string key="IBDocument.AppKitVersion">1265.20</string>
<string key="IBDocument.HIToolboxVersion">698.00</string>
<string key="IBDocument.AppKitVersion">1265.19</string>
<string key="IBDocument.HIToolboxVersion">697.40</string>
<dictionary class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="com.apple.InterfaceBuilder.CocoaPlugin">5056</string>
<string key="com.apple.pdfkit.ibplugin">5056</string>
@@ -22,6 +22,7 @@
<string>NSMenuItem</string>
<string>NSPopUpButton</string>
<string>NSPopUpButtonCell</string>
<string>NSProgressIndicator</string>
<string>NSScrollView</string>
<string>NSScroller</string>
<string>NSTableColumn</string>
@@ -158,6 +159,24 @@
<reference key="NSOnImage" ref="251085437"/>
<reference key="NSMixedImage" ref="317740181"/>
</object>
<object class="NSMenuItem" id="118802711">
<reference key="NSMenu" ref="763458174"/>
<string key="NSTitle">Update Cappuccino</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="251085437"/>
<reference key="NSMixedImage" ref="317740181"/>
</object>
<object class="NSMenuItem" id="312079230">
<reference key="NSMenu" ref="763458174"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="251085437"/>
<reference key="NSMixedImage" ref="317740181"/>
</object>
<object class="NSMenuItem" id="621759105">
<reference key="NSMenu" ref="763458174"/>
<string key="NSTitle">About XcodeCapp...</string>
@@ -209,28 +228,31 @@
<object class="NSWindowTemplate" id="537932572">
<int key="NSWindowStyleMask">3</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{196, 240}, {402, 202}}</string>
<string key="NSWindowRect">{{196, 240}, {402, 247}}</string>
<int key="NSWTFlags">1618478080</int>
<string key="NSWindowTitle">About</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="930594929">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="152451023">
<reference key="NSNextResponder" ref="930594929"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{164, 20}, {203, 98}}</string>
<string key="NSFrame">{{164, 20}, {203, 143}}</string>
<reference key="NSSuperview" ref="930594929"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="488063721">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">4326400</int>
<string type="base64-UTF8" key="NSContents">WGNvZGVDYXBwIDMgZGV2ZWxvcGVkIGJ5OgogICAgQXBhcmFqaXRhIEZpc2htYW4KICAgIGFwYXJhaml0
YUBhcGFyYWppdGEuY29tCgpPcmlnaW5hbCBDb2NvYSB2ZXJzaW9uIGRldmVsb3BlZCBieToKICAgIEFu
dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
YUBhcGFyYWppdGEuY29tCiAgICAKICAgIEFsZXhhbmRyZSBXaWxoZWxtCiAgICBhbGV4YW5kcmUud2ls
aGVsbWZyQGdtYWlsLmNvbQoKT3JpZ2luYWwgQ29jb2EgdmVyc2lvbiBkZXZlbG9wZWQgYnk6CiAgICBB
bnRvaW5lIE1lcmNhZGFsCiAgICBhbnRvaW5lLm1lcmNhZGFsQGdtYWlsLmNvbQ</string>
<object class="NSFont" key="NSSupport" id="26">
<string key="NSName">.LucidaGrandeUI</string>
<double key="NSSize">11</double>
@@ -257,8 +279,9 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<object class="NSTextField" id="108892689">
<reference key="NSNextResponder" ref="930594929"/>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{164, 126}, {221, 74}}</string>
<string key="NSFrame">{{164, 171}, {221, 74}}</string>
<reference key="NSSuperview" ref="930594929"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="152451023"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="49688699">
@@ -304,8 +327,9 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
<string>NeXT TIFF v4.0 pasteboard type</string>
</set>
<string key="NSFrame">{{17, 63}, {128, 128}}</string>
<string key="NSFrame">{{17, 108}, {128, 128}}</string>
<reference key="NSSuperview" ref="930594929"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="108892689"/>
<bool key="NSEnabled">YES</bool>
<object class="NSImageCell" key="NSCell" id="906963775">
@@ -324,7 +348,9 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<bool key="NSEditable">YES</bool>
</object>
</array>
<string key="NSFrameSize">{402, 202}</string>
<string key="NSFrameSize">{402, 247}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="247765970"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
@@ -342,7 +368,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<nil key="NSUserInterfaceItemIdentifier"/>
<string key="NSWindowContentMinSize">{315, 77}</string>
<object class="NSView" key="NSWindowView" id="938592555">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSScrollView" id="396547698">
@@ -358,6 +384,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{550, 201}</string>
<reference key="NSSuperview" ref="726555181"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="826896045"/>
<bool key="NSEnabled">YES</bool>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -434,6 +461,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</array>
<string key="NSFrame">{{1, 1}, {550, 201}}</string>
<reference key="NSSuperview" ref="396547698"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="227701162"/>
<reference key="NSDocView" ref="227701162"/>
<reference key="NSBGColor" ref="101140578"/>
@@ -444,6 +472,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 273}, {512, 16}}</string>
<reference key="NSSuperview" ref="396547698"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="824465154"/>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
@@ -455,6 +484,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{535, 1}, {16, 45}}</string>
<reference key="NSSuperview" ref="396547698"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="305528183"/>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="396547698"/>
@@ -463,6 +493,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</array>
<string key="NSFrame">{{-1, 35}, {552, 203}}</string>
<reference key="NSSuperview" ref="938592555"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="726555181"/>
<int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="826896045"/>
@@ -478,6 +509,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{352, 8}, {85, 19}}</string>
<reference key="NSSuperview" ref="938592555"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="504749152"/>
<string key="NSHuggingPriority">{250, 750}</string>
<bool key="NSEnabled">YES</bool>
@@ -506,6 +538,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{20, 8}, {85, 19}}</string>
<reference key="NSSuperview" ref="938592555"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="574276998"/>
<string key="NSHuggingPriority">{250, 750}</string>
<bool key="NSEnabled">YES</bool>
@@ -530,6 +563,8 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{445, 8}, {85, 19}}</string>
<reference key="NSSuperview" ref="938592555"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSHuggingPriority">{250, 750}</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="454979058">
@@ -550,9 +585,11 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</object>
</array>
<string key="NSFrameSize">{550, 237}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="396547698"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSScreenRect">{{1440, -180}, {1920, 1058}}</string>
<string key="NSMinSize">{315, 99}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<string key="NSFrameAutosaveName">errorPanel</string>
@@ -561,14 +598,14 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<object class="NSWindowTemplate" id="484209508">
<int key="NSWindowStyleMask">3</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{1964, 505}, {393, 357}}</string>
<string key="NSWindowRect">{{1964, 505}, {479, 415}}</string>
<int key="NSWTFlags">1618478080</int>
<string key="NSWindowTitle">Preferences</string>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="853177344">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSBox" id="359969914">
@@ -584,6 +621,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 81}, {271, 18}}</string>
<reference key="NSSuperview" ref="881981747"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="668731100"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1009491457">
@@ -617,6 +655,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 51}, {241, 18}}</string>
<reference key="NSSuperview" ref="881981747"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="59325359"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="287093958">
@@ -641,6 +680,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 109}, {298, 18}}</string>
<reference key="NSSuperview" ref="881981747"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="49684265"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="992910630">
@@ -665,6 +705,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 20}, {106, 17}}</string>
<reference key="NSSuperview" ref="881981747"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="665261882"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="649999930">
@@ -684,6 +725,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{124, 14}, {56, 26}}</string>
<reference key="NSSuperview" ref="881981747"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="913026852"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="470914621">
@@ -756,13 +798,15 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrame">{{1, 1}, {357, 139}}</string>
<string key="NSFrame">{{1, 1}, {443, 139}}</string>
<reference key="NSSuperview" ref="359969914"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="497174199"/>
</object>
</array>
<string key="NSFrame">{{17, 187}, {359, 155}}</string>
<string key="NSFrame">{{17, 245}, {445, 155}}</string>
<reference key="NSSuperview" ref="853177344"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="881981747"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -799,6 +843,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{146, 12}, {171, 18}}</string>
<reference key="NSSuperview" ref="224066843"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="185960776"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="540317451">
@@ -823,6 +868,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 39}, {126, 17}}</string>
<reference key="NSSuperview" ref="224066843"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="921215684"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1062521360">
@@ -842,6 +888,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{146, 38}, {171, 18}}</string>
<reference key="NSSuperview" ref="224066843"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="604934510"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="873410832">
@@ -862,13 +909,15 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrame">{{1, 1}, {357, 66}}</string>
<string key="NSFrame">{{1, 1}, {443, 66}}</string>
<reference key="NSSuperview" ref="913026852"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="387661514"/>
</object>
</array>
<string key="NSFrame">{{17, 101}, {359, 82}}</string>
<string key="NSFrame">{{17, 159}, {445, 82}}</string>
<reference key="NSSuperview" ref="853177344"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="224066843"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -901,6 +950,8 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{146, 12}, {171, 18}}</string>
<reference key="NSSuperview" ref="122117781"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="929990427"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="763278609">
<int key="NSCellFlags">-2080374784</int>
@@ -924,6 +975,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{146, 37}, {171, 18}}</string>
<reference key="NSSuperview" ref="122117781"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="666946383"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="350942507">
@@ -948,6 +1000,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 38}, {126, 17}}</string>
<reference key="NSSuperview" ref="122117781"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="188125885"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="304760948">
@@ -963,14 +1016,16 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSTextFieldAlignmentRectInsetsVersion">1</int>
</object>
</array>
<string key="NSFrame">{{1, 1}, {357, 65}}</string>
<string key="NSFrame">{{1, 1}, {443, 65}}</string>
<reference key="NSSuperview" ref="185960776"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="36622245"/>
<string key="NSReuseIdentifierKey">_NS:11</string>
</object>
</array>
<string key="NSFrame">{{17, 16}, {359, 81}}</string>
<string key="NSFrame">{{17, 74}, {445, 81}}</string>
<reference key="NSSuperview" ref="853177344"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="122117781"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSOffsets">{0, 0}</string>
@@ -991,11 +1046,75 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<int key="NSTitlePosition">2</int>
<bool key="NSTransparent">NO</bool>
</object>
<object class="NSBox" id="929990427">
<reference key="NSNextResponder" ref="853177344"/>
<int key="NSvFlags">12</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSView" id="435554705">
<reference key="NSNextResponder" ref="929990427"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSButton" id="660812811">
<reference key="NSNextResponder" ref="435554705"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{16, 12}, {411, 18}}</string>
<reference key="NSSuperview" ref="435554705"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="640546388">
<int key="NSCellFlags">-2080374784</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Update Cappuccino with the last version of the master branch</string>
<reference key="NSSupport" ref="986470281"/>
<reference key="NSControlView" ref="660812811"/>
<int key="NSButtonFlags">1211912448</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="795665759"/>
<reference key="NSAlternateImage" ref="989917290"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrame">{{1, 1}, {443, 38}}</string>
<reference key="NSSuperview" ref="929990427"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="660812811"/>
</object>
</array>
<string key="NSFrame">{{17, 16}, {445, 54}}</string>
<reference key="NSSuperview" ref="853177344"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="435554705"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Develop</string>
<reference key="NSSupport" ref="355655841"/>
<reference key="NSBackgroundColor" ref="819245234"/>
<object class="NSColor" key="NSTextColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwLjgAA</bytes>
</object>
</object>
<reference key="NSContentView" ref="435554705"/>
<int key="NSBorderType">1</int>
<int key="NSBoxType">0</int>
<int key="NSTitlePosition">2</int>
<bool key="NSTransparent">NO</bool>
</object>
</array>
<string key="NSFrameSize">{393, 357}</string>
<string key="NSFrameSize">{479, 415}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="359969914"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSScreenRect">{{1440, -180}, {1920, 1058}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<string key="NSFrameAutosaveName">xcc-prefs</string>
<bool key="NSWindowIsRestorable">YES</bool>
@@ -1010,7 +1129,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="993549244">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="PDFView" id="921834304">
@@ -1022,6 +1141,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</set>
<string key="NSFrame">{{0, 8}, {716, 654}}</string>
<reference key="NSSuperview" ref="993549244"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSViewIsLayerTreeHost">YES</bool>
<int key="DisplayMode">1</int>
@@ -1031,6 +1151,8 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</object>
</array>
<string key="NSFrameSize">{716, 662}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="921834304"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
@@ -1054,6 +1176,91 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<bool key="NSFilterRestrictsInsertion">YES</bool>
<bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
</object>
<object class="NSWindowTemplate" id="950592726">
<int key="NSWindowStyleMask">7</int>
<int key="NSWindowBacking">2</int>
<string key="NSWindowRect">{{139, 81}, {357, 84}}</string>
<int key="NSWTFlags">1685586944</int>
<string key="NSWindowTitle">Updating Cappuccino</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="77206153">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="230478614">
<reference key="NSNextResponder" ref="77206153"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{18, 22}, {251, 17}}</string>
<reference key="NSSuperview" ref="77206153"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="511588074"/>
<string key="NSReuseIdentifierKey">_NS:397</string>
<string key="NSHuggingPriority">{251, 750}</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="642076266">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">Step 1/5 : Downloading Cappuccino</string>
<reference key="NSSupport" ref="986470281"/>
<string key="NSCellIdentifier">_NS:397</string>
<reference key="NSControlView" ref="230478614"/>
<reference key="NSBackgroundColor" ref="68626488"/>
<reference key="NSTextColor" ref="606065889"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSTextFieldAlignmentRectInsetsVersion">1</int>
</object>
<object class="NSButton" id="511588074">
<reference key="NSNextResponder" ref="77206153"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{269, 13}, {74, 32}}</string>
<reference key="NSSuperview" ref="77206153"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="185132231">
<int key="NSCellFlags">67108864</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Close</string>
<reference key="NSSupport" ref="986470281"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="511588074"/>
<int key="NSButtonFlags">-2038284288</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSProgressIndicator" id="231116691">
<reference key="NSNextResponder" ref="77206153"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{20, 45}, {317, 20}}</string>
<reference key="NSSuperview" ref="77206153"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="230478614"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<string key="NSHuggingPriority">{250, 250}</string>
<int key="NSpiFlags">16397</int>
<double key="NSMaxValue">5</double>
</object>
</array>
<string key="NSFrameSize">{357, 84}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="231116691"/>
<string key="NSReuseIdentifierKey">_NS:21</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
<string key="NSFrameAutosaveName">updatingCappuccinoPanel</string>
<bool key="NSWindowIsRestorable">YES</bool>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<bool key="usesAutoincrementingIDs">NO</bool>
@@ -1218,6 +1425,14 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</object>
<string key="id">617</string>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">updateCappuccino:</string>
<reference key="source" ref="709365361"/>
<reference key="destination" ref="118802711"/>
</object>
<string key="id">M7T-qw-MgB</string>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performClose:</string>
@@ -1290,6 +1505,14 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</object>
<string key="id">6Xe-Bt-eXK</string>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">save:</string>
<reference key="source" ref="246574361"/>
<reference key="destination" ref="660812811"/>
</object>
<string key="id">30N-ga-LBo</string>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">openXcodeProject:</string>
@@ -1378,6 +1601,30 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</object>
<string key="id">748</string>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">fieldCurrentTask</string>
<reference key="source" ref="699246115"/>
<reference key="destination" ref="230478614"/>
</object>
<string key="id">P4O-YG-v1J</string>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">progressIndicator</string>
<reference key="source" ref="699246115"/>
<reference key="destination" ref="231116691"/>
</object>
<string key="id">Z7k-63-Ujv</string>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">updatingCappuccinoPanel</string>
<reference key="source" ref="699246115"/>
<reference key="destination" ref="950592726"/>
</object>
<string key="id">HJ3-bt-3EP</string>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">values.XCCReopenLastProject</string>
@@ -1732,6 +1979,34 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</object>
<string key="id">J8w-G4-Pzy</string>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">orderOut:</string>
<reference key="source" ref="950592726"/>
<reference key="destination" ref="511588074"/>
</object>
<string key="id">dP2-Fc-one</string>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: values.updateCappuccinoWithLastVersionOfMasterBranch</string>
<reference key="source" ref="660812811"/>
<reference key="destination" ref="246574361"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="660812811"/>
<reference key="NSDestination" ref="246574361"/>
<string key="NSLabel">value: values.updateCappuccinoWithLastVersionOfMasterBranch</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">values.updateCappuccinoWithLastVersionOfMasterBranch</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>
<string key="id">1fo-ym-Q0u</string>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">projectPath.length</string>
@@ -1804,6 +2079,26 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
</object>
<string key="id">j0c-o6-KBW</string>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">enabled: isCappuccinoUpdating</string>
<reference key="source" ref="118802711"/>
<reference key="destination" ref="699246115"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="118802711"/>
<reference key="NSDestination" ref="699246115"/>
<string key="NSLabel">enabled: isCappuccinoUpdating</string>
<string key="NSBinding">enabled</string>
<string key="NSKeyPath">isCappuccinoUpdating</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">NSNegateBoolean</string>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<string key="id">aof-Pn-nzf</string>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -1856,6 +2151,8 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<reference ref="344530029"/>
<reference ref="941553825"/>
<reference ref="208060395"/>
<reference ref="312079230"/>
<reference ref="118802711"/>
</array>
<reference key="parent" ref="0"/>
</object>
@@ -2094,6 +2391,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<reference ref="359969914"/>
<reference ref="913026852"/>
<reference ref="185960776"/>
<reference ref="929990427"/>
</array>
<reference key="parent" ref="484209508"/>
</object>
@@ -2359,6 +2657,86 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<reference key="object" ref="304760948"/>
<reference key="parent" ref="36622245"/>
</object>
<object class="IBObjectRecord">
<string key="id">M7S-MC-N7d</string>
<reference key="object" ref="929990427"/>
<array class="NSMutableArray" key="children">
<reference ref="660812811"/>
</array>
<reference key="parent" ref="853177344"/>
</object>
<object class="IBObjectRecord">
<string key="id">GR3-Dn-qSe</string>
<reference key="object" ref="660812811"/>
<array class="NSMutableArray" key="children">
<reference ref="640546388"/>
</array>
<reference key="parent" ref="929990427"/>
</object>
<object class="IBObjectRecord">
<string key="id">LOW-1X-7ih</string>
<reference key="object" ref="640546388"/>
<reference key="parent" ref="660812811"/>
</object>
<object class="IBObjectRecord">
<string key="id">om5-3M-ZoK</string>
<reference key="object" ref="312079230"/>
<reference key="parent" ref="763458174"/>
</object>
<object class="IBObjectRecord">
<string key="id">ubl-jf-ybu</string>
<reference key="object" ref="118802711"/>
<reference key="parent" ref="763458174"/>
</object>
<object class="IBObjectRecord">
<string key="id">8BD-V9-Gcp</string>
<reference key="object" ref="950592726"/>
<array class="NSMutableArray" key="children">
<reference ref="77206153"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<string key="id">E18-tY-KOl</string>
<reference key="object" ref="77206153"/>
<array class="NSMutableArray" key="children">
<reference ref="231116691"/>
<reference ref="230478614"/>
<reference ref="511588074"/>
</array>
<reference key="parent" ref="950592726"/>
</object>
<object class="IBObjectRecord">
<string key="id">9wn-zh-iT9</string>
<reference key="object" ref="230478614"/>
<array class="NSMutableArray" key="children">
<reference ref="642076266"/>
</array>
<reference key="parent" ref="77206153"/>
</object>
<object class="IBObjectRecord">
<string key="id">5vI-kk-gfO</string>
<reference key="object" ref="642076266"/>
<reference key="parent" ref="230478614"/>
</object>
<object class="IBObjectRecord">
<string key="id">D0i-5i-RLQ</string>
<reference key="object" ref="511588074"/>
<array class="NSMutableArray" key="children">
<reference ref="185132231"/>
</array>
<reference key="parent" ref="77206153"/>
</object>
<object class="IBObjectRecord">
<string key="id">KxJ-gX-jZV</string>
<reference key="object" ref="185132231"/>
<reference key="parent" ref="511588074"/>
</object>
<object class="IBObjectRecord">
<string key="id">o12-G8-NOm</string>
<reference key="object" ref="231116691"/>
<reference key="parent" ref="77206153"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -2481,6 +2859,7 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<boolean value="NO" key="598.showNotes"/>
<string key="599.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="599.showNotes"/>
<string key="5vI-kk-gfO.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="600.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="600.showNotes"/>
<string key="601.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -2578,8 +2957,31 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<boolean value="NO" key="859.showNotes"/>
<string key="860.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="860.showNotes"/>
<string key="8BD-V9-Gcp.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="8BD-V9-Gcp.NSWindowTemplate.visibleAtLaunch"/>
<string key="9wn-zh-iT9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="BYW-Rk-rZ4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="BYW-Rk-rZ4.showNotes"/>
<string key="D0i-5i-RLQ.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="E18-tY-KOl.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableDictionary" key="GR3-Dn-qSe.IBAttributePlaceholdersKey">
<string key="NS.key.0">ToolTip</string>
<object class="IBToolTipAttribute" key="NS.object.0">
<string key="name">ToolTip</string>
<reference key="object" ref="660812811"/>
<string key="toolTip">If this is checked, xCodeCapp will take the last version of Cappuccino on the master branch to install Cappuccino</string>
</object>
</object>
<boolean value="NO" key="GR3-Dn-qSe.IBNSControlSetsMaxLayoutWidthAtFirstLayoutMetadataKey"/>
<string key="GR3-Dn-qSe.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference key="GR3-Dn-qSe.IBUserGuides" ref="0"/>
<boolean value="NO" key="GR3-Dn-qSe.showNotes"/>
<string key="KxJ-gX-jZV.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="LOW-1X-7ih.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="LOW-1X-7ih.showNotes"/>
<string key="M7S-MC-N7d.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference key="M7S-MC-N7d.IBUserGuides" ref="0"/>
<boolean value="NO" key="M7S-MC-N7d.showNotes"/>
<string key="PcB-xW-jUW.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="PcB-xW-jUW.showNotes"/>
<object class="NSMutableDictionary" key="QAd-SJ-XIV.IBAttributePlaceholdersKey">
@@ -2614,18 +3016,201 @@ dG9pbmUgTWVyY2FkYWwKICAgIGFudG9pbmUubWVyY2FkYWxAZ21haWwuY29tA</string>
<boolean value="NO" key="iiD-Nj-M6o.showNotes"/>
<string key="itE-v1-Sv4.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="itE-v1-Sv4.showNotes"/>
<string key="o12-G8-NOm.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="om5-3M-ZoK.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="ptR-WM-qet.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="ptR-WM-qet.showNotes"/>
<string key="qFm-3c-NH7.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="sZm-jR-Tet.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="sZm-jR-Tet.showNotes"/>
<string key="ubl-jf-ybu.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">AppController</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="createProject:">id</string>
<string key="loadProject:">id</string>
<string key="openAbout:">id</string>
<string key="openHelp:">id</string>
<string key="openPreferences:">id</string>
<string key="showInFinder:">id</string>
<string key="updateCappuccino:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="createProject:">
<string key="name">createProject:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="loadProject:">
<string key="name">loadProject:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openAbout:">
<string key="name">openAbout:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openHelp:">
<string key="name">openHelp:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openPreferences:">
<string key="name">openPreferences:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="showInFinder:">
<string key="name">showInFinder:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="updateCappuccino:">
<string key="name">updateCappuccino:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="aboutWindow">NSPanel</string>
<string key="helpView">PDFView</string>
<string key="helpWindow">NSWindow</string>
<string key="menuItemHistory">NSMenuItem</string>
<string key="menuItemOpenProject">NSMenuItem</string>
<string key="menuItemShowInFinder">NSMenuItem</string>
<string key="preferencesController">NSUserDefaultsController</string>
<string key="preferencesWindow">NSWindow</string>
<string key="statusMenu">NSMenu</string>
<string key="xcc">XcodeCapp</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="aboutWindow">
<string key="name">aboutWindow</string>
<string key="candidateClassName">NSPanel</string>
</object>
<object class="IBToOneOutletInfo" key="helpView">
<string key="name">helpView</string>
<string key="candidateClassName">PDFView</string>
</object>
<object class="IBToOneOutletInfo" key="helpWindow">
<string key="name">helpWindow</string>
<string key="candidateClassName">NSWindow</string>
</object>
<object class="IBToOneOutletInfo" key="menuItemHistory">
<string key="name">menuItemHistory</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="menuItemOpenProject">
<string key="name">menuItemOpenProject</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="menuItemShowInFinder">
<string key="name">menuItemShowInFinder</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="preferencesController">
<string key="name">preferencesController</string>
<string key="candidateClassName">NSUserDefaultsController</string>
</object>
<object class="IBToOneOutletInfo" key="preferencesWindow">
<string key="name">preferencesWindow</string>
<string key="candidateClassName">NSWindow</string>
</object>
<object class="IBToOneOutletInfo" key="statusMenu">
<string key="name">statusMenu</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo" key="xcc">
<string key="name">xcc</string>
<string key="candidateClassName">XcodeCapp</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/AppController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">XcodeCapp</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="checkProjectWithCappLint:">id</string>
<string key="clearErrors:">id</string>
<string key="openErrorInEditor:">id</string>
<string key="openErrorsPanel:">id</string>
<string key="openXcodeProject:">id</string>
<string key="synchronizeProject:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="checkProjectWithCappLint:">
<string key="name">checkProjectWithCappLint:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="clearErrors:">
<string key="name">clearErrors:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openErrorInEditor:">
<string key="name">openErrorInEditor:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openErrorsPanel:">
<string key="name">openErrorsPanel:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openXcodeProject:">
<string key="name">openXcodeProject:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="synchronizeProject:">
<string key="name">synchronizeProject:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="errorListController">NSArrayController</string>
<string key="errorTable">NSTableView</string>
<string key="errorsPanel">NSPanel</string>
<string key="fieldCurrentTask">NSTextField</string>
<string key="progressIndicator">NSProgressIndicator</string>
<string key="updatingCappuccinoPanel">NSPanel</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="errorListController">
<string key="name">errorListController</string>
<string key="candidateClassName">NSArrayController</string>
</object>
<object class="IBToOneOutletInfo" key="errorTable">
<string key="name">errorTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo" key="errorsPanel">
<string key="name">errorsPanel</string>
<string key="candidateClassName">NSPanel</string>
</object>
<object class="IBToOneOutletInfo" key="fieldCurrentTask">
<string key="name">fieldCurrentTask</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo" key="progressIndicator">
<string key="name">progressIndicator</string>
<string key="candidateClassName">NSProgressIndicator</string>
</object>
<object class="IBToOneOutletInfo" key="updatingCappuccinoPanel">
<string key="name">updatingCappuccinoPanel</string>
<string key="candidateClassName">NSPanel</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/XcodeCapp.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.previouslyAttemptedUpgradeToXcode5">YES</bool>