diff --git a/AppKit/CPButton.j b/AppKit/CPButton.j index f40fbdf75..7944347cc 100644 --- a/AppKit/CPButton.j +++ b/AppKit/CPButton.j @@ -111,6 +111,8 @@ CPButtonImageOffset = 3.0; CPTimer _continuousTimer; float _periodicDelay; float _periodicInterval; + + BOOL _isTracking; } + (id)buttonWithTitle:(CPString)aTitle @@ -177,7 +179,7 @@ CPButtonImageOffset = 3.0; _periodicInterval = 0.05; _periodicDelay = 0.5; - _imageDimsWhenDisabled = YES; + [self setButtonType:CPMomentaryPushInButton]; } // Setting the state @@ -215,17 +217,13 @@ CPButtonImageOffset = 3.0; { if (!anObjectValue || anObjectValue === @"" || ([anObjectValue intValue] === 0)) anObjectValue = CPOffState; - else if (![anObjectValue isKindOfClass:[CPNumber class]]) anObjectValue = CPOnState; - else if (anObjectValue >= CPOnState) anObjectValue = CPOnState - else if (anObjectValue < CPOffState) if ([self allowsMixedState]) anObjectValue = CPMixedState; - else anObjectValue = CPOnState; @@ -233,15 +231,26 @@ CPButtonImageOffset = 3.0; switch ([self objectValue]) { - case CPMixedState: [self unsetThemeState:CPThemeStateSelected]; - [self setThemeState:CPButtonStateMixed]; - break; + case CPMixedState: + [self unsetThemeState:CPThemeStateSelected]; + [self setThemeState:CPButtonStateMixed]; + if (_showsStateBy & (CPChangeGrayCellMask | CPChangeBackgroundCellMask)) + [self setThemeState:CPThemeStateHighlighted]; + else + [self unsetThemeState:CPThemeStateHighlighted]; + break; - case CPOnState: [self unsetThemeState:CPButtonStateMixed]; - [self setThemeState:CPThemeStateSelected]; - break; + case CPOnState: + [self unsetThemeState:CPButtonStateMixed]; + [self setThemeState:CPThemeStateSelected]; + if (_showsStateBy & (CPChangeGrayCellMask | CPChangeBackgroundCellMask)) + [self setThemeState:CPThemeStateHighlighted]; + else + [self unsetThemeState:CPThemeStateHighlighted]; + break; - case CPOffState: [self unsetThemeState:CPThemeStateSelected | CPButtonStateMixed]; + case CPOffState: + [self unsetThemeState:CPThemeStateSelected | CPButtonStateMixed | CPThemeStateHighlighted]; } } @@ -376,11 +385,19 @@ CPButtonImageOffset = 3.0; - (void)setShowsStateBy:(CPInteger)aMask { + // CPPushInCellMask cannot be set for showsStateBy. + aMask &= ~CPPushInCellMask; + if (_showsStateBy === aMask) return; _showsStateBy = aMask; + if (_showsStateBy & (CPChangeGrayCellMask | CPChangeBackgroundCellMask) && [self state] != CPOffState) + [self setThemeState:CPThemeStateHighlighted]; + else + [self unsetThemeState:CPThemeStateHighlighted]; + [self setNeedsDisplay:YES]; [self setNeedsLayout]; } @@ -404,15 +421,20 @@ CPButtonImageOffset = 3.0; } } +- (CPInteger)highlightsBy +{ + return _highlightsBy; +} + - (void)setButtonType:(CPButtonType)aButtonType { switch (aButtonType) { - case CPMomentaryLightButton: [self setHighlightsBy:CPChangeBackgroundCellMask]; + case CPMomentaryLightButton: [self setHighlightsBy:CPChangeGrayCellMask | CPChangeBackgroundCellMask]; [self setShowsStateBy:CPNoCellMask]; break; - case CPMomentaryPushInButton: [self setHighlightsBy:CPPushInCellMask | CPChangeGrayCellMask]; + case CPMomentaryPushInButton: [self setHighlightsBy:CPPushInCellMask | CPChangeGrayCellMask | CPChangeBackgroundCellMask]; [self setShowsStateBy:CPNoCellMask]; break; @@ -420,12 +442,12 @@ CPButtonImageOffset = 3.0; [self setShowsStateBy:CPNoCellMask]; break; - case CPPushOnPushOffButton: [self setHighlightsBy:CPPushInCellMask | CPChangeGrayCellMask]; - [self setShowsStateBy:CPChangeBackgroundCellMask]; + case CPPushOnPushOffButton: [self setHighlightsBy:CPPushInCellMask | CPChangeGrayCellMask | CPChangeBackgroundCellMask]; + [self setShowsStateBy:CPChangeBackgroundCellMask | CPChangeGrayCellMask]; break; - case CPOnOffButton: [self setHighlightsBy:CPChangeBackgroundCellMask]; - [self setShowsStateBy:CPChangeBackgroundCellMask]; + case CPOnOffButton: [self setHighlightsBy:CPChangeGrayCellMask | CPChangeBackgroundCellMask]; + [self setShowsStateBy:CPChangeGrayCellMask | CPChangeBackgroundCellMask]; break; case CPToggleButton: [self setHighlightsBy:CPPushInCellMask | CPContentsCellMask]; @@ -496,20 +518,43 @@ CPButtonImageOffset = 3.0; - (BOOL)startTrackingAt:(CGPoint)aPoint { - [self highlight:YES]; + _isTracking = YES; - return [super startTrackingAt:aPoint]; + var startedTracking = [super startTrackingAt:aPoint]; + if (_highlightsBy & (CPPushInCellMask | CPChangeGrayCellMask)) + { + if (_showsStateBy & (CPChangeGrayCellMask | CPChangeBackgroundCellMask)) + [self highlight:[self state] == CPOffState]; + else + [self highlight:YES]; + } + else + { + if (_showsStateBy & (CPChangeGrayCellMask | CPChangeBackgroundCellMask)) + [self highlight:[self state] != CPOffState]; + else + [self highlight:NO]; + } + return startedTracking; } - (void)stopTracking:(CGPoint)lastPoint at:(CGPoint)aPoint mouseIsUp:(BOOL)mouseIsUp { - [self highlight:NO]; - [self invalidateTimers]; - - [super stopTracking:lastPoint at:aPoint mouseIsUp:mouseIsUp]; + _isTracking = NO; if (mouseIsUp && CGRectContainsPoint([self bounds], aPoint)) [self setNextState]; + else + { + if (_showsStateBy & (CPChangeGrayCellMask | CPChangeBackgroundCellMask)) + [self highlight:[self state] != CPOffState]; + else + [self highlight:NO]; + } + + [self setNeedsLayout]; + [self setNeedsDisplay:YES]; + [self invalidateTimers]; } - (void)invalidateTimers @@ -643,8 +688,51 @@ CPButtonImageOffset = 3.0; if (contentView) { - [contentView setText:([self hasThemeState:CPThemeStateHighlighted] && _alternateTitle) ? _alternateTitle : _title]; - [contentView setImage:[self currentValueForThemeAttribute:@"image"]]; + var title = nil, + image = nil; + + if (_isTracking) + { + if (_highlightsBy & CPContentsCellMask) + { + if (_showsStateBy & CPContentsCellMask) + { + title = ([self state] == CPOffState && _alternateTitle) ? _alternateTitle : _title; + image = ([self state] == CPOffState && [self alternateImage]) ? [self alternateImage] : [self image]; + } + else + { + title = [self alternateTitle]; + image = [self alternateImage]; + } + } + else if (_showsStateBy & CPContentsCellMask) + { + title = ([self state] != CPOffState && _alternateTitle) ? _alternateTitle : _title; + image = ([self state] != CPOffState && [self alternateImage]) ? [self alternateImage] : [self image]; + } + else + { + title = _title; + image = [self image]; + } + } + else + { + if (_showsStateBy & CPContentsCellMask) + { + title = ([self state] != CPOffState && _alternateTitle) ? _alternateTitle : _title; + image = ([self state] != CPOffState && [self alternateImage]) ? [self alternateImage] : [self image]; + } + else + { + title = _title; + image = [self image]; + } + } + + [contentView setText:title]; + [contentView setImage:image]; [contentView setImageOffset:[self currentValueForThemeAttribute:@"image-offset"]]; [contentView setFont:[self currentValueForThemeAttribute:@"font"]]; @@ -743,9 +831,51 @@ CPButtonImageOffset = 3.0; return NO; [self performClick:nil]; + return YES; } +/*! + Perform a click on the receiver. + + @param sender - The sender object +*/ +- (void)performClick:(id)sender +{ + // This is slightly different from [super performClick:] in that the highlight behaviour is dependent on + // highlightsBy and showsStateBy. + if (![self isEnabled]) + return; + + [self setState:[self nextState]]; + + var shouldHighlight = NO; + + if (_highlightsBy & (CPPushInCellMask | CPChangeGrayCellMask)) + { + if (_showsStateBy & (CPChangeGrayCellMask | CPChangeBackgroundCellMask)) + shouldHighlight = [self state] == CPOffState; + else + shouldHighlight = YES; + } + + [self highlight:shouldHighlight]; + + try + { + [self sendAction:[self action] to:[self target]]; + } + catch (e) + { + throw e; + } + finally + { + if (shouldHighlight) + [CPTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(unhighlightButtonTimerDidFinish:) userInfo:nil repeats:NO]; + } +} + @end @implementation CPButton (NS) @@ -786,7 +916,9 @@ var CPButtonImageKey = @"CPButtonImageKey", CPButtonKeyEquivalentKey = @"CPButtonKeyEquivalentKey", CPButtonKeyEquivalentMaskKey = @"CPButtonKeyEquivalentMaskKey", CPButtonPeriodicDelayKey = @"CPButtonPeriodicDelayKey", - CPButtonPeriodicIntervalKey = @"CPButtonPeriodicIntervalKey"; + CPButtonPeriodicIntervalKey = @"CPButtonPeriodicIntervalKey", + CPButtonHighlightsByKey = @"CPButtonHighlightsByKey", + CPButtonShowsStateByKey = @"CPButtonShowsStateByKey"; @implementation CPButton (CPCoding) @@ -806,6 +938,19 @@ var CPButtonImageKey = @"CPButtonImageKey", _alternateTitle = [aCoder decodeObjectForKey:CPButtonAlternateTitleKey]; _allowsMixedState = [aCoder decodeBoolForKey:CPButtonAllowsMixedStateKey]; + if ([aCoder containsValueForKey:CPButtonHighlightsByKey]) + { + // If one exists, assume both do. + _highlightsBy = [aCoder decodeIntForKey:CPButtonHighlightsByKey]; + _showsStateBy = [aCoder decodeIntForKey:CPButtonShowsStateByKey]; + } + else + { + // Backwards compatibility: if this CPButton was encoded before coding of + // highlightsBy and showsStateBy were added, we should just use the + // default values from _init rather than overwriting with 0, 0. + } + [self setImageDimsWhenDisabled:[aCoder decodeObjectForKey:CPButtonImageDimsWhenDisabledKey]]; if ([aCoder containsValueForKey:CPButtonImagePositionKey]) @@ -843,6 +988,9 @@ var CPButtonImageKey = @"CPButtonImageKey", [aCoder encodeBool:_allowsMixedState forKey:CPButtonAllowsMixedStateKey]; + [aCoder encodeInt:_highlightsBy forKey:CPButtonHighlightsByKey]; + [aCoder encodeInt:_showsStateBy forKey:CPButtonShowsStateByKey]; + [aCoder encodeBool:[self imageDimsWhenDisabled] forKey:CPButtonImageDimsWhenDisabledKey]; [aCoder encodeInt:[self imagePosition] forKey:CPButtonImagePositionKey]; diff --git a/AppKit/CPCheckBox.j b/AppKit/CPCheckBox.j index c13c3b5cc..626067273 100644 --- a/AppKit/CPCheckBox.j +++ b/AppKit/CPCheckBox.j @@ -94,6 +94,23 @@ CPCheckBoxImageOffset = 4.0; [self takeStateFromKeyPath:aKeyPath ofObjects:objects]; } +- (CPImage)image +{ + return [self currentValueForThemeAttribute:@"image"]; +} + +- (CPImage)alternateImage +{ + return [self currentValueForThemeAttribute:@"image"]; +} + +- (BOOL)startTrackingAt:(CGPoint)aPoint +{ + var startedTracking = [super startTrackingAt:aPoint]; + [self highlight:YES]; + return startedTracking; +} + @end @implementation _CPCheckBoxValueBinder : CPBinder diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index 77de1f8e1..8f5c7b6f8 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -134,18 +134,18 @@ var CPControlBlackColor = [CPColor blackColor]; + (void)initialize { - if (self === [CPControl class]) - { - [self exposeBinding:@"value"]; - [self exposeBinding:@"objectValue"]; - [self exposeBinding:@"stringValue"]; - [self exposeBinding:@"integerValue"]; - [self exposeBinding:@"intValue"]; - [self exposeBinding:@"doubleValue"]; - [self exposeBinding:@"floatValue"]; + if (self !== [CPControl class]) + return; - [self exposeBinding:@"enabled"]; - } + [self exposeBinding:@"value"]; + [self exposeBinding:@"objectValue"]; + [self exposeBinding:@"stringValue"]; + [self exposeBinding:@"integerValue"]; + [self exposeBinding:@"intValue"]; + [self exposeBinding:@"doubleValue"]; + [self exposeBinding:@"floatValue"]; + + [self exposeBinding:@"enabled"]; } + (Class)_binderClassForBinding:(CPString)theBinding @@ -391,7 +391,10 @@ var CPControlBlackColor = [CPColor blackColor]; - (void)stopTracking:(CGPoint)lastPoint at:(CGPoint)aPoint mouseIsUp:(BOOL)mouseIsUp { - [self highlight:NO]; + if (mouseIsUp) + [self highlight:NO]; + else + [self highlight:YES]; } - (void)mouseDown:(CPEvent)anEvent @@ -872,9 +875,9 @@ var CPControlValueKey = "CPControlValueKey", CPControlActionKey = "CPControlActionKey", CPControlSendActionOnKey = "CPControlSendActionOnKey", - CPControlSendsActionOnEndEditingKey = "CPControlSendsActionOnEndEditingKey"; + CPControlSendsActionOnEndEditingKey = "CPControlSendsActionOnEndEditingKey", -var __Deprecated__CPImageViewImageKey = @"CPImageViewImageKey"; + __Deprecated__CPImageViewImageKey = @"CPImageViewImageKey"; @implementation CPControl (CPCoding) diff --git a/AppKit/CPFont.j b/AppKit/CPFont.j index f125ffe5d..b96e4560c 100644 --- a/AppKit/CPFont.j +++ b/AppKit/CPFont.j @@ -67,7 +67,7 @@ var _CPFonts = {}, @code CPSystemFontFace Lucida Grande - @endcode + @endcode */ @implementation CPFont : CPObject { @@ -84,6 +84,9 @@ var _CPFonts = {}, + (void)initialize { + if (self !== [CPFont class]) + return; + var systemFontFace = [[CPBundle mainBundle] objectForInfoDictionaryKey:@"CPSystemFontFace"]; if (!systemFontFace) diff --git a/AppKit/CPImageView.j b/AppKit/CPImageView.j index 6ecba3738..e7ea02c3b 100644 --- a/AppKit/CPImageView.j +++ b/AppKit/CPImageView.j @@ -59,6 +59,9 @@ var CPImageViewEmptyPlaceholderImage = nil; + (void)initialize { + if (self !== [CPImageView class]) + return; + var bundle = [CPBundle bundleForClass:[CPView class]]; CPImageViewEmptyPlaceholderImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:@"empty.png"]]; diff --git a/AppKit/CPKeyBinding.j b/AppKit/CPKeyBinding.j index 768e99578..c62faabcb 100644 --- a/AppKit/CPKeyBinding.j +++ b/AppKit/CPKeyBinding.j @@ -153,7 +153,7 @@ var CPKeyBindingCache = {}; + (void)initialize { - if ([self class] !== CPKeyBinding) + if (self !== [CPKeyBinding class]) return; [self createKeyBindingsFromJSObject:CPStandardKeyBindings]; diff --git a/AppKit/CPKeyValueBinding.j b/AppKit/CPKeyValueBinding.j index af94f07a2..7b75920ad 100644 --- a/AppKit/CPKeyValueBinding.j +++ b/AppKit/CPKeyValueBinding.j @@ -190,7 +190,7 @@ var CPBindingOperationAnd = 0, var destination = [_info objectForKey:CPObservedObjectKey], keyPath = [_info objectForKey:CPObservedKeyPathKey], options = [_info objectForKey:CPOptionsKey], - newValue = [_source valueForKeyPath:aBinding]; + newValue = [self valueForBinding:aBinding]; newValue = [self reverseTransformValue:newValue withOptions:options]; @@ -199,6 +199,11 @@ var CPBindingOperationAnd = 0, [self unsuppressSpecificNotificationFromObject:destination keyPath:keyPath]; } +- (id)valueForBinding:(CPString)aBinding +{ + return [_source valueForKeyPath:aBinding]; +} + - (void)observeValueForKeyPath:(CPString)aKeyPath ofObject:(id)anObject change:(CPDictionary)changes context:(id)context { if (!changes) diff --git a/AppKit/CPLevelIndicator.j b/AppKit/CPLevelIndicator.j index e4a5474d1..27d688800 100644 --- a/AppKit/CPLevelIndicator.j +++ b/AppKit/CPLevelIndicator.j @@ -64,6 +64,9 @@ var _CPLevelIndicatorBezelColor = nil, + (void)initialize { + if (self !== [CPLevelIndicator class]) + return; + var bundle = [CPBundle bundleForClass:CPLevelIndicator]; _CPLevelIndicatorBezelColor = [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices: diff --git a/AppKit/CPMenu/CPMenu.j b/AppKit/CPMenu/CPMenu.j index 494598252..c022037cf 100644 --- a/AppKit/CPMenu/CPMenu.j +++ b/AppKit/CPMenu/CPMenu.j @@ -80,7 +80,7 @@ var _CPMenuBarVisible = NO, + (void)initialize { - if (self !== CPMenu) + if (self !== [CPMenu class]) return; [[self class] setMenuBarAttributes:[CPDictionary dictionary]]; diff --git a/AppKit/CPMenu/_CPMenuBarWindow.j b/AppKit/CPMenu/_CPMenuBarWindow.j index d8406f3e9..7f93dbd59 100644 --- a/AppKit/CPMenu/_CPMenuBarWindow.j +++ b/AppKit/CPMenu/_CPMenuBarWindow.j @@ -34,7 +34,7 @@ var _CPMenuBarWindowBackgroundColor = nil, + (void)initialize { - if (self != [_CPMenuBarWindow class]) + if (self !== [_CPMenuBarWindow class]) return; var bundle = [CPBundle bundleForClass:self]; diff --git a/AppKit/CPMenu/_CPMenuWindow.j b/AppKit/CPMenu/_CPMenuWindow.j index c1150fb54..27d14dcb1 100644 --- a/AppKit/CPMenu/_CPMenuWindow.j +++ b/AppKit/CPMenu/_CPMenuWindow.j @@ -65,7 +65,7 @@ var STICKY_TIME_INTERVAL = 500, + (void)initialize { - if (self != [_CPMenuWindow class]) + if (self !== [_CPMenuWindow class]) return; var bundle = [CPBundle bundleForClass:self]; diff --git a/AppKit/CPMenuItem/_CPMenuItemView.j b/AppKit/CPMenuItem/_CPMenuItemView.j index 695b9d8e7..86df38996 100644 --- a/AppKit/CPMenuItem/_CPMenuItemView.j +++ b/AppKit/CPMenuItem/_CPMenuItemView.j @@ -40,7 +40,7 @@ var _CPMenuItemSelectionColor = nil, + (void)initialize { - if (self != [_CPMenuItemView class]) + if (self !== [_CPMenuItemView class]) return; _CPMenuItemSelectionColor = [CPColor colorWithCalibratedRed:95.0 / 255.0 green:131.0 / 255.0 blue:185.0 / 255.0 alpha:1.0]; diff --git a/AppKit/CPObjectController.j b/AppKit/CPObjectController.j index 8999f84da..64ee8f5a0 100644 --- a/AppKit/CPObjectController.j +++ b/AppKit/CPObjectController.j @@ -51,6 +51,9 @@ + (id)initialize { + if (self !== [CPObjectController class]) + return; + [self exposeBinding:@"editable"]; [self exposeBinding:@"contentObject"]; } diff --git a/AppKit/CPPasteboard.j b/AppKit/CPPasteboard.j index 86d34bead..5a898ead0 100644 --- a/AppKit/CPPasteboard.j +++ b/AppKit/CPPasteboard.j @@ -73,7 +73,7 @@ var CPPasteboards = nil, */ + (void)initialize { - if (self != [CPPasteboard class]) + if (self !== [CPPasteboard class]) return; [self setVersion:1.0]; diff --git a/AppKit/CPPopUpButton.j b/AppKit/CPPopUpButton.j index 2d3af0fd9..1297ea3e7 100644 --- a/AppKit/CPPopUpButton.j +++ b/AppKit/CPPopUpButton.j @@ -22,11 +22,11 @@ @import "CPButton.j" @import "CPGeometry.j" +@import "CPKeyValueBinding.j" @import "CPMenu.j" @import "CPMenuItem.j" @import - var VISIBLE_MARGIN = 7.0; CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); @@ -768,10 +768,7 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); - (void)_reverseSetBinding { - var binderClass = [[self class] _binderClassForBinding:CPSelectedIndexBinding], - theBinding = [binderClass getBinding:CPSelectedIndexBinding forObject:self]; - - [theBinding reverseSetValueFor:@"objectValue"]; + [_CPPopUpButtonSelectionBinder reverseSetValueForObject:self]; [super _reverseSetBinding]; } @@ -779,73 +776,24 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); @end @implementation CPPopUpButton (BindingSupport) -/* -- (void)_setItemValues:(CPArray)values forKey:(CPString)key + ++ (Class)_binderClassForBinding:(CPString)aBinding { - var i, - count = [values count]; - - if (count != [self numberOfItems]) - { - [self removeAllItems]; - var count2 = count; - while (count2--) - [self addItemWithTitle:@""]; - } - - if (!key) - return; - - while (count--) - [[self itemAtIndex:count] setValue:[values objectAtIndex:count] forKey:key]; -} -*/ -- (CPUInteger)selectedIndex -{ - return [self indexOfSelectedItem]; + if (aBinding == CPSelectedIndexBinding || + aBinding == CPSelectedObjectBinding || + aBinding == CPSelectedTagBinding || + aBinding == CPSelectedValueBinding) + return [_CPPopUpButtonSelectionBinder class]; + + return [super _binderClassForBinding:aBinding]; } -- (void)setSelectedIndex:(CPUInteger)aValue -{ - [self selectItemAtIndex:aValue]; -} - -- (CPString)selectedValue -{ - return [self titleOfSelectedItem]; -} - -- (void)setSelectedValue:(CPString)aValue -{ - [self selectItemWithTitle:aValue]; -} - -- (id)selectedObject -{ - return [[self selectedItem] representedObject]; -} - -- (void)setSelectedObject:(id)aValue -{ - [self selectItemAtIndex:[self indexOfItemWithRepresentedObject:aValue]]; -} - -- (CPInteger)selectedTag -{ - return [[self selectedItem] tag]; -} - -- (void)setSelectedTag:(CPInteger)aValue -{ - [self selectItemWithTag:aValue]; -} - -- (CPArray)contentValues +- (CPArray)_contentValues { return [self valueForKeyPath:@"itemArray.title"]; } -- (void)setContentValues:(CPArray)aValue +- (void)_setContentValues:(CPArray)aValue { var count = [aValue count]; @@ -863,12 +811,12 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); [self synchronizeTitleAndSelectedItem]; } -- (CPArray)content +- (CPArray)_content { return [self valueForKeyPath:@"itemArray.representedObject"]; } -- (void)setContent:(CPArray)aValue +- (void)_setContent:(CPArray)aValue { var count = [aValue count]; @@ -890,14 +838,76 @@ CPPopUpButtonStatePullsDown = CPThemeState("pulls-down"); if (![self infoForBinding:CPContentValuesBinding]) { - var descriptions = [aValue valueForKey:@"description"]; for (var i = 0; i < count; i++) - [[self itemAtIndex:i] setTitle:[descriptions objectAtIndex:i]]; + [[self itemAtIndex:i] setTitle:[[aValue objectAtIndex:i] description]]; } } @end +var binderForObject = {}, + selectionBindings = [CPSelectedIndexBinding, CPSelectedObjectBinding, CPSelectedTagBinding, CPSelectedValueBinding]; + +@implementation _CPPopUpButtonSelectionBinder : CPBinder +{ + CPString _selectionBinding @accessors(property=binding); +} + ++ (void)reverseSetValueForObject:(id)aSource +{ + var uid = [aSource UID], + binder = binderForObject[uid]; + + if (binder == nil) + { + var count = selectionBindings.length; + while (count--) + { + var binding = selectionBindings[count]; + binder = [self getBinding:binding forObject:aSource]; + if (binder != nil) + { + binderForObject[uid] = binder; + [binder setBinding:binding]; + break; + } + } + } + + [binder reverseSetValueFor:[binder binding]]; +} + +- (void)setValue:(id)aValue forBinding:(CPString)aBinding +{ + if (aBinding == CPSelectedIndexBinding) + [_source selectItemAtIndex:aValue]; + else if (aBinding == CPSelectedObjectBinding) + [_source selectItemAtIndex:[_source indexOfItemWithRepresentedObject:aValue]]; + else if (aBinding == CPSelectedTagBinding) + [_source selectItemWithTag:aValue]; + else if (aBinding == CPSelectedValueBinding) + [_source selectItemWithTitle:aValue]; +} + +- (void)setPlaceholderValue:(id)aValue withMarker:(CPString)aMarker forBinding:(CPString)aBinding +{ + [self setValue:aValue forBinding:aBinding]; +} + +- (id)valueForBinding:(CPString)aBinding +{ + if (aBinding == CPSelectedIndexBinding) + return [_source indexOfSelectedItem]; + else if (aBinding == CPSelectedObjectBinding) + return [[_source selectedItem] representedObject]; + else if (aBinding == CPSelectedTagBinding) + return [[_source selectedItem] tag]; + else if (aBinding == CPSelectedValueBinding) + return [_source titleOfSelectedItem]; +} + +@end + var DEPRECATED_CPPopUpButtonMenuKey = @"CPPopUpButtonMenuKey", DEPRECATED_CPPopUpButtonSelectedIndexKey = @"CPPopUpButtonSelectedIndexKey"; diff --git a/AppKit/CPProgressIndicator.j b/AppKit/CPProgressIndicator.j index 7f43d5fbf..b7166e51c 100644 --- a/AppKit/CPProgressIndicator.j +++ b/AppKit/CPProgressIndicator.j @@ -78,7 +78,7 @@ var CPProgressIndicatorSpinningStyleColors = nil, */ + (void)initialize { - if (self != [CPProgressIndicator class]) + if (self !== [CPProgressIndicator class]) return; var bundle = [CPBundle bundleForClass:self]; @@ -120,11 +120,11 @@ var CPProgressIndicatorSpinningStyleColors = nil, // Bar Style var prefixes = [ - CPProgressIndicatorClassName + @"BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle], - CPProgressIndicatorClassName + @"Bar" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle], - CPProgressIndicatorClassName + @"BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle], - CPProgressIndicatorClassName + @"Bar" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle] - ]; + CPProgressIndicatorClassName + @"BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle], + CPProgressIndicatorClassName + @"Bar" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorBarStyle], + CPProgressIndicatorClassName + @"BezelBorder" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle], + CPProgressIndicatorClassName + @"Bar" + CPProgressIndicatorStyleIdentifiers[CPProgressIndicatorHUDBarStyle] + ]; for (var i = 0, count = prefixes.length; i < count; i++) { diff --git a/AppKit/CPRadio.j b/AppKit/CPRadio.j index 85b4585c5..b5644ba15 100644 --- a/AppKit/CPRadio.j +++ b/AppKit/CPRadio.j @@ -181,6 +181,23 @@ var CPRadioRadioGroupKey = @"CPRadioRadioGroupKey"; [aCoder encodeObject:_radioGroup forKey:CPRadioRadioGroupKey]; } +- (CPImage)image +{ + return [self currentValueForThemeAttribute:@"image"]; +} + +- (CPImage)alternateImage +{ + return [self currentValueForThemeAttribute:@"image"]; +} + +- (BOOL)startTrackingAt:(CGPoint)aPoint +{ + var startedTracking = [super startTrackingAt:aPoint]; + [self highlight:YES]; + return startedTracking; +} + @end @implementation CPRadioGroup : CPObject diff --git a/AppKit/CPScrollView.j b/AppKit/CPScrollView.j index 1d55fc2bd..42bfddf86 100644 --- a/AppKit/CPScrollView.j +++ b/AppKit/CPScrollView.j @@ -125,6 +125,9 @@ var CPScrollerStyleGlobal = CPScrollerStyleOverlay, + (void)initialize { + if (self !== [CPScrollView class]) + return; + var globalValue = [[CPBundle mainBundle] objectForInfoDictionaryKey:@"CPScrollersGlobalStyle"]; if (globalValue == nil || globalValue == -1) diff --git a/AppKit/CPSearchField.j b/AppKit/CPSearchField.j index 246fc2a9b..173fbfd7b 100644 --- a/AppKit/CPSearchField.j +++ b/AppKit/CPSearchField.j @@ -72,7 +72,7 @@ var RECENT_SEARCH_PREFIX = @" "; + (void)initialize { - if (self != [CPSearchField class]) + if (self !== [CPSearchField class]) return; var bundle = [CPBundle bundleForClass:self]; diff --git a/AppKit/CPShadowView.j b/AppKit/CPShadowView.j index 4517d69e3..081e0666a 100644 --- a/AppKit/CPShadowView.j +++ b/AppKit/CPShadowView.j @@ -54,7 +54,7 @@ var LIGHT_LEFT_INSET = 3.0, + (void)initialize { - if (self != [CPShadowView class]) + if (self !== [CPShadowView class]) return; var bundle = [CPBundle bundleForClass:[self class]]; diff --git a/AppKit/CPSplitView.j b/AppKit/CPSplitView.j index 02b1e06f9..499f6f7e4 100644 --- a/AppKit/CPSplitView.j +++ b/AppKit/CPSplitView.j @@ -113,7 +113,7 @@ var CPSplitViewHorizontalImage = nil, */ + (void)initialize { - if (self != [CPSplitView class]) + if (self !== [CPSplitView class]) return; var bundle = [CPBundle bundleForClass:self]; diff --git a/AppKit/CPToolbar.j b/AppKit/CPToolbar.j index 4c7429638..0b1afce9b 100644 --- a/AppKit/CPToolbar.j +++ b/AppKit/CPToolbar.j @@ -114,7 +114,7 @@ var CPToolbarsByIdentifier = nil, /* @ignore */ + (void)initialize { - if (self != [CPToolbar class]) + if (self !== [CPToolbar class]) return; CPToolbarsByIdentifier = [CPDictionary dictionary]; @@ -241,7 +241,13 @@ var CPToolbarsByIdentifier = nil, - (void)_setWindow:(CPWindow)aWindow { + if (_window) + [[CPNotificationCenter defaultCenter] removeObserver:self object:_window]; + _window = aWindow; + + if (_window) + [[CPNotificationCenter defaultCenter] addObserver:self selector:@selector(_autovalidate) name:_CPWindowDidChangeFirstResponderNotification object:aWindow]; } /*! @@ -314,13 +320,17 @@ var CPToolbarsByIdentifier = nil, // _defaultItems may have been loaded from Cib _itemIdentifiers = [_defaultItems valueForKey:@"itemIdentifier"] || []; - if (_delegate) + if ([_delegate respondsToSelector:@selector(toolbarDefaultItemIdentifiers:)]) { - var itemIdentifiersFromDelegate = [[_delegate toolbarDefaultItemIdentifiers:self] mutableCopy]; + var itemIdentifiersFromDelegate = [_delegate toolbarDefaultItemIdentifiers:self]; + // If we get items both from the Cib and from the delegate method, put the delegate items before the + // Cib ones. if (itemIdentifiersFromDelegate) - _itemIdentifiers = [_itemIdentifiers arrayByAddingObjectsFromArray:itemIdentifiersFromDelegate]; + _itemIdentifiers = [itemIdentifiersFromDelegate arrayByAddingObjectsFromArray:_itemIdentifiers]; } + // If we didn't load from a cib and the delegate hasn't been set yet, we'll just work with an empty list + // at this point. var index = 0, count = [_itemIdentifiers count]; @@ -397,6 +407,19 @@ var CPToolbarsByIdentifier = nil, [toolbarItems[count] validate]; } +- (void)_autovalidate +{ + var toolbarItems = [self visibleItems], + count = [toolbarItems count]; + + while (count--) + { + var item = [toolbarItems objectAtIndex:count]; + if ([item autovalidates]) + [item validate]; + } +} + /* @ignore */ - (id)_itemForItemIdentifier:(CPString)identifier willBeInsertedIntoToolbar:(BOOL)toolbar { diff --git a/AppKit/CPView.j b/AppKit/CPView.j index 315650a60..888123496 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -893,7 +893,7 @@ var CPCurrentToolTip, } /*! - Returns the center of the receiver's frame to the provided point. The point is defined in the superview's coordinate system. + Returns the center of the receiver's frame in the superview's coordinate system. @return CGPoint the center point of the receiver's frame */ - (CGPoint)center diff --git a/AppKit/CPViewController.j b/AppKit/CPViewController.j index 879df04ae..5f355c4c0 100644 --- a/AppKit/CPViewController.j +++ b/AppKit/CPViewController.j @@ -78,8 +78,10 @@ var CPViewControllerCachedCibs; + (void)initialize { - if (self === CPViewController) - CPViewControllerCachedCibs = [CPDictionary dictionary]; + if (self !== [CPViewController class]) + return; + + CPViewControllerCachedCibs = [CPDictionary dictionary]; } /*! diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index be1c11a64..044a6c845 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -167,18 +167,20 @@ CPWindowAbove = 1; */ CPWindowBelow = 2; -CPWindowWillCloseNotification = @"CPWindowWillCloseNotification"; -CPWindowDidBecomeMainNotification = @"CPWindowDidBecomeMainNotification"; -CPWindowDidResignMainNotification = @"CPWindowDidResignMainNotification"; -CPWindowDidBecomeKeyNotification = @"CPWindowDidBecomeKeyNotification"; -CPWindowDidResignKeyNotification = @"CPWindowDidResignKeyNotification"; -CPWindowDidResizeNotification = @"CPWindowDidResizeNotification"; -CPWindowDidMoveNotification = @"CPWindowDidMoveNotification"; -CPWindowWillBeginSheetNotification = @"CPWindowWillBeginSheetNotification"; -CPWindowDidEndSheetNotification = @"CPWindowDidEndSheetNotification"; -CPWindowDidMiniaturizeNotification = @"CPWindowDidMiniaturizeNotification"; -CPWindowWillMiniaturizeNotification = @"CPWindowWillMiniaturizeNotification"; -CPWindowDidDeminiaturizeNotification = @"CPWindowDidDeminiaturizeNotification"; +CPWindowWillCloseNotification = @"CPWindowWillCloseNotification"; +CPWindowDidBecomeMainNotification = @"CPWindowDidBecomeMainNotification"; +CPWindowDidResignMainNotification = @"CPWindowDidResignMainNotification"; +CPWindowDidBecomeKeyNotification = @"CPWindowDidBecomeKeyNotification"; +CPWindowDidResignKeyNotification = @"CPWindowDidResignKeyNotification"; +CPWindowDidResizeNotification = @"CPWindowDidResizeNotification"; +CPWindowDidMoveNotification = @"CPWindowDidMoveNotification"; +CPWindowWillBeginSheetNotification = @"CPWindowWillBeginSheetNotification"; +CPWindowDidEndSheetNotification = @"CPWindowDidEndSheetNotification"; +CPWindowDidMiniaturizeNotification = @"CPWindowDidMiniaturizeNotification"; +CPWindowWillMiniaturizeNotification = @"CPWindowWillMiniaturizeNotification"; +CPWindowDidDeminiaturizeNotification = @"CPWindowDidDeminiaturizeNotification"; + +_CPWindowDidChangeFirstResponderNotification = @"_CPWindowDidChangeFirstResponderNotification"; CPWindowShadowStyleStandard = 0; CPWindowShadowStyleMenu = 1; @@ -343,7 +345,7 @@ var CPWindowActionMessageKeys = [ */ + (void)initialize { - if (self != [CPWindow class]) + if (self !== [CPWindow class]) return; var bundle = [CPBundle bundleForClass:[CPWindow class]]; @@ -822,7 +824,7 @@ CPTexturedBackgroundWindowMask #endif if (_firstResponder === self || !_firstResponder) - [self makeFirstResponder:[self initialFirstResponder]]; + [self makeFirstResponder:_initialFirstResponder]; if (!CPApp._keyWindow) [self makeKeyWindow]; @@ -962,7 +964,7 @@ CPTexturedBackgroundWindowMask // During init the initial first responder is set to the contentView // if it hasn't changed in the mean time we need to update that reference // to the new contentView - if ([self initialFirstResponder] === _contentView) + if (_initialFirstResponder === _contentView) [self setInitialFirstResponder:aView]; _contentView = aView; @@ -1299,21 +1301,24 @@ CPTexturedBackgroundWindowMask - (void)setInitialFirstResponder:(CPView)aView { + // Before an initial first responder is set, be sure to calculate the key loop + [self _setupFirstResponder:aView]; + _initialFirstResponder = aView; } -- (void)_setupFirstResponder +- (void)_setupFirstResponder:(CPView)anInitialFirstResponder { /* If: - The key loop is dirty - The key loop does not auto-recalculate - - The first responder is the window - - The initial first responder is the content view + - No view within the window has become first responder + - No initial first responder has been set Then calculate the key view loop and set the first responder - to the first view in the loop, since we should + to the first view in the loop if no initial responder has been set, since we should always have an initial first responder and a key loop by default. */ if (_keyViewLoopIsDirty && @@ -1323,10 +1328,15 @@ CPTexturedBackgroundWindowMask { [self recalculateKeyViewLoop]; - // Make the first key view of the content view the first responder - var firstKeyView = [[self contentView] nextValidKeyView]; + if (anInitialFirstResponder) + [self makeFirstResponder:anInitialFirstResponder]; + else + { + // Make the first key view of the content view the first responder + var firstKeyView = [[self contentView] nextValidKeyView]; - [self makeFirstResponder:firstKeyView]; + [self makeFirstResponder:firstKeyView]; + } } } @@ -1354,6 +1364,8 @@ CPTexturedBackgroundWindowMask _firstResponder = aResponder; + [[CPNotificationCenter defaultCenter] postNotificationName:_CPWindowDidChangeFirstResponderNotification object:self]; + return YES; } @@ -1684,7 +1696,7 @@ CPTexturedBackgroundWindowMask if (_firstResponder !== self && [_firstResponder respondsToSelector:@selector(becomeKeyWindow)]) [_firstResponder becomeKeyWindow]; - [self _setupFirstResponder]; + [self _setupFirstResponder:nil]; [[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidBecomeKeyNotification @@ -2554,7 +2566,7 @@ CPTexturedBackgroundWindowMask if (!nextValidKeyView) { - var initialFirstResponder = [self initialFirstResponder]; + var initialFirstResponder = _initialFirstResponder; if ([initialFirstResponder acceptsFirstResponder]) nextValidKeyView = initialFirstResponder; @@ -2577,7 +2589,7 @@ CPTexturedBackgroundWindowMask if (!previousValidKeyView) { - var initialFirstResponder = [self initialFirstResponder]; + var initialFirstResponder = _initialFirstResponder; if ([initialFirstResponder acceptsFirstResponder]) previousValidKeyView = initialFirstResponder; @@ -2699,7 +2711,8 @@ var allViews = function(aWindow) [views addObjectsFromArray:[[aWindow contentView] subviews]]; - for (var index = 0; index < views.length; ++index) + // Start from index 1 because index 0 is the contentView and its subviews have already been added + for (var index = 1; index < views.length; ++index) views = views.concat([views[index] subviews]); return views; diff --git a/AppKit/CPWindow/_CPHUDWindowView.j b/AppKit/CPWindow/_CPHUDWindowView.j index b668e865f..a45e6118e 100644 --- a/AppKit/CPWindow/_CPHUDWindowView.j +++ b/AppKit/CPWindow/_CPHUDWindowView.j @@ -38,7 +38,7 @@ var HUD_TITLEBAR_HEIGHT = 26.0; + (void)initialize { - if (self != [_CPHUDWindowView class]) + if (self !== [_CPHUDWindowView class]) return; var bundle = [CPBundle bundleForClass:self]; diff --git a/AppKit/CPWindow/_CPWindowView.j b/AppKit/CPWindow/_CPWindowView.j index 7154ec0ab..56b5ee8cd 100644 --- a/AppKit/CPWindow/_CPWindowView.j +++ b/AppKit/CPWindow/_CPWindowView.j @@ -45,7 +45,7 @@ var _CPWindowViewResizeIndicatorImage = nil; + (void)initialize { - if (self != [_CPWindowView class]) + if (self !== [_CPWindowView class]) return; _CPWindowViewResizeIndicatorImage = [[CPImage alloc] initWithContentsOfFile:[[CPBundle bundleForClass:[CPWindow class]] pathForResource:@"_CPWindowView/_CPWindowViewResizeIndicator.png"] size:CGSizeMake(12.0, 12.0)]; diff --git a/Foundation/CPArray/CPArray.j b/Foundation/CPArray/CPArray.j index 2fba881fe..72af3a0a4 100755 --- a/Foundation/CPArray/CPArray.j +++ b/Foundation/CPArray/CPArray.j @@ -345,11 +345,10 @@ var concat = Array.prototype.concat, /*! Returns the index of the first object in the receiver that passes a test in a given Javascript function. - @param predicate The function to apply to elements of the array. The function receives two arguments: - object The element in the array. - index The index of the element in the array. + @param predicate The function to apply to objects of the array. The function should have the signature: + @code function(object, index) @endcode The predicate function should either return a Boolean value that indicates whether the object passed the test, - or nil to stop the search, which will return CPNotFound to the sender. + or nil to stop the search, which will return \c CPNotFound to the sender. @return The index of the first matching object, or \c CPNotFound if there is no matching object. */ - (unsigned)indexOfObjectPassingTest:(Function)aPredicate @@ -359,12 +358,10 @@ var concat = Array.prototype.concat, /*! Returns the index of the first object in the receiver that passes a test in a given Javascript function. - @param predicate The function to apply to elements of the array. The function receives two arguments: - object The element in the array. - index The index of the element in the array. - context The object passed to the receiver in the aContext parameter. + @param predicate The function to apply to objects of the array. The function should have the signature: + @code function(object, index, context) @endcode The predicate function should either return a Boolean value that indicates whether the object passed the test, - or nil to stop the search, which will return CPNotFound to the sender. + or nil to stop the search, which will return \c CPNotFound to the sender. @param context An object that contains context information you want passed to the predicate function. @return The index of the first matching object, or \c CPNotFound if there is no matching object. */ @@ -377,9 +374,8 @@ var concat = Array.prototype.concat, Returns the index of the first object in the receiver that passes a test in a given Javascript function. @param options Specifies the direction in which the array is searched. Pass CPEnumerationNormal to search forwards or CPEnumerationReverse to search in reverse. - @param predicate The function to apply to elements of the array. The function receives two arguments: - object The element in the array. - index The index of the element in the array. + @param predicate The function to apply to objects of the array. The function should have the signature: + @code function(object, index) @endcode The predicate function should either return a Boolean value that indicates whether the object passed the test, or nil to stop the search, which will return CPNotFound to the sender. @return The index of the first matching object, or \c CPNotFound if there is no matching object. @@ -393,10 +389,8 @@ var concat = Array.prototype.concat, Returns the index of the first object in the receiver that passes a test in a given Javascript function. @param options Specifies the direction in which the array is searched. Pass CPEnumerationNormal to search forwards or CPEnumerationReverse to search in reverse. - @param predicate The function to apply to elements of the array. The function receives two arguments: - object The element in the array. - index The index of the element in the array. - context The object passed to the receiver in the aContext parameter. + @param predicate The function to apply to objects of the array. The function should have the signature: + @code function(object, index, context) @endcode The predicate function should either return a Boolean value that indicates whether the object passed the test, or nil to stop the search, which will return CPNotFound to the sender. @param context An object that contains context information you want passed to the predicate function. diff --git a/Foundation/CPKeyedArchiver.j b/Foundation/CPKeyedArchiver.j index 870ae465b..83dbc52ee 100644 --- a/Foundation/CPKeyedArchiver.j +++ b/Foundation/CPKeyedArchiver.j @@ -125,7 +125,7 @@ var _CPKeyedArchiverStringClass = Nil, */ + (void)initialize { - if (self != [CPKeyedArchiver class]) + if (self !== [CPKeyedArchiver class]) return; _CPKeyedArchiverStringClass = [CPString class]; diff --git a/Foundation/CPRunLoop.j b/Foundation/CPRunLoop.j index af897360d..7d6cbbbc3 100644 --- a/Foundation/CPRunLoop.j +++ b/Foundation/CPRunLoop.j @@ -166,7 +166,7 @@ var CPRunLoopLastNativeRunLoop = 0; */ + (void)initialize { - if (self != [CPRunLoop class]) + if (self !== [CPRunLoop class]) return; CPMainRunLoop = [[CPRunLoop alloc] init]; diff --git a/Tests/AppKit/CPButtonTest.j b/Tests/AppKit/CPButtonTest.j index eff7f75ec..3632a7d35 100644 --- a/Tests/AppKit/CPButtonTest.j +++ b/Tests/AppKit/CPButtonTest.j @@ -179,4 +179,37 @@ [self assertTrue:wasClicked message:@"a user click on a radio button should fire the group action"]; } +- (void)testTypeMasks +{ + var button = [[CPButton alloc] initWithFrame:CGRectMakeZero()]; + + // The default mask should be that of CPMomentaryPushInButton. + [self assert:CPPushInButtonMask | CPGrayButtonMask | CPBackgroundButtonMask equals:[button highlightsBy]]; + [self assert:0 equals:[button showsStateBy]]; + + [button setButtonType:CPPushOnPushOffButton]; + + [self assert:CPPushInCellMask | CPChangeGrayCellMask | CPChangeBackgroundCellMask equals:[button highlightsBy]]; + [self assert:CPChangeBackgroundCellMask | CPChangeGrayCellMask equals:[button showsStateBy]]; + + // Test archiving. + + var archived = [CPKeyedArchiver archivedDataWithRootObject:button], + unarchived = [CPKeyedUnarchiver unarchiveObjectWithData:archived]; + + [self assert:CPPushInCellMask | CPChangeGrayCellMask | CPChangeBackgroundCellMask equals:[button highlightsBy]]; + [self assert:CPChangeBackgroundCellMask | CPChangeGrayCellMask equals:[button showsStateBy]]; + + // Make sure that if highlightsBy and showsStateBy were explicitly set to 0 and 0 (making the button basically + // not react to clicks), these settings are not replaced by the defaults when decoding. + [button setHighlightsBy:0]; + [button setShowsStateBy:0]; + + archived = [CPKeyedArchiver archivedDataWithRootObject:button]; + unarchived = [CPKeyedUnarchiver unarchiveObjectWithData:archived]; + + [self assert:0 equals:[button highlightsBy]]; + [self assert:0 equals:[button showsStateBy]]; +} + @end diff --git a/Tests/AppKit/WithAndWithoutBindingsIntegration/02_WithBindings/StringToURLTransformer.j b/Tests/AppKit/WithAndWithoutBindingsIntegration/02_WithBindings/StringToURLTransformer.j index 477569d4e..14ea21cae 100644 --- a/Tests/AppKit/WithAndWithoutBindingsIntegration/02_WithBindings/StringToURLTransformer.j +++ b/Tests/AppKit/WithAndWithoutBindingsIntegration/02_WithBindings/StringToURLTransformer.j @@ -26,6 +26,9 @@ + (void)initialize { + if (self !== [StringToURLTransformer class]) + return; + [CPValueTransformer setValueTransformer:[self new] forName:@"StringToURLTransformer"]; } diff --git a/Tests/Manual/CPButtonTest/AppController.j b/Tests/Manual/CPButtonTest/AppController.j index 831c77664..bbbdb388e 100644 --- a/Tests/Manual/CPButtonTest/AppController.j +++ b/Tests/Manual/CPButtonTest/AppController.j @@ -17,13 +17,21 @@ CPLogRegister(CPLogConsole); @outlet CPButton button; @outlet CPButton imageButton; @outlet CPButton imageDisabledButton; + @outlet CPButton pushInButton; + @outlet CPButton pushOnOffButton; + @outlet CPButton toggleButton; + @outlet CPButton momentaryChangeButton; @outlet CPCheckBox checkbox; @outlet CPCheckBox multiCheckbox; @outlet CPRadio radio1; @outlet CPRadio radio2; @outlet CPPopUpButton positionMenu; + @outlet CPButton monkeyButton; + @outlet CPCheckBox monkeyCheckbox; @outlet CPTextField clickCount; + @outlet CPTextField monkeyLabel; + @outlet CPTextField monkeyCheckboxLabel; CPArray buttons; CPArray checksAndRadios; @@ -60,6 +68,27 @@ CPLogRegister(CPLogConsole); [[radio1 radioGroup] setTarget:self]; [[radio1 radioGroup] setAction:@selector(radioGroupClicked:)]; [multiCheckbox setState:CPMixedState]; + + [pushInButton setButtonType:CPMomentaryLightButton]; + [pushOnOffButton setButtonType:CPPushOnPushOffButton]; + [toggleButton setButtonType:CPToggleButton]; + [momentaryChangeButton setButtonType:CPMomentaryChangeButton]; + + [pushInButton setAlternateTitle:@"Should Not See Me"]; + [toggleButton setAlternateTitle:@"Alternate Title For Toggle"]; + [momentaryChangeButton setAlternateTitle:@"Changed!"]; + + [monkeyButton setAlternateTitle:@"Alternate title"]; + var path = [[CPBundle bundleForClass:[CPView class]] pathForResource:@"action_button.png"]; + [monkeyButton setAlternateImage:[[CPImage alloc] initWithContentsOfFile:path size:CGSizeMake(22.0, 14.0)]] + [monkeyButton setHighlightsBy:CPNoCellMask]; + [monkeyButton setShowsStateBy:CPNoCellMask]; + + [monkeyCheckbox setAlternateTitle:@"Alternate title"]; + [monkeyCheckbox setHighlightsBy:CPNoCellMask]; + [monkeyCheckbox setShowsStateBy:CPNoCellMask]; + + CPLog(@"%@", [monkeyButton alternateTitle]); } - (void)setImagePosition:(id)sender @@ -117,6 +146,40 @@ CPLogRegister(CPLogConsole); CPLog.info("Radio group action sent!"); } +- (IBAction)setMonkeyButtonHighlightedBy:(id)aSender +{ + if ([aSender state] == CPOnState) + { + [monkeyButton setHighlightsBy:[monkeyButton highlightsBy] | [aSender tag]]; + [monkeyCheckbox setHighlightsBy:[monkeyCheckbox highlightsBy] | [aSender tag]]; + } + else + { + [monkeyButton setHighlightsBy:[monkeyButton highlightsBy] ^ [aSender tag]]; + [monkeyCheckbox setHighlightsBy:[monkeyCheckbox highlightsBy] ^ [aSender tag]]; + } +} + +- (IBAction)setMonkeyButtonShowsStateBy:(id)aSender +{ + if ([aSender state] == CPOnState) + { + [monkeyButton setShowsStateBy:[monkeyButton showsStateBy] | [aSender tag]]; + [monkeyCheckbox setShowsStateBy:[monkeyCheckbox showsStateBy] | [aSender tag]]; + } + else + { + [monkeyButton setShowsStateBy:[monkeyButton showsStateBy] ^ [aSender tag]]; + [monkeyCheckbox setShowsStateBy:[monkeyCheckbox showsStateBy] ^ [aSender tag]]; + } +} + +- (IBAction)monkeyClick:(id)aSender +{ + [monkeyLabel setStringValue:[CPString stringWithFormat:@"State: %d", [monkeyButton state]]]; + [monkeyCheckboxLabel setStringValue:[CPString stringWithFormat:@"State: %d", [monkeyCheckbox state]]]; +} + @end @implementation BezelView : CPView diff --git a/Tests/Manual/CPButtonTest/Info.plist b/Tests/Manual/CPButtonTest/Info.plist index 14fcbd763..0ba6c59dc 100644 --- a/Tests/Manual/CPButtonTest/Info.plist +++ b/Tests/Manual/CPButtonTest/Info.plist @@ -5,8 +5,6 @@ Main cib file base name MainMenu.cib CPBundleName - CPButtonImageTest - CPPrincipalClass - CPApplication + CPButton - + \ No newline at end of file diff --git a/Tests/Manual/CPButtonTest/Resources/MainMenu.cib b/Tests/Manual/CPButtonTest/Resources/MainMenu.cib index b8fc901df..b0ffde79d 100644 --- a/Tests/Manual/CPButtonTest/Resources/MainMenu.cib +++ b/Tests/Manual/CPButtonTest/Resources/MainMenu.cib @@ -1 +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;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;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;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;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;2;30E;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;31E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;41E;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;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;67E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;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;61E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;39E;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;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;68E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;69E;E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;70E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;71E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;54E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;65E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;73E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;52E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;74E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;75E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;76E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;39E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;77E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;79E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;80E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;81E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;82E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;59E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;33E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;83E;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;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;39E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;84E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;62E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;26E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;86E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;68E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;87E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;88E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;89E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;90E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;91E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;35E;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;34E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;93E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;93E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;94E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;95E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;96E;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;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;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;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;96E;K;6;$afontD;K;6;CP$UIDd;3;102E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;104E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;107E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;108E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;108E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;108E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;103E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;104E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;67E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;109E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;111E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;104E;K;11;$aalignmentD;K;6;CP$UIDd;2;92E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;92E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;114E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;39E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;115E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;116E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;118E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;39E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;115E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;116E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;119E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;39E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;120E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;39E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;121E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;39E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;122E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;39E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;123E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;39E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;115E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;67E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;117E;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;48E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;35E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;124E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;125E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;126E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;35E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;96E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;127E;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;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;128E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;129E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;49E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;92E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;130E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;131E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;132E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;49E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;112E;K;16;$aimage-positionD;K;6;CP$UIDd;3;103E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;92E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;133E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;134E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;135E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;49E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;136E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;137E;K;16;$aimage-positionD;K;6;CP$UIDd;3;103E;K;6;$afontD;K;6;CP$UIDd;3;102E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;116E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;138E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;53E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;139E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;140E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;49E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;136E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;137E;K;16;$aimage-positionD;K;6;CP$UIDd;3;103E;K;6;$afontD;K;6;CP$UIDd;3;102E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;11;$aalignmentD;K;6;CP$UIDd;2;92E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;116E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;141E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;105E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;142E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;144E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;49E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;145E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;146E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;49E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;92E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;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;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;49E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;132E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;49E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;149E;K;16;$aimage-positionD;K;6;CP$UIDd;3;103E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;92E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;150E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;151E;E;D;K;6;$classD;K;6;CP$UIDd;2;32E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;87E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;88E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;152E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;153E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;154E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;155E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;61E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;157E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;61E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;92E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;159E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;61E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;160E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;161E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;61E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;71E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;112E;K;6;$afontD;K;6;CP$UIDd;3;113E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;92E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;162E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;163E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;61E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;165E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;61E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;96E;K;6;$afontD;K;6;CP$UIDd;3;102E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;104E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;166E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;107E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;108E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;108E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;108E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;103E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;104E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;61E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;92E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;167E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;168E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;61E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;99E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;96E;K;6;$afontD;K;6;CP$UIDd;3;102E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;3;116E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;105E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;169E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;107E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;108E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;108E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;108E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;103E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;116E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;66E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;170E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;171E;E;S;13;CPApplicationD;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;60E;E;E;S;8;delegateS;6;buttonS;8;checkboxS;10;clickCountS;11;imageButtonS;19;imageDisabledButtonS;13;multiCheckboxS;12;positionMenuD;K;10;$classnameS;7;CPRadioK;8;$classesA;S;7;CPRadioS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;78E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;56E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;172E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;56E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;95E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;174E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;175E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;176E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;103E;K;16;$aimage-positionD;K;6;CP$UIDd;3;103E;K;6;$afontD;K;6;CP$UIDd;3;102E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;2;92E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;116E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;177E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;178E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;179E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;181E;E;S;6;radio1D;K;6;$classD;K;6;CP$UIDd;2;78E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;56E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;182E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;172E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;56E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;95E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;174E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;175E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;112E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;103E;K;16;$aimage-positionD;K;6;CP$UIDd;3;103E;K;6;$afontD;K;6;CP$UIDd;3;102E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;92E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;103E;K;11;$aalignmentD;K;6;CP$UIDd;2;92E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;92E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;104E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;183E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;108E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;105E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;103E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;92E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;178E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;179E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;181E;E;S;6;radio2S;9;theWindowS;17;setImagePosition:S;11;countClick:S;20;switchSelectedRadio:S;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{106, 103}, {380, 253}}d;1;7S;19;CPButton Image Testd;1;0S;20;{{0, 0}, {380, 253}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;49E;E;E;d;2;18S;6;normalS;22;{{40, 212}, {101, 17}}S;19;{{0, 0}, {101, 17}}d;2;36S;9;textfieldD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;101E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;184E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;185E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;108E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;108E;E;d;1;2d;1;4T;S;15;Image Position:d;4;3072F;S;23;{{141, 211}, {201, 24}}S;19;{{0, 0}, {201, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;101E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;184E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;185E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;105E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;108E;E;S;8;No ImageS;17;_popUpItemAction:d;1;1d;7;1048576S;10;Image OnlyS;4;LeftS;5;RightS;5;BelowS;5;AboveS;8;OverlapsS;22;{{20, 20}, {340, 174}}S;20;{{0, 0}, {340, 174}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;51E;E;E;S;9;BezelViewS;20;{{22, 15}, {96, 24}}S;18;{{0, 0}, {96, 24}}S;6;ButtonS;22;{{141, 15}, {176, 24}}S;19;{{0, 0}, {176, 24}}S;17;Button With ImageS;20;{{29, 65}, {85, 40}}S;18;{{0, 0}, {85, 40}}S;9;check-boxS;8;selectedS;8;CheckboxS;22;{{163, 65}, {152, 40}}S;19;{{0, 0}, {152, 40}}S;19;Multistate CheckboxS;22;{{31, 120}, {168, 40}}S;19;{{0, 0}, {168, 40}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;81E;E;E;S;23;{{198, 128}, {119, 24}}S;19;{{0, 0}, {119, 24}}S;14;Set radio 2 OnS;22;{{141, 45}, {176, 24}}S;17;disabled+borderedS;19;Disabled With ImageS;13;AppControllerS;23;{{554, 201}, {318, 85}}d;2;15S;22;Continuous Button TestS;19;{{0, 0}, {318, 85}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;E;E;S;21;{{18, 18}, {120, 24}}S;19;{{0, 0}, {120, 24}}S;13;Normal ButtonS;22;{{150, 18}, {146, 24}}S;19;{{0, 0}, {146, 24}}d;5;65540S;17;Continuous ButtonS;21;{{17, 48}, {107, 17}}S;19;{{0, 0}, {107, 17}}S;16;Recorded clicks:S;22;{{126, 48}, {175, 17}}S;19;{{0, 0}, {175, 17}}S;1;0S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;41E;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;E;E;S;18;{{0, 0}, {82, 40}}D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;173E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;186E;E;S;5;radioS;17;selected+borderedS;7;Radio 1f;3;0.5f;4;0.05D;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;180E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;187E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;2;79E;E;S;19;{{86, 0}, {82, 40}}S;7;Radio 2S;17;Arial, sans-serifd;2;12D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;92E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;188E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;81E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file +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;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;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;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;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;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;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;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;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;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;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;67E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;108E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;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;79E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;2;57E;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;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;110E;E;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;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;111E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;69E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;112E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;72E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;114E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;70E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;76E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;116E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;89E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;92E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;118E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;105E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;106E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;120E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;104E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;121E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;73E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;122E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;57E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;123E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;86E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;87E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;127E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;129E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;130E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;88E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;132E;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;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;133E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;80E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;95E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;96E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;141E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;142E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;143E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;53E;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;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;145E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;145E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;146E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;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;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;149E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;150E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;156E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;158E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;156E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;108E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;161E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;163E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;156E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;166E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;167E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;168E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;169E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;171E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;168E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;169E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;172E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;168E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;173E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;168E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;174E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;168E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;175E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;168E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;176E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;168E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;170E;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;66E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;177E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;178E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;179E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;180E;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;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;181E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;182E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;183E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;185E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;187E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;188E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;169E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;192E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;193E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;169E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;195E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;157E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;196E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;197E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;198E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;199E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;200E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;201E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;202E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;203E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;204E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;205E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;206E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;207E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;208E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;209E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;209E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;210E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;211E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;212E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;213E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;214E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;215E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;216E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;217E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;218E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;219E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;156E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;220E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;156E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;221E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;222E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;169E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;223E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;169E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;224E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;207E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;225E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;226E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;226E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;227E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;228E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;230E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;231E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;232E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;233E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;234E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;235E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;236E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;237E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;207E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;238E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;239E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;239E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;240E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;241E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;242E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;165E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;7;$aimageD;K;6;CP$UIDd;3;244E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;245E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;184E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;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;93E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;246E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;247E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;248E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;144E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;3;144E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;3;169E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;3;250E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;3;251E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;3;144E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;3;169E;K;10;CPBoxTitleD;K;6;CP$UIDd;3;252E;K;18;CPBoxTitlePositionD;K;6;CP$UIDd;3;155E;K;14;CPBoxTitleViewD;K;6;CP$UIDd;1;0E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;254E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;155E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;255E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;256E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;254E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;257E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;258E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;254E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;169E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;259E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;260E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;254E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;261E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;262E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;254E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;156E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;263E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;264E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;254E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;265E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;266E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;254E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;267E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;268E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;269E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;254E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;270E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;271E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;93E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;272E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;247E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;273E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;144E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;3;144E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;3;169E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;3;274E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;3;251E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;3;144E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;3;169E;K;10;CPBoxTitleD;K;6;CP$UIDd;3;275E;K;18;CPBoxTitlePositionD;K;6;CP$UIDd;3;155E;K;14;CPBoxTitleViewD;K;6;CP$UIDd;1;0E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;276E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;267E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;268E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;269E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;276E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;277E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;271E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;276E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;156E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;263E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;264E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;276E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;278E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;266E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;276E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;169E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;259E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;260E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;276E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;279E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;262E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;276E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;155E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;255E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;256E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;276E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;280E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;258E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;281E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;282E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;156E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;283E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;156E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;284E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;285E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;191E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;169E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;286E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;169E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;287E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;282E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;156E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;283E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;156E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;288E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;289E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;90E;E;E;S;8;delegateS;6;buttonS;8;checkboxS;10;clickCountS;11;imageButtonS;19;imageDisabledButtonS;21;momentaryChangeButtonS;12;monkeyButtonS;14;monkeyCheckboxS;19;monkeyCheckboxLabelS;11;monkeyLabelS;13;multiCheckboxS;12;positionMenuS;12;pushInButtonS;15;pushOnOffButtonD;K;10;$classnameS;7;CPRadioK;8;$classesA;S;7;CPRadioS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;126E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;290E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;290E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;251E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;291E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;292E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;155E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;169E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;293E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;294E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;295E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;296E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;298E;E;S;6;radio1D;K;6;$classD;K;6;CP$UIDd;3;126E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;299E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;290E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;251E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;291E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;164E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;155E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;300E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;294E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;295E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;296E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;298E;E;S;6;radio2S;9;theWindowS;12;toggleButtonS;17;setImagePosition:S;11;countClick:S;20;switchSelectedRadio:S;12;monkeyClick:S;29;setMonkeyButtonHighlightedBy:S;28;setMonkeyButtonShowsStateBy:S;32;{10000000000000, 10000000000000}S;8;CPWindowS;23;{{10, 465}, {380, 253}}d;1;7S;19;CPButton Image Testd;1;0S;20;{{0, 0}, {380, 253}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;67E;E;E;d;2;18S;6;normalS;22;{{40, 212}, {101, 17}}S;19;{{0, 0}, {101, 17}}d;2;36S;9;textfieldD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;166E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;d;1;2d;1;4T;S;15;Image Position:d;4;3072F;S;23;{{141, 211}, {201, 24}}S;19;{{0, 0}, {201, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;166E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;157E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;d;2;12S;8;No ImageS;17;_popUpItemAction:d;1;1d;7;1048576S;10;Image OnlyS;4;LeftS;5;RightS;5;BelowS;5;AboveS;8;OverlapsS;22;{{20, 20}, {340, 174}}S;20;{{0, 0}, {340, 174}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;69E;E;E;S;9;BezelViewS;20;{{22, 15}, {96, 24}}S;18;{{0, 0}, {96, 24}}S;6;Buttond;2;14S;22;{{141, 15}, {176, 24}}S;19;{{0, 0}, {176, 24}}S;17;Button With ImageS;20;{{29, 65}, {85, 40}}S;18;{{0, 0}, {85, 40}}S;9;check-boxS;8;selectedS;8;CheckboxS;22;{{163, 65}, {152, 40}}S;19;{{0, 0}, {152, 40}}S;19;Multistate CheckboxS;22;{{31, 120}, {168, 40}}S;19;{{0, 0}, {168, 40}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;129E;E;E;S;23;{{198, 128}, {119, 24}}S;19;{{0, 0}, {119, 24}}S;14;Set radio 2 OnS;22;{{141, 45}, {176, 24}}S;17;disabled+borderedS;19;Disabled With ImageS;13;AppControllerS;22;{{10, 796}, {318, 85}}d;2;15S;22;Continuous Button TestS;19;{{0, 0}, {318, 85}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;E;E;S;21;{{18, 18}, {120, 24}}S;19;{{0, 0}, {120, 24}}S;13;Normal ButtonS;22;{{150, 18}, {146, 24}}S;19;{{0, 0}, {146, 24}}d;5;65540S;17;Continuous ButtonS;21;{{17, 48}, {107, 17}}S;19;{{0, 0}, {107, 17}}S;16;Recorded clicks:S;22;{{126, 48}, {175, 17}}S;19;{{0, 0}, {175, 17}}S;1;0S;24;{{410, 462}, {271, 156}}S;25;CPButton Button Type TestS;20;{{0, 0}, {271, 156}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;E;E;S;21;{{29, 18}, {208, 24}}S;19;{{0, 0}, {208, 24}}S;26;Momentary Push In (Normal)S;21;{{29, 50}, {208, 24}}S;18;Push On / Push OffS;21;{{29, 82}, {208, 24}}S;6;ToggleS;22;{{29, 114}, {208, 24}}S;16;Momentary ChangeS;24;{{410, 644}, {480, 210}}S;18;Monkey Button TestS;20;{{0, 0}, {480, 210}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;E;E;S;22;{{151, 38}, {174, 24}}S;19;{{0, 0}, {174, 24}}D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;243E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;302E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;303E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;305E;E;S;13;Monkey ButtonS;22;{{17, 80}, {222, 114}}S;20;{{0, 0}, {222, 114}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;254E;E;E;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;249E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;306E;E;D;K;6;$classD;K;6;CP$UIDd;3;249E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;307E;E;S;13;Highlights ByS;6;{0, 0}D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;94E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;313E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;314E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;315E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;94E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;S;20;{{16, 8}, {137, 18}}S;19;{{0, 0}, {137, 18}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;S;16;CPPushInCellMaskS;21;{{16, 28}, {152, 18}}S;19;{{0, 0}, {152, 18}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;S;18;CPContentsCellMaskS;21;{{16, 48}, {172, 18}}S;19;{{0, 0}, {172, 18}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;S;20;CPChangeGrayCellMaskd;1;8S;21;{{16, 68}, {218, 18}}S;19;{{0, 0}, {218, 18}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;S;26;CPChangeBackgroundCellMaskS;23;{{241, 80}, {222, 114}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;276E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;249E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;309E;E;S;14;Shows State ByD;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;99E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;313E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;314E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;317E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;99E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;301E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;E;S;22;{{332, 41}, {131, 17}}S;19;{{0, 0}, {131, 17}}S;5;LabelS;22;{{151, 10}, {138, 32}}S;19;{{0, 0}, {138, 32}}S;15;Monkey CheckboxS;22;{{289, 10}, {131, 17}}S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;E;E;S;18;{{0, 0}, {82, 40}}S;5;radioS;17;selected+borderedS;7;Radio 1d;1;3f;3;0.5f;4;0.05D;K;10;$classnameS;12;CPRadioGroupK;8;$classesA;S;12;CPRadioGroupS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;297E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;310E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;127E;E;S;19;{{86, 0}, {82, 40}}S;7;Radio 2S;17;Arial, sans-serifS;7;CPImageS;13;CPAddTemplateD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;304E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;312E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;316E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;E;E;d;2;11D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;316E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;318E;E;D;K;10;$classnameS;21;_CPKeyedArchiverValueK;8;$classesA;S;21;_CPKeyedArchiverValueS;7;CPValueS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;311E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;319E;E;S;20;{{1, 15}, {220, 98}}S;19;{{0, 0}, {220, 98}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;E;E;f;4;0.42D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;100E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;129E;E;E;S;22;{"width":0,"height":0}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPButtonTest/Resources/MainMenu.xib b/Tests/Manual/CPButtonTest/Resources/MainMenu.xib index 421a5b364..4cfbbac37 100644 --- a/Tests/Manual/CPButtonTest/Resources/MainMenu.xib +++ b/Tests/Manual/CPButtonTest/Resources/MainMenu.xib @@ -17,6 +17,7 @@ NSButton NSTextFieldCell NSButtonCell + NSBox NSMatrix NSCustomObject NSCustomView @@ -45,7 +46,7 @@ 7 2 - {{106, 672}, {380, 253}} + {{10, 700}, {380, 253}} 1954021376 CPButton Image Test NSWindow @@ -361,7 +362,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - + 3 MQA @@ -477,7 +478,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - {{0, 0}, {1680, 1028}} + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} YES @@ -487,14 +488,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 15 2 - {{554, 742}, {318, 85}} + {{10, 537}, {318, 85}} 611844096 Continuous Button Test NSWindow - + 256 @@ -502,7 +503,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{14, 37}, {132, 32}} - YES @@ -524,7 +524,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{146, 37}, {158, 32}} - YES @@ -546,7 +545,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{17, 20}, {107, 17}} - YES @@ -564,8 +562,6 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 268 {{126, 20}, {175, 17}} - - YES 68288064 @@ -579,11 +575,547 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA {318, 85} - - - {{0, 0}, {1680, 1028}} + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + YES + + + 15 + 2 + {{410, 800}, {271, 156}} + 611845120 + CPButton Button Type Test + NSWindow + + + + + 256 + + + + 268 + {{25, 108}, {220, 32}} + + + _NS:9 + YES + + 67239424 + 134217728 + Momentary Push In (Normal) + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{25, 76}, {220, 32}} + + + _NS:9 + YES + + 67239424 + 134217728 + Push On / Push Off + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{25, 44}, {220, 32}} + + + _NS:9 + YES + + 67239424 + 134217728 + Toggle + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{25, 12}, {220, 32}} + + _NS:9 + YES + + 67239424 + 134217728 + Momentary Change + + _NS:9 + + -2038284033 + 129 + + + 200 + 25 + + + + {271, 156} + + _NS:20 + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + YES + + + 15 + 2 + {{410, 564}, {480, 210}} + 611845120 + Monkey Button Test + NSWindow + + + + + 256 + + + + 268 + {{147, 142}, {186, 32}} + + + + _NS:9 + YES + + 67239424 + 134217728 + Monkey Button + + _NS:9 + + -2034482945 + 129 + + NSImage + NSAddTemplate + + + NSImage + NSRemoveTemplate + + Alternate Title + + 200 + 25 + + + + + 12 + + + + 274 + + + + 268 + {{16, 72}, {137, 18}} + + + + _NS:9 + 2 + YES + + 67239424 + 131072 + CPPushInCellMask + + LucidaGrande + 11 + 3100 + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 52}, {152, 18}} + + + + _NS:9 + 1 + YES + + 67239424 + 131072 + CPContentsCellMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 32}, {172, 18}} + + + + _NS:9 + 4 + YES + + 67239424 + 131072 + CPChangeGrayCellMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 12}, {218, 18}} + + + + _NS:9 + 8 + YES + + 67239424 + 131072 + CPChangeBackgroundCellMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {220, 98}} + + + + _NS:11 + + + {{17, 16}, {222, 114}} + + + + _NS:9 + {0, 0} + + 67239424 + 0 + Highlights By + + + 6 + System + textBackgroundColor + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 12 + + + + 274 + + + + 268 + {{16, 72}, {137, 18}} + + + + _NS:9 + 2 + YES + + 67239424 + 131072 + CPPushInCellMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 52}, {152, 18}} + + + + _NS:9 + 1 + YES + + 67239424 + 131072 + CPContentsCellMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 32}, {172, 18}} + + + + _NS:9 + 4 + YES + + 67239424 + 131072 + CPChangeGrayCellMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{16, 12}, {218, 18}} + + + + _NS:9 + 8 + YES + + 67239424 + 131072 + CPChangeBackgroundCellMask + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + {{1, 1}, {220, 98}} + + + + _NS:11 + + + {{241, 16}, {222, 114}} + + + + _NS:9 + {0, 0} + + 67239424 + 0 + Shows State By + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 268 + {{332, 152}, {131, 17}} + + + + _NS:1505 + YES + + 68288064 + 272630784 + Label + + _NS:1505 + + + + + + + + 268 + {{151, 168}, {138, 32}} + + + + _NS:9 + YES + + -2080244224 + 0 + Monkey Checkbox + + _NS:9 + + 1211912703 + 2 + + + + + 200 + 25 + + + + + 268 + {{289, 183}, {131, 17}} + + + + _NS:1505 + YES + + 68288064 + 272630784 + Label + + _NS:1505 + + + + + + + {480, 210} + + + + _NS:20 + + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} YES @@ -710,6 +1242,150 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 1209 + + + pushOnOffButton + + + + 1220 + + + + pushInButton + + + + 1221 + + + + toggleButton + + + + 1222 + + + + momentaryChangeButton + + + + 1223 + + + + setMonkeyButtonHighlightedBy: + + + + 1247 + + + + setMonkeyButtonHighlightedBy: + + + + 1248 + + + + setMonkeyButtonHighlightedBy: + + + + 1249 + + + + setMonkeyButtonHighlightedBy: + + + + 1250 + + + + setMonkeyButtonShowsStateBy: + + + + 1251 + + + + setMonkeyButtonShowsStateBy: + + + + 1252 + + + + setMonkeyButtonShowsStateBy: + + + + 1253 + + + + setMonkeyButtonShowsStateBy: + + + + 1254 + + + + monkeyButton + + + + 1255 + + + + monkeyLabel + + + + 1258 + + + + monkeyClick: + + + + 1259 + + + + monkeyClick: + + + + 1267 + + + + monkeyCheckboxLabel + + + + 1268 + + + + monkeyCheckbox + + + + 1269 + @@ -1026,6 +1702,277 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA + + 1210 + + + + + + + + 1211 + + + + + + + + + + + 1212 + + + + + + + + 1213 + + + + + 1214 + + + + + + + + 1215 + + + + + 1216 + + + + + + + + 1217 + + + + + 1218 + + + + + + + + 1219 + + + + + 1224 + + + + + + Window - Monkey Button Test + + + 1225 + + + + + + + + + + + + + 1226 + + + + + + + + 1227 + + + + + 1228 + + + + + + + + + + + 1230 + + + + + + + + 1231 + + + + + 1232 + + + + + + + + 1233 + + + + + 1234 + + + + + + + + 1235 + + + + + 1236 + + + + + + + + 1237 + + + + + 1238 + + + + + + + + + + + 1239 + + + + + + + + 1240 + + + + + + + + 1241 + + + + + + + + 1242 + + + + + + + + 1243 + + + + + 1244 + + + + + 1245 + + + + + 1246 + + + + + 1256 + + + + + + + + 1257 + + + + + 1260 + + + + + + + + 1261 + + + + + 1262 + + + + + + + + 1263 + + + @@ -1074,6 +2021,46 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 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 + 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 + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1086,7 +2073,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 1209 + 1269 @@ -1095,7 +2082,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSObject id + id id + id + id id @@ -1103,10 +2093,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA countClick: id + + monkeyClick: + id + radioGroupClicked: id + + setMonkeyButtonHighlightedBy: + id + + + setMonkeyButtonShowsStateBy: + id + switchSelectedRadio: id @@ -1118,10 +2120,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA NSTextField NSButton NSButton + NSButton + NSButton + CPCheckBox + NSTextField + NSTextField CPCheckBox NSPopUpButton + NSButton + NSButton CPRadio CPRadio + NSButton @@ -1144,6 +2154,26 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA imageDisabledButton NSButton + + momentaryChangeButton + NSButton + + + monkeyButton + NSButton + + + monkeyCheckbox + CPCheckBox + + + monkeyCheckboxLabel + NSTextField + + + monkeyLabel + NSTextField + multiCheckbox CPCheckBox @@ -1152,6 +2182,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA positionMenu NSPopUpButton + + pushInButton + NSButton + + + pushOnOffButton + NSButton + radio1 CPRadio @@ -1160,6 +2198,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA radio2 CPRadio + + toggleButton + NSButton + IBProjectSource @@ -1181,8 +2223,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES 3 + {8, 8} {11, 11} {10, 3} + {8, 8} {15, 15} diff --git a/Tests/Manual/CPButtonTest/index-debug.html b/Tests/Manual/CPButtonTest/index-debug.html index c67d51ba6..145fbc0cf 100644 --- a/Tests/Manual/CPButtonTest/index-debug.html +++ b/Tests/Manual/CPButtonTest/index-debug.html @@ -1,28 +1,60 @@ - - + - + - CPButton Image Test + - - + - + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPPopUpButtonBindings/index.html b/Tests/Manual/CPPopUpButtonBindings/index.html new file mode 100644 index 000000000..2114299d9 --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/index.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + CPPopUpButtonBindings + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPPopUpButtonBindings/main.j b/Tests/Manual/CPPopUpButtonBindings/main.j new file mode 100644 index 000000000..28679968f --- /dev/null +++ b/Tests/Manual/CPPopUpButtonBindings/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPPopUpButtonBindings + * + * Created by You on November 2, 2010. + * Copyright 2010, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/KeyEquivalents/AppController.j b/Tests/Manual/KeyEquivalents/AppController.j index f32bddf20..c4614b891 100644 --- a/Tests/Manual/KeyEquivalents/AppController.j +++ b/Tests/Manual/KeyEquivalents/AppController.j @@ -34,18 +34,18 @@ [contentView addSubview:label]; var keysToTest = [ - "a", - ";", - "-", - "=", - ",", - ".", - "/", - "`", - "'", - "[", - "\\", - "]" + "a", + ";", + "-", + "=", + ",", + ".", + "/", + "`", + "'", + "[", + "\\", + "]" ]; for (var i = 0; i < keysToTest.length; i++) @@ -69,23 +69,23 @@ [contentView addSubview:label]; var functionKeysToTest = [ - ["backspace", CPBackspaceCharacter], - ["delete char", CPDeleteCharacter], - ["delete key", CPDeleteFunctionKey], - ["tab", CPTabCharacter], - ["carriage return", CPCarriageReturnCharacter], - ["newline", CPNewlineCharacter], - ["space", CPSpaceFunctionKey], - ["esc", CPEscapeFunctionKey], - ["pgup", CPPageUpFunctionKey], - ["pgdn", CPPageDownFunctionKey], - ["left arrow", CPLeftArrowFunctionKey], - ["up arrow", CPUpArrowFunctionKey], - ["right arrow", CPRightArrowFunctionKey], - ["down arrow", CPDownArrowFunctionKey], - ["home", CPHomeFunctionKey], - ["end", CPEndFunctionKey] - ]; + ["backspace", CPBackspaceCharacter], + ["delete char", CPDeleteCharacter], + ["delete key", CPDeleteFunctionKey], + ["tab", CPTabCharacter], + ["carriage return", CPCarriageReturnCharacter], + ["newline", CPNewlineCharacter], + ["space", CPSpaceFunctionKey], + ["esc", CPEscapeFunctionKey], + ["pgup", CPPageUpFunctionKey], + ["pgdn", CPPageDownFunctionKey], + ["left arrow", CPLeftArrowFunctionKey], + ["up arrow", CPUpArrowFunctionKey], + ["right arrow", CPRightArrowFunctionKey], + ["down arrow", CPDownArrowFunctionKey], + ["home", CPHomeFunctionKey], + ["end", CPEndFunctionKey] + ]; for (var i = 0, buttonsWide = 6, yOffset = 0; i < functionKeysToTest.length; i++) { @@ -120,7 +120,7 @@ @end -@implementation TestButton :CPButton +@implementation TestButton : CPButton { } diff --git a/Tests/Manual/UserlandNSTest/BorderView.j b/Tests/Manual/UserlandNSTest/BorderView.j index 3328dafe1..fbeac462b 100644 --- a/Tests/Manual/UserlandNSTest/BorderView.j +++ b/Tests/Manual/UserlandNSTest/BorderView.j @@ -21,7 +21,8 @@ BorderViewDefaultBorderColor = nil; + (void)initialize { - BorderViewDefaultBorderColor = [CPColor colorWithHexString:@"0000ff"]; + if (self === [BorderView class]) + BorderViewDefaultBorderColor = [CPColor colorWithHexString:@"0000ff"]; } - (id)initWithFrame:(CGRect)aFrame diff --git a/Tools/nib2cib/NSButton.j b/Tools/nib2cib/NSButton.j index e62a9e9a6..da8fc3518 100644 --- a/Tools/nib2cib/NSButton.j +++ b/Tools/nib2cib/NSButton.j @@ -50,7 +50,18 @@ var NSButtonIsBorderedMask = 0x00800000, NSButtonImageRightPositionMask = 0x2C, NSButtonImageLeftPositionMask = 0x3C, NSButtonImageOnlyPositionMask = 0x44, - NSButtonImageOverlapsPositionMask = 0x6C; + NSButtonImageOverlapsPositionMask = 0x6C, + + // You cannot set neither highlightsBy nor showsStateBy in IB, + // but you can set button type which implicitly sets the masks. + // Note that you cannot set NSPushInCellMask for showsStateBy. + NSHighlightsByPushInCellMask = 0x80000000, + NSHighlightsByContentsCellMask = 0x08000000, + NSHighlightsByChangeGrayCellMask = 0x04000000, + NSHighlightsByChangeBackgroundCellMask = 0x02000000, + NSShowsStateByContentsCellMask = 0x40000000, + NSShowsStateByChangeGrayCellMask = 0x20000000, + NSShowsStateByChangeBackgroundCellMask = 0x10000000; @implementation CPButton (NSCoding) @@ -204,6 +215,9 @@ var NSButtonIsBorderedMask = 0x00800000, [self setEnabled:[cell isEnabled]]; + _highlightsBy = [cell highlightsBy]; + _showsStateBy = [cell showsStateBy]; + return self; } @@ -235,6 +249,9 @@ var NSButtonIsBorderedMask = 0x00800000, BOOL _allowsMixedState @accessors(readonly, getter=allowsMixedState); BOOL _imagePosition @accessors(readonly, getter=imagePosition); + int _highlightsBy @accessors(readonly, getter=highlightsBy); + int _showsStateBy @accessors(readonly, getter=showsStateBy); + CPString _keyEquivalent @accessors(readonly, getter=keyEquivalent); unsigned _keyEquivalentModifierMask @accessors(readonly, getter=keyEquivalentModifierMask); } @@ -280,6 +297,24 @@ var NSButtonIsBorderedMask = 0x00800000, else if ((position & NSButtonNoImagePositionMask) == NSButtonNoImagePositionMask) _imagePosition = CPNoImage; + _highlightsBy = CPNoCellMask; + if (buttonFlags & NSHighlightsByPushInCellMask) + _highlightsBy |= CPPushInCellMask; + if (buttonFlags & NSHighlightsByContentsCellMask) + _highlightsBy |= CPContentsCellMask; + if (buttonFlags & NSHighlightsByChangeGrayCellMask) + _highlightsBy |= CPChangeGrayCellMask; + if (buttonFlags & NSHighlightsByChangeBackgroundCellMask) + _highlightsBy |= CPChangeBackgroundCellMask; + + _showsStateBy = CPNoCellMask; + if (buttonFlags & NSShowsStateByContentsCellMask) + _showsStateBy |= CPContentsCellMask; + if (buttonFlags & NSShowsStateByChangeGrayCellMask) + _showsStateBy |= CPChangeGrayCellMask; + if (buttonFlags & NSShowsStateByChangeBackgroundCellMask) + _showsStateBy |= CPChangeBackgroundCellMask; + _keyEquivalent = [aCoder decodeObjectForKey:@"NSKeyEquivalent"]; _keyEquivalentModifierMask = buttonFlags2 >> 8; } diff --git a/Tools/nib2cib/NSFont.j b/Tools/nib2cib/NSFont.j index 90a8004d6..cb336dc74 100644 --- a/Tools/nib2cib/NSFont.j +++ b/Tools/nib2cib/NSFont.j @@ -54,6 +54,9 @@ var IBDefaultFontFace = @"Lucida Grande", + (void)initialize { + if (self !== [NSFont class]) + return; + CPLog.debug("NSFont: default IB font: %s %f", IBDefaultFontFace, IBDefaultFontSize); }