diff --git a/AppKit/CPBox.j b/AppKit/CPBox.j index bdff6d9c1..a96f10c85 100644 --- a/AppKit/CPBox.j +++ b/AppKit/CPBox.j @@ -19,25 +19,25 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - + @import "CPView.j" // CPBorderType CPNoBorder = 0; -CPLineBorder = 1; +CPLineBorder = 1; CPBezelBorder = 2; CPGrooveBorder = 3; @implementation CPBox : CPView { CPBorderType _borderType; - + CPColor _borderColor; CPColor _fillColor; - + float _cornerRadius; float _borderWidth; - + CPSize _contentMargin; CPView _contentView; } @@ -50,20 +50,20 @@ CPGrooveBorder = 3; [box setFrameFromContentFrame:[aView frame]]; [enclosingView replaceSubview:aView with:box]; - + [box setContentView:aView]; - + return box; } - (id)initWithFrame:(CPRect)frameRect { self = [super initWithFrame:frameRect]; - + if (self) - { + { _borderType = CPBezelBorder; - _fillColor = [CPColor colorWithWhite:0.75 alpha:0.1]; + _fillColor = [CPColor clearColor]; _borderColor = [CPColor blackColor]; _borderWidth = 1.0; @@ -71,6 +71,8 @@ CPGrooveBorder = 3; _contentView = [[CPView alloc] initWithFrame:[self bounds]]; [_contentView setAutoresizingMask:CPViewWidthSizable|CPViewHeightSizable]; + + [self setAutoresizesSubviews:YES]; [self addSubview:_contentView]; } @@ -164,8 +166,8 @@ CPGrooveBorder = 3; [aView setFrame:CGRectInset([self bounds], _contentMargin.width + _borderWidth, _contentMargin.height + _borderWidth)]; [aView setAutoresizingMask:CPViewWidthSizable|CPViewHeightSizable]; [self replaceSubview:_contentView with:aView]; - - _contentView = aView; + + _contentView = aView; } - (CPSize)contentViewMargins @@ -177,7 +179,7 @@ CPGrooveBorder = 3; { if(size.width < 0 || size.height < 0) [CPException raise:CPGenericException reason:@"Margins must be positive"]; - + _contentMargin = CGSizeMakeCopy(size); [self setNeedsDisplay:YES]; } @@ -191,57 +193,97 @@ CPGrooveBorder = 3; - (void)sizeToFit { var contentFrame = [_contentView frame]; - - [self setFrameSize:CGSizeMake(contentFrame.size.width + _contentMargin.width * 2, + + [self setFrameSize:CGSizeMake(contentFrame.size.width + _contentMargin.width * 2, contentFrame.size.height + _contentMargin.height * 2)]; - + [_contentView setFrameOrigin:CGPointMake(_contentMargin.width, _contentMargin.height)]; } - (void)drawRect:(CPRect)rect { + if (_borderType === CPNoBorder) + return; + var bounds = [self bounds], - aContext = [[CPGraphicsContext currentContext] graphicsPort], - border2 = _borderWidth/2, + context = [[CPGraphicsContext currentContext] graphicsPort]; - strokeRect = CGRectMake(bounds.origin.x + border2, - bounds.origin.y + border2, - bounds.size.width - _borderWidth, - bounds.size.height - _borderWidth), - - fillRect = CGRectMake(bounds.origin.x + border2, - bounds.origin.y + border2, - bounds.size.width - _borderWidth, - bounds.size.height - _borderWidth); + CGContextSetFillColor(context, [self fillColor]); - CGContextSetFillColor(aContext, [self fillColor]); - CGContextSetLineWidth(aContext, _borderWidth); - - switch(_borderType) + switch (_borderType) { - case CPLineBorder: CGContextSetStrokeColor(aContext, [self borderColor]); - CGContextFillRoundedRectangleInRect(aContext, fillRect, _cornerRadius, YES, YES, YES, YES); - CGContextStrokeRoundedRectangleInRect(aContext, strokeRect, _cornerRadius, YES, YES, YES, YES); - break; + case CPBezelBorder: + var sides = [CPMinYEdge, CPMaxXEdge, CPMaxYEdge, CPMinXEdge], + sideGray = 190.0 / 255.0, + grays = [142.0 / 255.0, sideGray, sideGray, sideGray], + borderWidth = _borderWidth; - case CPBezelBorder: CGContextSetStrokeColor(aContext, [CPColor colorWithWhite:0 alpha:0.42]); - CGContextFillRoundedRectangleInRect(aContext, fillRect, _cornerRadius, YES, YES, YES, YES); - CGContextSetStrokeColor(aContext, [CPColor colorWithWhite:190.0/255.0 alpha:1.0]); - CGContextBeginPath(aContext); - CGContextMoveToPoint(aContext, strokeRect.origin.x, strokeRect.origin.y); - CGContextAddLineToPoint(aContext, CGRectGetMinX(strokeRect), CGRectGetMaxY(strokeRect)), - CGContextAddLineToPoint(aContext, CGRectGetMaxX(strokeRect), CGRectGetMaxY(strokeRect)), - CGContextAddLineToPoint(aContext, CGRectGetMaxX(strokeRect), CGRectGetMinY(strokeRect)), - CGContextStrokePath(aContext); - CGContextSetStrokeColor(aContext, [CPColor colorWithWhite:142.0/255.0 alpha:1.0]); - CGContextBeginPath(aContext); - CGContextMoveToPoint(aContext, bounds.origin.x, strokeRect.origin.y); - CGContextAddLineToPoint(aContext, CGRectGetMaxX(bounds), CGRectGetMinY(strokeRect)); - CGContextStrokePath(aContext); - break; + while (borderWidth--) + bounds = CPDrawTiledRects(bounds, bounds, sides, grays); - default: break; + CGContextFillRect(context, bounds); + break; + + default: + bounds = CGRectInset(bounds, _borderWidth / 2.0, _borderWidth / 2.0); + + CGContextSetStrokeColor(context, [self borderColor]); + CGContextSetLineWidth(context, _borderWidth); + CGContextFillRoundedRectangleInRect(context, bounds, _cornerRadius, YES, YES, YES, YES); + CGContextStrokeRoundedRectangleInRect(context, bounds, _cornerRadius, YES, YES, YES, YES); + break; } } @end + +var CPBoxBorderTypeKey = @"CPBoxBorderTypeKey", + CPBoxBorderColorKey = @"CPBoxBorderColorKey", + CPBoxFillColorKey = @"CPBoxFillColorKey", + CPBoxCornerRadiusKey = @"CPBoxCornerRadiusKey", + CPBoxBorderWidthKey = @"CPBoxBorderWidthKey", + CPBoxContentMarginKey = @"CPBoxContentMarginKey"; + +@implementation CPBox (CPCoding) + +- (id)initWithCoder:(CPCoder)aCoder +{ + self = [super initWithCoder:aCoder]; + + if (self) + { + _borderType = [aCoder decodeIntForKey:CPBoxBorderTypeKey]; + + _borderColor = [aCoder decodeObjectForKey:CPBoxBorderColorKey]; + _fillColor = [aCoder decodeObjectForKey:CPBoxFillColorKey]; + + _cornerRadius = [aCoder decodeFloatForKey:CPBoxCornerRadiusKey]; + _borderWidth = [aCoder decodeFloatForKey:CPBoxBorderWidthKey]; + + _contentMargin = [aCoder decodeSizeForKey:CPBoxContentMarginKey]; + + _contentView = [self subviews][0]; + + [self setAutoresizesSubviews:YES]; + [_contentView setAutoresizingMask:CPViewWidthSizable|CPViewHeightSizable]; + } + + return self; +} + +- (void)encodeWithCoder:(CPCoder)aCoder +{ + [super encodeWithCoder:aCoder]; + + [aCoder encodeInt:_borderType forKey:CPBoxBorderTypeKey]; + + [aCoder encodeObject:_borderColor forKey:CPBoxBorderColorKey]; + [aCoder encodeObject:_fillColor forKey:CPBoxFillColorKey]; + + [aCoder encodeFloat:_cornerRadius forKey:CPBoxCornerRadiusKey]; + [aCoder encodeFloat:_borderWidth forKey:CPBoxBorderWidthKey]; + + [aCoder encodeSize:_contentMargin forKey:CPBoxContentMarginKey]; +} + +@end diff --git a/AppKit/CPGraphics.j b/AppKit/CPGraphics.j index 6ac5ed67e..caf4c82aa 100644 --- a/AppKit/CPGraphics.j +++ b/AppKit/CPGraphics.j @@ -38,7 +38,7 @@ function CPDrawTiledRects( var colors = []; for (var i = 0; i < grays.length; ++i) - colors.push([CPColor colorWithWhite:grays[i] alpha:1.0]); + colors.push([CPColor colorWithCalibratedWhite:grays[i] alpha:1.0]); return CPDrawColorTiledRects(boundsRect, clipRect, sides, colors); } @@ -57,6 +57,9 @@ function CPDrawColorTiledRects( remainder = _CGRectMakeZero(), context = [[CPGraphicsContext currentContext] graphicsPort]; + CGContextSaveGState(context); + CGContextSetLineWidth(context, 1.0); + for (var sideIndex = 0; sideIndex < sides.length; ++sideIndex) { var side = sides[sideIndex]; @@ -101,5 +104,7 @@ function CPDrawColorTiledRects( CGContextStrokePath(context); } + CGContextRestoreGState(context); + return resultRect; } \ No newline at end of file diff --git a/Tests/Manual/NSBoxTest/AppController.j b/Tests/Manual/NSBoxTest/AppController.j new file mode 100644 index 000000000..139bb2501 --- /dev/null +++ b/Tests/Manual/NSBoxTest/AppController.j @@ -0,0 +1,93 @@ +/* + * AppController.j + * CPButtonImageTest + * + * Created by Aparajita Fishman on August 31, 2010. + */ + +@import + + +@implementation AppController : CPObject +{ + @outlet CPWindow theWindow; + @outlet CPBox customDrawBox; + @outlet CPBox standardBox; + @outlet CPBox customBox; + @outlet CPView dynamicBox; + @outlet CPTextField dynamicLabel; + + CPImageView imageView; + CPView labelView; +} + +- (void)awakeFromCib +{ + var image = [[CPImage alloc] initWithContentsOfFile:[[CPBundle bundleForClass:[CPView class]] pathForResource:@"standardApplicationIcon.png"]]; + + imageView = [[CPImageView alloc] initWithFrame:[dynamicBox frame]]; + [imageView setImage:image]; + + var box = [[CPBox alloc] initWithFrame:[dynamicBox frame]]; + + [box setBorderType:CPLineBorder]; + [box setBorderWidth:4]; + [box setBorderColor:[CPColor colorWithHexString:@"00990E"]]; + [box setFillColor:[CPColor whiteColor]]; + + labelView = [[CPView alloc] initWithFrame:[box frame]]; + [labelView setAutoresizesSubviews:NO]; + + var label = [CPTextField labelWithTitle:@"Dynamic box"]; + + [label setFrame:[dynamicLabel frame]]; + [label setAutoresizingMask:CPViewNotSizable]; + [label setAlignment:CPCenterTextAlignment]; + [labelView addSubview:label]; + + [box setContentView:labelView]; + [box setAutoresizingMask:CPViewMinXMargin | CPViewHeightSizable]; + + [[dynamicBox superview] replaceSubview:dynamicBox with:box]; + dynamicBox = box; +} + +- (void)changeFillColor:(id)sender +{ + [customDrawBox setFillColor:[CPColor randomColor]]; +} + +- (void)changeBorderWidth:(id)sender +{ + [standardBox setBorderWidth:ROUND(Math.random() * 7)]; +} + +- (void)changeBorderColor:(id)sender +{ + [customBox setBorderColor:[CPColor randomColor]]; + [customBox setCornerRadius:ROUND(Math.random() * 10)]; +} + +- (void)changeContentView:(id)sender +{ + var contentView = [dynamicBox contentView]; + + [dynamicBox setContentView:contentView === labelView ? imageView : labelView]; +} + +@end + +@implementation BezelView : CPBox + +- (void)drawRect:(CGRect)dirtyRect +{ + var sides = [CPMinYEdge, CPMaxYEdge, CPMinXEdge, CPMaxXEdge], + grays = [0.75, 1.0, 0.75, 1.0], + fillRect = CPDrawTiledRects(dirtyRect, dirtyRect, sides, grays), + context = [[CPGraphicsContext currentContext] graphicsPort]; + + CGContextSetFillColor(context, [self fillColor]); + CGContextFillRect(context, fillRect); +} + +@end diff --git a/Tests/Manual/NSBoxTest/Info.plist b/Tests/Manual/NSBoxTest/Info.plist new file mode 100644 index 000000000..ff14e6409 --- /dev/null +++ b/Tests/Manual/NSBoxTest/Info.plist @@ -0,0 +1,12 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + NSBoxTest + CPPrincipalClass + CPApplication + + diff --git a/Tests/Manual/NSBoxTest/Jakefile b/Tests/Manual/NSBoxTest/Jakefile new file mode 100644 index 000000000..a776e282b --- /dev/null +++ b/Tests/Manual/NSBoxTest/Jakefile @@ -0,0 +1,93 @@ +/* + * Jakefile + * CPAlertTest + * + * Created by Alexander Ljungberg on August 19, 2010. + * Copyright 2010, WireLoad, LLC All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPAlertTest", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPAlertTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPAlertTest"); + task.setIdentifier("com.yourcompany.CPAlertTest"); + task.setVersion("1.0"); + task.setAuthor("WireLoad, LLC"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPAlertTest"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPAlertTest"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPAlertTest", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPAlertTest", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPAlertTest")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPAlertTest"), FILE.join("Build", "Deployment", "CPAlertTest")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPAlertTest")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPAlertTest"), FILE.join("Build", "Desktop", "CPAlertTest", "CPAlertTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPAlertTest", "CPAlertTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPAlertTest")); + print("----------------------------"); +} diff --git a/Tests/Manual/NSBoxTest/Resources/MainMenu.cib b/Tests/Manual/NSBoxTest/Resources/MainMenu.cib new file mode 100644 index 000000000..df3a07e9f --- /dev/null +++ b/Tests/Manual/NSBoxTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;36E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;16E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;82E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;83E;E;D;K;10;$classnameS;5;CPBoxK;8;$classesA;S;5;CPBoxS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;84E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;85E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;86E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;87E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;2;88E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;2;90E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;2;92E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;2;93E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;2;87E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;2;94E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;2;95E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;96E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;97E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;98E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;96E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;100E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;102E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;103E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;103E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;103E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;100E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;100E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;104E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;105E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;107E;K;16;$aimage-positionD;K;6;CP$UIDd;2;88E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;88E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;90E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;108E;K;16;CPButtonImageKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;109E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;103E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;88E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;110E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;111E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;107E;K;16;$aimage-positionD;K;6;CP$UIDd;2;88E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;88E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;90E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;108E;K;16;CPButtonImageKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;112E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;103E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;88E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;88E;E;D;K;10;$classnameS;16;_CPCibCustomViewK;8;$classesA;S;16;_CPCibCustomViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;113E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;85E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;114E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;87E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;2;88E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;82E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;116E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;85E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;117E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;87E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;2;88E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;2;90E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;3;118E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;3;119E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;2;88E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;2;90E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;39E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;120E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;120E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;121E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;39E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;122E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;123E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;30;_CPCibWindowTemplateMinSizeKeyD;K;6;CP$UIDd;3;124E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;125E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;126E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;127E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;128E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;129E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;38E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;130E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;131E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;98E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;130E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;100E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;102E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;103E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;103E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;103E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;100E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;100E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;27E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;133E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;98E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;27E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;100E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;134E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;102E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;103E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;103E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;103E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;100E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;100E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;135E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;136E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;106E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;107E;K;16;$aimage-positionD;K;6;CP$UIDd;2;88E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;88E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;90E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;108E;K;16;CPButtonImageKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;137E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;103E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;88E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;138E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;37E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;139E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;139E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;140E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;122E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;141E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;142E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;122E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;39E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;144E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;145E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;39E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;146E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;107E;K;16;$aimage-positionD;K;6;CP$UIDd;2;88E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;88E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;90E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;108E;K;16;CPButtonImageKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateImageKeyD;K;6;CP$UIDd;1;0E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;147E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;103E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;88E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;149E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;100E;K;11;$aalignmentD;K;6;CP$UIDd;3;100E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;150E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;102E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;103E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;103E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;103E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;100E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;100E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;S;28;Text Field Cell (Custom box)S;9;Box (Box)S;26;Static Text (Standard box)S;12;File's OwnerS;43;Round Textured Button (Change Content View)S;43;Round Textured Button (Change Border Width)S;11;Custom ViewS;11;ApplicationS;11;Box (Box)-1S;42;Button Cell (Change Border Color/Rounding)S;29;Text Field Cell (Dynamic box)S;10;Bezel ViewS;30;Text Field Cell (Standard box)S;19;Window (CPBox Test)S;24;Static Text (Custom box)S;25;Static Text (Dynamic box)S;52;Round Textured Button (Change Border Color/Rounding)S;33;Button Cell (Change Content View)S;33;Button Cell (Change Border Width)S;14;App ControllerS;12;Content ViewS;13;Custom View-1S;41;Round Textured Button (Change Fill Color)S;35;Static Text (drawRect override box)S;31;Button Cell (Change Fill Color)S;39;Text Field Cell (drawRect override box)D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;36E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;151E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;20E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;152E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;30E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;153E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;27E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;34E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;155E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;29E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;156E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;32E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;157E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;22E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;36E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;40E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;36E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;25E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;36E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;35E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;36E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;76E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;24E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;36E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;161E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;32E;E;E;S;23;{{518, 20}, {217, 217}}S;20;{{0, 0}, {217, 217}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;130E;E;E;d;2;17d;1;0S;6;normald;1;1D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;91E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;162E;E;D;K;6;$classD;K;6;CP$UIDd;2;91E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;163E;E;d;1;3S;6;{0, 0}D;K;6;$classD;K;6;CP$UIDd;2;37E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;29E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;173E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;174E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;175E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;29E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;169E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;E;S;21;{{39, 99}, {136, 17}}S;19;{{0, 0}, {136, 17}}d;2;37d;1;2S;12;Standard boxd;4;3072F;S;23;{{789, 249}, {150, 24}}S;19;{{0, 0}, {150, 24}}d;1;9S;17;selected+borderedd;1;4S;19;Change Content ViewS;23;{{316, 249}, {148, 24}}S;19;{{0, 0}, {148, 24}}S;19;Change Border WidthS;23;{{755, 20}, {217, 217}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;34E;E;E;S;6;CPViewS;23;{{281, 20}, {217, 217}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;96E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;91E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;164E;E;D;K;6;$classD;K;6;CP$UIDd;2;91E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;165E;E;S;20;{{0, 0}, {241, 217}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;41E;E;E;d;2;18S;9;BezelViewS;10;{992, 318}S;28;{1.79769e+308, 1.79769e+308}S;8;CPWindowS;23;{{116, 63}, {992, 296}}d;2;15S;10;NSBox TestD;K;6;$classD;K;6;CP$UIDd;2;37E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;20E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;166E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;167E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;168E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;20E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;169E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;89E;E;S;21;{{37, 98}, {136, 17}}S;10;Custom boxS;22;{{40, 100}, {136, 17}}S;11;Dynamic boxS;23;{{520, 249}, {213, 24}}S;19;{{0, 0}, {213, 24}}S;28;Change Border Color/RoundingS;13;AppControllerS;20;{{0, 0}, {992, 296}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;27E;E;E;S;22;{{20, 20}, {241, 256}}S;20;{{0, 0}, {241, 256}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;30E;E;E;S;22;{{61, 230}, {123, 24}}S;19;{{0, 0}, {123, 24}}d;2;13S;17;Change Fill ColorS;22;{{46, 100}, {150, 17}}S;19;{{0, 0}, {150, 17}}S;21;drawRect override boxS;8;delegateS;9;customBoxS;13;customDrawBoxS;10;dynamicBoxS;12;dynamicLabelS;11;standardBoxS;9;theWindowS;16;changeFillColor:S;18;changeBorderWidth:S;18;changeBorderColor:S;18;changeContentView:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;90E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;2;90E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;176E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;E;E;S;20;{{3, 3}, {211, 211}}S;20;{{0, 0}, {211, 211}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;33E;E;E;d;1;8f;12;0.6064262111f;12;0.7461743972f;12;0.9993416667S;20;{{1, 1}, {215, 215}}S;20;{{0, 0}, {215, 215}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;22E;E;E;f;4;0.42E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/NSBoxTest/Resources/MainMenu.xib b/Tests/Manual/NSBoxTest/Resources/MainMenu.xib new file mode 100644 index 000000000..a326458fa --- /dev/null +++ b/Tests/Manual/NSBoxTest/Resources/MainMenu.xib @@ -0,0 +1,760 @@ + + + + 1060 + 10F569 + 788 + 1038.29 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 788 + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{116, 669}, {992, 296}} + 1946157056 + NSBox Test + NSWindow + + {1.79769e+308, 1.79769e+308} + {992, 296} + + + 274 + + + + 17 + + + + 256 + + + + 269 + {{39, 99}, {136, 17}} + + YES + + 68288064 + 138413056 + Standard box + + LucidaGrande + 13 + 1044 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + {{1, 1}, {215, 215}} + + + + {{281, 59}, {217, 217}} + + {0, 0} + + 67239424 + 0 + Box + + LucidaGrande + 11 + 3100 + + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 4 + 0 + NO + + + + 17 + + + + 256 + + + + 269 + {{37, 96}, {136, 17}} + + YES + + 68288064 + 138413056 + Custom box + + + + + + + + {{3, 3}, {211, 211}} + + + + {{518, 59}, {217, 217}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 4 + 0 + NO + + 17 + + 6 + System + alternateSelectedControlColor + + 1 + MCAwIDEAA + + + + 1 + MC42MDY0MjYyMTExIDAuNzQ2MTc0Mzk3MiAwLjk5OTM0MTY2NjcAA + + + + + 257 + {{316, 19}, {148, 25}} + + YES + + -2080244224 + 134217728 + Change Border Width + + + -2038152961 + 163 + + + 400 + 75 + + + + + 257 + {{789, 19}, {150, 25}} + + YES + + -2080244224 + 134217728 + Change Content View + + + -2038152961 + 163 + + + 400 + 75 + + + + + 257 + {{520, 19}, {213, 25}} + + YES + + -2080244224 + 134217728 + Change Border Color/Rounding + + + -2038152961 + 163 + + + 400 + 75 + + + + + 274 + + + + 293 + {{61, -2}, {123, 25}} + + YES + + -2080244224 + 134217728 + Change Fill Color + + + -2038152961 + 163 + + + 400 + 75 + + + + + 274 + + + + 269 + {{46, 100}, {150, 17}} + + YES + + 68288064 + 138413056 + drawRect override box + + + + + + + + {{0, 39}, {241, 217}} + + BezelView + + + {{20, 20}, {241, 256}} + + NSView + + + + 17 + + + + 269 + {{40, 100}, {136, 17}} + + YES + + 68288064 + 138413056 + Dynamic box + + + + + + + + {{755, 59}, {217, 217}} + + NSView + + + {992, 296} + + + {{0, 0}, {1680, 1028}} + {992, 318} + {1.79769e+308, 1.79769e+308} + + + AppController + + + + + + + delegate + + + + 451 + + + + theWindow + + + + 1090 + + + + customDrawBox + + + + 1200 + + + + standardBox + + + + 1201 + + + + customBox + + + + 1202 + + + + changeBorderColor: + + + + 1205 + + + + changeContentView: + + + + 1217 + + + + dynamicBox + + + + 1282 + + + + dynamicLabel + + + + 1283 + + + + changeFillColor: + + + + 1284 + + + + changeFillColor: + + + + 1285 + + + + changeBorderWidth: + + + + 1286 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 371 + + + + + + Window (CPBox Test) + + + 372 + + + + + + + + + + + + + + 450 + + + + + 1188 + + + + + + + + 1189 + + + + + + + + 1190 + + + + + 1191 + + + + + + + + 1192 + + + + + + + + 1193 + + + + + 1196 + + + + + + + + 1197 + + + + + 1198 + + + + + + + + 1199 + + + + + 1206 + + + + + + + + + 1182 + + + + + + + + 1183 + + + + + + + + 1184 + + + + + 1194 + + + + + + + + 1195 + + + + + 1208 + + + + + + + + 1209 + + + + + 1213 + + + + + + + + 1214 + + + + + + + + 1215 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{329, 452}, {992, 296}} + com.apple.InterfaceBuilder.CocoaPlugin + {{329, 452}, {992, 296}} + + {{33, 99}, {480, 360}} + + {992, 296} + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 1296 + + + + + AppController + NSObject + + id + id + id + id + + + + changeBorderColor: + id + + + changeBorderWidth: + id + + + changeContentView: + id + + + changeFillColor: + id + + + + NSBox + NSBox + NSView + NSTextField + NSBox + NSWindow + + + + customBox + NSBox + + + customDrawBox + NSBox + + + dynamicBox + NSView + + + dynamicLabel + NSTextField + + + standardBox + NSBox + + + theWindow + NSWindow + + + + IBUserSource + + + + + BezelView + NSBox + + IBUserSource + + + + + + 0 + IBCocoaFramework + YES + ../registration.xcodeproj + 3 + + diff --git a/Tests/Manual/NSBoxTest/Resources/spinner.gif b/Tests/Manual/NSBoxTest/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/NSBoxTest/Resources/spinner.gif differ diff --git a/Tests/Manual/NSBoxTest/index-debug.html b/Tests/Manual/NSBoxTest/index-debug.html new file mode 100644 index 000000000..a0fa54c65 --- /dev/null +++ b/Tests/Manual/NSBoxTest/index-debug.html @@ -0,0 +1,69 @@ + + + + + + + + NSBox Test + + + + + + + + + + + + +
+ + + +
+ + + diff --git a/Tests/Manual/NSBoxTest/index.html b/Tests/Manual/NSBoxTest/index.html new file mode 100644 index 000000000..acc894909 --- /dev/null +++ b/Tests/Manual/NSBoxTest/index.html @@ -0,0 +1,68 @@ + + + + + + + + NSBox Test + + + + + + + + + + + + +
+ + + +
+ + + diff --git a/Tests/Manual/NSBoxTest/main.j b/Tests/Manual/NSBoxTest/main.j new file mode 100755 index 000000000..af6279da3 --- /dev/null +++ b/Tests/Manual/NSBoxTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * TableCibTest + * + * Created by Francisco Tolmasky on July 5, 2009. + * Copyright 2009, 280 North, Inc. All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tools/nib2cib/NSAppKit.j b/Tools/nib2cib/NSAppKit.j index 2348f1408..6db239ef5 100644 --- a/Tools/nib2cib/NSAppKit.j +++ b/Tools/nib2cib/NSAppKit.j @@ -21,6 +21,7 @@ */ @import "_NSCornerView.j" +@import "NSBox.j" @import "NSButton.j" @import "NSCell.j" @import "NSClassSwapper.j" @@ -76,7 +77,7 @@ function CP_NSMapClassName(aClassName) if (aClassName.indexOf("NS") === 0) { var mappedClassName = @"CP" + aClassName.substr(2); - + if (CPClassFromString(mappedClassName)) { CPLog.info("Mapping " + aClassName + " to " + mappedClassName); diff --git a/Tools/nib2cib/NSBox.j b/Tools/nib2cib/NSBox.j new file mode 100644 index 000000000..5d4993bfa --- /dev/null +++ b/Tools/nib2cib/NSBox.j @@ -0,0 +1,63 @@ +/* + * NSBox.j + * nib2cib + * + * Created by Aparajita Fishman. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import + + +@implementation CPBox (CPCoding) + +- (id)NS_initWithCoder:(CPCoder)aCoder +{ + self = [super NS_initWithCoder:aCoder]; + + if (self) + { + _borderType = [aCoder decodeIntForKey:@"NSBorderType"]; + + _borderColor = [aCoder decodeObjectForKey:@"NSBorderColor2"] || [CPColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.42]; + _fillColor = [aCoder decodeObjectForKey:@"NSFillColor2"] || [CPColor clearColor]; + + _cornerRadius = [aCoder decodeFloatForKey:@"NSCornerRadius2"] || 0.0; + _borderWidth = [aCoder decodeFloatForKey:@"NSBorderWidth2"] || 1.0; + + _contentMargin = [aCoder decodeSizeForKey:@"NSOffsets"]; + } + + return self; +} + +@end + +@implementation NSBox : CPBox +{ +} + +- (id)initWithCoder:(CPCoder)aCoder +{ + return [self NS_initWithCoder:aCoder]; +} + +- (Class)classForKeyedArchiver +{ + return [CPBox class]; +} + +@end