diff --git a/AppKit/CPAnimation.j b/AppKit/CPAnimation.j index 148db1f6f..3192ea152 100644 --- a/AppKit/CPAnimation.j +++ b/AppKit/CPAnimation.j @@ -307,7 +307,7 @@ ACTUAL_FRAME_RATE = 0; if ([_delegate respondsToSelector:@selector(animation:valueForProgress:)]) return [_delegate animation:self valueForProgress:t]; - + if (_animationCurve == CPAnimationLinear) return t; diff --git a/AppKit/CPApplication.j b/AppKit/CPApplication.j index 4a2d8fec8..15ad65916 100644 --- a/AppKit/CPApplication.j +++ b/AppKit/CPApplication.j @@ -219,28 +219,22 @@ CPRunContinuesResponse = -1002; // At this point we clear the window.status to eliminate Safari's "Cancelled" error message // The message shouldn't be displayed, because only an XHR is cancelled, but it is a usability issue. // We do it here so that applications can change it in willFinish or didFinishLaunching +#if PLATFORM(DOM) window.status = " "; +#endif // We also want to set the default cursor on the body, so that buttons and things don't have an iBeam [[CPCursor arrowCursor] set]; var bundle = [CPBundle mainBundle], - types = [bundle objectForInfoDictionaryKey:@"CPBundleDocumentTypes"]; - - if ([types count] > 0) - _documentController = [CPDocumentController sharedDocumentController]; - - var delegateClassName = [bundle objectForInfoDictionaryKey:@"CPApplicationDelegateClass"]; + delegateClassName = [bundle objectForInfoDictionaryKey:@"CPApplicationDelegateClass"]; if (delegateClassName) { var delegateClass = objj_getClass(delegateClassName); if (delegateClass) - if ([_documentController class] == delegateClass) - [self setDelegate:_documentController]; - else - [self setDelegate:[[delegateClass alloc] init]]; + [self setDelegate:[[delegateClass alloc] init]]; } var defaultCenter = [CPNotificationCenter defaultCenter]; @@ -249,6 +243,11 @@ CPRunContinuesResponse = -1002; postNotificationName:CPApplicationWillFinishLaunchingNotification object:self]; + var types = [bundle objectForInfoDictionaryKey:@"CPBundleDocumentTypes"]; + + if ([types count] > 0) + _documentController = [CPDocumentController sharedDocumentController]; + var needsUntitled = !!_documentController, URLStrings = window.cpOpeningURLStrings && window.cpOpeningURLStrings(), index = 0, diff --git a/AppKit/CPArrayController.j b/AppKit/CPArrayController.j index 359876612..764096a0b 100644 --- a/AppKit/CPArrayController.j +++ b/AppKit/CPArrayController.j @@ -584,7 +584,7 @@ */ - (BOOL)__setSelectionIndexes:(CPIndexSet)indexes { - [self __setSelectionIndexes:indexes avoidEmpty:_avoidsEmptySelection]; + return [self __setSelectionIndexes:indexes avoidEmpty:_avoidsEmptySelection]; } - (BOOL)__setSelectionIndexes:(CPIndexSet)indexes avoidEmpty:(BOOL)avoidEmpty @@ -920,6 +920,15 @@ [self removeObjectsAtArrangedObjectIndexes:_selectionIndexes]; } +/*! + Removes the object at the specified index in the controller's arranged objects from the content array. + @param int index - index of the object to remove. +*/ +- (void)removeObjectAtArrangedObjectIndex:(int)index +{ + [self removeObjectsAtArrangedObjectIndexes:[CPIndexSet indexSetWithIndex:index]]; +} + /*! Removes the objects at the specified indexes in the controller's arranged objects from the content array. @param CPIndexSet indexes - indexes of the objects to remove. diff --git a/AppKit/CPButton.j b/AppKit/CPButton.j index 953f2324f..adbebb928 100644 --- a/AppKit/CPButton.j +++ b/AppKit/CPButton.j @@ -180,6 +180,8 @@ CPButtonImageOffset = 3.0; // Continuous button defaults. _periodicInterval = 0.05; _periodicDelay = 0.5; + + _imageDimsWhenDisabled = YES; } // Setting the state diff --git a/AppKit/CPControl.j b/AppKit/CPControl.j index 717d47440..d017a1239 100644 --- a/AppKit/CPControl.j +++ b/AppKit/CPControl.j @@ -535,7 +535,7 @@ var CPControlBlackColor = [CPColor blackColor]; // Cocoa raises an invalid parameter assertion and returns if you pass nil. if (aString === nil || aString === undefined) { - CPLog.warn("nil sent to CPControl -setStringValue"); + CPLog.warn("nil or undefined sent to CPControl -setStringValue"); return; } diff --git a/AppKit/CPCookie.j b/AppKit/CPCookie.j index 8b040362b..76ae57560 100644 --- a/AppKit/CPCookie.j +++ b/AppKit/CPCookie.j @@ -111,8 +111,12 @@ for (var i = 0; i < ca.length; i++) { var c = ca[i]; - while (c.charAt(0) == ' ') c = c.substring(1, c.length); - if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); + + while (c.charAt(0) == ' ') + c = c.substring(1, c.length); + + if (c.indexOf(nameEQ) == 0) + return c.substring(nameEQ.length, c.length); } #endif return ""; diff --git a/AppKit/CPEvent.j b/AppKit/CPEvent.j index 4f309e350..a5fe949bd 100644 --- a/AppKit/CPEvent.j +++ b/AppKit/CPEvent.j @@ -634,7 +634,7 @@ var _CPEventPeriodicEventPeriod = 0, function _CPEventFirePeriodEvent() { - [CPApp sendEvent:[CPEvent otherEventWithType:CPPeriodic location:_CGPointMakeZero() modifierFlags:0 timestamp:0 windowNumber:0 context:nil subtype:0 data1:0 data2:0]]; + [CPApp sendEvent:[CPEvent otherEventWithType:CPPeriodic location:_CGPointMakeZero() modifierFlags:0 timestamp:[CPEvent currentTimestamp] windowNumber:0 context:nil subtype:0 data1:0 data2:0]]; } var CPEventClass = [CPEvent class]; diff --git a/AppKit/CPGraphics.j b/AppKit/CPGraphics.j index af4da70ec..494b70afe 100644 --- a/AppKit/CPGraphics.j +++ b/AppKit/CPGraphics.j @@ -70,7 +70,10 @@ function CPDrawColorTiledRects( if (_CGRectIsEmpty(slice)) continue; - var minX, maxX, minY, maxY; + var minX, + maxX, + minY, + maxY; if (side == CPMinXEdge || side == CPMaxXEdge) { @@ -105,4 +108,4 @@ function CPDrawColorTiledRects( CGContextRestoreGState(context); return resultRect; -} \ No newline at end of file +} diff --git a/AppKit/CPImage.j b/AppKit/CPImage.j index f82d65ddb..d87c0b5d4 100644 --- a/AppKit/CPImage.j +++ b/AppKit/CPImage.j @@ -158,6 +158,20 @@ function CPAppKitImage(aFilename, aSize) return self; } +/*! + Initializes the receiver with the specified data. The method loads the data into memory. + @param someData the CPData object representing the image + @return the initialized image +*/ +- (id)initWithData:(CPData)someData +{ + var base64 = [someData base64], + type = [base64 hasPrefix:@"/9j/4AAQSkZJRgABAQEASABIAAD/"] ? @"jpg" : @"png", + dataURL = "data:image/" + type + ";base64," + base64; + + return [self initWithContentsOfFile:dataURL]; +} + /*! Returns the path of the file associated with this image. */ @@ -166,6 +180,37 @@ function CPAppKitImage(aFilename, aSize) return _filename; } +/*! + Returns the data associated with this image. + @discussion Returns nil if the reciever was not initialized with -initWithData: and the browser does not support the canvas feature; +*/ +- (CPData)data +{ +#if PLATFORM(DOM) + var dataURL; + + if ([_filename hasPrefix:@"data:image"]) + dataURL = _filename; + else if (CPFeatureIsCompatible(CPHTMLCanvasFeature)) + { + var canvas = document.createElement("canvas"), + ctx = canvas.getContext("2d"); + + canvas.width = _image.width, + canvas.height = _image.height; + + ctx.drawImage(_image, 0, 0); + + dataURL = canvas.toDataURL("image/png"); + } + else + return nil; + + var base64 = dataURL.replace(/^data:image\/png;base64,/, ""); + return [CPData dataWithBase64:base64]; +#endif +} + /*! Sets the size of the image. @param the size of the image diff --git a/AppKit/CPImageView.j b/AppKit/CPImageView.j index 8540a9c1c..6ecba3738 100644 --- a/AppKit/CPImageView.j +++ b/AppKit/CPImageView.j @@ -66,7 +66,7 @@ var CPImageViewEmptyPlaceholderImage = nil; + (Class)_binderClassForBinding:(CPString)theBinding { - if (theBinding === CPValueBinding || theBinding === CPValueURLBinding || theBinding === CPValuePathBinding) + if (theBinding === CPValueBinding || theBinding === CPValueURLBinding || theBinding === CPValuePathBinding || theBinding === CPDataBinding) return [CPImageViewValueBinder class]; return [super _binderClassForBinding:theBinding]; @@ -466,10 +466,16 @@ var CPImageViewEmptyPlaceholderImage = nil; - (void)setValue:(id)aValue forBinding:(CPString)aBinding { - if (aBinding === CPValueURLBinding || aBinding === CPValuePathBinding) - aValue = [[CPImage alloc] initWithContentsOfFile:aValue]; + var image; - [_source setImage:aValue]; + if (aBinding === CPDataBinding) + image = [[CPImage alloc] initWithData:aValue]; + else if (aBinding === CPValueURLBinding || aBinding === CPValuePathBinding) + image = [[CPImage alloc] initWithContentsOfFile:aValue]; + else if (aBinding === CPValueBinding) + image = aValue; + + [_source setImage:image]; } @end diff --git a/AppKit/CPKeyBinding.j b/AppKit/CPKeyBinding.j index 6abacfddc..768e99578 100644 --- a/AppKit/CPKeyBinding.j +++ b/AppKit/CPKeyBinding.j @@ -28,6 +28,7 @@ CPStandardKeyBindings = { @"@.": @"cancelOperation:", + @"@a": @"selectAll:", @"^a": @"moveToBeginningOfParagraph:", @"^$a": @"moveToBeginningOfParagraphAndModifySelection:", @"^b": @"moveBackward:", diff --git a/AppKit/CPLevelIndicator.j b/AppKit/CPLevelIndicator.j index 911dea311..e4a5474d1 100644 --- a/AppKit/CPLevelIndicator.j +++ b/AppKit/CPLevelIndicator.j @@ -253,7 +253,7 @@ var _CPLevelIndicatorBezelColor = nil, var location = [self convertPoint:[anEvent locationInWindow] fromView:nil], bounds = [self bounds], - oldValue = [self doubleValue]; + oldValue = [self doubleValue], newValue = oldValue; // Moving the mouse outside of the widget to the left sets it diff --git a/AppKit/CPMenu/_CPMenuManager.j b/AppKit/CPMenu/_CPMenuManager.j index 9b680674a..d8a92c39c 100644 --- a/AppKit/CPMenu/_CPMenuManager.j +++ b/AppKit/CPMenu/_CPMenuManager.j @@ -137,10 +137,7 @@ var STICKY_TIME_INTERVAL = 0.5, // Periodic events don't have a valid location. var globalLocation = type === CPPeriodic ? _lastGlobalLocation : [anEvent globalLocation]; - // Remember this for the next periodic event. - _lastGlobalLocation = globalLocation; - - if (!_lastGlobalLocation) + if (!globalLocation) return; // Find which menu window the mouse is currently on top of @@ -152,6 +149,14 @@ var STICKY_TIME_INTERVAL = 0.5, activeItemIndex = activeMenuContainer ? [activeMenuContainer itemIndexAtPoint:menuLocation] : CPNotFound, activeItem = activeItemIndex !== CPNotFound ? [activeMenu itemAtIndex:activeItemIndex] : nil; + // unhighlight when mouse is moved off the menu + if (_lastGlobalLocation && CGRectContainsPoint([activeMenuContainer globalFrame], _lastGlobalLocation) + && !CGRectContainsPoint([activeMenuContainer globalFrame], globalLocation)) + [activeMenu _highlightItemAtIndex:CPNotFound]; + + // Remember this for the next periodic event. + _lastGlobalLocation = globalLocation; + // If the item isn't enabled its as if we clicked on nothing. if (![activeItem isEnabled] || [activeItem _isMenuBarButton]) { @@ -161,7 +166,7 @@ var STICKY_TIME_INTERVAL = 0.5, var mouseOverMenuView = [activeItem view]; - if (type === CPScrollWheel) + if (type === CPScrollWheel && ![activeMenuContainer isMenuBar]) [activeMenuContainer scrollByDelta:[anEvent deltaY]]; if (type === CPPeriodic) @@ -211,7 +216,8 @@ var STICKY_TIME_INTERVAL = 0.5, _lastMouseOverMenuView = nil; } - [activeMenu _highlightItemAtIndex:activeItemIndex]; + if (activeItemIndex != CPNotFound) + [activeMenu _highlightItemAtIndex:activeItemIndex]; if (type === CPMouseMoved || type === CPLeftMouseDragged || type === CPLeftMouseDown || type === CPPeriodic) { @@ -485,7 +491,7 @@ var STICKY_TIME_INTERVAL = 0.5, { if (!_keyBuffer) { - _startTime = [CPDate date]; + _startTime = [anEvent timestamp]; _keyBuffer = character; [CPEvent stopPeriodicEvents]; @@ -522,7 +528,7 @@ var STICKY_TIME_INTERVAL = 0.5, _keyBuffer = Nil; } else - _startTime = [CPDate date]; + _startTime = [CPEvent currentTimestamp]; } - (void)scrollToBeginningOfDocument:(CPMenu)menu @@ -666,8 +672,11 @@ var STICKY_TIME_INTERVAL = 0.5, var index = menu._highlightedIndex - 1; if (index < 0) + { + if (index != CPNotFound) + [menu _highlightItemAtIndex:[menu numberOfItems] - 1]; return; - + } [menu _highlightItemAtIndex:index]; var item = [menu highlightedItem]; diff --git a/AppKit/CPMenu/_CPMenuWindow.j b/AppKit/CPMenu/_CPMenuWindow.j index 053d493d8..c1150fb54 100644 --- a/AppKit/CPMenu/_CPMenuWindow.j +++ b/AppKit/CPMenu/_CPMenuWindow.j @@ -110,8 +110,6 @@ var STICKY_TIME_INTERVAL = 500, [_moreBelowView setFrameSize:[_CPMenuWindowMoreBelowImage size]]; [contentView addSubview:_moreBelowView]; - - [self setShadowStyle:CPWindowShadowStyleMenu]; } return self; diff --git a/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j b/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j index 102747a46..0843f8ea1 100644 --- a/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j +++ b/AppKit/CPRuleEditor/CPPredicateEditorRowTemplate.j @@ -185,7 +185,8 @@ CPTransformableAttributeType = 1800; if (![[self operators] containsObject:[predicate predicateOperatorType]]) return 0; - if (!_rightIsWildcard && ![[self rightExpressions] containsObject:[predicate rightExpression]]) return 0; + if (!_rightIsWildcard && ![[self rightExpressions] containsObject:[predicate rightExpression]]) + return 0; return 1; } diff --git a/AppKit/CPSplitView.j b/AppKit/CPSplitView.j index 35058b37a..02b1e06f9 100644 --- a/AppKit/CPSplitView.j +++ b/AppKit/CPSplitView.j @@ -1065,7 +1065,7 @@ The sum of the views and the sum of the dividers should be equal to the size of */ - (void)_autosave { - if (!_shouldAutosave || !autosaveName) + if (!_shouldAutosave || !_autosaveName) return; var userDefaults = [CPUserDefaults standardUserDefaults], diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 38b86ff85..b2fdb2b01 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -257,8 +257,8 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; */ + (id)themeAttributes { - return [CPDictionary dictionaryWithObjects:[[CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null]] - forKeys:["alternating-row-colors", "grid-color", "highlighted-grid-color", "selection-color", "sourcelist-selection-color", "sort-image", "sort-image-reversed"]]; + return [CPDictionary dictionaryWithObjects:[[CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null], [CPNull null]] + forKeys:["alternating-row-colors", "grid-color", "highlighted-grid-color", "selection-color", "sourcelist-selection-color", "sort-image", "sort-image-reversed", "selection-radius"]]; } - (id)initWithFrame:(CGRect)aFrame @@ -1257,7 +1257,7 @@ NOT YET IMPLEMENTED */ - (int)selectedColumn { - [_selectedColumnIndexes lastIndex]; + return [_selectedColumnIndexes lastIndex]; } /*! @@ -3773,7 +3773,25 @@ Your delegate can implement this method to avoid subclassing the tableview to ad CGContextStrokePath(context); } else - CGContextAddRect(context, rowRect); + { + var radius = [self currentValueForThemeAttribute:@"selection-radius"]; + + if (radius > 0) + { + var minX = CGRectGetMinX(rowRect), + maxX = CGRectGetMaxX(rowRect), + minY = CGRectGetMinY(rowRect), + maxY = CGRectGetMaxY(rowRect); + + CGContextMoveToPoint(context, minX + radius, minY); + CGContextAddArcToPoint(context, maxX, minY, maxX, minY + radius, radius); + CGContextAddArcToPoint(context, maxX, maxY, maxX - radius, maxY, radius); + CGContextAddArcToPoint(context, minX, maxY, minX, maxY - radius, radius); + CGContextAddArcToPoint(context, minX, minY, minX + radius, minY, radius); + } + else + CGContextAddRect(context, rowRect); + } } CGContextClosePath(context); @@ -3991,6 +4009,9 @@ Your delegate can implement this method to avoid subclassing the tableview to ad */ - (BOOL)startTrackingAt:(CGPoint)aPoint { + if (![[self window] makeFirstResponder:self]) + return NO; + var row = [self rowAtPoint:aPoint]; // If the user clicks outside a row then deselect everything. @@ -4018,7 +4039,6 @@ Your delegate can implement this method to avoid subclassing the tableview to ad if (row >= 0 && !(_implementedDataSourceMethods & CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_)) [self _updateSelectionWithMouseAtRow:row]; - [[self window] makeFirstResponder:self]; return YES; } @@ -4141,6 +4161,9 @@ Your delegate can implement this method to avoid subclassing the tableview to ad */ - (void)stopTracking:(CGPoint)lastPoint at:(CGPoint)aPoint mouseIsUp:(BOOL)mouseIsUp { + if ([[self window] firstResponder] !== self) + return; + _isSelectingSession = NO; var CLICK_TIME_DELTA = 1000, diff --git a/AppKit/CPTheme.j b/AppKit/CPTheme.j index 6decba8ec..1da505571 100644 --- a/AppKit/CPTheme.j +++ b/AppKit/CPTheme.j @@ -418,6 +418,8 @@ CPThemeStateEditing = CPThemeState("editing"); CPThemeStateVertical = CPThemeState("vertical"); CPThemeStateDefault = CPThemeState("default"); CPThemeStateCircular = CPThemeState("circular"); +CPThemeStateAutocompleting = CPThemeState("autocompleting"); + @implementation _CPThemeAttribute : CPObject { diff --git a/AppKit/CPTokenField.j b/AppKit/CPTokenField.j index 7bd42d779..d306052e9 100755 --- a/AppKit/CPTokenField.j +++ b/AppKit/CPTokenField.j @@ -20,6 +20,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#import "../Foundation/CPRange.h" + @import @import @import @@ -29,8 +31,7 @@ @import "CPTextField.j" @import "CPTableView.j" @import "CPWindow.j" -@import "_CPMenuWindow.j" - +@import "_CPAutocompleteMenu.j" #if PLATFORM(DOM) @@ -46,17 +47,11 @@ var CPTokenFieldDOMInputElement = nil, CPTokenFieldCachedDragFunction = nil, CPTokenFieldFocusInput = NO, - CPTokenFieldBlurFunction = nil, - CPTokenFieldKeyUpFunction = nil, - CPTokenFieldKeyPressFunction = nil, - CPTokenFieldKeyDownFunction = nil; + CPTokenFieldBlurFunction = nil; #endif -var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", - CPTokenFieldTableColumnIdentifier = @"CPTokenFieldTableColumnIdentifier", - - CPScrollDestinationNone = 0, +var CPScrollDestinationNone = 0, CPScrollDestinationLeft = 1, CPScrollDestinationRight = 2; @@ -67,13 +62,10 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", CPRange _selectedRange; - CPView _autocompleteContainer; - CPScrollView _autocompleteScrollView; - CPTableView _autocompleteView; - CPTimeInterval _completionDelay; - CPTimer _showCompletionsTimer; + _CPAutocompleteMenu _autocompleteMenu; + CGRect _inputFrame; - CPArray _cachedCompletions; + CPTimeInterval _completionDelay; CPCharacterSet _tokenizingCharacterSet @accessors(property=tokenizingCharacterSet); @@ -88,6 +80,11 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", return [CPCharacterSet characterSetWithCharactersInString:@","]; } ++ (CPTimeInterval)defaultCompletionDelay +{ + return 0.5; +} + + (CPString)defaultThemeClass { return "tokenfield"; @@ -97,7 +94,7 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", { if (self = [super initWithFrame:frame]) { - _completionDelay = [CPTokenField defaultCompletionDelay]; + _completionDelay = [[self class] defaultCompletionDelay]; _tokenizingCharacterSet = [[self class] defaultTokenizingCharacterSet]; [self setBezeled:YES]; @@ -113,7 +110,7 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", - (void)_init { - _selectedRange = CPMakeRange(0, 0); + _selectedRange = _CPMakeRange(0, 0); var frame = [self frame]; @@ -127,57 +124,23 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", [_tokenScrollView setDocumentView:contentView]; [self addSubview:_tokenScrollView]; - - _cachedCompletions = []; - - _autocompleteContainer = [[CPView alloc] initWithFrame:CPRectMake(0.0, 0.0, frame.size.width, 92.0)]; - [_autocompleteContainer setBackgroundColor:[_CPMenuWindow backgroundColorForBackgroundStyle:_CPMenuWindowPopUpBackgroundStyle]]; - - _autocompleteScrollView = [[CPScrollView alloc] initWithFrame:CPRectMake(1.0, 1.0, frame.size.width - 2.0, 90.0)]; - [_autocompleteScrollView setAutohidesScrollers:YES]; - [_autocompleteScrollView setHasHorizontalScroller:NO]; - [_autocompleteContainer addSubview:_autocompleteScrollView]; - - _autocompleteView = [[CPTableView alloc] initWithFrame:CPRectMakeZero()]; - - var tableColumn = [[CPTableColumn alloc] initWithIdentifier:CPTokenFieldTableColumnIdentifier]; - [tableColumn setResizingMask:CPTableColumnAutoresizingMask]; - [_autocompleteView addTableColumn:tableColumn]; - - [_autocompleteView setDataSource:self]; - [_autocompleteView setDelegate:self]; - [_autocompleteView setAllowsMultipleSelection:NO]; - [_autocompleteView setHeaderView:nil]; - [_autocompleteView setCornerView:nil]; - [_autocompleteView setRowHeight:30.0]; - [_autocompleteView setGridStyleMask:CPTableViewSolidHorizontalGridLineMask]; - [_autocompleteView setBackgroundColor:[CPColor clearColor]]; - [_autocompleteView setGridColor:[CPColor colorWithRed:242.0 / 255.0 green:243.0 / 255.0 blue:245.0 / 255.0 alpha:1.0]]; - - [_autocompleteScrollView setDocumentView:_autocompleteView]; } -// =============== -// = CONVENIENCE = -// =============== -- (void)_retrieveCompletions +- (_CPAutocompleteMenu)_autocompleteMenu { - var indexOfSelectedItem = 0; - - _cachedCompletions = [self tokenField:self completionsForSubstring:[self _inputElement].value indexOfToken:0 indexOfSelectedItem:indexOfSelectedItem]; - - [_autocompleteView selectRowIndexes:[CPIndexSet indexSetWithIndex:indexOfSelectedItem] byExtendingSelection:NO]; - [_autocompleteView reloadData]; + if (!_autocompleteMenu) + _autocompleteMenu = [[_CPAutocompleteMenu alloc] initWithTextField:self]; + return _autocompleteMenu; } -- (void)_autocompleteWithDOMEvent:(JSObject)DOMEvent +- (void)_autocompleteWithEvent:(CPEvent)anEvent { - if (![self _inputElement].value && (!_cachedCompletions || ![self hasThemeState:CPThemeStateAutoCompleting])) + if (![self _inputElement].value && (![_autocompleteMenu contentArray] || ![self hasThemeState:CPThemeStateAutocompleting])) return; [self _hideCompletions]; - var token = _cachedCompletions ? _cachedCompletions[[_autocompleteView selectedRow]] : nil, + var token = [_autocompleteMenu selectedItem], shouldRemoveLastObject = token !== @"" && [self _inputElement].value !== @""; if (!token) @@ -188,9 +151,12 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", // responder or selecting the next or previous key view. if (!token || token === @"") { - if (DOMEvent && DOMEvent.keyCode === CPTabKeyCode) + var character = [anEvent charactersIgnoringModifiers], + modifierFlags = [anEvent modifierFlags]; + + if (character === CPTabCharacter) { - if (!DOMEvent.shiftKey) + if (!(modifierFlags & CPShiftKeyMask)) [[self window] selectNextKeyView:self]; else [[self window] selectPreviousKeyView:self]; @@ -207,8 +173,11 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", if (shouldRemoveLastObject) [objectValue removeObjectAtIndex:_selectedRange.location]; + // Convert typed text into a represented object. + token = [self _representedObjectForEditingString:token]; + // Give the delegate a chance to confirm, replace or add to the list of tokens being added. - var delegateApprovedObjects = [self tokenField:self shouldAddObjects:[CPArray arrayWithObject:token] atIndex:_selectedRange.location], + var delegateApprovedObjects = [self _shouldAddObjects:[CPArray arrayWithObject:token] atIndex:_selectedRange.location], delegateApprovedObjectsCount = [delegateApprovedObjects count]; if (delegateApprovedObjects) { @@ -225,7 +194,7 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", if (delegateApprovedObjectsCount) location += delegateApprovedObjectsCount; - _selectedRange = CPMakeRange(location, 0); + _selectedRange = _CPMakeRange(location, 0); [self _inputElement].value = @""; [self setNeedsLayout]; @@ -235,7 +204,7 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", - (void)_autocomplete { - [self _autocompleteWithDOMEvent:nil]; + [self _autocompleteWithEvent:nil]; } - (void)_selectToken:(_CPTokenFieldToken)token byExtendingSelection:(BOOL)extend @@ -245,12 +214,12 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", if (indexOfToken == CPNotFound) { if (!extend) - _selectedRange = CPMakeRange([[self _tokens] count], 0); + _selectedRange = _CPMakeRange([[self _tokens] count], 0); } else if (extend) - _selectedRange = CPUnionRange(_selectedRange, CPMakeRange(indexOfToken, 1)); + _selectedRange = CPUnionRange(_selectedRange, _CPMakeRange(indexOfToken, 1)); else - _selectedRange = CPMakeRange(indexOfToken, 1); + _selectedRange = _CPMakeRange(indexOfToken, 1); [self setNeedsLayout]; } @@ -260,7 +229,7 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", var indexOfToken = [[self _tokens] indexOfObject:token]; if (CPLocationInRange(indexOfToken, _selectedRange)) - _selectedRange = CPMakeRange(MAX(indexOfToken, _selectedRange.location), MIN(_selectedRange.length, indexOfToken - _selectedRange.location)); + _selectedRange = _CPMakeRange(MAX(indexOfToken, _selectedRange.location), MIN(_selectedRange.length, indexOfToken - _selectedRange.location)); [self setNeedsLayout]; } @@ -278,7 +247,8 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", [self _deselectToken:token]; // Preserve selection. - var selection = CPCopyRange(_selectedRange); + var selection = CPMakeRangeCopy(_selectedRange); + [objectValue removeObjectAtIndex:indexOfToken]; [self setObjectValue:objectValue]; _selectedRange = selection; @@ -308,10 +278,11 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", [tokens removeObjectAtIndex:_selectedRange.location + i]; var collapsedSelection = _selectedRange.location; + [self setObjectValue:tokens]; // setObjectValue moves the cursor to the end of the selection. We want it to stay // where the selected tokens were. - _selectedRange = CPMakeRange(collapsedSelection, 0); + _selectedRange = _CPMakeRange(collapsedSelection, 0); [self _controlTextDidChange]; } @@ -464,21 +435,22 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", _mouseDownEvent = nil; } -- (void)mouseDownOnToken:(_CPTokenFieldToken)aToken withEvent:(CPEvent)anEvent +- (void)_mouseDownOnToken:(_CPTokenFieldToken)aToken withEvent:(CPEvent)anEvent { _preventResign = YES; _mouseDownEvent = anEvent; } -- (void)mouseUpOnToken:(_CPTokenFieldToken)aToken withEvent:(CPEvent)anEvent +- (void)_mouseUpOnToken:(_CPTokenFieldToken)aToken withEvent:(CPEvent)anEvent { - if (_mouseDownEvent && CGPointEqualToPoint([_mouseDownEvent locationInWindow], [anEvent locationInWindow])) + if (_mouseDownEvent && _CGPointEqualToPoint([_mouseDownEvent locationInWindow], [anEvent locationInWindow])) { [self _selectToken:aToken byExtendingSelection:[anEvent modifierFlags] & CPShiftKeyMask]; [[self window] makeFirstResponder:self]; // Snap to the token if it's only half visible due to mouse wheel scrolling. _shouldScrollTo = aToken; } + _preventResign = NO; } @@ -513,7 +485,10 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", #if PLATFORM(DOM) if ([self _inputElement].value != @"") - [objectValue insertObject:[self _inputElement].value atIndex:_selectedRange.location]; + { + var token = [self _representedObjectForEditingString:[self _inputElement].value]; + [objectValue insertObject:token atIndex:_selectedRange.location]; + } #endif @@ -532,19 +507,18 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", if (aValue === superValue || [aValue isEqualToArray:superValue]) return; - var contentView = [_tokenScrollView documentView]; - - // Preserve as many existing tokens as possible to reduce redraw flickering. - var oldTokens = [self _tokens], + var contentView = [_tokenScrollView documentView], + oldTokens = [self _tokens], newTokens = []; + // Preserve as many existing tokens as possible to reduce redraw flickering. if (aValue !== nil) { for (var i = 0, count = [aValue count]; i < count; i++) { // Do we have this token among the old ones? var tokenObject = aValue[i], - tokenValue = [self tokenField:self displayStringForRepresentedObject:tokenObject], + tokenValue = [self _displayStringForRepresentedObject:tokenObject], newToken = nil; for (var j = 0, oldCount = [oldTokens count]; j < oldCount; j++) @@ -608,23 +582,6 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", { } -// ======== -// = VIEW = -// ======== -- (void)viewDidMoveToWindow -{ - [[[self window] contentView] addSubview:_autocompleteContainer]; - -#if PLATFORM(DOM) - _autocompleteContainer._DOMElement.style.zIndex = 1000; // Anything else doesn't seem to work -#endif -} - -- (void)removeFromSuperview -{ - [_autocompleteContainer removeFromSuperview]; -} - // ============= // = TEXTFIELD = // ============= @@ -662,203 +619,6 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", return true; }; - CPTokenFieldKeyDownFunction = function(aDOMEvent) - { - aDOMEvent = aDOMEvent || window.event - - CPTokenFieldTextDidChangeValue = [CPTokenFieldInputOwner stringValue]; - - // Update the selectedIndex if necessary - var index = [[CPTokenFieldInputOwner autocompleteView] selectedRow]; - - if (aDOMEvent.keyCode === CPUpArrowKeyCode) - index -= 1; - else if (aDOMEvent.keyCode === CPDownArrowKeyCode) - index += 1; - - if (index > [[CPTokenFieldInputOwner autocompleteView] numberOfRows] - 1) - index = [[CPTokenFieldInputOwner autocompleteView] numberOfRows] - 1; - - if (index < 0) - index = 0; - - [[CPTokenFieldInputOwner autocompleteView] selectRowIndexes:[CPIndexSet indexSetWithIndex:index] byExtendingSelection:NO]; - - var autocompleteView = [CPTokenFieldInputOwner autocompleteView], - clipView = [[autocompleteView enclosingScrollView] contentView], - rowRect = [autocompleteView rectOfRow:index], - owner = CPTokenFieldInputOwner; - - if (rowRect && !CPRectContainsRect([clipView bounds], rowRect)) - [clipView scrollToPoint:[autocompleteView rectOfRow:index].origin]; - - if (aDOMEvent.keyCode === CPReturnKeyCode || aDOMEvent.keyCode === CPTabKeyCode) - { - if (aDOMEvent.preventDefault) - aDOMEvent.preventDefault(); - if (aDOMEvent.stopPropagation) - aDOMEvent.stopPropagation(); - aDOMEvent.cancelBubble = true; - - // Only resign first responder if we weren't auto-completing - if (![CPTokenFieldInputOwner hasThemeState:CPThemeStateAutoCompleting]) - { - if (aDOMEvent && aDOMEvent.keyCode === CPReturnKeyCode) - { - [owner sendAction:[owner action] to:[owner target]]; - [[owner window] makeFirstResponder:nil]; - } - else if (aDOMEvent && aDOMEvent.keyCode === CPTabKeyCode) - { - if (!aDOMEvent.shiftKey) - [[owner window] selectNextKeyView:owner]; - else - [[owner window] selectPreviousKeyView:owner]; - } - } - - [owner _autocompleteWithDOMEvent:aDOMEvent]; - [owner setNeedsLayout]; - } - else if (aDOMEvent.keyCode === CPEscapeKeyCode) - { - [CPTokenFieldInputOwner _hideCompletions]; - } - else if (aDOMEvent.keyCode === CPUpArrowKeyCode || aDOMEvent.keyCode === CPDownArrowKeyCode) - { - if (aDOMEvent.preventDefault) - aDOMEvent.preventDefault(); - if (aDOMEvent.stopPropagation) - aDOMEvent.stopPropagation(); - aDOMEvent.cancelBubble = true; - } - else if (aDOMEvent.keyCode == CPLeftArrowKeyCode && owner._selectedRange.location > 0 && CPTokenFieldDOMInputElement.value == "") - { - // Move the cursor back one token if the input is empty and the left arrow key is pressed. - if (!aDOMEvent.shiftKey) - { - if (owner._selectedRange.length) - // Simply collapse the range. - owner._selectedRange.length = 0; - else - owner._selectedRange.location--; - } - else - { - owner._selectedRange.location--; - // When shift is depressed, select the next token backwards. - owner._selectedRange.length++; - } - owner._shouldScrollTo = CPScrollDestinationLeft; - [owner setNeedsLayout]; - } - else if (aDOMEvent.keyCode == CPRightArrowKeyCode && owner._selectedRange.location < [[owner _tokens] count] && CPTokenFieldDOMInputElement.value == "") - { - if (!aDOMEvent.shiftKey) - { - if (owner._selectedRange.length) - { - // Place the cursor at the end of the selection and collapse. - owner._selectedRange.location = CPMaxRange(owner._selectedRange); - owner._selectedRange.length = 0; - } - else - { - // Move the cursor forward one token if the input is empty and the right arrow key is pressed. - owner._selectedRange.location = MIN([[owner _tokens] count], owner._selectedRange.location + owner._selectedRange.length + 1); - } - } - else - { - // Leave the selection location in place but include the next token to the right. - owner._selectedRange.length++; - } - owner._shouldScrollTo = CPScrollDestinationRight; - [owner setNeedsLayout]; - } - else if (aDOMEvent.keyCode === CPDeleteKeyCode) - { - // Highlight the previous token if backspace was pressed in an empty input element or re-show the completions view - if (CPTokenFieldDOMInputElement.value == @"") - { - [self _hideCompletions]; - - if (CPEmptyRange(CPTokenFieldInputOwner._selectedRange)) - { - if (CPTokenFieldInputOwner._selectedRange.location > 0) - { - var tokens = [CPTokenFieldInputOwner _tokens], - tokenView = [tokens objectAtIndex:(CPTokenFieldInputOwner._selectedRange.location - 1)]; - [CPTokenFieldInputOwner _selectToken:tokenView byExtendingSelection:NO]; - } - } - else - [CPTokenFieldInputOwner _removeSelectedTokens:nil]; - } - else - [CPTokenFieldInputOwner _delayedShowCompletions]; - } - else if (aDOMEvent.keyCode === CPDeleteForwardKeyCode && CPTokenFieldDOMInputElement.value == @"") - { - // Delete forward if nothing is selected, else delete all selected. - [self _hideCompletions]; - - if (CPEmptyRange(CPTokenFieldInputOwner._selectedRange)) - { - var tokens = [CPTokenFieldInputOwner _tokens]; - if (CPTokenFieldInputOwner._selectedRange.location < [tokens count]) - [CPTokenFieldInputOwner _deleteToken:tokens[CPTokenFieldInputOwner._selectedRange.location]]; - } - else - [CPTokenFieldInputOwner _removeSelectedTokens:nil]; - } - - return true; - }; - - CPTokenFieldKeyPressFunction = function(aDOMEvent) - { - aDOMEvent = aDOMEvent || window.event; - - var character = String.fromCharCode(aDOMEvent.keyCode || aDOMEvent.which), - owner = CPTokenFieldInputOwner; - - if ([[owner tokenizingCharacterSet] characterIsMember:character]) - { - if (aDOMEvent.preventDefault) - aDOMEvent.preventDefault(); - if (aDOMEvent.stopPropagation) - aDOMEvent.stopPropagation(); - aDOMEvent.cancelBubble = true; - - [owner _autocompleteWithDOMEvent:aDOMEvent]; - [owner setNeedsLayout]; - - return true; - } - - [CPTokenFieldInputOwner _delayedShowCompletions]; - // If there was a selection, collapse it now since we're typing in a new token. - owner._selectedRange.length = 0; - - // Force immediate layout in case word wrapping is now necessary. - [owner setNeedsLayout]; - [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; - }; - - CPTokenFieldKeyUpFunction = function() - { - if ([CPTokenFieldInputOwner stringValue] !== CPTokenFieldTextDidChangeValue) - { - CPTokenFieldTextDidChangeValue = [CPTokenFieldInputOwner stringValue]; - [CPTokenFieldInputOwner textDidChange:[CPNotification notificationWithName:CPControlTextDidChangeNotification object:CPTokenFieldInputOwner userInfo:nil]]; - } - - [self setNeedsLayout]; - - [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; - }; - CPTokenFieldHandleBlur = function(anEvent) { CPTokenFieldInputOwner = nil; @@ -866,19 +626,6 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; }; - if (document.attachEvent) - { - CPTokenFieldDOMInputElement.attachEvent("on" + CPDOMEventKeyUp, CPTokenFieldKeyUpFunction); - CPTokenFieldDOMInputElement.attachEvent("on" + CPDOMEventKeyDown, CPTokenFieldKeyDownFunction); - CPTokenFieldDOMInputElement.attachEvent("on" + CPDOMEventKeyPress, CPTokenFieldKeyPressFunction); - } - else - { - CPTokenFieldDOMInputElement.addEventListener(CPDOMEventKeyUp, CPTokenFieldKeyUpFunction, NO); - CPTokenFieldDOMInputElement.addEventListener(CPDOMEventKeyDown, CPTokenFieldKeyDownFunction, NO); - CPTokenFieldDOMInputElement.addEventListener(CPDOMEventKeyPress, CPTokenFieldKeyPressFunction, NO); - } - //FIXME make this not onblur CPTokenFieldDOMInputElement.onblur = CPTokenFieldBlurFunction; @@ -899,6 +646,273 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", } #endif +- (void)moveUp:(id)sender +{ + [[self _autocompleteMenu] selectPrevious]; + [[[self window] platformWindow] _propagateCurrentDOMEvent:NO]; +} + +- (void)moveDown:(id)sender +{ + [[self _autocompleteMenu] selectNext]; + [[[self window] platformWindow] _propagateCurrentDOMEvent:NO]; +} + +- (void)insertNewline:(id)sender +{ + if ([self hasThemeState:CPThemeStateAutocompleting]) + { + [self _autocompleteWithEvent:[CPApp currentEvent]]; + } + else + { + [self sendAction:[self action] to:[self target]]; + [[self window] makeFirstResponder:nil]; + } +} + +- (void)insertTab:(id)sender +{ + var anEvent = [CPApp currentEvent]; + if ([self hasThemeState:CPThemeStateAutocompleting]) + { + [self _autocompleteWithEvent:anEvent]; + } + else + { + // Default to standard tabbing behaviour. + if (!([anEvent modifierFlags] & CPShiftKeyMask)) + [[self window] selectNextKeyView:self]; + else + [[self window] selectPreviousKeyView:self]; + } +} + +- (void)insertText:(CPString)characters +{ + // Note that in Cocoa NStokenField uses a hidden input field not accessible to the user, + // so insertText: is called on that field instead. That seems rather silly since it makes + // it pretty much impossible to override insertText:. This version is better. + if ([_tokenizingCharacterSet characterIsMember:[characters substringToIndex:1]]) + { + [self _autocompleteWithEvent:[CPApp currentEvent]]; + } + else + { + // If you type something while tokens are selected, overwrite them. + if (_selectedRange.length) + { + [self _removeSelectedTokens:self]; + // Make sure the editor is placed so it can capture the characters we're overwriting with. + [self layoutSubviews]; + } + + // If we didn't handle it, allow _propagateCurrentDOMEvent the input field to receive + // the new character. + + // This method also allows a subclass to override insertText: to do nothing. + // Unfortunately calling super with some different characters won't work since + // the browser will see the original key event. + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; + } +} + +- (void)cancelOperation:(id)sender +{ + [self _hideCompletions]; +} + +- (void)moveLeft:(id)sender +{ + // Left arrow + if ((_selectedRange.location > 0 || _selectedRange.length) && CPTokenFieldDOMInputElement.value == "") + { + if (_selectedRange.length) + // Simply collapse the range. + _selectedRange.length = 0; + else + _selectedRange.location--; + [self setNeedsLayout]; + _shouldScrollTo = CPScrollDestinationLeft; + } + else + { + // Allow cursor movement within the text field. + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; + } +} + +- (void)moveLeftAndModifySelection:(id)sender +{ + if (_selectedRange.location > 0 && CPTokenFieldDOMInputElement.value == "") + { + _selectedRange.location--; + // When shift is depressed, select the next token backwards. + _selectedRange.length++; + [self setNeedsLayout]; + _shouldScrollTo = CPScrollDestinationLeft; + } + else + { + // Allow cursor movement within the text field. + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; + } +} + +- (void)moveRight:(id)sender +{ + // Right arrow + if ((_selectedRange.location < [[self _tokens] count] || _selectedRange.length) && CPTokenFieldDOMInputElement.value == "") + { + if (_selectedRange.length) + { + // Place the cursor at the end of the selection and collapse. + _selectedRange.location = _CPMaxRange(_selectedRange); + _selectedRange.length = 0; + } + else + { + // Move the cursor forward one token if the input is empty and the right arrow key is pressed. + _selectedRange.location = MIN([[self _tokens] count], _selectedRange.location + _selectedRange.length + 1); + } + + [self setNeedsLayout]; + _shouldScrollTo = CPScrollDestinationRight; + } + else + { + // Allow cursor movement within the text field. + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; + } +} + +- (void)moveRightAndModifySelection:(id)sender +{ + if (_CPMaxRange(_selectedRange) < [[self _tokens] count] && CPTokenFieldDOMInputElement.value == "") + { + // Leave the selection location in place but include the next token to the right. + _selectedRange.length++; + [self setNeedsLayout]; + _shouldScrollTo = CPScrollDestinationRight; + } + else + { + // Allow selection to happen within the text field. + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; + } +} + +- (void)deleteBackward:(id)sender +{ + // TODO Even if the editor isn't empty you should be able to delete the previous token by placing the cursor + // at the beginning of the editor. + if (CPTokenFieldDOMInputElement.value == @"") + { + [self _hideCompletions]; + + if (CPEmptyRange(_selectedRange)) + { + if (_selectedRange.location > 0) + { + var tokenView = [[self _tokens] objectAtIndex:(_selectedRange.location - 1)]; + [self _selectToken:tokenView byExtendingSelection:NO]; + } + } + else + [self _removeSelectedTokens:nil]; + } + else + { + // Allow deletion to happen within the text field. + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; + } +} + +- (void)deleteForward:(id)sender +{ + // TODO Even if the editor isn't empty you should be able to delete the next token by placing the cursor + // at the end of the editor. + if (CPTokenFieldDOMInputElement.value == @"") + { + // Delete forward if nothing is selected, else delete all selected. + [self _hideCompletions]; + + if (CPEmptyRange(_selectedRange)) + { + if (_selectedRange.location < [[self _tokens] count]) + [self _deleteToken:[[self _tokens] objectAtIndex:[_selectedRange.location]]]; + } + else + [self _removeSelectedTokens:nil]; + } + else + { + // Allow deletion to happen within the text field. + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; + } +} + +- (void)_selectText:(id)sender immediately:(BOOL)immediately +{ + // Override CPTextField's version. The correct behaviour is that the text currently being + // edited is turned into a token if possible, or left as plain selected text if not. + // Regardless of if there is on-going text entry, all existing tokens are also selected. + // At this point we don't support having tokens and text selected at the same time (or + // any situation where the cursor isn't within the text being edited) so we just finish + // editing and select all tokens. + + if (([self isEditable] || [self isSelectable])) + { + [super _selectText:sender immediately:immediately]; + + // Finish any editing. + [self _autocomplete]; + _selectedRange = _CPMakeRange(0, [[self _tokens] count]); + + [self setNeedsLayout]; + } +} + +- (void)keyDown:(CPEvent)anEvent +{ + CPTokenFieldTextDidChangeValue = [self stringValue]; + + // Leave the default _propagateCurrentDOMEvent setting in place. This might be YES or NO depending + // on if something that could be a browser shortcut was pressed or not, such as Cmd-R to reload. + // If it was NO we want to leave it at NO however and only enable it in insertText:. This is what + // allows a subclass to prevent characters from being inserted by overriding and not calling super. + + [self interpretKeyEvents:[anEvent]]; + + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; +}} + +- (void)keyUp:(CPEvent)anEvent +{ + if ([self stringValue] !== CPTokenFieldTextDidChangeValue) + { + [self textDidChange:[CPNotification notificationWithName:CPControlTextDidChangeNotification object:self userInfo:nil]]; + } + + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; +} + +- (void)textDidChange:(CPNotification)aNotification +{ + if ([aNotification object] !== self) + return; + + [super textDidChange:aNotification]; + + // For future reference: in Cocoa, textDidChange: appears to call [self complete:]. + [self _delayedShowCompletions]; + // If there was a selection, collapse it now since we're typing in a new token. + _selectedRange.length = 0; + + // Force immediate layout in case word wrapping is now necessary. + [self setNeedsLayout]; +} + // - (void)setTokenStyle: (NSTokenStyle) style; // - (NSTokenStyle)tokenStyle; // @@ -911,47 +925,11 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", _completionDelay = delay; } -- (NSTimeInterval)completionDelay +- (CPTimeInterval)completionDelay { return _completionDelay; } -+ (NSTimeInterval)defaultCompletionDelay -{ - return 0.5; -} - -// =========================== -// = SHOW / HIDE COMPLETIONS = -// =========================== -- (void)_showCompletions:(CPTimer)timer -{ - [self _retrieveCompletions] - [self setThemeState:CPThemeStateAutoCompleting]; - - [self setNeedsLayout]; -} - -- (void)_delayedShowCompletions -{ - _showCompletionsTimer = [CPTimer scheduledTimerWithTimeInterval:[self completionDelay] target:self - selector:@selector(_showCompletions:) userInfo:nil repeats:NO]; -} - -- (void)_cancelShowCompletions -{ - if ([_showCompletionsTimer isValid]) - [_showCompletionsTimer invalidate]; -} - -- (void)_hideCompletions -{ - [self _cancelShowCompletions]; - - [self unsetThemeState:CPThemeStateAutoCompleting]; - [self setNeedsLayout]; -} - // ========== // = LAYOUT = // ========== @@ -970,30 +948,15 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", var frame = [self frame], contentView = [_tokenScrollView documentView], - tokens = [self _tokens]; - - // Correctly size the tableview - // FIXME Horizontal scrolling will not work because we are not actually looking at the content to set the width for the table column - [[_autocompleteView tableColumnWithIdentifier:CPTokenFieldTableColumnIdentifier] setWidth:[[_autocompleteScrollView contentView] frame].size.width]; - - if ([self hasThemeState:CPThemeStateAutoCompleting] && [_cachedCompletions count]) - { - // Manually sizeToFit because CPTableView's sizeToFit doesn't work properly - [_autocompleteContainer setHidden:NO]; - var frameOrigin = [self convertPoint:[self bounds].origin toView:[_autocompleteContainer superview]]; - [_autocompleteContainer setFrameOrigin:CPPointMake(frameOrigin.x, frameOrigin.y + frame.size.height)]; - [_autocompleteContainer setFrameSize:CPSizeMake(CPRectGetWidth([self bounds]), 92.0)]; - [_autocompleteScrollView setFrameSize:CPSizeMake([_autocompleteContainer frame].size.width - 2.0, 90.0)]; - } - else - [_autocompleteContainer setHidden:YES]; + tokens = [self _tokens], + shouldShowAutoComplete = [self hasThemeState:CPThemeStateAutocompleting]; // Hack to make sure we are handling an array if (![tokens isKindOfClass:[CPArray class]]) return; // Move each token into the right position. - var contentRect = CGRectMakeCopy([contentView bounds]), + var contentRect = _CGRectMakeCopy([contentView bounds]), contentOrigin = contentRect.origin, contentSize = contentRect.size, offset = CPPointMake(contentOrigin.x, contentOrigin.y), @@ -1004,11 +967,11 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", // Get the height of a typical token, or a token token if you will. [tokenToken sizeToFit]; - var tokenHeight = CGRectGetHeight([tokenToken bounds]); + var tokenHeight = _CGRectGetHeight([tokenToken bounds]); var fitAndFrame = function(width, height) { - var r = CGRectMake(0, 0, width, height); + var r = _CGRectMake(0, 0, width, height); if (offset.x + width >= contentSize.width && offset.x > contentOrigin.x) { @@ -1020,8 +983,8 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", r.origin.y = offset.y; // Make sure the frame fits. - if (CGRectGetHeight([contentView bounds]) < offset.y + height) - [contentView setFrame:CGRectMake(0, 0, CGRectGetWidth([_tokenScrollView bounds]), offset.y + height)]; + if (_CGRectGetHeight([contentView bounds]) < offset.y + height) + [contentView setFrame:_CGRectMake(0, 0, _CGRectGetWidth([_tokenScrollView bounds]), offset.y + height)]; offset.x += width + spaceBetweenTokens.width; @@ -1043,21 +1006,21 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", textWidth = MAX(contentSize.width - offset.x - 1, textWidth); } - var inputFrame = fitAndFrame(textWidth, tokenHeight); + _inputFrame = fitAndFrame(textWidth, tokenHeight); - element.style.left = inputFrame.origin.x + "px"; - element.style.top = inputFrame.origin.y + "px"; - element.style.width = inputFrame.size.width + "px"; - element.style.height = inputFrame.size.height + "px"; + element.style.left = _inputFrame.origin.x + "px"; + element.style.top = _inputFrame.origin.y + "px"; + element.style.width = _inputFrame.size.width + "px"; + element.style.height = _inputFrame.size.height + "px"; // When editing, always scroll to the cursor. if (_selectedRange.length == 0) - [[_tokenScrollView documentView] scrollRectToVisible:inputFrame]; + [[_tokenScrollView documentView] scrollRectToVisible:_inputFrame]; }; for (var i = 0, count = [tokens count]; i < count; i++) { - if (isEditing && i == CPMaxRange(_selectedRange)) + if (isEditing && !_selectedRange.length && i == _CPMaxRange(_selectedRange)) placeEditor(false); var tokenView = [tokens objectAtIndex:i]; @@ -1076,34 +1039,36 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", [tokenView setFrame:tokenFrame]; } - if (isEditing && CPMaxRange(_selectedRange) >= [tokens count]) + if (isEditing && !_selectedRange.length && _CPMaxRange(_selectedRange) >= [tokens count]) placeEditor(true); // Hide the editor if there are selected tokens, but still keep it active // so we can continue using our standard keyboard handling events. if (isEditing && _selectedRange.length) { + _inputFrame = nil; [self _inputElement].style.left = "-10000px"; [self _inputElement].focus(); } // Trim off any excess height downwards. - if (CGRectGetHeight([contentView bounds]) > offset.y + tokenHeight) - [contentView setFrame:CGRectMake(0, 0, CGRectGetWidth([_tokenScrollView bounds]), offset.y + tokenHeight)]; + if (_CGRectGetHeight([contentView bounds]) > offset.y + tokenHeight) + [contentView setFrame:_CGRectMake(0, 0, _CGRectGetWidth([_tokenScrollView bounds]), offset.y + tokenHeight)]; if (_shouldScrollTo !== CPScrollDestinationNone) { // Only carry out the scroll if the cursor isn't visible. if (!(isEditing && _selectedRange.length == 0)) { - var scrollToToken = _shouldScrollTo; + if (scrollToToken === CPScrollDestinationLeft) scrollToToken = tokens[_selectedRange.location] else if (scrollToToken === CPScrollDestinationRight) - scrollToToken = tokens[MAX(0, CPMaxRange(_selectedRange) - 1)]; + scrollToToken = tokens[MAX(0, _CPMaxRange(_selectedRange) - 1)]; [self _scrollTokenViewToVisible:scrollToToken]; } + _shouldScrollTo = CPScrollDestinationNone; } } @@ -1116,61 +1081,51 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", return [[_tokenScrollView documentView] scrollRectToVisible:[aToken frame]]; } -// ====================== -// = TABLEVIEW DATSOURCE / DELEGATE = -// ====================== -- (int)numberOfRowsInTableView:(CPTableView)tableView -{ - return [_cachedCompletions count]; -} - -- (void)tableView:(CPTableView)tableView objectValueForTableColumn:(CPTableColumn)tableColumn row:(int)row -{ - return [self tokenField:self displayStringForRepresentedObject:[_cachedCompletions objectAtIndex:row]]; -} - -- (void)tableViewSelectionDidChange:(CPNotification)notification -{ - // make sure a mouse click in the tableview doesn't steal first responder state - window.setTimeout(function() - { - [[self window] makeFirstResponder:self]; - }, 2.0); -} - -// ============= -// = ACCESSORS = -// ============= -- (CPTableView)autocompleteView -{ - return _autocompleteView; -} - @end @implementation CPTokenField (CPTokenFieldDelegate) -// // Each element in the array should be an NSString or an array of NSStrings. -// // substring is the partial string that is being completed. tokenIndex is the index of the token being completed. -// // selectedIndex allows you to return by reference an index specifying which of the completions should be selected initially. -// // The default behavior is not to have any completions. -- (CPArray)tokenField:(CPTokenField)tokenField completionsForSubstring:(CPString)substring indexOfToken:(int)tokenIndex indexOfSelectedItem:(int)selectedIndex +/*! + Private API to get the delegate tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem: result. + + The delegate method should return an array of strings matching the provided substring for autocompletion. + tokenIndex is the index of the token being completed. selectedIndex allows the selected autocompletion option + to be indicated by reference. + + @ignore +*/ +- (CPArray)_completionsForSubstring:(CPString)substring indexOfToken:(int)tokenIndex indexOfSelectedItem:(int)selectedIndex { if ([[self delegate] respondsToSelector:@selector(tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:)]) { - return [[self delegate] tokenField:tokenField completionsForSubstring:substring indexOfToken:tokenIndex indexOfSelectedItem:selectedIndex]; + return [[self delegate] tokenField:self completionsForSubstring:substring indexOfToken:tokenIndex indexOfSelectedItem:selectedIndex]; } return []; } -// // Allows the delegate to provide a string to be displayed as a proxy for the given represented object. -// // If you return nil or do not implement this method, then representedObject is displayed as the string. -- (CPString)tokenField:(CPTokenField)tokenField displayStringForRepresentedObject:(id)representedObject +/*! + Private API used by the _CPAutocompleteMenu to determine where to place the menu in local coordinates. +*/ +- (CGPoint)_completionOrigin:(_CPAutocompleteMenu)anAutocompleteMenu +{ + var relativeFrame = _inputFrame ? [[_tokenScrollView documentView] convertRect:_inputFrame toView:self ] : [self bounds]; + return _CGPointMake(_CGRectGetMinX(relativeFrame), _CGRectGetMaxY(relativeFrame)); +} + +/*! + Private API to get the delegate tokenField:displayStringForRepresentedObject: result. + + The delegate method should return a string to be displayed for the given represtented object. + If this delegate method is not implemented, the representedObject is displayed as a string. + + @ignore +*/ +- (CPString)_displayStringForRepresentedObject:(id)representedObject { if ([[self delegate] respondsToSelector:@selector(tokenField:displayStringForRepresentedObject:)]) { - var stringForRepresentedObject = [[self delegate] tokenField:tokenField displayStringForRepresentedObject:representedObject]; + var stringForRepresentedObject = [[self delegate] tokenField:self displayStringForRepresentedObject:representedObject]; if (stringForRepresentedObject !== nil) { return stringForRepresentedObject; @@ -1180,16 +1135,21 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", return representedObject; } -// -// // return an array of represented objects you want to add. -// // If you want to reject the add, return an empty array. -// // returning nil will cause an error. -- (CPArray)tokenField:(CPTokenField)tokenField shouldAddObjects:(CPArray)tokens atIndex:(int)index +/*! + Private API to get the delegate tokenField:shouldAddObjects:atIndex: result. + + The delegate should return an array of represented objects which should be added based on the + suggested tokens to add and the insertion position specified by index. To add no tokens, + return an empty array. Returning nil is an error. + + @ignore +*/ +- (CPArray)_shouldAddObjects:(CPArray)tokens atIndex:(int)index { var delegate = [self delegate]; if ([delegate respondsToSelector:@selector(tokenField:shouldAddObjects:atIndex:)]) { - var approvedObjects = [delegate tokenField:tokenField shouldAddObjects:tokens atIndex:index]; + var approvedObjects = [delegate tokenField:self shouldAddObjects:tokens atIndex:index]; if (approvedObjects !== nil) return approvedObjects; } @@ -1197,26 +1157,54 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", return tokens; } -// -// // If you return nil or don't implement these delegate methods, we will assume -// // editing string = display string = represented object -// - (NSString *)tokenField:(NSTokenField *)tokenField editingStringForRepresentedObject:(id)representedObject; -// - (id)tokenField:(NSTokenField *)tokenField representedObjectForEditingString: (NSString *)editingString; -// -// // We put the string on the pasteboard before calling this delegate method. -// // By default, we write the NSStringPboardType as well as an array of NSStrings. +/*! + Private API to get the delegate tokenField:representedObjectForEditingString: result. + + The delegate method should return a represented object for the provided string which + may have been typed by the user or selected from the completion menu. If the method is + not implemented, or returns nil, the string is assumed to be the represented object. + + @ignore +*/ +- (id)_representedObjectForEditingString:(CPString)aString +{ + var delegate = [self delegate]; + if ([delegate respondsToSelector:@selector(tokenField:representedObjectForEditingString:)]) + { + var token = [delegate tokenField:self representedObjectForEditingString:aString]; + if (token !== nil && token !== undefined) + return token; + // If nil was returned, assume the string is the represented object. The alternative would have been + // to not add anything to the object value array for a nil response. + } + + return aString; +} + +// We put the string on the pasteboard before calling this delegate method. +// By default, we write the NSStringPboardType as well as an array of NSStrings. // - (BOOL)tokenField:(NSTokenField *)tokenField writeRepresentedObjects:(NSArray *)objects toPasteboard:(NSPasteboard *)pboard; // -// // Return an array of represented objects to add to the token field. +// Return an array of represented objects to add to the token field. // - (NSArray *)tokenField:(NSTokenField *)tokenField readFromPasteboard:(NSPasteboard *)pboard; // -// // By default the tokens have no menu. +// By default the tokens have no menu. // - (NSMenu *)tokenField:(NSTokenField *)tokenField menuForRepresentedObject:(id)representedObject; // - (BOOL)tokenField:(NSTokenField *)tokenField hasMenuForRepresentedObject:(id)representedObject; // -// // This method allows you to change the style for individual tokens as well as have mixed text and tokens. +// This method allows you to change the style for individual tokens as well as have mixed text and tokens. // - (NSTokenStyle)tokenField:(NSTokenField *)tokenField styleForRepresentedObject:(id)representedObject; +- (void)_delayedShowCompletions +{ + [[self _autocompleteMenu] _delayedShowCompletions]; +} + +- (void)_hideCompletions +{ + [_autocompleteMenu _hideCompletions]; +} + @end @implementation _CPTokenFieldToken : CPTextField @@ -1268,7 +1256,7 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", - (CGSize)_minimumFrameSize { - var size = CGSizeMakeZero(), + var size = _CGSizeMakeZero(), minSize = [self currentValueForThemeAttribute:@"min-size"], contentInset = [self currentValueForThemeAttribute:@"content-inset"]; @@ -1296,18 +1284,18 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", buttonOffset = [_deleteButton currentValueForThemeAttribute:@"offset"], buttonSize = [_deleteButton currentValueForThemeAttribute:@"min-size"]; - [_deleteButton setFrame:CPRectMake(CPRectGetMaxX(frame) - buttonOffset.x, CPRectGetMinY(frame) + buttonOffset.y, buttonSize.width, buttonSize.height)]; + [_deleteButton setFrame:_CGRectMake(CPRectGetMaxX(frame) - buttonOffset.x, CPRectGetMinY(frame) + buttonOffset.y, buttonSize.width, buttonSize.height)]; } } - (void)mouseDown:(CPEvent)anEvent { - [_tokenField mouseDownOnToken:self withEvent:anEvent]; + [_tokenField _mouseDownOnToken:self withEvent:anEvent]; } - (void)mouseUp:(CPEvent)anEvent { - [_tokenField mouseUpOnToken:self withEvent:anEvent]; + [_tokenField _mouseUpOnToken:self withEvent:anEvent]; } - (void)_delete:(id)sender @@ -1328,7 +1316,7 @@ var CPThemeStateAutoCompleting = @"CPThemeStateAutoCompleting", { var attributes = [CPButton themeAttributes]; - [attributes setObject:CGPointMake(15, 5) forKey:@"offset"]; + [attributes setObject:_CGPointMake(15, 5) forKey:@"offset"]; return attributes; } diff --git a/AppKit/CPToolbar.j b/AppKit/CPToolbar.j index c759a87a2..4c7429638 100644 --- a/AppKit/CPToolbar.j +++ b/AppKit/CPToolbar.j @@ -58,9 +58,6 @@ CPToolbarSizeModeSmall = 2; var CPToolbarsByIdentifier = nil, CPToolbarConfigurationsByIdentifier = nil; -var TOOLBAR_REGULAR_HEIGHT = 59.0, - TOOLBAR_SMALL_HEIGHT = 46.0; - /*! @ingroup appkit @class CPToolbar @@ -91,11 +88,12 @@ var TOOLBAR_REGULAR_HEIGHT = 59.0, @implementation CPToolbar : CPObject { CPString _identifier; - CPToolbarDisplayMode _displayMode; + CPToolbarDisplayMode _displayMode @accessors(property=displayMode); BOOL _showsBaselineSeparator; BOOL _allowsUserCustomization; BOOL _isVisible; int _sizeMode @accessors(property=sizeMode); + int _desiredHeight; id _delegate; @@ -137,6 +135,19 @@ var TOOLBAR_REGULAR_HEIGHT = 59.0, [toolbarsSharingIdentifier addObject:toolbar]; } +/* + Temporary theme attributes until we've figured out which CPView these theme attributes should + belong to. + @ignore +*/ ++ (id)_themeAttributes +{ + // "regular-size-height" is used if no item has a non-zero min size and sizeMode == CPToolbarSizeModeRegular. + // "small-size-height" is used if no item has a non-zero min size and sizeMode == CPToolbarSizeModeSmall. + return [CPDictionary dictionaryWithObjects:[_CGInsetMake(4.0, 4.0, 4.0, TOOLBAR_ITEM_MARGIN), 59.0, 46.0] + forKeys:[@"content-inset", @"regular-size-height", @"small-size-height"]]; +} + - (id)init { return [self initWithIdentifier:@""]; @@ -158,6 +169,7 @@ var TOOLBAR_REGULAR_HEIGHT = 59.0, _identifier = anIdentifier; _isVisible = YES; _sizeMode = CPToolbarSizeModeDefault; + _desiredHeight = 0; [CPToolbar _addToolbar:self forIdentifier:_identifier]; } @@ -246,6 +258,15 @@ var TOOLBAR_REGULAR_HEIGHT = 59.0, [self _reloadToolbarItems]; } +- (void)setDisplayMode:(CPToolbarDisplayMode)aDisplayMode +{ + if (_displayMode === aDisplayMode) + return; + _displayMode = aDisplayMode; + + [self _reloadToolbarItems]; +} + /* @ignore */ - (void)_loadConfiguration { @@ -254,7 +275,18 @@ var TOOLBAR_REGULAR_HEIGHT = 59.0, - (CGRect)_toolbarViewFrame { - return CPRectMake(0.0, 0.0, 1200.0, _sizeMode != CPToolbarSizeModeSmall ? TOOLBAR_REGULAR_HEIGHT : TOOLBAR_SMALL_HEIGHT); + var height = _desiredHeight || (_sizeMode != CPToolbarSizeModeSmall ? [self _valueForThemeAttribute:@"regular-size-height"] : [self _valueForThemeAttribute:@"small-size-height"]); + return CPRectMake(0.0, 0.0, 1200.0, height); +} + +/* + Temporary theme attributes until we've figured out which CPView these theme attributes should + belong to. + @ignore +*/ +- (id)_valueForThemeAttribute:(CPString)attributeName +{ + return [[[self class] _themeAttributes] valueForKey:attributeName]; } /* @ignore */ @@ -536,8 +568,7 @@ var _CPToolbarViewBackgroundColor = nil, _CPToolbarViewExtraItemsImage = nil, _CPToolbarViewExtraItemsAlternateImage = nil; -var TOOLBAR_TOP_MARGIN = 5.0, - TOOLBAR_ITEM_MARGIN = 10.0, +var TOOLBAR_ITEM_MARGIN = 10.0, TOOLBAR_EXTRA_ITEMS_WIDTH = 20.0; var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) @@ -575,9 +606,9 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) var bundle = [CPBundle bundleForClass:self]; - _CPToolbarViewExtraItemsImage = [[CPImage alloc] initWithContentsOfFile: [bundle pathForResource:"_CPToolbarView/_CPToolbarViewExtraItemsImage.png"] size:CPSizeMake(10.0, 15.0)]; + _CPToolbarViewExtraItemsImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:"_CPToolbarView/_CPToolbarViewExtraItemsImage.png"] size:CPSizeMake(10.0, 15.0)]; - _CPToolbarViewExtraItemsAlternateImage = [[CPImage alloc] initWithContentsOfFile: [bundle pathForResource:"_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png"] size:CGSizeMake(10.0, 15.0)]; + _CPToolbarViewExtraItemsAlternateImage = [[CPImage alloc] initWithContentsOfFile:[bundle pathForResource:"_CPToolbarView/_CPToolbarViewExtraItemsAlternateImage.png"] size:_CGSizeMake(10.0, 15.0)]; } - (id)initWithFrame:(CGRect)aFrame @@ -591,7 +622,7 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) _labelColor = [CPColor blackColor]; _labelShadowColor = [CPColor colorWithWhite:1.0 alpha:0.75]; - _additionalItemsButton = [[CPPopUpButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 10.0, 15.0) pullsDown:YES]; + _additionalItemsButton = [[CPPopUpButton alloc] initWithFrame:_CGRectMake(0.0, 0.0, 10.0, 15.0) pullsDown:YES]; [_additionalItemsButton setBordered:NO]; [_additionalItemsButton setImagePosition:CPImageOnly]; @@ -643,7 +674,7 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) { // We begin by recalculating the visible items. var items = [_toolbar items], - itemsWidth = CGRectGetWidth([self bounds]), + itemsWidth = _CGRectGetWidth([self bounds]), minWidth = _minWidth, // FIXME: This should be a CPSet. invisibleItemsSortedByPriority = []; @@ -693,6 +724,24 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) height = minSize.height; } + // We'll figure out the proper height for the toolbar depending on its items. + // If nothing has a minimum size we'll use the standard toolbar size for the + // sizeMode, indicated by a 0 _desiredHeight. + var contentInset = [_toolbar _valueForThemeAttribute:@"content-inset"], + newDesiredHeight = height ? height + contentInset.top + contentInset.bottom : 0; + + if (newDesiredHeight != _toolbar._desiredHeight) + { + // FIXME Probably the toolbar view shouldn't be telling the toolbar which height it should be. Maybe refactor + // to just have the toolbar scan the toolbar items whenever the items change. + _toolbar._desiredHeight = newDesiredHeight; + + [self setFrame:[_toolbar _toolbarViewFrame]]; + [_toolbar._window _noteToolbarChanged]; + // The above will cause tile to be called again. + return; + } + // Determine all the items that have flexible width. // Also determine the height of the toolbar. var count = _visibleItems.length, @@ -712,7 +761,7 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) // static width (min==max). This handles the case where the user did setView: // with a view of a different size than minSize/maxSize else - [view setFrameSize:CGSizeMake(minSize.width, height)]; + [view setFrameSize:_CGSizeMake(minSize.width, height)]; [view setHidden:NO]; } @@ -747,21 +796,23 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) remainingSpace += proposedWidth - constrainedWidth; } - [view setFrameSize:CGSizeMake(constrainedWidth, height)]; + [view setFrameSize:_CGSizeMake(constrainedWidth, height)]; } } // Now that all the visible items are the correct width, give them their final frames. var index = 0, count = _visibleItems.length, - x = TOOLBAR_ITEM_MARGIN; + x = contentInset.left, + contentInset = [_toolbar _valueForThemeAttribute:@"content-inset"], + y = contentInset.top; for (; index < count; ++index) { var view = [self viewForItem:_visibleItems[index]], - viewWidth = CGRectGetWidth([view frame]); + viewWidth = _CGRectGetWidth([view frame]); - [view setFrame:CGRectMake(x, 0.0, viewWidth, height)]; + [view setFrame:_CGRectMake(x, y, viewWidth, height)]; x += viewWidth + TOOLBAR_ITEM_MARGIN; } @@ -795,7 +846,7 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth) if (needsAdditionalItemsButton) { - [_additionalItemsButton setFrameOrigin:CGPointMake(itemsWidth + 5.0, (CGRectGetHeight([self bounds]) - CGRectGetHeight([_additionalItemsButton frame])) / 2.0)]; + [_additionalItemsButton setFrameOrigin:_CGPointMake(itemsWidth + 5.0, (_CGRectGetHeight([self bounds]) - _CGRectGetHeight([_additionalItemsButton frame])) / 2.0)]; [self addSubview:_additionalItemsButton]; @@ -906,8 +957,7 @@ var _CPToolbarItemVisibilityPriorityCompare = function(lhs, rhs) return CPOrderedDescending; }; -var TOP_MARGIN = 5.0, - LABEL_MARGIN = 2.0; +var LABEL_MARGIN = 2.0; @implementation _CPToolbarItemView : CPControl { @@ -934,12 +984,12 @@ var TOP_MARGIN = 5.0, { _toolbarItem = aToolbarItem; - _labelField = [[CPTextField alloc] initWithFrame:CGRectMakeZero()]; + _labelField = [[CPTextField alloc] initWithFrame:_CGRectMakeZero()]; [_labelField setFont:[CPFont systemFontOfSize:11.0]]; [_labelField setTextColor:[self FIXME_labelColor]]; [_labelField setTextShadowColor:[self FIXME_labelShadowColor]]; - [_labelField setTextShadowOffset:CGSizeMake(0.0, 1.0)]; + [_labelField setTextShadowOffset:_CGSizeMake(0.0, 1.0)]; [_labelField setAutoresizingMask:CPViewWidthSizable | CPViewMinXMargin]; [self addSubview:_labelField]; @@ -986,11 +1036,11 @@ var TOP_MARGIN = 5.0, if (identifier === CPToolbarSeparatorItemIdentifier) { - _view = [[CPView alloc] initWithFrame:CGRectMake(0.0, 0.0, 2.0, 32.0)]; + _view = [[CPView alloc] initWithFrame:_CGRectMake(0.0, 0.0, 2.0, 32.0)]; // FIXME: Get rid of this old API!!! sizes = {}; - sizes[@"CPToolbarItemSeparator"] = [CGSizeMake(2.0, 26.0), CGSizeMake(2.0, 1.0), CGSizeMake(2.0, 26.0)]; + sizes[@"CPToolbarItemSeparator"] = [_CGSizeMake(2.0, 26.0), _CGSizeMake(2.0, 1.0), _CGSizeMake(2.0, 26.0)]; [_view setBackgroundColor:_CPControlThreePartImagePattern(YES, sizes, @"CPToolbarItem", @"Separator")]; [self addSubview:_view]; @@ -1042,8 +1092,13 @@ var TOP_MARGIN = 5.0, _labelSize = [_labelField frame].size; - _minSize = CGSizeMake(MAX(_labelSize.width, minSize.width), _labelSize.height + minSize.height + LABEL_MARGIN + TOP_MARGIN); - _maxSize = CGSizeMake(MAX(_labelSize.width, maxSize.width), 100000000.0); + var iconOnly = [[_toolbarItem toolbar] displayMode] === CPToolbarDisplayModeIconOnly, + labelOnly = [[_toolbarItem toolbar] displayMode] === CPToolbarDisplayModeLabelOnly; + [_labelField setHidden:iconOnly]; + [_view setHidden:labelOnly]; + + _minSize = _CGSizeMake(MAX(_labelSize.width, minSize.width), (labelOnly ? 0 : minSize.height) + (iconOnly ? 0 : _labelSize.height + LABEL_MARGIN)); + _maxSize = _CGSizeMake(MAX(_labelSize.width, maxSize.width), 100000000.0); [_toolbar tile]; } @@ -1060,20 +1115,23 @@ var TOP_MARGIN = 5.0, width = _CGRectGetWidth(bounds); if (identifier === CPToolbarSeparatorItemIdentifier) - return [_view setFrame:CGRectMake(ROUND((width - 2.0) / 2.0), 0.0, 2.0, _CGRectGetHeight(bounds))]; + return [_view setFrame:_CGRectMake(ROUND((width - 2.0) / 2.0), 0.0, 2.0, _CGRectGetHeight(bounds))]; + // The view is centred in the available space above the label. var view = _view || _imageView, itemMaxSize = [_toolbarItem maxSize], - height = _CGRectGetHeight(bounds) - _labelSize.height - LABEL_MARGIN - TOP_MARGIN, + iconOnly = [[_toolbarItem toolbar] displayMode] === CPToolbarDisplayModeIconOnly, + height = _CGRectGetHeight(bounds) - (iconOnly ? 0 : _labelSize.height), viewWidth = MIN(itemMaxSize.width, width), viewHeight = MIN(itemMaxSize.height, height); - [view setFrame:CGRectMake( ROUND((width - viewWidth) / 2.0), - TOP_MARGIN + ROUND((height - viewHeight) / 2.0), - viewWidth, - viewHeight)]; + [view setFrame:_CGRectMake(ROUND((width - viewWidth) / 2.0), + ROUND((height - viewHeight) / 2.0), + viewWidth, + viewHeight)]; - [_labelField setFrameOrigin:CGPointMake(ROUND((width - _labelSize.width) / 2.0), TOP_MARGIN + height + LABEL_MARGIN)]; + // Label is always drawn at the bottom of the view. So if the view is really tall but the icon is tiny, the icon is centred above the label while the label remains on the bottom. + [_labelField setFrameOrigin:_CGPointMake(ROUND((width - _labelSize.width) / 2.0), _CGRectGetHeight(bounds) - _labelSize.height)]; } - (void)mouseDown:(CPEvent)anEvent @@ -1136,7 +1194,7 @@ var TOP_MARGIN = 5.0, if (alternateImage) [_imageView setImage:alternateImage]; - [_labelField setTextShadowOffset:CGSizeMakeZero()]; + [_labelField setTextShadowOffset:_CGSizeMakeZero()]; } else { @@ -1145,7 +1203,7 @@ var TOP_MARGIN = 5.0, if (image) [_imageView setImage:image]; - [_labelField setTextShadowOffset:CGSizeMake(0.0, 1.0)]; + [_labelField setTextShadowOffset:_CGSizeMake(0.0, 1.0)]; } [_labelField setTextShadowColor:[self FIXME_labelShadowColor]]; diff --git a/AppKit/CPWindow/_CPDocModalWindowView.j b/AppKit/CPWindow/_CPDocModalWindowView.j index ae691300d..8bd6540d4 100644 --- a/AppKit/CPWindow/_CPDocModalWindowView.j +++ b/AppKit/CPWindow/_CPDocModalWindowView.j @@ -24,7 +24,7 @@ var _CPStandardWindowViewBodyBackgroundColor = nil; if (self) { var theClass = [self class], - bounds = [self bounds]; + bounds = [self bounds]; _bodyView = [[CPView alloc] initWithFrame:_CGRectMake(0.0, 0.0, _CGRectGetWidth(bounds), _CGRectGetHeight(bounds))]; @@ -54,4 +54,4 @@ var _CPStandardWindowViewBodyBackgroundColor = nil; return aContentRect; } -@end \ No newline at end of file +@end diff --git a/AppKit/Cib/CPCibHelpConnector.j b/AppKit/Cib/CPCibHelpConnector.j index 8049abda9..925b3393f 100644 --- a/AppKit/Cib/CPCibHelpConnector.j +++ b/AppKit/Cib/CPCibHelpConnector.j @@ -25,8 +25,8 @@ @implementation CPCibHelpConnector : CPCibConnector { id _destination; - id _file; - id _marker; + id _file; + id _marker; } - (id)initWithCoder:(CPCoder)aCoder diff --git a/AppKit/CoreGraphics/CGColorSpace.j b/AppKit/CoreGraphics/CGColorSpace.j index 711d7725b..f6a529c1a 100644 --- a/AppKit/CoreGraphics/CGColorSpace.j +++ b/AppKit/CoreGraphics/CGColorSpace.j @@ -193,7 +193,7 @@ function CGColorSpaceRetain(aColorSpace) } // FIXME: We should refer to some default values. -#define STANDARDIZE(components, index, minimum, maximum, multiplier) \ +#define STANDARDIZE(components, index, minimum, maximum, multiplier) \ { \ if (index > components.length) \ { \ diff --git a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j index 076ec8f12..bdab72a10 100644 --- a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j +++ b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j @@ -192,6 +192,8 @@ var ModifierKeyCodes = [ ], supportsNativeDragAndDrop = [CPPlatform supportsDragAndDrop]; +var resizeTimer = nil; + @implementation CPPlatformWindow (DOM) - (id)_init @@ -1083,6 +1085,21 @@ var ModifierKeyCodes = [ - (void)resizeEvent:(DOMEvent)aDOMEvent { + // This is a hack for the browser resize bug in safari. + // See bug ID: 1325 + // https://github.com/cappuccino/cappuccino/issues/1325 + // Addendum by Antoine Mercadal : I also noticed that reszing is causing + // problem under latest Firefox 13.0. Let's just use this hack + // for all browser now. + + [resizeTimer invalidate]; + resizeTimer = [CPTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(_actualResizeEvent) userInfo:nil repeats:NO]; +} + +- (void)_actualResizeEvent +{ + resizeTimer = nil; + // FIXME: This is not the right way to do this. // We should pay attention to mouse down and mouse up in conjunction with this. //window.liveResize = YES; diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-bezel.png b/AppKit/Themes/Aristo/Resources/buttonbar-bezel.png index 72f5b7385..0786263d5 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-bezel.png and b/AppKit/Themes/Aristo/Resources/buttonbar-bezel.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-center.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-center.png index 6c0baa874..c7e5c8cff 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-center.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-center.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-center.png index bc422e26e..2d0338639 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-center.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-left.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-left.png index f90726913..b14a4263a 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-left.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-right.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-right.png index 0677c2a39..e8c8f2192 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-right.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-disabled-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-center.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-center.png index 6702e3a08..ee02c199c 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-center.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-left.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-left.png index 0bdaf7440..05d299548 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-left.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-right.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-right.png index b0533c1d9..2aef0e98e 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-right.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-highlighted-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-left.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-left.png index d56025635..7400551e4 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-left.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-right.png b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-right.png index 9be78a797..18575ce51 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-right.png and b/AppKit/Themes/Aristo/Resources/buttonbar-button-bezel-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/buttonbar-resize-control.png b/AppKit/Themes/Aristo/Resources/buttonbar-resize-control.png index 744010abc..b31cc36b9 100644 Binary files a/AppKit/Themes/Aristo/Resources/buttonbar-resize-control.png and b/AppKit/Themes/Aristo/Resources/buttonbar-resize-control.png differ diff --git a/AppKit/Themes/Default/AppController.j b/AppKit/Themes/Default/AppController.j index 8a421e4c3..8ccddb630 100644 --- a/AppKit/Themes/Default/AppController.j +++ b/AppKit/Themes/Default/AppController.j @@ -31,9 +31,8 @@ [_CPCibCustomResource imageResourceWithName:"horizontal-track-center.png" size:CPSizeMake(1.0, 4.0)], [_CPCibCustomResource imageResourceWithName:"horizontal-track-right.png" size:CPSizeMake(2.0, 4.0)] ] - isVertical:NO]]; - - var horizontalSlider = [[CPSlider alloc] initWithFrame:CGRectMake(0.0, 0.0, 50.0, 24.0)]; + isVertical:NO]], + horizontalSlider = [[CPSlider alloc] initWithFrame:CGRectMake(0.0, 0.0, 50.0, 24.0)]; [horizontalSlider setTrackWidth:4.0]; [horizontalSlider setHorizontalTrackColor:horizontalTrackColor]; @@ -55,9 +54,8 @@ [_CPCibCustomResource imageResourceWithName:"vertical-track-center.png" size:CPSizeMake(4.0, 1.0)], [_CPCibCustomResource imageResourceWithName:"vertical-track-bottom.png" size:CPSizeMake(4.0, 2.0)] ] - isVertical:YES]]; - - var verticalSlider = [[CPSlider alloc] initWithFrame:CGRectMake(0.0, 0.0, 24.0, 50.0)]; + isVertical:YES]], + verticalSlider = [[CPSlider alloc] initWithFrame:CGRectMake(0.0, 0.0, 24.0, 50.0)]; [verticalSlider setTrackWidth:4]; [verticalSlider setVerticalTrackColor:verticalTrackColor]; diff --git a/AppKit/_CPAttachedWindow.j b/AppKit/_CPAttachedWindow.j index 8e53162a6..ccbf265f1 100644 --- a/AppKit/_CPAttachedWindow.j +++ b/AppKit/_CPAttachedWindow.j @@ -1,5 +1,5 @@ /* - * _CPToolTipWindowView.j + * _CPAttachedWindow.j * AppKit * * Created by Antoine Mercadal diff --git a/AppKit/_CPAutocompleteMenu.j b/AppKit/_CPAutocompleteMenu.j new file mode 100644 index 000000000..a79c1ae80 --- /dev/null +++ b/AppKit/_CPAutocompleteMenu.j @@ -0,0 +1,264 @@ +/* + * _CPAutocompleteMenu.j + * AppKit + * + * Created by Alexander Ljungberg on May 10, 2012. + * Copyright 2012, Alexander Ljungberg. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +@import + +@import "CPTextField.j" +@import "_CPMenuWindow.j" + +// TODO Make themable. +var _CPAutocompleteMenuMaximumHeight = 307; + +/*! + An "autocomplete" menu displayed by a text field. +*/ +@implementation _CPAutocompleteMenu : CPObject +{ + CPTextField textField @accessors; + CPArray contentArray @accessors; + float widestItemWidth; + + CPWindow _menuWindow; + CPScrollView scrollView; + CPTableView tableView; + + CPTimer _showCompletionsTimer; +} + +- (id)initWithTextField:(CPTextField)aTextField +{ + if (self = [super init]) + { + textField = aTextField; + + _menuWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(0, 0, 100, 100) styleMask:CPBorderlessWindowMask]; + + [_menuWindow setLevel:CPPopUpMenuWindowLevel]; + [_menuWindow setHasShadow:YES]; + [_menuWindow setShadowStyle:CPMenuWindowShadowStyle]; + [_menuWindow setAcceptsMouseMovedEvents:NO]; + [_menuWindow setBackgroundColor:[_CPMenuWindow backgroundColorForBackgroundStyle:_CPMenuWindowPopUpBackgroundStyle]]; + + var contentView = [_menuWindow contentView]; + + scrollView = [[CPScrollView alloc] initWithFrame:CGRectMakeZero()]; + [scrollView setAutohidesScrollers:YES]; + [scrollView setHasHorizontalScroller:NO]; + [contentView addSubview:scrollView]; + + tableView = [[CPTableView alloc] initWithFrame:CPRectMakeZero()]; + + var tableColumn = [CPTableColumn new]; + [tableColumn setResizingMask:CPTableColumnAutoresizingMask]; + [tableView addTableColumn:tableColumn]; + + [tableView setDataSource:self]; + [tableView setDelegate:self]; + [tableView setAllowsMultipleSelection:NO]; + [tableView setHeaderView:nil]; + [tableView setCornerView:nil]; + [tableView setRowHeight:24.0]; + [tableView setGridStyleMask:CPTableViewSolidHorizontalGridLineMask]; + [tableView setBackgroundColor:[CPColor clearColor]]; + [tableView setGridColor:[CPColor colorWithRed:242.0 / 255.0 green:243.0 / 255.0 blue:245.0 / 255.0 alpha:1.0]]; + + [scrollView setDocumentView:tableView]; + } + + return self; +} + +/*! + Set an array of strings to use as the available completions. +*/ +- (void)setContentArray:(CPArray)anArray +{ + if (contentArray === anArray || [contentArray isEqualToArray:anArray]) + return; + + contentArray = [anArray copy]; + + // Go away automatically if there are no suggestions. + if (![contentArray count]) + [self _hideCompletions]; + + widestItemWidth = CPNotFound; + + [tableView reloadData]; + [self layoutSubviews]; +} + +- (void)setIndexOfSelectedItem:(int)anIndex +{ + [tableView selectRowIndexes:[CPIndexSet indexSetWithIndex:anIndex] byExtendingSelection:NO]; + [tableView scrollRowToVisible:anIndex]; +} + +- (int)indexOfSelectedItem +{ + return [tableView selectedRow]; +} + +- (CPString)selectedItem +{ + return contentArray ? contentArray[[tableView selectedRow]] : nil; +} + +- (void)layoutSubviews +{ + // TODO + /* + The autocompletion menu should be underneath the word/text being + autocompleted. It should at least be wide enough to fit the widest option + but no wider than the width of the text field. It might stick out on the + right side, so that if the edited text is on the right of the text field + the menu might extend a full text field width more into space on the right + side. It should not stick out outside of the screen. The height should be + the smallest possible to fit all options or at most ~307px (based on + Cocoa). If the options don't fit horizontally they should be truncated + with an ellipsis. + */ + + var frame = [textField frame], + origin = frame.origin, + tableColumn = [[tableView tableColumns] firstObject]; + + if ([textField respondsToSelector:@selector(_completionOrigin:)]) + origin = [textField _completionOrigin:self]; + + if (widestItemWidth === CPNotFound) + { + // This calculation could be slow for many items. + + var dataView = [tableColumn dataView], + fontNormal = [dataView valueForThemeAttribute:@"font" inState:CPThemeStateTableDataView], + fontSelected = [dataView valueForThemeAttribute:@"font" inState:CPThemeStateTableDataView | CPThemeStateSelectedTableDataView], + contentInsetNormal = [dataView valueForThemeAttribute:@"content-inset" inState:CPThemeStateTableDataView], + contentInsetSelected = [dataView valueForThemeAttribute:@"content-inset" inState:CPThemeStateTableDataView | CPThemeStateSelectedTableDataView]; + + var mergedString = contentArray.join("\n"); + + widestItemWidth = MAX([mergedString sizeWithFont:fontNormal].width + contentInsetNormal.left + contentInsetNormal.right, [mergedString sizeWithFont:fontSelected].width + contentInsetSelected.left + contentInsetSelected.right) + [tableView intercellSpacing].width + 2.0 + 5.0; // 2.0 because we inset by 1.0 below, 5.0 mystery constant. + // TODO Track down why mystery constant is needed to allocate enough width. Scroll view insets? + } + + var frameOrigin = [textField convertPoint:origin toView:nil], + screenSize = [([CPPlatform isBrowser] ? [_menuWindow platformWindow] : [_menuWindow screen]) visibleFrame].size, + availableWidth = screenSize.width - frameOrigin.x, + availableHeight = screenSize.height - frameOrigin.y, + width = MIN(widestItemWidth, availableWidth), + spacingHeight = [tableView intercellSpacing].height, + height = MIN(MIN(spacingHeight + [contentArray count] * ([tableView rowHeight] + spacingHeight), _CPAutocompleteMenuMaximumHeight), availableHeight), + newFrame = CGRectMake(frameOrigin.x, frameOrigin.y, width, height); + + newFrame = [_menuWindow frameRectForContentRect:newFrame]; + [_menuWindow setFrame:newFrame]; + + var scrollFrame = CGRectInset([[_menuWindow contentView] bounds], 1.0, 1.0); + [scrollView setFrame:scrollFrame]; + + [tableColumn setWidth:[[scrollView contentView] frame].size.width]; +} + +- (void)_showCompletions:(CPTimer)timer +{ + var indexOfSelectedItem = [self indexOfSelectedItem]; + + [self setContentArray:[textField _completionsForSubstring:[textField _inputElement].value indexOfToken:0 indexOfSelectedItem:indexOfSelectedItem]]; + + if (![contentArray count]) + return; + + // TODO Support indexOfSelectedItem. Always 0 right now. + [self setIndexOfSelectedItem:indexOfSelectedItem]; + + [textField setThemeState:CPThemeStateAutocompleting]; + [_menuWindow orderFront:self]; + + [self layoutSubviews]; +} + +- (void)_delayedShowCompletions +{ + var completionDelay = 0.5; + + if ([textField respondsToSelector:@selector(completionDelay)]) + completionDelay = [textField completionDelay]; + + _showCompletionsTimer = [CPTimer scheduledTimerWithTimeInterval:completionDelay + target:self + selector:@selector(_showCompletions:) + userInfo:nil + repeats:NO]; +} + +- (void)_hideCompletions +{ + [_showCompletionsTimer invalidate]; + _showCompletionsTimer = nil; + + [textField unsetThemeState:CPThemeStateAutocompleting]; + [_menuWindow orderOut:self]; + [self layoutSubviews]; +} + +- (void)selectNext +{ + var index = [self indexOfSelectedItem] + 1; + + if (index >= [contentArray count]) + return; + + [self setIndexOfSelectedItem:index]; +} + +- (void)selectPrevious +{ + var index = [self indexOfSelectedItem] - 1; + + if (index < 0) + return; + + [self setIndexOfSelectedItem:index]; +} + +- (int)numberOfRowsInTableView:(CPTableView)tableView +{ + return [contentArray count]; +} + +- (void)tableView:(CPTableView)tableView objectValueForTableColumn:(CPTableColumn)tableColumn row:(int)row +{ + return [contentArray objectAtIndex:row]; +} + +- (void)tableViewSelectionDidChange:(CPNotification)notification +{ + // FIXME + // make sure a mouse click in the tableview doesn't steal first responder state + window.setTimeout(function() + { + [[textField window] makeFirstResponder:textField]; + }, 2.0); +} + +@end diff --git a/Foundation/CPArray/CPMutableArray.j b/Foundation/CPArray/CPMutableArray.j index 420bf0873..308390429 100644 --- a/Foundation/CPArray/CPMutableArray.j +++ b/Foundation/CPArray/CPMutableArray.j @@ -334,7 +334,16 @@ - (void)sortUsingDescriptors:(CPArray)descriptors { - [self sortUsingFunction:compareObjectsUsingDescriptors context:descriptors]; + var i = [descriptors count], + jsDescriptors = []; + + // Revert the order of the descriptors + while (i--) + { + var d = [descriptors objectAtIndex:i]; + [jsDescriptors addObject:{ "k": [d key], "a": [d ascending], "s": [d selector]}]; + } + sortArrayUsingJSDescriptors(self, jsDescriptors); } /*! @@ -344,46 +353,7 @@ */ - (void)sortUsingFunction:(Function)aFunction context:(id)aContext { - var h, - i, - j, - k, - l, - m, - n = [self count], - o; - - var A, - B = []; - - for (h = 1; h < n; h += h) - { - for (m = n - 1 - h; m >= 0; m -= h + h) - { - l = m - h + 1; - if (l < 0) - l = 0; - - for (i = 0, j = l; j <= m; i++, j++) - B[i] = self[j]; - - for (i = 0, k = l; k < j && j <= m + h; k++) - { - A = self[j]; - o = aFunction(A, B[i], aContext); - if (o >= 0) - self[k] = B[i++]; - else - { - self[k] = A; - j++; - } - } - - while (k < j) - self[k++] = B[i++]; - } - } + sortArrayUsingFunction(self, aFunction, aContext); } /*! @@ -392,7 +362,7 @@ */ - (void)sortUsingSelector:(SEL)aSelector { - [self sortUsingFunction:selectorCompare context:aSelector]; + sortArrayUsingFunction(self, selectorCompare, aSelector); } @end @@ -408,20 +378,163 @@ @end -var selectorCompare = function selectorCompare(object1, object2, selector) +var selectorCompare = function(object1, object2, selector) { return [object1 performSelector:selector withObject:object2]; }; -// sort using sort descriptors -var compareObjectsUsingDescriptors= function compareObjectsUsingDescriptors(lhs, rhs, descriptors) +var sortArrayUsingFunction = function(array, aFunction, aContext) { - var result = CPOrderedSame, - i = 0, - n = [descriptors count]; + var h, + i, + j, + k, + l, + m, + n = array.length, + o; - while (i < n && result === CPOrderedSame) - result = [descriptors[i++] compareObject:lhs withObject:rhs]; + var A, + B = []; - return result; -}; + for (h = 1; h < n; h += h) + { + for (m = n - 1 - h; m >= 0; m -= h + h) + { + l = m - h + 1; + if (l < 0) + l = 0; + + for (i = 0, j = l; j <= m; i++, j++) + B[i] = array[j]; + + for (i = 0, k = l; k < j && j <= m + h; k++) + { + A = array[j]; + o = aFunction(A, B[i], aContext); + + if (o >= 0) + array[k] = B[i++]; + else + { + array[k] = A; + j++; + } + } + + while (k < j) + array[k++] = B[i++]; + } + } +} + +// Observe that the sort descriptors has the reversed order by the caller +var sortArrayUsingJSDescriptors = function(a, d) +{ + var h, + i, + j, + k, + l, + m, + n = a.length, + dl = d.length - 1, + o, + c = {}; + + var A, + B = [], + C1, + C2, + cn, + aUID, + bUID, + key, + dd; + + if (dl < 0) + return; + + for (h = 1; h < n; h += h) + { + for (m = n - 1 - h; m >= 0; m -= h + h) + { + l = m - h + 1; + + if (l < 0) + l = 0; + + for (i = 0, j = l; j <= m; i++, j++) + B[i] = a[j]; + + for (i = 0, k = l; k < j && j <= m + h; k++) + { + A = a[j]; + aUID = A._UID; + + if (!aUID) + aUID = [A UID]; + + C1 = c[aUID]; + + if (!C1) + { + C1 = {}; + cn = dl; + + do + { + key = d[cn].k; + C1[key] = [A valueForKey:key]; + } while (cn--) + + c[aUID] = C1; + } + + bUID = B[i]._UID; + + if (!bUID) + bUID = [B[i] UID]; + + C2 = c[bUID]; + + if (!C2) + { + C2 = {}; + cn = dl; + + do + { + key = d[cn].k; + C2[key] = [B[i] valueForKey:key]; + } while (cn--) + + c[bUID] = C2; + } + + cn = dl; + + do + { + dd = d[cn]; + key = dd.k; + o = objj_msgSend(C1[key], dd.s, C2[key]); + + if (o && !dd.a) + o = -o; + } while (cn-- && o == CPOrderedSame) + + if (o >= 0) + a[k] = B[i++]; + else + { + a[k] = A; + j++; + } + } + + while (k < j) + a[k++] = B[i++]; + } + } +} diff --git a/Foundation/CPAttributedString.j b/Foundation/CPAttributedString.j index 2a54b09cb..29c8b7749 100644 --- a/Foundation/CPAttributedString.j +++ b/Foundation/CPAttributedString.j @@ -823,7 +823,7 @@ var makeRangeEntry = function makeRangeEntry(/*CPRange*/aRange, /*CPDictionary*/ var copyRangeEntry = function copyRangeEntry(/*RangeEntry*/aRangeEntry) { - return makeRangeEntry(CPCopyRange(aRangeEntry.range), [aRangeEntry.attributes copy]); + return makeRangeEntry(CPMakeRangeCopy(aRangeEntry.range), [aRangeEntry.attributes copy]); }; var splitRangeEntry = function splitRangeEntryAtIndex(/*RangeEntry*/aRangeEntry, /*unsigned*/anIndex) diff --git a/Foundation/CPDate.j b/Foundation/CPDate.j index e666ceb15..86bf25deb 100644 --- a/Foundation/CPDate.j +++ b/Foundation/CPDate.j @@ -24,14 +24,12 @@ @import "CPString.j" @import "CPException.j" -var CPDateReferenceDate = new Date(Date.UTC(2001, 1, 1, 0, 0, 0, 0)); +var CPDateReferenceDate = new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 0)); /*! @class CPDate @ingroup foundation @brief A representation of a single point in time. - - */ @implementation CPDate : CPObject { @@ -66,12 +64,12 @@ var CPDateReferenceDate = new Date(Date.UTC(2001, 1, 1, 0, 0, 0, 0)); + (id)distantPast { - return new Date(-10000, 1, 1, 0, 0, 0, 0); + return [CPDate dateWithTimeIntervalSinceReferenceDate:-63113817600.0]; } + (id)distantFuture { - return new Date(10000, 1, 1, 0, 0, 0, 0); + return [CPDate dateWithTimeIntervalSinceReferenceDate:63113990400.0]; } - (id)initWithTimeIntervalSinceNow:(CPTimeInterval)seconds @@ -169,7 +167,7 @@ var CPDateReferenceDate = new Date(Date.UTC(2001, 1, 1, 0, 0, 0, 0)); - (CPComparisonResult)compare:(CPDate)anotherDate { - return (self > anotherDate) ? CPOrderedDescending : ((self < anotherDate) ? CPOrderedAscending : CPOrderedSame); + return (self > anotherDate) ? CPOrderedDescending : ((self < anotherDate) ? CPOrderedAscending : CPOrderedSame); } - (CPDate)earlierDate:(CPDate)anotherDate @@ -200,7 +198,7 @@ var CPDateReferenceDate = new Date(Date.UTC(2001, 1, 1, 0, 0, 0, 0)); */ - (CPString)description { - return [CPString stringWithFormat:@"%04d-%02d-%02d %02d:%02d:%02d %s", self.getFullYear(), self.getMonth()+1, self.getDate(), self.getHours(), self.getMinutes(), self.getSeconds(), [CPDate timezoneOffsetString:self.getTimezoneOffset()]]; + return [CPString stringWithFormat:@"%04d-%02d-%02d %02d:%02d:%02d %s", self.getFullYear(), self.getMonth() + 1, self.getDate(), self.getHours(), self.getMinutes(), self.getSeconds(), [CPDate timezoneOffsetString:self.getTimezoneOffset()]]; } - (id)copy @@ -245,7 +243,7 @@ Date.parseISO8601 = function (date) if (isNaN(timestamp) && (struct = /^(\d{4}|[+\-]\d{6})(?:-(\d{2})(?:-(\d{2}))?)?(?:T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{3}))?)?(?:(Z)|([+\-])(\d{2})(?::(\d{2}))?)?)?$/.exec(date))) { - // avoid NaN timestamps caused by “undefined” values being passed to Date.UTC + // avoid NaN timestamps caused by "undefined" values being passed to Date.UTC for (var i = 0, k; (k = numericKeys[i]); ++i) struct[k] = +struct[k] || 0; diff --git a/Foundation/CPDateFormatter.j b/Foundation/CPDateFormatter.j index 661beac79..2e52fa725 100644 --- a/Foundation/CPDateFormatter.j +++ b/Foundation/CPDateFormatter.j @@ -99,12 +99,10 @@ CPDateFormatterFullStyle = 4; - (BOOL)getObjectValue:(id)anObject forString:(CPString)aString errorDescription:(CPString)anError { - console.log("getObjectValue: forString:" + aString); // TODO Error handling. var value = [self dateFromString:aString]; AT_DEREF(anObject, value); - console.log("got " + value); return YES; } diff --git a/Foundation/CPDecimal.j b/Foundation/CPDecimal.j index c8b52f739..ec06deea7 100644 --- a/Foundation/CPDecimal.j +++ b/Foundation/CPDecimal.j @@ -181,7 +181,7 @@ function CPDecimalMakeWithParts(mantissa, exponent) var m = [], isNegative = NO; - if (mantissa < 0 ) + if (mantissa < 0) { isNegative = YES; mantissa = ABS(mantissa); @@ -1400,10 +1400,9 @@ function CPDecimalRound(result, dcm, scale ,roundingMode) function CPDecimalCompact(dcm) { // if positive or zero exp leading zeros simply delete, trailing ones u need to increment exponent - if (!dcm || dcm._mantissa.length == 0 || CPDecimalIsNotANumber(dcm) ) + if (!dcm || dcm._mantissa.length == 0 || CPDecimalIsNotANumber(dcm)) return; - if (CPDecimalIsZero(dcm)) { // handle zero number compacting diff --git a/Foundation/CPIndexSet.j b/Foundation/CPIndexSet.j index eac5a42a3..c0a13c3d4 100644 --- a/Foundation/CPIndexSet.j +++ b/Foundation/CPIndexSet.j @@ -20,14 +20,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "CPRange.h" + @import "CPArray.j" @import "CPObject.j" @import "CPRange.j" -#define _CPMaxRange(aRange) ((aRange).location + (aRange).length) -#define _CPMakeRange(aLocation, aLength) { location:(aLocation), length:aLength } -#define _CPMakeRangeCopy(aRange) { location:(aRange).location, length:(aRange).length } - /*! @class CPIndexSet @ingroup foundation diff --git a/Foundation/CPNumber.j b/Foundation/CPNumber.j index 870740614..1373a025a 100644 --- a/Foundation/CPNumber.j +++ b/Foundation/CPNumber.j @@ -222,7 +222,8 @@ FIXME: Do we need this? - (CPString)descriptionWithLocale:(CPDictionary)aDictionary { - if (!aDictionary) return toString(); + if (!aDictionary) + return toString(); throw new Error("descriptionWithLocale: NOT YET IMPLEMENTED"); } @@ -234,37 +235,43 @@ FIXME: Do we need this? - (double)doubleValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } - (float)floatValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } - (int)intValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } - (long long)longLongValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } - (long)longValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } - (short)shortValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } @@ -280,7 +287,8 @@ FIXME: Do we need this? - (unsigned int)unsignedIntValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } /* @@ -292,20 +300,24 @@ FIXME: Do we need this? */ - (unsigned long)unsignedLongValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } - (unsigned short)unsignedShortValue { - if (typeof self == "boolean") return self ? 1 : 0; + if (typeof self == "boolean") + return self ? 1 : 0; return self; } - (CPComparisonResult)compare:(CPNumber)aNumber { - if (self > aNumber) return CPOrderedDescending; - else if (self < aNumber) return CPOrderedAscending; + if (self > aNumber) + return CPOrderedDescending; + else if (self < aNumber) + return CPOrderedAscending; return CPOrderedSame; } diff --git a/Foundation/CPRange.h b/Foundation/CPRange.h new file mode 100644 index 000000000..f20a08f7a --- /dev/null +++ b/Foundation/CPRange.h @@ -0,0 +1,25 @@ +/* + * CPRange.h + * Foundation + * + * Created by Alexander Ljungberg. + * Copyright 2012, SlevenBits Ltd. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define _CPMaxRange(aRange) ((aRange).location + (aRange).length) +#define _CPMakeRange(aLocation, aLength) { location:(aLocation), length:aLength } +#define _CPMakeRangeCopy(aRange) { location:(aRange).location, length:(aRange).length } diff --git a/Foundation/CPRange.j b/Foundation/CPRange.j index a6092a483..d96bbb834 100755 --- a/Foundation/CPRange.j +++ b/Foundation/CPRange.j @@ -20,6 +20,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#define _function(inline) function inline { return _##inline; } + +#include "CPRange.h" + /*! @addtogroup foundation @{ @@ -32,10 +36,7 @@ @group CPRange @return CPRange the new range object */ -function CPMakeRange(location, length) -{ - return { location: location, length: length }; -} +_function(CPMakeRange(location, length)) /*! Makes a copy of a CPRange. @@ -43,21 +44,7 @@ function CPMakeRange(location, length) @group CPRange @return CPRange the copy of the range */ -function CPCopyRange(aRange) -{ - return { location: aRange.location, length: aRange.length }; -} - -/*! - Makes a copy of a CPRange. - @param aRange the CPRange to copy - @group CPRange - @return CPRange the copy of the range -*/ -function CPMakeRangeCopy(aRange) -{ - return { location:aRange.location, length:aRange.length }; -} +_function(CPMakeRangeCopy(aRange)) /*! Determines if a range is empty \c length is 0. @@ -76,10 +63,7 @@ function CPEmptyRange(aRange) @group CPRange @return int the range maximum */ -function CPMaxRange(aRange) -{ - return aRange.location + aRange.length; -} +_function(CPMaxRange(aRange)) /*! Determines if two CPRanges are equal. diff --git a/Foundation/CPScanner.j b/Foundation/CPScanner.j index cd362ad5a..ea2ffb3dc 100644 --- a/Foundation/CPScanner.j +++ b/Foundation/CPScanner.j @@ -292,7 +292,7 @@ loc += (""+f).length; var i = 0; - while (!isNaN(parseFloat(str.substring(loc+i, str.length)))) + while (!isNaN(parseFloat(str.substring(loc + i, str.length)))) {i++;} [self setScanLocation:loc + i]; diff --git a/Tests/AppKit/CPSplitViewTest.j b/Tests/AppKit/CPSplitViewTest.j index bb05b417e..04a99b9be 100644 --- a/Tests/AppKit/CPSplitViewTest.j +++ b/Tests/AppKit/CPSplitViewTest.j @@ -111,11 +111,27 @@ { // Verify that the split view does not attempt to auto save without an auto save name. + // This storage class will cause a crash if a save is attempted. [[CPUserDefaults standardUserDefaults] setPersistentStoreClass:CPUserDefaultsFailingStore forDomain:CPApplicationDomain reloadData:NO]; - [splitView setPosition:50 ofDividerAtIndex:0]; - [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + // Now test that it does work normally. + [[CPUserDefaults standardUserDefaults] setPersistentStoreClass:CPUserDefaultsTestStore forDomain:CPApplicationDomain reloadData:NO]; + [splitView setAutosaveName:@"Charles"]; + [splitView setPosition:25 ofDividerAtIndex:0]; + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + // Recreate the split view. + [self setUp]; + [splitView setAutosaveName:@"Charles"]; + // FIXME At the moment restore from autosave only happens if the split view is loaded from a + // coder. It seems like it should happen when initialising in code too, but some research of + // Cocoa's behaviour will need to be done first. + splitView._needsRestoreFromAutosave = YES; + // Trigger autosave restore. + [splitView setFrameSize:CGSizeMake(110, 100)]; + [self assert:25 equals:[viewA frameSize].height message:@"divider position restored"]; } @end @@ -131,6 +147,7 @@ } @end + /*! This store always fails. */ @@ -149,3 +166,24 @@ } @end + +/*! + This is a temporary store. +*/ +@implementation CPUserDefaultsTestStore : CPUserDefaultsStore +{ + CPData _data; +} + +- (CPData)data +{ + return _data; +} + +- (void)setData:(CPData)aData +{ + _data = aData; +} + +@end + diff --git a/Tests/Foundation/CPArrayPerformanceTest.j b/Tests/Foundation/CPArrayPerformanceTest.j index 573e54dab..5c1f4235a 100644 --- a/Tests/Foundation/CPArrayPerformanceTest.j +++ b/Tests/Foundation/CPArrayPerformanceTest.j @@ -1,72 +1,136 @@ +var FILE = require("file"); + @import @import @import @import - var ELEMENTS = 100, REPEATS = 10; @implementation CPArrayPerformanceTest : OJTestCase - -- (void)testSortUsingDescriptorsSpeed { - var array = [self makeUnsorted]; - - var descriptors = [ - [CPSortDescriptor sortDescriptorWithKey:"a" ascending:NO], - [CPSortDescriptor sortDescriptorWithKey:"b" ascending:YES] - ]; - - var start = (new Date).getTime(); - - for (var i = 0; i < REPEATS; ++i) - { - var sorted = [array sortedArrayUsingDescriptors:descriptors]; - - [self checkSorted:sorted]; - } - - var end = (new Date).getTime(); - - CPLog.warn(_cmd + ": " + (end - start) + "ms"); + CPArray descriptors; } -- (void)testSortUsingNativeSort +- (void)setUp { - var array = [self makeUnsorted]; - var descriptors = [ - [CPSortDescriptor sortDescriptorWithKey:"a" ascending:NO], - [CPSortDescriptor sortDescriptorWithKey:"b" ascending:YES] - ]; + [CPSortDescriptor sortDescriptorWithKey:"a" ascending:NO], + [CPSortDescriptor sortDescriptorWithKey:"b" ascending:YES] + ]; +} - function sortFunction(lhs, rhs) - { - return ([lhs a] === [rhs a]) ? ([lhs b] - [rhs b]) : ([rhs a] - [lhs a]); - } +- (void)testAlmostSortedNumericUsingMergeSort +{ + CPLog.warn("\nNUMERIC ALMOST SORTED"); + var a = [self makeUnsorted], + sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors]; + [self checkAlmostSorted:sorted]; +} - var start = (new Date).getTime(); +- (void)testAlmostSortedNumericUsingNativeSort +{ + var a = [self makeUnsorted], + sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors]; + [self checkAlmostSorted:sorted]; +} + +- (void)testRandomNumericUsingMergeSort +{ + CPLog.warn("\nNUMERIC RANDOM"); + var a = [self makeRandomNumeric], + sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors]; + [self checkRandomSorted:sorted]; +} + +- (void)testRandomNumericUsingNativeSort +{ + var a = [self makeRandomNumeric], + sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors]; + [self checkRandomSorted:sorted]; +} + +- (void)testRandomTextUsingMergeSort +{ + CPLog.warn("\nTEXT RANDOM"); + var a = [self makeRandomText], + sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors]; + [self checkRandomSorted:sorted]; +} + +- (void)testRandomTextUsingNativeSort +{ + var a = [self makeRandomText], + sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors]; + [self checkRandomSorted:sorted]; +} + +- (void)testAlmostSortedNumericUsingMergeSelectorSort +{ + CPLog.warn("\nNUMERIC ALMOST SORTED (SELECTOR)"); + var a = [self makeUnsorted], + sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)]; + [self checkAlmostSorted:sorted]; +} + +- (void)testAlmostSortedNumericUsingNativeSelectorSort +{ + var a = [self makeUnsorted], + sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)]; + [self checkAlmostSorted:sorted]; +} + +- (void)testRandomNumericUsingMergeSelectorSort +{ + CPLog.warn("\nNUMERIC RANDOM (SELECTOR)"); + var a = [self makeRandomNumeric], + sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)]; + [self checkRandomSorted:sorted]; +} + +- (void)testRandomNumericUsingNativeSelectorSort +{ + var a = [self makeRandomNumeric], + sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)]; + [self checkRandomSorted:sorted]; +} + +- (void)testRandomTextUsingMergeSelectorSort +{ + CPLog.warn("\nTEXT RANDOM (SELECTOR)"); + var a = [self makeRandomText], + sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)]; + [self checkRandomSorted:sorted]; +} + +- (void)testRandomTextUsingNativeSelectorSort +{ + var a = [self makeRandomText], + sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)]; + [self checkRandomSorted:sorted]; +} + +- (CPArray)sort:(CPArray)anArray usingSortSelector:(SEL)aSelector withObject:(id)anObject +{ + var sorted, + start = (new Date).getTime(); for (var i = 0; i < REPEATS; ++i) - { - var sorted = [array copy]; - - sorted.sort(sortFunction) - - [self checkSorted:sorted]; - } + sorted = [anArray performSelector:aSelector withObject:anObject]; var end = (new Date).getTime(); - CPLog.warn(_cmd+": " + (end - start) + "ms"); + CPLog.warn(aSelector + ": " + (end - start) + "ms"); + + return sorted; } - (CPArray)makeUnsorted { var array = []; - for (var i=0; i < ELEMENTS; ++i) + for (var i = 0; i < ELEMENTS; ++i) { var s = [Sortable new]; @@ -79,12 +143,49 @@ var ELEMENTS = 100, return array; } -- (void)checkSorted:(CPArray)sorted +- (CPArray)makeRandomNumeric +{ + var array = []; + + for (var i = 0; i < ELEMENTS; i++) + { + var s = [Sortable new], + n1 = ROUND(RAND() * ELEMENTS), + n2 = ROUND(RAND() * ELEMENTS); + + [s setA:n1]; + [s setB:n2]; + array.push(s); + } + + return array; +} + +- (CPArray)makeRandomText +{ + var the_big_sort = FILE.read(FILE.join(FILE.dirname(module.path), "the_big_sort.txt"), { charset:"UTF-8" }), + words = the_big_sort.split(" ", ELEMENTS), + wordcount = words.length, + array = []; + + for (var i = 0; i < wordcount - 1; i++) + { + var s = [Sortable new]; + + [s setA:words[i]]; + [s setB:words[i + 1]]; + array.push(s); + } + + return array; +} + +- (void)checkAlmostSorted:(CPArray)sorted { // Verify it really got sorted. - for (var j=0; j < ELEMENTS; ++j) + for (var j = 0; j < sorted.length; ++j) { - var expectedA = 4-FLOOR(j * 5 / ELEMENTS); + var expectedA = 4 - FLOOR(j * 5 / ELEMENTS); if (sorted[j].a != expectedA) [self fail:"a out of order: " + expectedA + " != " + sorted[j].a]; @@ -96,6 +197,66 @@ var ELEMENTS = 100, } } +- (void)checkRandomSorted:(CPArray)sorted +{ + // Verify that it really got sorted. + for (var j = 0; j < sorted.length - 1; ++j) + { + if ([sorted[j].a compare:sorted[j + 1].a] == CPOrderedAscending) + [self fail:"a out of order: " + sorted[j].a + " > " + sorted[j + 1].a]; + + if ([sorted[j].a compare:sorted[j + 1].a] == CPOrderedSame && [sorted[j].b compare: sorted[j + 1].b] == CPOrderedDescending) + [self fail:"b out of order: " + sorted[j].b + " < " + sorted[j + 1].b]; + } +} + +@end + +@implementation CPArray (NativeSort) + +- (CPArray)_native_sortedArrayUsingDescriptors:(CPArray)descriptors +{ + var sorted = [self copy]; + + [sorted _native_sortUsingDescriptors:descriptors]; + + return sorted; +} + +- (CPArray)_native_sortUsingDescriptors:(CPArray)descriptors +{ + var count = [descriptors count]; + + sort(function(lhs, rhs) + { + var i = 0, + result = CPOrderedSame; + + while (i < count) + if ((result = [descriptors[i++] compareObject:lhs withObject:rhs]) !== CPOrderedSame) + return result; + + return result; + }); +} + +- (CPArray)_native_sortedArrayUsingSelector:(SEL)aSelector +{ + var sorted = [self copy]; + + [sorted _native_sortUsingSelector:aSelector]; + + return sorted; +} + +- (CPArray)_native_sortUsingSelector:(SEL)aSelector +{ + sort(function(lhs, rhs) + { + return [lhs performSelector:aSelector withObject:rhs]; + }); +} + @end @implementation Sortable : CPObject @@ -104,4 +265,11 @@ var ELEMENTS = 100, int b @accessors; } +- (int)compareAAscendingThenBDescending:(Sortable)other +{ + var aResult = [a compare:other.a]; + + return aResult === CPOrderedSame ? [b compare:other.b] : -aResult; +} + @end diff --git a/Tests/Foundation/CPArrayTest.j b/Tests/Foundation/CPArrayTest.j index 75951c471..a99dfc931 100644 --- a/Tests/Foundation/CPArrayTest.j +++ b/Tests/Foundation/CPArrayTest.j @@ -539,6 +539,20 @@ [self assertTrue:d.indexOf("y: 6") !== -1 message:"Can't find 'y: 6' in description of array " + d]; } +- (void)testSortUsingDescriptorsWithDifferentSelectors +{ + var a = [CPDictionary dictionaryWithJSObject:{"a": "AB", "b": "ba"}], + b = [CPDictionary dictionaryWithJSObject:{"a": "aa", "b": "BB"}], + array = [a, b], + d1 = [[CPSortDescriptor sortDescriptorWithKey:@"a" ascending:YES selector:@selector(compare:)]], + d2 = [[CPSortDescriptor sortDescriptorWithKey:@"a" ascending:YES selector:@selector(caseInsensitiveCompare:)]], + s1 = [array sortedArrayUsingDescriptors:d1], + s2 = [array sortedArrayUsingDescriptors:d2]; + + [self assertTrue:s1[0] === a message:s1[0] + " is larger then " + a + " when sorting case sensitive"]; + [self assertTrue:s2[1] === a message:s2[1] + " is larger then " + a + " when sorting case insensitive"]; +} + @end @implementation AlwaysEqual : CPObject diff --git a/Tests/Foundation/CPDateTest.j b/Tests/Foundation/CPDateTest.j index f4a285989..d719eee85 100644 --- a/Tests/Foundation/CPDateTest.j +++ b/Tests/Foundation/CPDateTest.j @@ -4,10 +4,20 @@ - (void)testSince1970 { - /* These two dates should be equal to Fri Feb 13 2009 15:31:30 GMT-0800 */ - unixDate = [CPDate dateWithTimeIntervalSince1970: 1234567890]; - cocoaDate = [CPDate dateWithTimeIntervalSinceReferenceDate: 253582290]; - [self assertTrue:[unixDate isEqualToDate: cocoaDate]]; + /* These two dates should be equal to Fri Jan 13 2009 23:31:30 +0000 */ + unixDate = [CPDate dateWithTimeIntervalSince1970:1231889490]; + cocoaDate = [CPDate dateWithTimeIntervalSinceReferenceDate:253582290]; + [self assertTrue:[unixDate isEqualToDate:cocoaDate] message:[unixDate description] + " isEqualToDate: " + [cocoaDate description]]; +} + +- (void)testDistantPast +{ + [self assert:[CPDate dateWithTimeIntervalSinceReferenceDate:-63113817600.0] equals:[CPDate distantPast]]; +} + +- (void)testDistantFuture +{ + [self assert:[CPDate dateWithTimeIntervalSinceReferenceDate:63113990400.0] equals:[CPDate distantFuture]]; } - (void)testDate @@ -19,7 +29,7 @@ past = [CPDate distantPast]; [self assertTrue:(before <= middle) message:"before not less than middle"]; - [self assertTrue:(middle <= after) message:"middle not less than after ("+middle+","+after+")"]; + [self assertTrue:(middle <= after) message:"middle not less than after (" + middle + "," + after + ")"]; [self assert:middle equals:[middle earlierDate:future] message:"earlierDate incorrect"]; [self assert:middle equals:[middle laterDate:past] message:"laterDate incorrect"]; @@ -49,13 +59,14 @@ - (void)testInitWithString { var tests = [ - ["1970-01-01 00:00:00 +0000", 0], - ["1970-01-01 00:01:00 +0000", 60], - ["1970-01-01 01:00:00 +0000", 60*60], - ["1970-01-02 00:00:00 +0000", 24*60*60], - ["2009-11-17 17:52:04 +0000", 1258480324], - ["2009-11-17 18:52:04 +0200", 1258476724], - ]; + ["1800-01-01 00:00:00 +0000", -5364662400], + ["1970-01-01 00:00:00 +0000", 0], + ["1970-01-01 00:01:00 +0000", 60], + ["1970-01-01 01:00:00 +0000", 60 * 60], + ["1970-01-02 00:00:00 +0000", 24 * 60 * 60], + ["2009-11-17 17:52:04 +0000", 1258480324], + ["2009-11-17 18:52:04 +0200", 1258476724], + ]; for (var i = 0; i < tests.length; i++) { @@ -65,6 +76,16 @@ } } +- (void)testInitWithTimeIntervalSinceReferenceDate_ +{ + // Related issue #1556: "CPDateReferenceDate should be 'Jan 1 2001' instead of 'Feb 1 2001'". + var referenceDate = [[CPDate alloc] initWithTimeIntervalSinceReferenceDate:0], + referenceDatePlusOneHour = [[CPDate alloc] initWithTimeIntervalSinceReferenceDate:3600]; + + [self assert:[[CPDate alloc] initWithString:@"2001-01-01 00:00:00 +0000"] equals:referenceDate message:@"reference date"]; + [self assert:[[CPDate alloc] initWithString:@"2001-01-01 01:00:00 +0000"] equals:referenceDatePlusOneHour message:@"reference date plus one hour"]; +} + - (void)testEncoding { var date = new Date(), diff --git a/Tests/Foundation/the_big_sort.txt b/Tests/Foundation/the_big_sort.txt new file mode 100644 index 000000000..871ec5b6a --- /dev/null +++ b/Tests/Foundation/the_big_sort.txt @@ -0,0 +1 @@ +Introduction We have a neighborhood Internet listserve in South Austin that is often a source of good information about painters, plumbers, and lost animals. The e-discussion can also become a parody of liberal preciousness. One participant wrote to say that he planned to live-trap rats that had invaded his garage. The vermin-friendly homeowner wanted to know where it might be safe to relocate the rodents. The one Republican on the newsgroup, Stephen Mason, dared to say what most of us probably thought, volunteering that the man could release the varmints near Masons rat terrier, Hotard, who would happily relocate them to rat heaven. Our lone conservative correspondent, however, knew better than to make his comments overtly political. Mason, an intellectual property attorney and Texas A&M graduate, had tried to start a genuine political discussion on the list the year before. He wasnt about to try again. It was the spring of 2004, so things were already tense when Mason called the newsgroups attention to the election for the board of the local community college. Mason gave the names of both candidates, listed their websites, and then, after a warning that what followed was possibly inappropriate electioneering, recommended one of the candidates. The man Mason backed was deeply conservative, a member of the Federalist Society, a former officer of the Young Conservatives of Texas, and an opponent of gay marriage and adoption. Within the day, the newsgroup reacted in a way that wasnt as much ideological as biological. Mason wasnt just someone to be argued against. For the protection of the group, he needed to be isolated, sealed off, and expelled. First response: Okay, as a member of this list, Id really like to see this political discussion disappear. As a lesbian, obviously Im not going to vote for anybody who doesnt believe I shouldnt be allowed to adopt kids . . . As a resident of Travis Heights and a member of this neighborhood list, Im not interested in having this kind of discussion here. I have to defend myself against my government pretty much daily these days, and one place I dont want to have to do it is on this list. And then: A-men. Stephen, youre in the minority politically on this list and in this neighborhood, and while your opinions are your own to have, this list isnt the place for them . . . T-Hts is my home, and this list an extension of that . . . I hope we can all agree to prevent it from becoming a battleground. Mason responded: [The] ideological balkanization of America is dead-on true . . . Living here, especially as an out Republican, is a great deal of fun, and I learn a great deal from it. The most valuable thing that I learn daily is the capacity to respect people with whom I have disagreements. I hope not to be exiled to some place where the vast majority agrees with me. Then, alas, enough with the calls for reasoned discussion: Im really not interested [in] being surprised by right-wing e-mail in my in box, no matter what its guise. It makes me feel bad, and I dont like it. There were dissenting views. I really dont want political or other uncomfortable subjects segregated into some kind of opinion ghetto where only proselytizing activists and ideologues would venture, wrote one South Austinite. Another: Im going to stick my neck out here. I DO want to have political discussion . . . It is a tragedy that this country is becoming more and more polarized. Neighborhoods are becoming more and more homogeneous, either Democrat or Republican. Talk about segregation! But Mason got the picture: he was a Republican Crusoe on this Democratic island, and so he withdrew, promising never to talk politics again with his neighbors. Look, I know a lot about homogeneous political communities, Mason said one afternoon at a South Austin coffeehouse. Hed grown up in the Republican suburbs of Houston and attended the conservative hive of Texas A&M University. He was pugnacious about his politics, ending every e-mail message with a quote from Teddy Roosevelt: Aggressive fighting for the right is the greatest sport in the world. Mason was also engaged to marry a feminist filmmaker, an experience that taught him that nearly everything is political. But nothing had prepared him for the unsettling experience of being a political minority in the community where he lived — for being a minority in the age of political segregation. I ran off that listserve when the rhetoric became so shrill that I didnt have the taste for saying about anyone the things you would need to say to win that argument, Mason continued. Im not going to use that listserve for politics again, and there is some shame in that. The experience had changed the way he saw himself in the neighborhood. Knowing he was a minority, he wondered what people thought of him as he walked Hotard. In some way after that exchange, I think Im viewed with suspicion by my neighbors because of an act of political expression, which is a little on the bizarre side, he said. Im just a guy who has a dog and works a job. Chapter 3: The Psychology of the Tribe Washington was, from its beginning, a politically segregated city. In his forty-year-old study, The Washington Community, historian James Sterling Young mapped three Washingtons, one created for each of the three branches of government. The nine members of the U.S. Supreme Court lived in the same house until 1845. Executive branch workers gathered in one section of the city, near the White House, while congressmen were bunched together nearer the Capitol. Men whom the Constitution merely separated into different work groups separated themselves into different societies, wrote Young. Congressmen lived in boarding houses. They formed eating clubs around common tables, and they slept together, two to a room. Young tracked the membership of these new boarding house communities and found that the residential \ No newline at end of file diff --git a/Tests/Manual/CPButtonTest/AppController.j b/Tests/Manual/CPButtonTest/AppController.j index cfc78e1c6..cb6c1d48b 100644 --- a/Tests/Manual/CPButtonTest/AppController.j +++ b/Tests/Manual/CPButtonTest/AppController.j @@ -1,6 +1,6 @@ /* * AppController.j - * CPButton + * CPButtonImageTest * * Created by Aparajita Fishman on August 31, 2010. */ @@ -16,6 +16,7 @@ CPLogRegister(CPLogConsole); @outlet CPButton button; @outlet CPButton imageButton; + @outlet CPButton imageDisabledButton; @outlet CPButton pushInButton; @outlet CPButton pushOnOffButton; @outlet CPButton toggleButton; @@ -36,6 +37,7 @@ CPLogRegister(CPLogConsole); { var path = [[CPBundle bundleForClass:[CPView class]] pathForResource:@"action_button.png"]; [imageButton setImage:[[CPImage alloc] initWithContentsOfFile:path size:CGSizeMake(22.0, 14.0)]]; + [imageDisabledButton setImage:[[CPImage alloc] initWithContentsOfFile:path size:CGSizeMake(22.0, 14.0)]]; [self _setImagePosition:CPImageLeft]; [positionMenu selectItemAtIndex:CPImageLeft]; @@ -44,7 +46,7 @@ CPLogRegister(CPLogConsole); - (void)_setupButtons { - buttons = [button, imageButton]; + buttons = [button, imageButton, imageDisabledButton]; checksAndRadios = [checkbox, multiCheckbox, radio1, radio2]; var checkboxHeight = [checkbox frameSize].height, @@ -61,7 +63,6 @@ CPLogRegister(CPLogConsole); [[radio1 radioGroup] setTarget:self]; [[radio1 radioGroup] setAction:@selector(radioGroupClicked:)]; - [multiCheckbox setState:CPMixedState]; [pushInButton setButtonType:CPMomentaryLightButton]; @@ -74,7 +75,7 @@ CPLogRegister(CPLogConsole); [momentaryChangeButton setAlternateTitle:@"Changed!"]; } -- (IBAction)setImagePosition:(id)sender +- (void)setImagePosition:(id)sender { [self _setImagePosition:[sender indexOfSelectedItem]]; } diff --git a/Tests/Manual/CPButtonTest/Resources/MainMenu.cib b/Tests/Manual/CPButtonTest/Resources/MainMenu.cib index 7eb61a557..a6eb4e04f 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;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;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;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;34E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;56E;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;1;0E;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;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;1;0E;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;71E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;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;36E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;38E;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;11E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;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;71E;D;K;6;CP$UIDd;2;46E;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;74E;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;75E;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;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;40E;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;42E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;78E;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;71E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;79E;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;44E;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;65E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;81E;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;43E;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;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;83E;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;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;84E;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;63E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;85E;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;87E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;88E;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;89E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;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;36E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;91E;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;64E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;92E;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;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;58E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;46E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;94E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;68E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;69E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;59E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;74E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;35E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;96E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;97E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;98E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;99E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;100E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;38E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;102E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;102E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;103E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;104E;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;39E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;105E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;106E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;113E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;115E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;116E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;117E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;118E;K;16;$aimage-positionD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;119E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;101E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;120E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;121E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;122E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;123E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;117E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;118E;K;16;$aimage-positionD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;119E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;101E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;120E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;124E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;125E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;39E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;128E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;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;45E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;73E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;129E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;130E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;131E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;112E;K;11;$aalignmentD;K;6;CP$UIDd;3;101E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;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;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;47E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;133E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;46E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;134E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;120E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;73E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;136E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;46E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;134E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;120E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;73E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;137E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;46E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;134E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;73E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;138E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;46E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;134E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;73E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;139E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;46E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;134E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;73E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;140E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;46E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;134E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;73E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;47E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;141E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;46E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;134E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;73E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;135E;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;55E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;142E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;144E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;104E;K;6;$afontD;K;6;CP$UIDd;3;119E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;111E;K;11;$aalignmentD;K;6;CP$UIDd;3;112E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;125E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;145E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;146E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;114E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;125E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;114E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;148E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;111E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;112E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;149E;E;D;K;6;$classD;K;6;CP$UIDd;2;37E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;150E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;151E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;152E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;104E;E;D;K;6;$classD;K;6;CP$UIDd;2;39E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;38E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;155E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;156E;E;D;K;6;$classD;K;6;CP$UIDd;2;35E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;96E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;97E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;157E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;99E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;158E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;159E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;159E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;104E;E;D;K;6;$classD;K;6;CP$UIDd;2;39E;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;3;101E;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;61E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;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;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;39E;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;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;61E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;165E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;39E;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;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;166E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;61E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;167E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;39E;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;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;168E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;61E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;169E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;35E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;96E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;97E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;170E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;99E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;171E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;67E;E;D;K;6;$classD;K;6;CP$UIDd;2;37E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;172E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;173E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;104E;E;D;K;6;$classD;K;6;CP$UIDd;2;39E;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;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;175E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;176E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;39E;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;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;177E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;178E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;77E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;6;$afontD;K;6;CP$UIDd;3;110E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;11;$aalignmentD;K;6;CP$UIDd;3;111E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;179E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;180E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;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;55E;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;101E;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;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;144E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;104E;K;6;$afontD;K;6;CP$UIDd;3;119E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;111E;K;11;$aalignmentD;K;6;CP$UIDd;3;112E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;125E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;183E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;146E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;114E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;125E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;114E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;148E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;111E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;112E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;149E;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;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;101E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;184E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;185E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;107E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;144E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;104E;K;6;$afontD;K;6;CP$UIDd;3;119E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;111E;K;11;$aalignmentD;K;6;CP$UIDd;3;120E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;125E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;186E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;146E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;114E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;125E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;114E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;148E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;111E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;120E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;149E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;72E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;187E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;188E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;66E;E;E;S;8;delegateS;6;buttonS;8;checkboxS;10;clickCountS;11;imageButtonS;21;momentaryChangeButtonS;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;2;86E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;57E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;189E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;57E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;190E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;191E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;192E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;193E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;111E;K;16;$aimage-positionD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;119E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;111E;K;11;$aalignmentD;K;6;CP$UIDd;3;101E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;120E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;194E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;195E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;196E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;198E;E;S;6;radio1D;K;6;$classD;K;6;CP$UIDd;2;86E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;57E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;199E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;57E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;190E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;191E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;192E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;108E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;111E;K;16;$aimage-positionD;K;6;CP$UIDd;3;111E;K;6;$afontD;K;6;CP$UIDd;3;119E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;101E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;111E;K;11;$aalignmentD;K;6;CP$UIDd;3;101E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;101E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;112E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;200E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;114E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;111E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;101E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;195E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;196E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;198E;E;S;6;radio2S;9;theWindowS;12;toggleButtonS;20;switchSelectedRadio:S;17;setImagePosition:S;11;countClick:S;32;{10000000000000, 10000000000000}S;8;CPWindowS;22;{{72, 56}, {380, 278}}d;1;7S;19;CPButton Image Testd;1;0S;20;{{0, 0}, {380, 278}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;56E;E;E;S;6;normalS;20;{{31, 36}, {94, 24}}S;18;{{0, 0}, {94, 24}}d;2;36S;8;borderedD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;109E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;201E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;202E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;125E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;114E;E;d;1;2d;1;4S;6;ButtonF;S;20;{{38, 81}, {91, 41}}S;18;{{0, 0}, {91, 41}}S;9;check-boxS;8;selectedD;K;6;$classD;K;6;CP$UIDd;3;109E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;201E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;202E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;114E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;114E;E;d;1;1S;8;CheckboxS;22;{{197, 82}, {152, 40}}S;19;{{0, 0}, {152, 40}}S;19;Multistate CheckboxT;S;22;{{178, 36}, {167, 24}}S;19;{{0, 0}, {167, 24}}S;17;Button With ImageS;23;{{147, 230}, {188, 24}}S;19;{{0, 0}, {188, 24}}S;12;popup-buttond;2;-1S;10;Image OnlyS;17;_popUpItemAction:d;7;1048576S;4;LeftS;5;RightS;5;AboveS;5;BelowS;8;OverlapsS;8;No ImageS;22;{{43, 233}, {101, 22}}S;19;{{0, 0}, {101, 22}}S;9;textfieldS;15;Image Position:d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;147E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;203E;E;S;0;S;22;{{40, 147}, {172, 42}}S;19;{{0, 0}, {172, 42}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;89E;E;E;S;23;{{223, 156}, {122, 24}}S;19;{{0, 0}, {122, 24}}S;14;Set Radio 2 OnS;13;AppControllerS;23;{{492, 64}, {262, 270}}S;25;CPButton Button Type TestS;20;{{0, 0}, {262, 270}}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, 32}, {222, 24}}S;19;{{0, 0}, {222, 24}}S;15;Standard ButtonS;21;{{18, 88}, {222, 24}}S;25;Push On / Push Off ButtonS;22;{{18, 148}, {222, 24}}S;13;Toggle ButtonS;22;{{18, 202}, {222, 24}}S;23;Momentary Change ButtonS;22;{{72, 388}, {337, 90}}S;24;CPButton Continuous TestS;19;{{0, 0}, {337, 90}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;E;E;S;21;{{18, 18}, {120, 24}}S;19;{{0, 0}, {120, 24}}S;13;Normal ButtonS;22;{{169, 18}, {146, 24}}S;19;{{0, 0}, {146, 24}}d;5;65540S;17;Continuous ButtonS;21;{{17, 48}, {107, 22}}S;19;{{0, 0}, {107, 22}}S;16;Recorded clicks:S;22;{{121, 48}, {199, 22}}S;19;{{0, 0}, {199, 22}}S;1;0S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;E;E;S;18;{{0, 0}, {84, 42}}d;2;18D;K;6;$classD;K;6;CP$UIDd;3;147E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;204E;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;197E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;205E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;2;87E;E;S;19;{{88, 0}, {84, 42}}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;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;120E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;101E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;206E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;89E;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;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;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;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;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;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;60E;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;61E;D;K;6;CP$UIDd;1;0E;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;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;1;0E;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;2;71E;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;2;75E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;77E;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;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;39E;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;56E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;43E;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;78E;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;79E;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;63E;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;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;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;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;69E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;84E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;62E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;75E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;86E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;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;87E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;43E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;72E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;73E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;90E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;92E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;93E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;94E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;37E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;96E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;63E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;74E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;97E;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;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;43E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;63E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;98E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;66E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;63E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;67E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;63E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;61E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;63E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;100E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;78E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;101E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;102E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;103E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;104E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;105E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;39E;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;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;107E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;107E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;108E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;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;40E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;39E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;111E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;112E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;39E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;114E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;117E;K;11;$aalignmentD;K;6;CP$UIDd;3;118E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;119E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;120E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;121E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;122E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;122E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;122E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;117E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;118E;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;42E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;39E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;2;77E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;123E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;124E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;39E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;125E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;118E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;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;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;44E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;128E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;43E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;129E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;130E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;132E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;43E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;129E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;130E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;133E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;43E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;129E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;134E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;43E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;129E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;135E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;43E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;129E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;136E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;43E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;129E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;137E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;43E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;129E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;77E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;131E;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;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;39E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;138E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;139E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;140E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;39E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;141E;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;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;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;142E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;143E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;144E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;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;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;16;$aimage-positionD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;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;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;57E;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;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;149E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;151E;K;16;$aimage-positionD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;130E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;152E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;57E;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;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;153E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;154E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;150E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;151E;K;16;$aimage-positionD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;130E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;155E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;119E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;38E;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;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;156E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;157E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;158E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;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;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;159E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;160E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;161E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;162E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;146E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;163E;K;16;$aimage-positionD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;164E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;165E;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;101E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;102E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;166E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;167E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;168E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;65E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;169E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;169E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;170E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;65E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;171E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;172E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;65E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;173E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;65E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;174E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;175E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;65E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;176E;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;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;40E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;65E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;178E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;179E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;65E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;114E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;117E;K;11;$aalignmentD;K;6;CP$UIDd;3;118E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;119E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;180E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;121E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;122E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;122E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;122E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;117E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;118E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;40E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;65E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;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;65E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;114E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;117E;K;11;$aalignmentD;K;6;CP$UIDd;3;130E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;119E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;183E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;121E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;122E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;122E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;122E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;117E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;130E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;101E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;102E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;184E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;167E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;185E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;71E;E;D;K;6;$classD;K;6;CP$UIDd;2;38E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;187E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;110E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;71E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;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;71E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;190E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;71E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;191E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;71E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;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;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;71E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;193E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;71E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;194E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;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;71E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;106E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;195E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;71E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;6;$afontD;K;6;CP$UIDd;3;127E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;11;$aalignmentD;K;6;CP$UIDd;3;117E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;196E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;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;76E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;197E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;198E;E;S;13;CPApplicationD;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;64E;D;K;6;CP$UIDd;2;70E;E;E;S;8;delegateS;6;buttonS;8;checkboxS;10;clickCountS;11;imageButtonS;19;imageDisabledButtonS;21;momentaryChangeButtonS;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;2;91E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;60E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;199E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;199E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;60E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;201E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;202E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;203E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;117E;K;16;$aimage-positionD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;117E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;130E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;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;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;205E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;206E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;208E;E;S;6;radio1D;K;6;$classD;K;6;CP$UIDd;2;91E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;60E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;209E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;199E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;60E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;109E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;201E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;202E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;126E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;117E;K;16;$aimage-positionD;K;6;CP$UIDd;3;117E;K;6;$afontD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;106E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;117E;K;11;$aalignmentD;K;6;CP$UIDd;3;106E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;106E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;118E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;210E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;122E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;119E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;117E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;106E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;205E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;206E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;208E;E;S;6;radio2S;9;theWindowS;12;toggleButtonS;17;setImagePosition:S;11;countClick:S;20;switchSelectedRadio:S;32;{10000000000000, 10000000000000}S;8;CPWindowS;22;{{71, 91}, {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;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;53E;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;115E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;211E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;212E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;122E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;122E;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;115E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;211E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;212E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;122E;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;62E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;55E;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;92E;D;K;6;CP$UIDd;2;94E;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;{{97, 416}, {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;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;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;{{518, 119}, {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;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;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;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;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;200E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;213E;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;207E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;214E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;2;92E;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;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;215E;E;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;E;E;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 a93e41542..909cef6f9 100644 --- a/Tests/Manual/CPButtonTest/Resources/MainMenu.xib +++ b/Tests/Manual/CPButtonTest/Resources/MainMenu.xib @@ -1,40 +1,38 @@ - + - 1050 - 11C74 - 1938 - 1138.23 - 567.00 + 1070 + 11E53 + 2182 + 1138.47 + 569.00 com.apple.InterfaceBuilder.CocoaPlugin - 1938 + 2182 - - YES + NSPopUpButton NSMenuItem NSMenu - NSButtonCell NSButton NSTextFieldCell + NSButtonCell NSMatrix NSCustomObject + NSCustomView NSView NSWindowTemplate NSTextField NSPopUpButtonCell - - - YES + + com.apple.InterfaceBuilder.CocoaPlugin - + PluginDependencyRecalculationVersion - - YES + NSApplication @@ -47,191 +45,283 @@ 7 2 - {{72, 544}, {380, 278}} - 1948778496 + {{71, 534}, {380, 253}} + 1954021376 CPButton Image Test NSWindow - 256 - - YES - + 274 + + 268 - {{27, 212}, {106, 32}} + {{40, 24}, {101, 17}} - - _NS:687 + YES - - 67239424 - 134217728 - Button - + + 68288064 + 272630784 + Image Position: + LucidaGrande 13 1044 - _NS:687 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{174, 212}, {179, 32}} - - - - _NS:687 - YES - - 67239424 - 134217728 - Button With Image - - _NS:687 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{38, 156}, {91, 41}} - - - - _NS:771 - YES - - -2080244224 - 0 - Checkbox - - _NS:771 - - 1211912703 - 2 - - NSImage - NSSwitch - - - NSSwitch - - - - 200 - 25 - - - - - 268 - {{197, 156}, {152, 40}} - - - - _NS:771 - YES - - -2080244224 - 25165824 - Multistate Checkbox - - _NS:771 - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{40, 89}, {172, 42}} - - - - _NS:797 - YES - 1 - 2 - - YES - - -2080244224 - 0 - Radio 1 - - - 1 - 1211912703 - 0 - - NSRadioButton + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA - - - 200 - 25 - - 67239424 - 0 - Radio 2 - - - 1211912703 - 0 - - 400 - 75 + + 6 + System + controlTextColor + + 3 + MAA + - {84, 42} - {4, 2} - 1151868928 - NSActionCell - - 67239424 - 0 - Radio - - 1211912703 - 0 - - 549453824 - {18, 18} - - YES - - YES - - - - TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA + + + + 268 + {{140, 16}, {207, 26}} + + + + YES + + -2076049856 + 2048 + + + 109199615 + 129 + + + 400 + 75 + + + No Image + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + + + + Image Only + + 1048576 + 2147483647 + + + _popUpItemAction: + 1 + + + + + Left + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Right + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Below + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Above + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Overlaps + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + + 1 + YES + YES + 2 + + + + + 268 + + + + 268 + {{143, 103}, {176, 25}} + + + + YES + + 604110336 + 134217728 + Disabled With Image + + + -2034482945 + 163 + + + 200 + 25 + + + + + 268 + {{194, 16}, {131, 32}} + + + + _NS:687 + YES + + 67239424 + 134217728 + Set radio 2 On + + _NS:687 + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{31, 14}, {168, 40}} + + + + YES + 1 + 2 + + + -2080244224 + 0 + Radio 1 + + + 1 + 1211912703 + 0 + + NSRadioButton + + + + 200 + 25 + + + 67239424 + 0 + Radio 2 + + + 1211912703 + 0 + + 400 + 75 + + + {82, 40} + {4, 2} + 1151868928 + NSActionCell + + 67239424 + 0 + Radio + + 1211912703 + 0 + + 549453824 + {18, 18} + + + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 @@ -256,220 +346,136 @@ AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - + + + + + + 3 + MCAwAA + + 400 + 75 - + + + 3 - MCAwAA + MQA + + + + + + 268 + {{163, 69}, {152, 40}} + + + + YES + + -2080244224 + 16777216 + Multistate Checkbox + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 - - 400 - 75 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 3 - MQA - - - - - - 268 - {{219, 92}, {134, 32}} - - - - _NS:687 - YES - - 67239424 - 134217728 - Set Radio 2 On - - _NS:687 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{146, 22}, {194, 26}} - - - - _NS:868 - YES - - -2076049856 - 2048 - - _NS:868 - - 109199615 - 129 - - - 400 - 75 - - YES - - OtherViews - - YES - - - No Image - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - _popUpItemAction: - - - - - Image Only - - 1048576 - 2147483647 - - - _popUpItemAction: - 1 - - - - - Left - - 1048576 - 2147483647 - 1 - - - _popUpItemAction: - - - - - Right - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Below - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Above - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - Overlaps - - 1048576 - 2147483647 - - - _popUpItemAction: - - - - - - -1 - 1 - YES - YES - 2 - - - - - 268 - {{43, 23}, {101, 22}} - - - - _NS:903 - YES - - -2077098431 - 272630784 - Image Position: - - - _NS:903 - - - 6 - System - textBackgroundColor - - - - 6 - System - textColor - - 3 - MAA + + + 268 + {{29, 69}, {85, 40}} + + + + YES + + -2080244224 + 134217728 + Checkbox + + + 1211912703 + 2 + + + + + 200 + 25 - + + + 268 + {{143, 133}, {176, 25}} + + + + YES + + 67239424 + 134217728 + Button With Image + + + -2034482945 + 163 + + + 200 + 25 + + + + + 268 + {{24, 133}, {96, 25}} + + + + YES + + 67239424 + 134217728 + Button + + + -2038284033 + 163 + + + 200 + 25 + + + + {{20, 59}, {340, 174}} + + + + BezelView - - {380, 278} + + {380, 253} - + {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} @@ -478,36 +484,138 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA AppController - - 7 + + 15 2 - {{492, 544}, {262, 270}} - 1680344064 + {{97, 377}, {318, 85}} + 611844096 + Continuous Button Test + NSWindow + + + + + 256 + + + + 268 + {{14, 37}, {132, 32}} + + + + YES + + 67239424 + 134217728 + Normal Button + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{146, 37}, {158, 32}} + + + + YES + + 67763712 + 134217728 + Continuous Button + + + -2038284033 + 129 + + + 200 + 25 + + + + + 268 + {{17, 20}, {107, 17}} + + + + YES + + 68288064 + 272630784 + Recorded clicks: + + + + + + + + + 268 + {{126, 20}, {175, 17}} + + + + YES + + 68288064 + 71304192 + 0 + + + + + + + + {318, 85} + + + + + {{0, 0}, {1440, 878}} + {10000000000000, 10000000000000} + YES + + + 15 + 2 + {{518, 603}, {271, 156}} + 611845120 CPButton Button Type Test NSWindow - + 256 - - YES - - + + + 268 - {{14, 208}, {234, 32}} - + {{25, 108}, {220, 32}} + - - _NS:687 + + _NS:9 YES - + 67239424 134217728 - Standard Button - - _NS:687 - + Momentary Push In (Normal) + + _NS:9 + -2038284033 129 @@ -516,22 +624,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 25 - - + + 268 - {{14, 152}, {234, 32}} - + {{25, 76}, {220, 32}} + - - _NS:687 + + _NS:9 YES - + 67239424 134217728 - Push On / Push Off Button - - _NS:687 - + Push On / Push Off + + _NS:9 + -2038284033 129 @@ -540,22 +648,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 25 - - + + 268 - {{14, 92}, {234, 32}} - + {{25, 44}, {220, 32}} + - - _NS:687 + + _NS:9 YES - + 67239424 134217728 - Toggle Button - - _NS:687 - + Toggle + + _NS:9 + -2038284033 129 @@ -564,22 +672,22 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 25 - - + + 268 - {{14, 38}, {234, 32}} - + {{25, 12}, {220, 32}} + - _NS:687 + _NS:9 YES - + 67239424 134217728 - Momentary Change Button - - _NS:687 - + Momentary Change + + _NS:9 + -2038284033 129 @@ -588,136 +696,20 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 25 - - {262, 270} + + {271, 156} - - _NS:224 + + _NS:20 {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} YES - - 7 - 2 - {{72, 400}, {337, 90}} - 1680344064 - CPButton Continuous Test - NSWindow - - - - - 256 - - YES - - - 268 - {{14, 42}, {132, 32}} - - - - _NS:687 - YES - - 67239424 - 134217728 - Normal Button - - _NS:687 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{165, 42}, {158, 32}} - - - - _NS:687 - YES - - 67763712 - 134217728 - Continuous Button - - _NS:687 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{17, 20}, {107, 22}} - - - - _NS:903 - YES - - -2077098431 - 272630784 - Recorded clicks: - - - _NS:903 - - - - - - - - 268 - {{121, 20}, {199, 22}} - - - - _NS:903 - YES - - -2077098431 - 71304192 - 0 - - - _NS:903 - - - - - - - {337, 90} - - - - _NS:224 - - {{0, 0}, {1440, 878}} - {10000000000000, 10000000000000} - YES - - + - - YES + delegate @@ -732,145 +724,150 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 459 - - - - imageButton - - - - 479 + 1090 button - + - 480 + 1174 - positionMenu + imageButton - + - 502 - - - - switchSelectedRadio: - - - - 543 - - - - clickCount - - - - 557 - - - - countClick: - - - - 558 - - - - countClick: - - - - 559 - - - - radio2 - - - - 564 - - - - radio1 - - - - 565 + 1175 checkbox - + - 566 + 1176 multiCheckbox - + - 567 + 1177 + + + + radio1 + + + + 1178 + + + + radio2 + + + + 1179 setImagePosition: - + - 568 + 1180 - pushInButton + positionMenu - + - 570 + 1181 + + + + clickCount + + + + 1193 + + + + countClick: + + + + 1194 + + + + countClick: + + + + 1195 + + + + switchSelectedRadio: + + + + 1206 + + + + imageDisabledButton + + + + 1209 pushOnOffButton - + - 571 + 1220 + + + + pushInButton + + + + 1221 toggleButton - + - 572 + 1222 momentaryChangeButton - + - 573 + 1223 - + - - YES + 0 - - YES - + @@ -895,26 +892,19 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 371 - - YES + - + 372 - - YES - - - - - - - - - + + + + + @@ -923,687 +913,531 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - 463 - - - YES - - + 1148 + + + + - 464 - - + 1149 + + - 466 - - - YES - - + 1150 + + + + + + + + 1151 + + + + + + + + 1152 + + + + + + + + + + + + + + 1153 + + + + + 1154 + + + + + 1155 + + + + + 1163 + + + + + 1164 + + + + + 1165 + + + + + 1166 + + + + + 1182 + + + + + + + + + + + + + + 1130 + + + + + + + + 1131 + + + + + 1132 + + + + + + + + 1133 + + + + + 1134 + + + + + + + + 1135 + + + + + 1140 + + + + + + + + 1141 + + + + + 1142 + + + + + + + + + + 1146 + + + + + 1145 + + + + + 1143 + + + + + 1183 + + + + - 467 - - - YES - - - - - - + 1184 + + + + + + + + - 468 - - - YES - - - + 1185 + + + + + - 469 - - + 1186 + + - 470 - - - YES - - - + 1187 + + + + + - 471 - - + 1188 + + - 472 - - - YES - - - + 1189 + + + + + - 473 - - + 1190 + + - 474 - - - YES - - - + 1191 + + + + + - 475 - - + 1192 + + - 477 - - - YES - - - + 1196 + + + + + - 478 - - + 1197 + + - 481 - - - YES - - - + 1207 + + + + + - 482 - - + 1208 + + - 483 - - - YES - - - - - - 484 - - - - - 485 - - - YES - - - - - - - - 486 - - - - - 487 - - - - - 489 - - - - - 490 - - - YES - - - - - - 491 - - - - - 494 - - - YES - - - - - - 495 - - - YES - - - - - - 496 - - - YES - - - - - - - - - - - - 498 - - - - - 499 - - - - - 500 - - - YES - - - - - - 501 - - - - - 503 - - - - - 504 - - - - - 505 - - - - - 506 - - - - - 547 - - - YES - - + 1210 + + + + - 548 - - - YES - - - - - - + 1211 + + + + + + + + - 549 - - - YES - - - + 1212 + + + + + - 550 - - + 1213 + + - 551 - - - YES - - - + 1214 + + + + + - 552 - - + 1215 + + - 553 - - - YES - - - + 1216 + + + + + - 554 - - + 1217 + + - 555 - - - YES - - - + 1218 + + + + + - 556 - - + 1219 + + - - 569 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.IBPluginDependency - -3.IBPluginDependency - 371.IBNSWindowAutoPositionCentersHorizontal - 371.IBNSWindowAutoPositionCentersVertical - 371.IBPluginDependency - 371.IBWindowTemplateEditedContentRect - 371.NSWindowTemplate.visibleAtLaunch - 372.IBPluginDependency - 450.IBPluginDependency - 463.IBPluginDependency - 464.IBPluginDependency - 466.IBNSWindowAutoPositionCentersHorizontal - 466.IBNSWindowAutoPositionCentersVertical - 466.IBPluginDependency - 466.NSWindowTemplate.visibleAtLaunch - 467.IBPluginDependency - 468.IBPluginDependency - 469.IBPluginDependency - 470.IBPluginDependency - 471.IBPluginDependency - 472.IBPluginDependency - 473.IBPluginDependency - 474.IBPluginDependency - 475.IBPluginDependency - 477.IBPluginDependency - 478.IBPluginDependency - 481.IBPluginDependency - 482.CustomClassName - 482.IBPluginDependency - 483.IBPluginDependency - 484.CustomClassName - 484.IBPluginDependency - 485.IBPluginDependency - 486.IBPluginDependency - 487.CustomClassName - 487.IBPluginDependency - 489.CustomClassName - 489.IBPluginDependency - 490.IBPluginDependency - 491.IBPluginDependency - 494.IBAttributePlaceholdersKey - 494.IBPluginDependency - 495.IBPluginDependency - 496.IBPluginDependency - 498.IBPluginDependency - 499.IBPluginDependency - 500.IBPluginDependency - 501.IBPluginDependency - 503.IBPluginDependency - 504.IBPluginDependency - 505.IBPluginDependency - 506.IBPluginDependency - 547.IBNSWindowAutoPositionCentersHorizontal - 547.IBNSWindowAutoPositionCentersVertical - 547.IBPluginDependency - 547.NSWindowTemplate.visibleAtLaunch - 548.IBPluginDependency - 549.IBPluginDependency - 550.IBPluginDependency - 551.IBPluginDependency - 552.IBPluginDependency - 553.IBPluginDependency - 554.IBPluginDependency - 555.IBPluginDependency - 556.IBPluginDependency - 569.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - com.apple.InterfaceBuilder.CocoaPlugin - {{303, 221}, {480, 360}} - - 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 - CPCheckBox - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - CPCheckBox - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - CPRadio - com.apple.InterfaceBuilder.CocoaPlugin - CPRadio - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - YES - - - - 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 - - - - YES - - + + + 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 + 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 + {{902, 462}, {380, 253}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + - - YES - - - + - 573 + 1223 - - YES + AppController NSObject - - YES - - YES - countClick: - radioGroupClicked: - setImagePosition: - switchSelectedRadio: + + id + id + id + + + + countClick: + id - - YES - id - id - id - id + + radioGroupClicked: + id - - - YES - - YES - countClick: - radioGroupClicked: - setImagePosition: - switchSelectedRadio: + + switchSelectedRadio: + id - - YES - - countClick: - id - - - radioGroupClicked: - id - - - setImagePosition: - id - - - switchSelectedRadio: - id - + + + NSButton + CPCheckBox + NSTextField + NSButton + NSButton + NSButton + CPCheckBox + NSPopUpButton + NSButton + NSButton + CPRadio + CPRadio + NSButton + + + + button + NSButton - - - YES - - YES - button - checkbox - clickCount - imageButton - momentaryChangeButton - multiCheckbox - positionMenu - pushInButton - pushOnOffButton - radio1 - radio2 - toggleButton + + checkbox + CPCheckBox - - YES - NSButton - CPCheckBox - NSTextField - NSButton - NSButton - CPCheckBox - NSPopUpButton - NSButton - NSButton - CPRadio - CPRadio - NSButton + + clickCount + NSTextField - - - YES - - YES - button - checkbox - clickCount - imageButton - momentaryChangeButton - multiCheckbox - positionMenu - pushInButton - pushOnOffButton - radio1 - radio2 - toggleButton + + imageButton + NSButton - - YES - - button - NSButton - - - checkbox - CPCheckBox - - - clickCount - NSTextField - - - imageButton - NSButton - - - momentaryChangeButton - NSButton - - - multiCheckbox - CPCheckBox - - - positionMenu - NSPopUpButton - - - pushInButton - NSButton - - - pushOnOffButton - NSButton - - - radio1 - CPRadio - - - radio2 - CPRadio - - - toggleButton - NSButton - + + imageDisabledButton + NSButton - + + momentaryChangeButton + NSButton + + + multiCheckbox + CPCheckBox + + + positionMenu + NSPopUpButton + + + pushInButton + NSButton + + + pushOnOffButton + NSButton + + + radio1 + CPRadio + + + radio2 + CPRadio + + + toggleButton + NSButton + + IBProjectSource ./Classes/AppController.h - + + BezelView + NSView + + IBProjectSource + ./Classes/BezelView.h + + + 0 IBCocoaFramework - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - YES 3 - - YES - - YES - NSMenuCheckmark - NSMenuMixedState - NSSwitch - - - YES - {9, 8} - {7, 2} - {15, 15} - - + + {11, 11} + {10, 3} + {15, 15} + diff --git a/Tests/Manual/CPDocumentControllerTest/README b/Tests/Manual/CPDocumentControllerTest/README new file mode 100644 index 000000000..812c618a4 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/README @@ -0,0 +1,4 @@ +This test includes two tests for two ways to subclass CPDocumentController. + +Please refer to the pull request and its discussion here. +https://github.com/cappuccino/cappuccino/pull/1551 diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/AppController.j b/Tests/Manual/CPDocumentControllerTest/withNib/AppController.j new file mode 100644 index 000000000..0300cac6e --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/AppController.j @@ -0,0 +1,35 @@ +/* + * AppController.j + * CappDoc + * + * Created by You on May 24, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +@import +@import "Document.j" +@import "DocumentController.j" + +@implementation AppController : CPObject +{ +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)applicationWillFinishLaunching:(CPNotification)aNotification +{ + // instantiate a subclass of DocumentController + //subclassedCPDocumentController = [[DocumentController alloc] init]; +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. +} + +@end diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Document.j b/Tests/Manual/CPDocumentControllerTest/withNib/Document.j new file mode 100644 index 000000000..e6a1c7ef4 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/Document.j @@ -0,0 +1,12 @@ +@import + +@implementation Document : CPDocument +{ +} + +- (CPString)windowCibName +{ + return @"Document"; +} + +@end diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/DocumentController.j b/Tests/Manual/CPDocumentControllerTest/withNib/DocumentController.j new file mode 100644 index 000000000..c8474ab74 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/DocumentController.j @@ -0,0 +1,23 @@ +@import +@import + +@implementation DocumentController : CPDocumentController +{ +} + +- (id)init +{ + self = [super init]; + + return [CPDocumentController sharedDocumentController]; +} + +/* Instead of throwing error in browser environment, show an alert + */ +- (void)openDocument:(id)aSender +{ + var anAlert = [CPAlert alertWithError:@"Opening a document is not available!"]; + [anAlert beginSheetModalForWindow:[[CPApplication sharedApplication] mainWindow]]; +} + +@end diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Info.plist b/Tests/Manual/CPDocumentControllerTest/withNib/Info.plist new file mode 100644 index 000000000..b41dbc7a3 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/Info.plist @@ -0,0 +1,23 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CappDoc + CPBundleDocumentTypes + + + CPDocumentClass + Document + CPBundleTypeName + CappDoc + CFBundleTypeExtentions + + cappdoc + + + + + diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Jakefile b/Tests/Manual/CPDocumentControllerTest/withNib/Jakefile new file mode 100644 index 000000000..c963d80b8 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * CappDoc + * + * Created by You on May 24, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CappDoc", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CappDoc.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CappDoc"); + task.setIdentifier("com.yourcompany.CappDoc"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CappDoc"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CappDoc"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CappDoc", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CappDoc", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CappDoc")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CappDoc"), FILE.join("Build", "Deployment", "CappDoc")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CappDoc")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CappDoc"), FILE.join("Build", "Desktop", "CappDoc", "CappDoc.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CappDoc", "CappDoc.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CappDoc")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Resources/Document.cib b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/Document.cib new file mode 100644 index 000000000..b677cb212 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/Document.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;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;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;18E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;23E;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;18E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;11E;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;24E;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;25E;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;18E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;26E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;18E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;27E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;30;_CPCibWindowTemplateMinSizeKeyD;K;6;CP$UIDd;2;28E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;29E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;2;30E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;31E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;32E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;33E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;34E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;20E;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;19E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;35E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;36E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;36E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;37E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;38E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;20E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;35E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;39E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;40E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;20E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;41E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;42E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;38E;K;6;$afontD;K;6;CP$UIDd;2;44E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;45E;K;11;$aalignmentD;K;6;CP$UIDd;2;46E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;47E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;48E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;49E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;50E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;45E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;46E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;51E;E;S;8;DocumentD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;6;windowS;8;delegateS;9;{94, 108}S;32;{10000000000000, 10000000000000}S;4;ViewS;8;CPWindowS;23;{{29, 106}, {507, 413}}d;2;15S;6;Windowd;1;0S;20;{{0, 0}, {507, 413}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;22E;E;E;S;6;normalS;23;{{201, 198}, {104, 17}}S;19;{{0, 0}, {104, 17}}d;2;45S;9;textfieldD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;52E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;53E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;50E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;50E;E;d;1;2d;1;4T;S;13;Contents Hered;4;3072F;S;13;CPApplicationS;17;Arial, sans-serifd;2;12E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Resources/Document.xib b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/Document.xib new file mode 100644 index 000000000..25aba9b83 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/Document.xib @@ -0,0 +1,213 @@ + + + + 1070 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + NSTextField + NSTextFieldCell + NSWindowTemplate + NSView + NSCustomObject + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + Document + + + FirstResponder + + + 15 + 2 + {{29, 539}, {507, 413}} + 1886912512 + Window + NSWindow + View + + {94, 86} + + + 256 + + + + 301 + {{201, 198}, {104, 17}} + + + _NS:1505 + YES + + 68288064 + 272630784 + Contents Here + + LucidaGrande + 13 + 1044 + + _NS:1505 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + {507, 413} + + + + + {{0, 0}, {1920, 1058}} + {94, 108} + {10000000000000, 10000000000000} + YES + + + NSApplication + + + + + + + window + + + + 18 + + + + delegate + + + + 17 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 5 + + + + + + Window + + + 6 + + + + + + + + -3 + + + Application + + + 100098 + + + + + + + + 100099 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{133, 170}, {507, 413}} + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 100100 + + + + + Document + NSDocument + + IBProjectSource + ./Classes/Document.h + + + + + 0 + IBCocoaFramework + YES + 3 + + diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Resources/MainMenu.cib b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/MainMenu.cib new file mode 100644 index 000000000..46e2f9e51 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;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;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;34E;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;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;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;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;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;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;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;93E;D;K;6;CP$UIDd;2;94E;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;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;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;80E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;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;204E;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;205E;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;3;202E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;206E;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;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;85E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;207E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;87E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;208E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;143E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;149E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;211E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;212E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;148E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;142E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;214E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;141E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;215E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;144E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;104E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;217E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;151E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;218E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;147E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;219E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;91E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;220E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;221E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;222E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;131E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;224E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;225E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;226E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;227E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;111E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;228E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;230E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;127E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;232E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;233E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;234E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;119E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;86E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;238E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;155E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;156E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;240E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;128E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;135E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;242E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;243E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;137E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;194E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;245E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;195E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;246E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;196E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;197E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;248E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;199E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;249E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;200E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;250E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;201E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;251E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;164E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;252E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;188E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;190E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;254E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;191E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;182E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;183E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;184E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;185E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;259E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;186E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;260E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;177E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;261E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;178E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;179E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;263E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;172E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;265E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;173E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;266E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;174E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;267E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;204E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;268E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;269E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;270E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;271E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;83E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;271E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;274E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;275E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;83E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;279E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;83E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;280E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;83E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;281E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;83E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;282E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;283E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;89E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;283E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;284E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;285E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;286E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;287E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;288E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;289E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;290E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;291E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;292E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;293E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;294E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;99E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;294E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;295E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;296E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;297E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;288E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;299E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;103E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;299E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;300E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;301E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;302E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;303E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;106E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;303E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;304E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;305E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;306E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;307E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;308E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;309E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;310E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;311E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;312E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;313E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;314E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;315E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;316E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;317E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;319E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;117E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;319E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;320E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;321E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;322E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;323E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;324E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;325E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;326E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;327E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;328E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;329E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;330E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;331E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;332E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;333E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;334E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;335E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;124E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;335E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;336E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;337E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;338E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;339E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;340E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;341E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;342E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;343E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;130E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;343E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;344E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;345E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;346E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;347E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;134E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;347E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;348E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;349E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;333E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;334E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;350E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;330E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;331E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;351E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;322E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;323E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;352E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;139E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;352E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;353E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;354E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;355E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;356E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;357E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;358E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;359E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;360E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;361E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;362E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;363E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;364E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;146E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;364E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;365E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;366E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;367E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;368E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;369E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;318E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;370E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;371E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;372E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;373E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;373E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;374E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;375E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;376E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;377E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;378E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;158E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;378E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;379E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;380E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;160E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;380E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;381E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;382E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;383E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;376E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;384E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;330E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;385E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;386E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;333E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;387E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;388E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;389E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;390E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;322E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;391E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;392E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;393E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;394E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;395E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;170E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;395E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;396E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;399E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;400E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;401E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;176E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;401E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;402E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;404E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;404E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;405E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;406E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;407E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;408E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;409E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;410E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;411E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;412E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;315E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;413E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;313E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;298E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;414E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;272E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;193E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;414E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;415E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;416E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;417E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;418E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;419E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;420E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;421E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;422E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;273E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;276E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;277E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;278E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;423E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;424E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;315E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;426E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;313E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;425E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;427E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;428E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;8;delegateS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;102E;E;E;S;6;WindowS;14;submenuAction:d;7;1048576S;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;E;E;T;S;0;F;S;18;Bring All to FrontS;4;ZoomS;8;MinimizeS;1;mS;14;NewApplicationS;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;2;93E;E;E;S;20;About NewApplicationS;19;Hide NewApplicationS;1;hS;8;Show AllS;19;Quit NewApplicationS;1;qS;12;Preferences…S;1;,S;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;Hide Othersd;7;1572864S;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;104E;E;E;S;19;NewApplication HelpS;1;?S;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;129E;E;E;S;6;DeleteS;10;Select AllS;1;aS;4;UndoS;1;zS;3;CutS;1;xS;5;PasteS;1;vS;4;CopyS;1;cS;4;RedoS;1;Zd;7;1179648S;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;119E;E;E;S;13;Find Previousd;1;3S;1;GS;17;Jump to SelectionS;1;jS;22;Use Selection for Findd;1;7S;1;eS;9;Find Nextd;1;2S;1;gS;5;Find…d;1;1S;1;fS;20;Spelling and GrammarD;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;126E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;128E;E;E;S;27;Check Spelling While TypingS;14;Check SpellingS;1;;S;14;Show Spelling…S;1;:S;27;Check Grammar With SpellingS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;131E;E;E;S;13;Stop SpeakingS;14;Start SpeakingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;4;FileD;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;143E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;142E;E;E;S;4;SaveS;1;sS;8;Save As…S;1;SS;6;Print…S;1;pS;5;Open…S;1;oS;3;NewS;1;nS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;147E;E;E;S;10;Clear MenuS;13;Page Setup...S;1;PS;5;CloseS;1;wS;15;Revert to SavedS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;E;E;S;12;Show ToolbarS;1;tS;18;Customize Toolbar…S;6;FormatD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;192E;E;E;S;4;FontS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;E;E;S;10;Show FontsS;4;BoldS;1;bS;6;ItalicS;1;iS;9;UnderlineS;1;uS;6;BiggerS;1;+S;7;Smallerd;1;4S;1;-S;4;KernD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;E;E;S;11;Use DefaultS;8;Use NoneS;7;TightenS;6;LoosenS;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;E;E;S;7;Use AllS;8;BaselineD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;E;E;S;11;SuperscriptS;9;SubscriptS;5;RaiseS;5;LowerS;11;Show ColorsS;1;CS;10;Copy StyleS;11;Paste StyleS;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;E;E;S;10;Align LeftS;1;{S;6;CenterS;1;|S;7;JustifyS;11;Align RightS;1;}S;10;Show RulerS;10;Copy Rulerd;7;1310720S;11;Paste RulerS;13;AppControllerS;18;DocumentControllerE;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Resources/MainMenu.xib b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/MainMenu.xib new file mode 100644 index 000000000..0d13ea713 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/MainMenu.xib @@ -0,0 +1,2822 @@ + + + + 1050 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + YES + NSMenu + NSMenuItem + NSCustomObject + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + AppController + + + DocumentController + + + + + YES + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 451 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 450 + + + + + 460 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 103.IBPluginDependency + 106.IBPluginDependency + 111.IBPluginDependency + 112.IBPluginDependency + 124.IBPluginDependency + 125.IBPluginDependency + 126.IBPluginDependency + 129.IBPluginDependency + 130.IBPluginDependency + 131.IBPluginDependency + 134.IBPluginDependency + 136.IBPluginDependency + 143.IBPluginDependency + 144.IBPluginDependency + 145.IBPluginDependency + 149.IBPluginDependency + 150.IBPluginDependency + 19.IBPluginDependency + 195.IBPluginDependency + 196.IBPluginDependency + 197.IBPluginDependency + 198.IBPluginDependency + 199.IBPluginDependency + 200.IBPluginDependency + 201.IBPluginDependency + 202.IBPluginDependency + 203.IBPluginDependency + 204.IBPluginDependency + 205.IBPluginDependency + 206.IBPluginDependency + 207.IBPluginDependency + 208.IBPluginDependency + 209.IBPluginDependency + 210.IBPluginDependency + 211.IBPluginDependency + 212.IBPluginDependency + 213.IBPluginDependency + 214.IBPluginDependency + 215.IBPluginDependency + 216.IBPluginDependency + 217.IBPluginDependency + 218.IBPluginDependency + 219.IBPluginDependency + 220.IBPluginDependency + 221.IBPluginDependency + 23.IBPluginDependency + 236.IBPluginDependency + 239.IBPluginDependency + 24.IBPluginDependency + 29.IBPluginDependency + 295.IBPluginDependency + 296.IBPluginDependency + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 348.IBPluginDependency + 349.IBPluginDependency + 350.IBPluginDependency + 351.IBPluginDependency + 354.IBPluginDependency + 375.IBPluginDependency + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 460.IBPluginDependency + 5.IBPluginDependency + 56.IBPluginDependency + 57.IBPluginDependency + 58.IBPluginDependency + 72.IBPluginDependency + 73.IBPluginDependency + 74.IBPluginDependency + 75.IBPluginDependency + 77.IBPluginDependency + 78.IBPluginDependency + 79.IBPluginDependency + 80.IBPluginDependency + 81.IBPluginDependency + 82.IBPluginDependency + 83.IBPluginDependency + 92.IBPluginDependency + + + YES + 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 + 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 + 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 + + + + YES + + + + + + YES + + + + + 460 + + + + YES + + DocumentController + NSDocumentController + + IBProjectSource + ./Classes/DocumentController.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {11, 11} + {10, 3} + + + + diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/Resources/spinner.gif b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPDocumentControllerTest/withNib/Resources/spinner.gif differ diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/index-debug.html b/Tests/Manual/CPDocumentControllerTest/withNib/index-debug.html new file mode 100644 index 000000000..8435cee74 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/index-debug.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + CappDoc + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/index.html b/Tests/Manual/CPDocumentControllerTest/withNib/index.html new file mode 100644 index 000000000..b03674ecf --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + CappDoc + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPDocumentControllerTest/withNib/main.j b/Tests/Manual/CPDocumentControllerTest/withNib/main.j new file mode 100644 index 000000000..5cbdc7c55 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withNib/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CappDoc + * + * Created by You on May 24, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/AppController.j b/Tests/Manual/CPDocumentControllerTest/withoutNib/AppController.j new file mode 100644 index 000000000..a74d59a9d --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/AppController.j @@ -0,0 +1,35 @@ +/* + * AppController.j + * CappDoc + * + * Created by You on May 24, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +@import +@import "Document.j" +@import "DocumentController.j" + +@implementation AppController : CPObject +{ +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)applicationWillFinishLaunching:(CPNotification)aNotification +{ + // instantiate a subclass of DocumentController + [[DocumentController alloc] init]; +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. +} + +@end diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Document.j b/Tests/Manual/CPDocumentControllerTest/withoutNib/Document.j new file mode 100644 index 000000000..e6a1c7ef4 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/Document.j @@ -0,0 +1,12 @@ +@import + +@implementation Document : CPDocument +{ +} + +- (CPString)windowCibName +{ + return @"Document"; +} + +@end diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/DocumentController.j b/Tests/Manual/CPDocumentControllerTest/withoutNib/DocumentController.j new file mode 100644 index 000000000..11d16c2eb --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/DocumentController.j @@ -0,0 +1,23 @@ +@import +@import + +@implementation DocumentController : CPDocumentController +{ +} + +- (id)init +{ + self = [super init]; + + return self; +} + +/* Instead of throwing error in browser environment, show an alert + */ +- (void)openDocument:(id)aSender +{ + var anAlert = [CPAlert alertWithError:@"Opening a document is not available!"]; + [anAlert beginSheetModalForWindow:[[CPApplication sharedApplication] mainWindow]]; +} + +@end diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Info.plist b/Tests/Manual/CPDocumentControllerTest/withoutNib/Info.plist new file mode 100644 index 000000000..b41dbc7a3 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/Info.plist @@ -0,0 +1,23 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + CappDoc + CPBundleDocumentTypes + + + CPDocumentClass + Document + CPBundleTypeName + CappDoc + CFBundleTypeExtentions + + cappdoc + + + + + diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Jakefile b/Tests/Manual/CPDocumentControllerTest/withoutNib/Jakefile new file mode 100644 index 000000000..c963d80b8 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * CappDoc + * + * Created by You on May 24, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CappDoc", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CappDoc.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CappDoc"); + task.setIdentifier("com.yourcompany.CappDoc"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CappDoc"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CappDoc"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CappDoc", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CappDoc", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CappDoc")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CappDoc"), FILE.join("Build", "Deployment", "CappDoc")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CappDoc")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CappDoc"), FILE.join("Build", "Desktop", "CappDoc", "CappDoc.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CappDoc", "CappDoc.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CappDoc")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/Document.cib b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/Document.cib new file mode 100644 index 000000000..b677cb212 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/Document.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;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;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;18E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;23E;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;18E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;11E;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;24E;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;25E;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;18E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;26E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;18E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;27E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;30;_CPCibWindowTemplateMinSizeKeyD;K;6;CP$UIDd;2;28E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;29E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;2;30E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;31E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;32E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;33E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;34E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;20E;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;19E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;35E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;36E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;36E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;37E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;38E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;20E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;35E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;39E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;40E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;20E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;41E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;42E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;38E;K;6;$afontD;K;6;CP$UIDd;2;44E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;45E;K;11;$aalignmentD;K;6;CP$UIDd;2;46E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;47E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;48E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;49E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;50E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;50E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;45E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;46E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;51E;E;S;8;DocumentD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;6;windowS;8;delegateS;9;{94, 108}S;32;{10000000000000, 10000000000000}S;4;ViewS;8;CPWindowS;23;{{29, 106}, {507, 413}}d;2;15S;6;Windowd;1;0S;20;{{0, 0}, {507, 413}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;22E;E;E;S;6;normalS;23;{{201, 198}, {104, 17}}S;19;{{0, 0}, {104, 17}}d;2;45S;9;textfieldD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;52E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;53E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;50E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;50E;E;d;1;2d;1;4T;S;13;Contents Hered;4;3072F;S;13;CPApplicationS;17;Arial, sans-serifd;2;12E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/Document.xib b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/Document.xib new file mode 100644 index 000000000..25aba9b83 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/Document.xib @@ -0,0 +1,213 @@ + + + + 1070 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + NSTextField + NSTextFieldCell + NSWindowTemplate + NSView + NSCustomObject + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + Document + + + FirstResponder + + + 15 + 2 + {{29, 539}, {507, 413}} + 1886912512 + Window + NSWindow + View + + {94, 86} + + + 256 + + + + 301 + {{201, 198}, {104, 17}} + + + _NS:1505 + YES + + 68288064 + 272630784 + Contents Here + + LucidaGrande + 13 + 1044 + + _NS:1505 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + {507, 413} + + + + + {{0, 0}, {1920, 1058}} + {94, 108} + {10000000000000, 10000000000000} + YES + + + NSApplication + + + + + + + window + + + + 18 + + + + delegate + + + + 17 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + 5 + + + + + + Window + + + 6 + + + + + + + + -3 + + + Application + + + 100098 + + + + + + + + 100099 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{133, 170}, {507, 413}} + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 100100 + + + + + Document + NSDocument + + IBProjectSource + ./Classes/Document.h + + + + + 0 + IBCocoaFramework + YES + 3 + + diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/MainMenu.cib b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/MainMenu.cib new file mode 100644 index 000000000..e3a1f4978 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;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;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;34E;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;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;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;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;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;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;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;93E;D;K;6;CP$UIDd;2;94E;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;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;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;80E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;2;11E;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;203E;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;204E;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;3;202E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;205E;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;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;85E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;206E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;87E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;207E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;90E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;208E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;143E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;209E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;149E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;210E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;140E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;211E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;148E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;212E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;142E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;213E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;141E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;214E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;144E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;215E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;104E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;216E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;151E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;217E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;147E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;218E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;91E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;219E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;93E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;78E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;220E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;221E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;222E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;131E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;223E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;132E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;224E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;113E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;225E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;108E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;226E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;111E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;227E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;126E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;228E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;107E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;229E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;112E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;230E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;127E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;231E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;109E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;232E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;122E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;233E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;119E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;234E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;115E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;235E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;125E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;236E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;86E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;237E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;155E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;238E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;156E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;239E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;128E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;240E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;135E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;241E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;136E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;242E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;137E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;243E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;194E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;244E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;195E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;245E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;196E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;246E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;197E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;247E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;199E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;248E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;200E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;249E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;201E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;250E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;164E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;251E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;188E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;252E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;190E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;253E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;191E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;254E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;182E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;255E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;183E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;184E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;257E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;185E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;258E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;186E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;259E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;177E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;260E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;178E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;261E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;179E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;262E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;171E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;263E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;172E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;264E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;173E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;265E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;174E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;1;0E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;266E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;203E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;267E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;268E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;269E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;270E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;83E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;270E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;273E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;274E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;83E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;278E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;83E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;279E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;83E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;280E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;83E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;281E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;282E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;89E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;282E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;283E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;284E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;285E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;286E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;287E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;288E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;289E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;290E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;291E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;292E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;293E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;2;99E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;293E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;294E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;295E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;296E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;89E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;287E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;297E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;298E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;103E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;298E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;299E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;300E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;103E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;301E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;302E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;106E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;302E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;303E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;304E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;305E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;306E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;307E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;308E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;309E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;310E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;311E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;312E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;313E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;314E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;315E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;316E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;318E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;117E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;318E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;319E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;320E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;321E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;322E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;323E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;324E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;325E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;326E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;327E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;328E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;329E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;330E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;331E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;332E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;117E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;333E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;334E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;124E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;334E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;335E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;336E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;337E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;338E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;339E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;340E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;341E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;124E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;342E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;130E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;342E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;343E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;344E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;345E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;130E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;346E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;134E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;106E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;346E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;347E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;348E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;332E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;333E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;349E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;329E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;330E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;350E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;321E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;134E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;322E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;351E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;139E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;351E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;352E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;353E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;354E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;355E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;356E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;357E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;358E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;359E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;360E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;361E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;362E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;363E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;146E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;363E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;364E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;365E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;366E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;146E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;367E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;368E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;369E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;370E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;371E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;139E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;372E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;154E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;372E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;373E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;374E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;375E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;297E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;376E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;154E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;377E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;158E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;2;80E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;377E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;378E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;379E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;160E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;379E;K;13;CPMenuNameKeyD;K;6;CP$UIDd;3;380E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;381E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;382E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;375E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;383E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;329E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;384E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;385E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;332E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;386E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;387E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;388E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;389E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;321E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;390E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;391E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;392E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;393E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;394E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;170E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;394E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;395E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;396E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;398E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;399E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;400E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;176E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;400E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;401E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;396E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;397E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;402E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;403E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;181E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;403E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;404E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;396E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;405E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;406E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;407E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;408E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;181E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;409E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;410E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;411E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;314E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;297E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;412E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;160E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;312E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;297E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;413E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;271E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;20;CPMenuItemSubmenuKeyD;K;6;CP$UIDd;3;193E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;158E;E;D;K;6;$classD;K;6;CP$UIDd;2;79E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;413E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;414E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;415E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;416E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;417E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;418E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;419E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;420E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;421E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;272E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;24;CPMenuItemIsSeparatorKeyD;K;6;CP$UIDd;3;275E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;276E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;22;CPMenuItemIsEnabledKeyD;K;6;CP$UIDd;3;277E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;422E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;423E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;314E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;424E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;425E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;1;0E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;1;0E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;1;0E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;1;0E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;193E;K;26;CPMenuItemKeyEquivalentKeyD;K;6;CP$UIDd;3;312E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;424E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;426E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;8;delegateS;15;arrangeInFront:S;19;performMiniaturize:S;29;orderFrontStandardAboutPanel:S;13;openDocument:S;13;performClose:S;13;saveDocument:S;14;runPageLayout:S;6;print:S;15;saveDocumentAs:S;12;newDocument:S;9;showHelp:S;22;revertDocumentToSaved:S;21;clearRecentDocuments:S;5;hide:S;10;terminate:S;22;hideOtherApplications:S;22;unhideAllApplications:S;13;stopSpeaking:S;14;startSpeaking:S;5;copy:S;10;selectAll:S;4;cut:S;14;checkSpelling:S;7;delete:S;6;paste:S;15;showGuessPanel:S;5;undo:S;23;performFindPanelAction:S;29;centerSelectionInVisibleArea:S;5;redo:S;30;toggleContinuousSpellChecking:S;12;performZoom:S;19;toggleToolbarShown:S;31;runToolbarCustomizationPalette:S;22;toggleGrammarChecking:S;24;toggleSmartInsertDelete:S;33;toggleAutomaticQuoteSubstitution:S;29;toggleAutomaticLinkDetection:S;10;alignLeft:S;12;alignCenter:S;15;alignJustified:S;11;alignRight:S;12;toggleRuler:S;10;copyRuler:S;11;pasteRuler:S;10;underline:S;21;orderFrontColorPanel:S;9;copyFont:S;10;pasteFont:S;9;unscript:S;12;superscript:S;10;subscript:S;14;raiseBaseline:S;14;lowerBaseline:S;21;useStandardLigatures:S;17;turnOffLigatures:S;16;useAllLigatures:S;19;useStandardKerning:S;15;turnOffKerning:S;15;tightenKerning:S;14;loosenKerning:S;9;AMainMenuS;11;_CPMainMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;3;102E;E;E;S;6;WindowS;14;submenuAction:d;7;1048576S;14;_CPWindowsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;E;E;T;S;0;F;S;18;Bring All to FrontS;4;ZoomS;8;MinimizeS;1;mS;14;NewApplicationS;18;_CPApplicationMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;2;93E;E;E;S;20;About NewApplicationS;19;Hide NewApplicationS;1;hS;8;Show AllS;19;Quit NewApplicationS;1;qS;12;Preferences…S;1;,S;8;ServicesS;15;_CPServicesMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;Hide Othersd;7;1572864S;4;HelpD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;104E;E;E;S;19;NewApplication HelpS;1;?S;4;EditD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;129E;E;E;S;6;DeleteS;10;Select AllS;1;aS;4;UndoS;1;zS;3;CutS;1;xS;5;PasteS;1;vS;4;CopyS;1;cS;4;RedoS;1;Zd;7;1179648S;4;FindD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;119E;E;E;S;13;Find Previousd;1;3S;1;GS;17;Jump to SelectionS;1;jS;22;Use Selection for Findd;1;7S;1;eS;9;Find Nextd;1;2S;1;gS;5;Find…d;1;1S;1;fS;20;Spelling and GrammarD;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;126E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;128E;E;E;S;27;Check Spelling While TypingS;14;Check SpellingS;1;;S;14;Show Spelling…S;1;:S;27;Check Grammar With SpellingS;6;SpeechD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;131E;E;E;S;13;Stop SpeakingS;14;Start SpeakingS;13;SubstitutionsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;E;E;S;16;Smart Copy/PasteS;12;Smart QuotesS;11;Smart LinksS;4;FileD;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;143E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;142E;E;E;S;4;SaveS;1;sS;8;Save As…S;1;SS;6;Print…S;1;pS;5;Open…S;1;oS;3;NewS;1;nS;11;Open RecentS;22;_CPRecentDocumentsMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;147E;E;E;S;10;Clear MenuS;13;Page Setup...S;1;PS;5;CloseS;1;wS;15;Revert to SavedS;4;ViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;E;E;S;12;Show ToolbarS;1;tS;18;Customize Toolbar…S;6;FormatD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;192E;E;E;S;4;FontS;11;_CPFontMenuD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;E;E;S;10;Show FontsS;4;BoldS;1;bS;6;ItalicS;1;iS;9;UnderlineS;1;uS;6;BiggerS;1;+S;7;Smallerd;1;4S;1;-S;4;KernD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;E;E;S;11;Use DefaultS;8;Use NoneS;7;TightenS;6;LoosenS;8;LigatureD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;E;E;S;7;Use AllS;8;BaselineD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;E;E;S;11;SuperscriptS;9;SubscriptS;5;RaiseS;5;LowerS;11;Show ColorsS;1;CS;10;Copy StyleS;11;Paste StyleS;4;TextD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;E;E;S;10;Align LeftS;1;{S;6;CenterS;1;|S;7;JustifyS;11;Align RightS;1;}S;10;Show RulerS;10;Copy Rulerd;7;1310720S;11;Paste RulerS;13;AppControllerE;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/MainMenu.xib b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/MainMenu.xib new file mode 100644 index 000000000..af3f6c31e --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/MainMenu.xib @@ -0,0 +1,2822 @@ + + + + 1050 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2182 + + + YES + NSMenu + NSMenuItem + NSCustomObject + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + NewApplication + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + NewApplication + + YES + + + About NewApplication + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide NewApplication + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit NewApplication + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + NewApplication Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + AppController + + + + + YES + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 451 + + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 450 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 103.IBPluginDependency + 106.IBPluginDependency + 111.IBPluginDependency + 112.IBPluginDependency + 124.IBPluginDependency + 125.IBPluginDependency + 126.IBPluginDependency + 129.IBPluginDependency + 130.IBPluginDependency + 131.IBPluginDependency + 134.IBPluginDependency + 136.IBPluginDependency + 143.IBPluginDependency + 144.IBPluginDependency + 145.IBPluginDependency + 149.IBPluginDependency + 150.IBPluginDependency + 19.IBPluginDependency + 195.IBPluginDependency + 196.IBPluginDependency + 197.IBPluginDependency + 198.IBPluginDependency + 199.IBPluginDependency + 200.IBPluginDependency + 201.IBPluginDependency + 202.IBPluginDependency + 203.IBPluginDependency + 204.IBPluginDependency + 205.IBPluginDependency + 206.IBPluginDependency + 207.IBPluginDependency + 208.IBPluginDependency + 209.IBPluginDependency + 210.IBPluginDependency + 211.IBPluginDependency + 212.IBPluginDependency + 213.IBPluginDependency + 214.IBPluginDependency + 215.IBPluginDependency + 216.IBPluginDependency + 217.IBPluginDependency + 218.IBPluginDependency + 219.IBPluginDependency + 220.IBPluginDependency + 221.IBPluginDependency + 23.IBPluginDependency + 236.IBPluginDependency + 239.IBPluginDependency + 24.IBPluginDependency + 29.IBPluginDependency + 295.IBPluginDependency + 296.IBPluginDependency + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 348.IBPluginDependency + 349.IBPluginDependency + 350.IBPluginDependency + 351.IBPluginDependency + 354.IBPluginDependency + 375.IBPluginDependency + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 5.IBPluginDependency + 56.IBPluginDependency + 57.IBPluginDependency + 58.IBPluginDependency + 72.IBPluginDependency + 73.IBPluginDependency + 74.IBPluginDependency + 75.IBPluginDependency + 77.IBPluginDependency + 78.IBPluginDependency + 79.IBPluginDependency + 80.IBPluginDependency + 81.IBPluginDependency + 82.IBPluginDependency + 83.IBPluginDependency + 92.IBPluginDependency + + + YES + 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 + 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 + 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 + + + + YES + + + + + + YES + + + + + 459 + + + + YES + + AppController + + theWindow + NSWindow + + + theWindow + + theWindow + NSWindow + + + + IBProjectSource + ./Classes/AppController.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {11, 11} + {10, 3} + + + + diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/spinner.gif b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPDocumentControllerTest/withoutNib/Resources/spinner.gif differ diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/index-debug.html b/Tests/Manual/CPDocumentControllerTest/withoutNib/index-debug.html new file mode 100644 index 000000000..8435cee74 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/index-debug.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + CappDoc + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/index.html b/Tests/Manual/CPDocumentControllerTest/withoutNib/index.html new file mode 100644 index 000000000..b03674ecf --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + CappDoc + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPDocumentControllerTest/withoutNib/main.j b/Tests/Manual/CPDocumentControllerTest/withoutNib/main.j new file mode 100644 index 000000000..5cbdc7c55 --- /dev/null +++ b/Tests/Manual/CPDocumentControllerTest/withoutNib/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CappDoc + * + * Created by You on May 24, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/CPImageViewTest/AppController.j b/Tests/Manual/CPImageViewTest/AppController.j index 5e62e5fdf..d6a34ef60 100644 --- a/Tests/Manual/CPImageViewTest/AppController.j +++ b/Tests/Manual/CPImageViewTest/AppController.j @@ -31,12 +31,19 @@ var imageView = [[CPImageView alloc] initWithFrame:CGRectMake(20.0, 50.0, 290.0, 250.0)], image = CPImageInBundle("280px-1730_Homann_Map_of_Scandinavia,_Norway,_Sweden,_Denmark,_Finland_and_the_Baltics_-_Geographicus_-_Scandinavia-homann-1730.jpg", CGSizeMake(280, 240)), imageViewShadow = [[CPImageView alloc] initWithFrame:CGRectMake(320.0, 50.0, 290.0, 250.0)]; + + // Test CPImage -data method + // Create an image from a filename based image + var im = [[CPImage alloc] initWithData:[image data]], + // Create an image from a data based image + otherImage = [[CPImage alloc] initWithData:[im data]]; + [imageView setImageScaling:CPImageScaleNone]; [imageViewShadow setImageScaling:CPImageScaleNone]; - [imageView setImage:image]; - [imageViewShadow setImage:image]; + [imageView setImage:image]; + [imageViewShadow setImage:otherImage]; [imageViewShadow setHasShadow:YES]; [contentView addSubview:imageView]; diff --git a/Tests/Manual/CPImageViewbindingsTest/AppController.j b/Tests/Manual/CPImageViewbindingsTest/AppController.j index bdc431c95..1779ffc44 100644 --- a/Tests/Manual/CPImageViewbindingsTest/AppController.j +++ b/Tests/Manual/CPImageViewbindingsTest/AppController.j @@ -38,8 +38,8 @@ var path = [[CPBundle mainBundle] pathForResource:@"value.jpg"], image = [[CPImage alloc] initWithContentsOfFile:path], dict = [CPDictionary dictionaryWithObject:image forKey:@"image"]; - [theRows addObject:dict]; + [theRows insertObject:dict atIndex:1]; [self setContent:theRows]; } diff --git a/Tests/Manual/CPImageViewbindingsTest/Resources/MainMenu.cib b/Tests/Manual/CPImageViewbindingsTest/Resources/MainMenu.cib index ce87e55c4..05651885f 100644 --- a/Tests/Manual/CPImageViewbindingsTest/Resources/MainMenu.cib +++ b/Tests/Manual/CPImageViewbindingsTest/Resources/MainMenu.cib @@ -1,4 +1,5 @@ -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;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;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;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;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;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;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;52E;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;53E;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;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;54E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;26E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;55E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;47E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;56E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;57E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;58E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;60E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;61E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;57E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;62E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;63E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;42E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;64E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;65E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;58E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;66E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;35E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;67E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;57E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;68E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;69E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;34E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;70E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;57E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;71E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;73E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;74E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;75E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;76E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;52E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;77E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;78E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;79E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;80E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;81E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;28E;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;27E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;83E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;83E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;84E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;86E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;87E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;88E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;89E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;90E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;2;92E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;2;93E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;40E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;37E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;2;94E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;2;94E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;2;94E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;2;94E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;2;95E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;2;95E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;2;95E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;2;96E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;2;97E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;2;82E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;92E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;98E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;98E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;92E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;100E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;12;$agrid-colorD;K;6;CP$UIDd;3;102E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;103E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;104E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;105E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;2;82E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;103E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;2;95E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;2;95E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;2;95E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;2;95E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;2;95E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;106E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;102E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;2;82E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;107E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;109E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;39E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;110E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;111E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;112E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;114E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;115E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;116E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;107E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;95E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;117E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;111E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;112E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;118E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;119E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;116E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;107E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;107E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;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;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;120E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;121E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;122E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;123E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;82E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;30E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;124E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;103E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;82E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;125E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;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;93E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;93E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;32E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;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;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;122E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;130E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;123E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;131E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;132E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;30E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;133E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;103E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;82E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;134E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPImageViewK;8;$classesA;S;11;CPImageViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;135E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;136E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;89E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;2;82E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;103E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;82E;K;24;CPImageViewIsEditableKeyD;K;6;CP$UIDd;2;95E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;137E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;138E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;89E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;139E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;6;$afontD;K;6;CP$UIDd;3;141E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;142E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;143E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;107E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;107E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;107E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;82E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;103E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;144E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;136E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;89E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;116E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;2;82E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;103E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;82E;K;24;CPImageViewIsEditableKeyD;K;6;CP$UIDd;2;95E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;145E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;138E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;89E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;139E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;6;$afontD;K;6;CP$UIDd;3;146E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;147E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;143E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;107E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;107E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;107E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;82E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;103E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;148E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;149E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;89E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;139E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;6;$afontD;K;6;CP$UIDd;3;146E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;97E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;151E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;143E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;95E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;95E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;100E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;97E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;103E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;28E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;152E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;28E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;89E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;139E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;6;$afontD;K;6;CP$UIDd;3;141E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;82E;K;11;$aalignmentD;K;6;CP$UIDd;3;103E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;95E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;154E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;143E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;107E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;107E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;107E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;82E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;103E;K;31;CPTextFieldPlaceholderStringKeyD;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;155E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;156E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;2;95E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;107E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;2;95E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;2;95E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;2;95E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;2;95E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;2;95E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;107E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;107E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;26E;E;E;S;8;delegateS;9;theWindowS;20;value: selection.urlS;5;valueS;13;selection.urlD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;10;CP.objectsD;E;E;S;22;value: selection.imageS;15;selection.imageD;K;6;$classD;K;6;CP$UIDd;2;59E;K;10;CP.objectsD;E;E;S;23;valueURL: selection.urlS;8;valueURLD;K;6;$classD;K;6;CP$UIDd;2;59E;K;10;CP.objectsD;E;E;S;38;value: arrangedObjects.image.classNameS;31;arrangedObjects.image.classNameD;K;6;$classD;K;6;CP$UIDd;2;59E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.urlS;19;arrangedObjects.urlD;K;6;$classD;K;6;CP$UIDd;2;59E;K;10;CP.objectsD;E;E;S;21;contentArray: contentS;12;contentArrayS;7;contentD;K;6;$classD;K;6;CP$UIDd;2;59E;K;10;CP.objectsD;E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 268}, {794, 370}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {794, 370}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;42E;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;S;6;normalS;22;{{20, 29}, {381, 143}}S;20;{{0, 0}, {381, 143}}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;40E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;96E;E;E;d;2;36S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;91E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;157E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;158E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;159E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;122E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;32E;E;D;K;6;$classD;K;6;CP$UIDd;2;91E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;161E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;162E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;163E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;122E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;160E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;39E;E;d;2;10T;D;K;6;$classD;K;6;CP$UIDd;2;27E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;E;d;1;2S;20;{{0, 0}, {430, 125}}D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;99E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;165E;E;S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;2;99E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;166E;E;d;1;4d;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;E;E;F;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;108E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;82E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;167E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;168E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;169E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;E;d;3;167d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;113E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;170E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;171E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;82E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;172E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;146E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;139E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;173E;K;6;$afontD;K;6;CP$UIDd;3;175E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;97E;K;11;$aalignmentD;K;6;CP$UIDd;2;82E;K;15;$acontent-insetD;K;6;CP$UIDd;3;177E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;151E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;143E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;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;2;82E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;151E;E;d;1;3d;3;257D;K;6;$classD;K;6;CP$UIDd;3;113E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;178E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;171E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;82E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;179E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;146E;E;D;K;6;$classD;K;6;CP$UIDd;2;43E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;139E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;173E;K;6;$afontD;K;6;CP$UIDd;3;180E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;103E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;97E;K;11;$aalignmentD;K;6;CP$UIDd;2;82E;K;15;$acontent-insetD;K;6;CP$UIDd;3;181E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;151E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;143E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;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;2;82E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;151E;E;S;19;{{1, 1}, {379, 15}}S;19;{{0, 0}, {379, 15}}d;1;8S;8;scrollerS;29;_horizontalScrollerDidScroll:f;18;0.8813953488372093S;19;{{0, 0}, {430, 23}}S;14;tableHeaderRowS;22;{{224, 24}, {15, 102}}S;19;{{0, 0}, {15, 102}}d;11;-2147483648S;17;disabled+verticald;2;37S;27;_verticalScrollerDidScroll:f;18;0.1947367936372757S;23;{{421, 26}, {201, 149}}S;20;{{0, 0}, {201, 149}}S;23;{{637, 29}, {149, 131}}S;20;{{0, 0}, {149, 131}}S;9;textfieldD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;140E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;182E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;183E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;107E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;107E;E;S;27;Editable -CPValueURLBinding.d;4;3072S;24;{{421, 188}, {201, 149}}S;24;{{637, 191}, {149, 131}}D;K;6;$classD;K;6;CP$UIDd;3;140E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;182E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;183E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;107E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;107E;E;S;24;Editable -CPValueBinding.S;22;{{14, 257}, {389, 29}}S;19;{{0, 0}, {389, 29}}S;19;bezeled+placeholderS;0;S;22;{{17, 206}, {387, 51}}S;19;{{0, 0}, {387, 51}}S;85;Image URL selection -Change to 'Resources/value.jpg' or an absolute url and hit enter.S;13;AppControllerS;19;CPMutableDictionaryS;20;{{1, 1}, {379, 125}}S;20;{{0, 0}, {379, 125}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;32E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;99E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;184E;E;S;21;{{1, 126}, {379, 17}}S;19;{{0, 0}, {379, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;39E;E;E;S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;185E;E;E;S;20;{{224, 0}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;188E;E;E;S;12;columnHeaderS;9;Image URLS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;174E;K;4;nameD;K;6;CP$UIDd;3;189E;K;12;defaultValueD;K;6;CP$UIDd;3;146E;K;6;valuesD;K;6;CP$UIDd;3;190E;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;176E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;191E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;192E;E;E;S;7;CPImageD;K;6;$classD;K;6;CP$UIDd;3;174E;K;4;nameD;K;6;CP$UIDd;3;189E;K;12;defaultValueD;K;6;CP$UIDd;3;146E;K;6;valuesD;K;6;CP$UIDd;3;193E;E;D;K;6;$classD;K;6;CP$UIDd;3;176E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;191E;E;S;17;Arial, sans-serifd;2;12D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;185E;E;E;d;1;1f;3;0.5D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;187E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;114E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;114E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;194E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;E;S;4;fontD;K;6;$classD;K;6;CP$UIDd;2;59E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;195E;K;6;normalD;K;6;CP$UIDd;3;146E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;187E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;118E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;164E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;118E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;194E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;195E;K;6;normalD;K;6;CP$UIDd;3;146E;E;E;d;2;18D;K;6;$classD;K;6;CP$UIDd;3;140E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;182E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;183E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;95E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;107E;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;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;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;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;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;53E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;56E;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;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;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;57E;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;58E;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;54E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;59E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;54E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;60E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;61E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;62E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;63E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;65E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;66E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;67E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;68E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;69E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;70E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;62E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;71E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;73E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;62E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;74E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;75E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;45E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;76E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;77E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;71E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;78E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;37E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;79E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;62E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;80E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;81E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;36E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;82E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;62E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;83E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;84E;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;56E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;54E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;85E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;86E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;87E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;57E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;27E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;89E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;90E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;91E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;92E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;93E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;30E;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;29E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;95E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;95E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;96E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;E;D;K;10;$classnameS;12;CPScrollViewK;8;$classesA;S;12;CPScrollViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;31E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;98E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;99E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;100E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;102E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;3;104E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;3;105E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;43E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;40E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;3;106E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;3;106E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;3;106E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;3;106E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;3;107E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;3;107E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;3;107E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;3;108E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;3;109E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;2;94E;E;D;K;10;$classnameS;11;CPTableViewK;8;$classesA;S;11;CPTableViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;33E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;104E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;110E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;104E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;113E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;12;$agrid-colorD;K;6;CP$UIDd;3;114E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;24;CPTableViewDataSourceKeyD;K;6;CP$UIDd;1;0E;K;22;CPTableViewDelegateKeyD;K;6;CP$UIDd;1;0E;K;23;CPTableViewRowHeightKeyD;K;6;CP$UIDd;3;116E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;3;117E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;2;94E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;3;115E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;3;107E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;3;107E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;3;107E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;3;107E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;3;107E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;3;118E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;3;114E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;2;94E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;3;119E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;3;121E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;42E;K;26;CPTableViewAutosaveNameKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPTableColumnK;8;$classesA;S;13;CPTableColumnS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;35E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;122E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;123E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;124E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;126E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;127E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;128E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;119E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;107E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;35E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;129E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;123E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;124E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;130E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;131E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;128E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;119E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;119E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;35E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;132E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;3;106E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;133E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;134E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;135E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;3;128E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;3;119E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;3;107E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPScrollerK;8;$classesA;S;10;CPScrollerS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;39E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;136E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;137E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;138E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;139E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;140E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;141E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;94E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;32E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;142E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;94E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;143E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;17;CPTableHeaderViewK;8;$classesA;S;17;CPTableHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;41E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;105E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;144E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;144E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;105E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;145E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;34E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;3;107E;E;D;K;6;$classD;K;6;CP$UIDd;2;39E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;146E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;147E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;138E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;3;139E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;140E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;149E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;32E;K;18;CPControlActionKeyD;K;6;CP$UIDd;3;150E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;94E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;3;151E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;11;CPImageViewK;8;$classesA;S;11;CPImageViewS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;152E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;128E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;94E;K;24;CPImageViewIsEditableKeyD;K;6;CP$UIDd;3;107E;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;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;154E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;6;$afontD;K;6;CP$UIDd;3;158E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;107E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;159E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;160E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;119E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;94E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;161E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;6;$afontD;K;6;CP$UIDd;3;162E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;107E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;163E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;160E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;119E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;94E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;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;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;107E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;168E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;160E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;107E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;107E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;107E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;112E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;109E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;169E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;170E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;6;$afontD;K;6;CP$UIDd;3;158E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;107E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;171E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;160E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;119E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;94E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;172E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;128E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;94E;K;24;CPImageViewIsEditableKeyD;K;6;CP$UIDd;3;107E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;173E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;155E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;3;115E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;107E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;174E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;160E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;119E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;119E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;94E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;115E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;44E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;30E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;175E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;153E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;30E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;101E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;128E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;94E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;115E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;94E;K;24;CPImageViewIsEditableKeyD;K;6;CP$UIDd;3;107E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;176E;E;D;K;10;$classnameS;17;CPArrayControllerK;8;$classesA;S;17;CPArrayControllerS;18;CPObjectControllerS;12;CPControllerS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;55E;K;28;CPObjectControllerContentKeyD;K;6;CP$UIDd;1;0E;K;36;CPObjectControllerObjectClassNameKeyD;K;6;CP$UIDd;3;177E;K;31;CPObjectControllerIsEditableKeyD;K;6;CP$UIDd;3;107E;K;49;CPObjectControllerAutomaticallyPreparesContentKeyD;K;6;CP$UIDd;3;119E;K;37;CPArrayControllerAvoidsEmptySelectionD;K;6;CP$UIDd;3;107E;K;49;CPArrayControllerClearsFilterPredicateOnInsertionD;K;6;CP$UIDd;3;107E;K;41;CPArrayControllerFilterRestrictsInsertionD;K;6;CP$UIDd;3;107E;K;35;CPArrayControllerPreservesSelectionD;K;6;CP$UIDd;3;107E;K;39;CPArrayControllerSelectsInsertedObjectsD;K;6;CP$UIDd;3;107E;K;47;CPArrayControllerAlwaysUsesMultipleValuesMarkerD;K;6;CP$UIDd;3;119E;K;47;CPArrayControllerAutomaticallyRearrangesObjectsD;K;6;CP$UIDd;3;119E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;28E;E;E;S;8;delegateS;9;theWindowS;37;value: arrangedObjects.data.classNameS;5;valueS;30;arrangedObjects.data.classNameD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;E;E;S;20;data: selection.dataS;4;dataS;14;selection.dataD;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;E;E;S;20;value: selection.urlS;13;selection.urlD;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;E;E;S;22;value: selection.imageS;15;selection.imageD;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;E;E;S;23;valueURL: selection.urlS;8;valueURLD;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;E;E;S;38;value: arrangedObjects.image.classNameS;31;arrangedObjects.image.classNameD;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;E;E;S;26;value: arrangedObjects.urlS;19;arrangedObjects.urlD;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;E;E;S;21;contentArray: contentS;12;contentArrayS;7;contentD;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;E;E;S;32;{10000000000000, 10000000000000}S;8;CPWindowS;23;{{335, 83}, {803, 555}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {803, 555}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;E;E;S;6;normalS;22;{{20, 29}, {348, 143}}S;20;{{0, 0}, {348, 143}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;108E;E;E;d;2;36S;10;scrollviewD;K;10;$classnameS;10;CPClipViewK;8;$classesA;S;10;CPClipViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;103E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;178E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;110E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;179E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;138E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;181E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;34E;E;D;K;6;$classD;K;6;CP$UIDd;3;103E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;182E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;183E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;184E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;138E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;180E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;185E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;42E;E;d;2;10T;D;K;6;$classD;K;6;CP$UIDd;2;29E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;32E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;32E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;E;d;1;2S;20;{{0, 0}, {346, 125}}D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;111E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;187E;E;S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;3;111E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;188E;E;d;1;4d;2;23S;6;{3, 2}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;E;E;F;D;K;10;$classnameS;13;_CPCornerViewK;8;$classesA;S;13;_CPCornerViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;120E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;94E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;189E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;190E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;191E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;20;CPReuseIdentifierKeyD;K;6;CP$UIDd;3;192E;E;d;3;167d;2;40d;4;1000D;K;10;$classnameS;24;_CPTableColumnHeaderViewK;8;$classesA;S;24;_CPTableColumnHeaderViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;194E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;94E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;195E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;196E;K;6;$afontD;K;6;CP$UIDd;3;198E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;115E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;15;$acontent-insetD;K;6;CP$UIDd;3;200E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;168E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;160E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;115E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;94E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;168E;E;d;1;3d;2;88D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;201E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;194E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;94E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;202E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;196E;K;6;$afontD;K;6;CP$UIDd;3;203E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;115E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;15;$acontent-insetD;K;6;CP$UIDd;3;204E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;168E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;160E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;115E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;94E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;168E;E;d;2;82f;22;3.4028234663852886e+38D;K;6;$classD;K;6;CP$UIDd;3;125E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;205E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;194E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;94E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;206E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;167E;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;156E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;196E;K;6;$afontD;K;6;CP$UIDd;3;207E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;115E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;109E;K;11;$aalignmentD;K;6;CP$UIDd;2;94E;K;15;$acontent-insetD;K;6;CP$UIDd;3;208E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;168E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;160E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;1;0E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;1;0E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;1;0E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;115E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;94E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;168E;E;S;19;{{1, 1}, {346, 15}}S;19;{{0, 0}, {346, 15}}d;1;8d;11;-2147483648S;8;scrollerS;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9942528735632183S;19;{{0, 0}, {346, 23}}S;14;tableHeaderRowS;22;{{224, 24}, {15, 102}}S;19;{{0, 0}, {15, 102}}S;17;disabled+verticald;2;37S;27;_verticalScrollerDidScroll:f;18;0.1947367936372757S;23;{{421, 26}, {201, 149}}S;20;{{0, 0}, {201, 149}}S;23;{{637, 29}, {149, 131}}S;20;{{0, 0}, {149, 131}}S;9;textfieldD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;157E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;209E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;210E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;119E;E;S;27;Editable +CPValueURLBinding.d;4;3072S;24;{{637, 191}, {149, 131}}D;K;6;$classD;K;6;CP$UIDd;3;157E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;209E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;210E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;119E;E;S;24;Editable +CPValueBinding.S;22;{{14, 257}, {389, 29}}S;19;{{0, 0}, {389, 29}}S;19;bezeled+placeholderD;K;6;$classD;K;6;CP$UIDd;3;157E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;209E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;210E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;119E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;119E;E;S;0;S;22;{{17, 206}, {387, 51}}S;19;{{0, 0}, {387, 51}}S;85;Image URL selection +Change to 'Resources/value.jpg' or an absolute url and hit enter.S;24;{{421, 353}, {201, 149}}S;24;{{637, 356}, {149, 131}}S;23;Editable +CPDataBinding.S;24;{{421, 188}, {201, 149}}S;13;AppControllerS;19;CPMutableDictionaryS;20;{{1, 1}, {346, 125}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;34E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;111E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;211E;E;S;6;_NS:11S;21;{{1, 126}, {346, 17}}S;19;{{0, 0}, {346, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;42E;E;E;S;6;_NS:15S;16;{{0, 0}, {0, 0}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;212E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;213E;D;K;6;CP$UIDd;3;212E;E;E;S;20;{{224, 0}, {16, 23}}S;18;{{0, 0}, {16, 23}}S;10;cornerviewS;6;_NS:19D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;215E;E;E;S;12;columnHeaderS;9;Image URLS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;197E;K;4;nameD;K;6;CP$UIDd;3;216E;K;12;defaultValueD;K;6;CP$UIDd;3;167E;K;6;valuesD;K;6;CP$UIDd;3;217E;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;199E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;218E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;219E;E;E;S;7;CPImageD;K;6;$classD;K;6;CP$UIDd;3;197E;K;4;nameD;K;6;CP$UIDd;3;216E;K;12;defaultValueD;K;6;CP$UIDd;3;167E;K;6;valuesD;K;6;CP$UIDd;3;220E;E;D;K;6;$classD;K;6;CP$UIDd;3;199E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;218E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;221E;E;E;S;6;CPDataD;K;6;$classD;K;6;CP$UIDd;3;197E;K;4;nameD;K;6;CP$UIDd;3;216E;K;12;defaultValueD;K;6;CP$UIDd;3;167E;K;6;valuesD;K;6;CP$UIDd;3;222E;E;D;K;6;$classD;K;6;CP$UIDd;3;199E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;218E;E;S;17;Arial, sans-serifd;2;12D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;212E;D;K;6;CP$UIDd;3;212E;E;E;d;1;1f;3;0.5D;K;10;$classnameS;19;_CPImageAndTextViewK;8;$classesA;S;19;_CPImageAndTextViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;126E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;126E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;223E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;E;S;4;fontD;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;224E;K;6;normalD;K;6;CP$UIDd;3;167E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;214E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;130E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;130E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;223E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;E;D;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;224E;K;6;normalD;K;6;CP$UIDd;3;167E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;214E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;134E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;186E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;134E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;223E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;97E;E;D;K;6;$classD;K;6;CP$UIDd;2;64E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;224E;K;6;normalD;K;6;CP$UIDd;3;167E;E;E;d;2;18D;K;6;$classD;K;6;CP$UIDd;3;157E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;209E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;210E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;107E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;119E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPImageViewbindingsTest/Resources/MainMenu.xib b/Tests/Manual/CPImageViewbindingsTest/Resources/MainMenu.xib index 01a07c8b2..18302c591 100644 --- a/Tests/Manual/CPImageViewbindingsTest/Resources/MainMenu.xib +++ b/Tests/Manual/CPImageViewbindingsTest/Resources/MainMenu.xib @@ -3,28 +3,28 @@ 1050 11D50 - 2427 + 2488 1138.32 568.00 com.apple.InterfaceBuilder.CocoaPlugin - 2427 + 2488 YES - NSScroller NSArrayController - NSTableHeaderView - NSScrollView - NSTextFieldCell - NSImageView - NSImageCell - NSTableView NSCustomObject + NSImageCell + NSImageView + NSScrollView + NSScroller + NSTableColumn + NSTableHeaderView + NSTableView + NSTextField + NSTextFieldCell NSView NSWindowTemplate - NSTableColumn - NSTextField YES @@ -48,7 +48,7 @@ 7 2 - {{335, 390}, {794, 370}} + {{335, 390}, {803, 555}} 1946157056 Window NSWindow @@ -72,7 +72,7 @@ 256 - {430, 125} + {346, 125} @@ -81,7 +81,7 @@ 256 - {430, 17} + {346, 17} @@ -156,7 +156,7 @@ - 257 + 88 40 1000 @@ -180,13 +180,44 @@ YES + + 82 + 10 + 3.4028234663852886e+38 + + 75628096 + 2048 + CPData + + + 6 + System + headerColor + + 3 + MQA + + + + + + 337772096 + 2048 + Text Cell + + + + + + 3 + YES + YES + + 3 2 - - 3 - MQA - + 6 System @@ -197,7 +228,7 @@ 17 - -566231040 + -564133888 4 @@ -208,7 +239,7 @@ 1 - {{1, 17}, {379, 125}} + {{1, 17}, {346, 125}} @@ -232,17 +263,16 @@
- 256 - {{1, 127}, {379, 15}} + -2147483392 + {{1, 127}, {346, 15}} _NS:60 - YES 1 _doScroller: - 0.88139534883720927 + 0.99425287356321834 @@ -251,7 +281,7 @@ YES - {{1, 0}, {379, 17}} + {{1, 0}, {346, 17}} @@ -261,12 +291,12 @@ 4
- {{20, 198}, {381, 143}} + {{20, 383}, {348, 143}} _NS:9 - 133810 + 133682 @@ -288,7 +318,7 @@ NeXT TIFF v4.0 pasteboard type
- {{421, 195}, {201, 149}} + {{421, 380}, {201, 149}} @@ -308,7 +338,7 @@ 268 - {{637, 210}, {149, 131}} + {{637, 395}, {149, 131}} @@ -350,7 +380,7 @@ NeXT TIFF v4.0 pasteboard type
- {{421, 33}, {201, 149}} + {{421, 218}, {201, 149}} @@ -370,10 +400,10 @@ 268 - {{637, 48}, {149, 131}} + {{637, 233}, {149, 131}} - + _NS:9 {250, 750} YES @@ -391,7 +421,7 @@ 268 - {{20, 87}, {381, 22}} + {{20, 272}, {381, 22}} @@ -422,7 +452,7 @@ 268 - {{17, 113}, {387, 51}} + {{17, 298}, {387, 51}} @@ -440,8 +470,61 @@ c29sdXRlIHVybCBhbmQgaGl0IGVudGVyLg + + + 268 + + YES + + YES + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + NSFilenamesPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT TIFF v4.0 pasteboard type + + + {{421, 53}, {201, 149}} + + + + _NS:9 + YES + + 270532608 + 0 + _NS:9 + 0 + 3 + 2 + NO + + YES + + + + 268 + {{637, 68}, {149, 131}} + + + + _NS:9 + {250, 750} + YES + + 67108864 + 272629760 + RWRpdGFibGUKQ1BEYXRhQmluZGluZy4 + + _NS:9 + + + + + - {794, 370} + {803, 555} @@ -578,6 +661,38 @@ c29sdXRlIHVybCBhbmQgaGl0IGVudGVyLg
511
+ + + data: selection.data + + + + + + data: selection.data + data + selection.data + 2 + + + 518 + + + + value: arrangedObjects.data.className + + + + + + value: arrangedObjects.data.className + value + arrangedObjects.data.className + 2 + + + 522 +
@@ -625,10 +740,12 @@ c29sdXRlIHVybCBhbmQgaGl0IGVudGVyLg - + + + @@ -661,6 +778,7 @@ c29sdXRlIHVybCBhbmQgaGl0IGVudGVyLg YES +
@@ -791,6 +909,48 @@ c29sdXRlIHVybCBhbmQgaGl0IGVudGVyLg
+ + 512 + + + YES + + + + + + 513 + + + YES + + + + + + 514 + + + + + 515 + + + + + 519 + + + YES + + + + + + 520 + + +
@@ -827,6 +987,12 @@ c29sdXRlIHVybCBhbmQgaGl0IGVudGVyLg 507.IBPluginDependency 508.IBPluginDependency 509.IBPluginDependency + 512.IBPluginDependency + 513.IBPluginDependency + 514.IBPluginDependency + 515.IBPluginDependency + 519.IBPluginDependency + 520.IBPluginDependency YES @@ -860,6 +1026,12 @@ c29sdXRlIHVybCBhbmQgaGl0IGVudGVyLg 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
@@ -874,7 +1046,7 @@ c29sdXRlIHVybCBhbmQgaGl0IGVudGVyLg - 511 + 522
diff --git a/Tests/Manual/CPImageViewbindingsTest/Resources/images.plist b/Tests/Manual/CPImageViewbindingsTest/Resources/images.plist index 783ab3d40..6b6c0bb2e 100644 --- a/Tests/Manual/CPImageViewbindingsTest/Resources/images.plist +++ b/Tests/Manual/CPImageViewbindingsTest/Resources/images.plist @@ -6,5 +6,11 @@ url Resources/valueURL.jpg + + data + + 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 + + diff --git a/Tests/Manual/CPMenuTest/AppController.j b/Tests/Manual/CPMenuTest/AppController.j index 3c2e43393..0de3663f2 100644 --- a/Tests/Manual/CPMenuTest/AppController.j +++ b/Tests/Manual/CPMenuTest/AppController.j @@ -2,13 +2,12 @@ * AppController.j * CPMenuTest * - * Created by Alexander Ljungberg on August 31, 2010. - * Copyright 2010, WireLoad, LLC All rights reserved. + * Created by Blair Duncan on April 23, 2012. + * Copyright 2012, SGL Studio, BBDO Toronto All rights reserved. */ @import -@import "MyView.j" @implementation AppController : CPObject { @@ -17,16 +16,10 @@ - (void)applicationDidFinishLaunching:(CPNotification)aNotification { var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask], - contentView = [[MyView alloc] initWithFrame:CGRectMakeZero()]; + contentView = [theWindow contentView], + popupButton = [[CPPopUpButton alloc] initWithFrame:CGRectMakeZero()]; - [contentView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable]; - [theWindow setContentView:contentView]; - - var popupButton = [[CPPopUpButton alloc] initWithFrame:CGRectMakeZero()]; - - [popupButton addItemWithTitle:@"Item 1"]; - [popupButton addItemWithTitle:@"Item 2"]; - [popupButton addItemWithTitle:@"Item 3"]; + [popupButton addItemsWithTitles:[[CPFontManager sharedFontManager] availableFonts]]; [popupButton sizeToFit]; [popupButton setAutoresizingMask:CPViewMinXMargin | CPViewMaxXMargin | CPViewMinYMargin | CPViewMaxYMargin]; @@ -37,7 +30,8 @@ [theWindow orderFront:self]; // Uncomment the following line to turn on the standard menu bar. - [CPMenu setMenuBarVisible:YES]; + //[CPMenu setMenuBarVisible:YES]; } + @end diff --git a/Tests/Manual/CPMenuTest/MyView.j b/Tests/Manual/CPMenuTest/MyView.j deleted file mode 100644 index 0f2b01870..000000000 --- a/Tests/Manual/CPMenuTest/MyView.j +++ /dev/null @@ -1,18 +0,0 @@ -@import - -@implementation MyView : CPView -{ -} - -- (CPMenu)menu -{ - var menu = [[CPMenu alloc] initWithTitle:@""]; - - [menu addItemWithTitle:@"Item 1" action:nil keyEquivalent:nil]; - [menu addItemWithTitle:@"Item 2" action:nil keyEquivalent:nil]; - [menu addItemWithTitle:@"Item 3" action:nil keyEquivalent:nil]; - - return menu; -} - -@end \ No newline at end of file diff --git a/Tests/Manual/CPToolbarTest/AppController.j b/Tests/Manual/CPToolbarTest/AppController.j new file mode 100644 index 000000000..538a74ecf --- /dev/null +++ b/Tests/Manual/CPToolbarTest/AppController.j @@ -0,0 +1,133 @@ +/* + * AppController.j + * CPToolbarTest + * + * Created by Alexander Ljungberg on June 12, 2012. + * Copyright 2012, SlevenBits Ltd. All rights reserved. + */ + +@import + + +@implementation AppController : CPObject +{ +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // We want to test all combinations of: + // Label/Icon/Label and Icon/Small/Normal/Has oversized item. + + var NO_LABEL = 1 << 0, + NO_ICON = 1 << 1, + HAS_TALL_ITEM = 1 << 2, + IS_SMALL = 1 << 3, + windows = [], + x = 10, + y = 30; + + for (var i = 0; i < (NO_LABEL | NO_ICON | IS_SMALL | HAS_TALL_ITEM); i++) + { + var hasLabel = !(i & NO_LABEL), + hasIcon = !(i & NO_ICON), + isSmall = !!(i & IS_SMALL), + hasTallItem = !!(i & HAS_TALL_ITEM); + + if (!hasLabel && !hasIcon) + continue; + + // A tall item where the view isn't visible is just a label so don't bother showing that. + if (!hasIcon && hasTallItem) + continue; + + var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMake(x, y, 400, 20) styleMask:CPTitledWindowMask], + contentView = [theWindow contentView]; + + [theWindow setTitle:"Toolbar (LBL: " + hasLabel + " ICN: " + hasIcon + " SMALL: " + isSmall + " TALLITEM: " + hasTallItem + ")"]; + + var toolbarDelegate = [ToolbarDelegate new], + items = [@"new"]; + if (!isSmall) + [items addObject:@"colour"]; + if (hasTallItem) + [items addObject:@"tallitem"]; + [toolbarDelegate setItems:items]; + + var toolbar = [CPToolbar new]; + [toolbar setSizeMode:isSmall ? CPToolbarSizeModeSmall : CPToolbarSizeModeRegular]; + if (hasLabel && hasIcon) + [toolbar setDisplayMode:CPToolbarDisplayModeIconAndLabel]; + else if (hasLabel) + [toolbar setDisplayMode:CPToolbarDisplayModeLabelOnly]; + else + [toolbar setDisplayMode:CPToolbarDisplayModeIconOnly]; + + [toolbar setDelegate:toolbarDelegate]; + [theWindow setToolbar:toolbar]; + + windows[i] = theWindow; + + [theWindow orderFront:nil]; + + y += [theWindow frame].size.height + 10; + if (y + 80 > [[theWindow platformWindow] visibleFrame].size.height) + { + y = 30; + x += 430; + } + } +} + + +@end + +@implementation ToolbarDelegate : CPObject +{ + CPArray items @accessors; +} + +- (CPArray)toolbarDefaultItemIdentifiers:(CPToolbar)toolbar +{ + return items; +} + +- (CPArray)toolbarAllowedItemIdentifiers:(CPToolbar)toolbar +{ + return items; +} + +- (CPToolbarItem)toolbar:(CPToolbar)toolbar itemForItemIdentifier:(CPString)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag +{ + var toolbarItem = [[CPToolbarItem alloc] initWithItemIdentifier:itemIdentifier]; + if (itemIdentifier == "colour") + { + [toolbarItem setLabel:@"Colour"]; + [toolbarItem setImage:[[CPImage alloc] initWithContentsOfFile:[[CPBundle mainBundle] pathForResource:@"CPImageNameColorPanel.png"] size:CPSizeMake(26, 29)]]; + return toolbarItem; + } + else if (itemIdentifier == "new") + { + [toolbarItem setLabel:@"Small New"]; + [toolbarItem setImage:[[CPImage alloc] initWithContentsOfFile:[[CPBundle mainBundle] pathForResource:@"New.png"] size:CPSizeMake(16, 16)]]; + return toolbarItem; + } + else if (itemIdentifier == "tallitem") + { + [toolbarItem setLabel:@"Tall Item"]; + [toolbarItem setMinSize:CGSizeMake(60, 70)]; + [toolbarItem setMaxSize:CGSizeMake(60, 70)]; + + var view = [[CPView alloc] initWithFrame:CGRectMake(0, 0, 60, 70)]; + + for (var i = 0; i < 3; i++) + { + var slider = [[CPSlider alloc] initWithFrame: CGRectMake(0, i * 25, 60, 20)]; + [view addSubview:slider]; + } + + [toolbarItem setView:view]; + return toolbarItem; + } +} + +@end diff --git a/Tests/Manual/CPToolbarTest/Info.plist b/Tests/Manual/CPToolbarTest/Info.plist new file mode 100644 index 000000000..1bdb875a5 --- /dev/null +++ b/Tests/Manual/CPToolbarTest/Info.plist @@ -0,0 +1,12 @@ + + + + + CPApplicationDelegateClass + AppController + CPBundleName + CPToolbarTest + CPPrincipalClass + CPApplication + + diff --git a/Tests/Manual/CPToolbarTest/Jakefile b/Tests/Manual/CPToolbarTest/Jakefile new file mode 100644 index 000000000..157653e69 --- /dev/null +++ b/Tests/Manual/CPToolbarTest/Jakefile @@ -0,0 +1,93 @@ +/* + * Jakefile + * CPToolbarTest + * + * Created by Alexander Ljungberg on June 12, 2012. + * Copyright 2012, SlevenBits Ltd. All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPToolbarTest", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPToolbarTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPToolbarTest"); + task.setIdentifier("com.slevenbits.CPToolbarTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPToolbarTest"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPToolbarTest"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPToolbarTest", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPToolbarTest", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPToolbarTest")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPToolbarTest"), FILE.join("Build", "Deployment", "CPToolbarTest")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPToolbarTest")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPToolbarTest"), FILE.join("Build", "Desktop", "CPToolbarTest", "CPToolbarTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPToolbarTest", "CPToolbarTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPToolbarTest")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPToolbarTest/Resources/CPImageNameColorPanel.png b/Tests/Manual/CPToolbarTest/Resources/CPImageNameColorPanel.png new file mode 100644 index 000000000..85f94ee58 Binary files /dev/null and b/Tests/Manual/CPToolbarTest/Resources/CPImageNameColorPanel.png differ diff --git a/Tests/Manual/CPToolbarTest/Resources/New.png b/Tests/Manual/CPToolbarTest/Resources/New.png new file mode 100644 index 000000000..058a6caa4 Binary files /dev/null and b/Tests/Manual/CPToolbarTest/Resources/New.png differ diff --git a/Tests/Manual/CPToolbarTest/Resources/spinner.gif b/Tests/Manual/CPToolbarTest/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPToolbarTest/Resources/spinner.gif differ diff --git a/Tests/Manual/CPToolbarTest/index-debug.html b/Tests/Manual/CPToolbarTest/index-debug.html new file mode 100644 index 000000000..8daf532a4 --- /dev/null +++ b/Tests/Manual/CPToolbarTest/index-debug.html @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + CPToolbarTest + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPToolbarTest/index.html b/Tests/Manual/CPToolbarTest/index.html new file mode 100644 index 000000000..38b4c27be --- /dev/null +++ b/Tests/Manual/CPToolbarTest/index.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + CPToolbarTest + + + + + + + + + + + + +
+
+ + + +
+
+ + + + diff --git a/Tests/Manual/CPToolbarTest/main.j b/Tests/Manual/CPToolbarTest/main.j new file mode 100644 index 000000000..f12b07fb9 --- /dev/null +++ b/Tests/Manual/CPToolbarTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPToolbarTest + * + * Created by Alexander Ljungberg on June 12, 2012. + * Copyright 2012, SlevenBits Ltd. All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +} diff --git a/Tests/Manual/TableTest/DragAndDrop/AppController.j b/Tests/Manual/TableTest/DragAndDrop/AppController.j index 62d87e38e..0cc82401b 100644 --- a/Tests/Manual/TableTest/DragAndDrop/AppController.j +++ b/Tests/Manual/TableTest/DragAndDrop/AppController.j @@ -2,7 +2,7 @@ * AppController.j * DragAndDrop * - * Created by You on December 10, 2010. + * Created by Mike Fellows on December 10, 2010. * Copyright 2010, Your Company All rights reserved. */ @@ -10,7 +10,7 @@ @import @import -TableTestDragAndDropTableViewDataType = "@TableTestDragAndDropTableViewDataType"; +TableTestDragAndDropTableViewDataType = @"TableTestDragAndDropTableViewDataType"; @implementation AppController : CPObject { @@ -25,10 +25,10 @@ TableTestDragAndDropTableViewDataType = "@TableTestDragAndDropTableViewDataType" count = 100; rowList = []; - while(count--) + while (count--) rowList[count] = count; - [scroll setAutoresizingMask:CPViewWidthSizable|CPViewHeightSizable]; + [scroll setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable]; var table = [[CPTableView alloc] initWithFrame:CGRectMakeZero()]; [table setDataSource:self]; @@ -101,7 +101,7 @@ TableTestDragAndDropTableViewDataType = "@TableTestDragAndDropTableViewDataType" - (id)tableView:(id)tableView objectValueForTableColumn:(CPTableColumn)aColumn row:(int)aRow { - if([aColumn identifier] == "Row") + if ([aColumn identifier] == "Row") return aRow; else return "Col " + [aColumn identifier] + ", Started as Row " + rowList[aRow]; @@ -133,7 +133,7 @@ TableTestDragAndDropTableViewDataType = "@TableTestDragAndDropTableViewDataType" destinationRange, destinationIndexes; - if(operation == CPTableViewDropAbove) + if (operation == CPTableViewDropAbove) { // Save the first object in the list so we can determine where the // beginning of the moved block begins once all the selected rows have diff --git a/Tools/XcodeCapp/FSEventCallback.m b/Tools/XcodeCapp/FSEventCallback.m index c4af80093..9df1fd56a 100644 --- a/Tools/XcodeCapp/FSEventCallback.m +++ b/Tools/XcodeCapp/FSEventCallback.m @@ -138,4 +138,6 @@ void fsevents_callback(ConstFSEventStreamRef streamRef, } } } + + [xcc updateUserDefaultsWithLastEventId]; } diff --git a/Tools/XcodeCapp/TNXCodeCapp.h b/Tools/XcodeCapp/TNXCodeCapp.h index 937132502..51c507de3 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.h +++ b/Tools/XcodeCapp/TNXCodeCapp.h @@ -80,6 +80,8 @@ extern NSString * const XCCListeningStartNotification; - (void)initializeEventStreamWithPath:(NSString*)aPath; - (void)stopEventStream; - (void)updateLastEventId:(uint64_t)eventId; +- (void)updateUserDefaultsWithLastEventId; +- (void)synchronizeUserDefaultsWithDisk; - (void)listenProjectAtPath:(NSString *)path; - (void)clear; - (void)start; diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index ffe2d1cab..ffaab9dac 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -195,13 +195,8 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification */ - (void)clear { - if (lastEventId && [lastEventId longLongValue] != 0) - { - NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; - [defaults setObject:lastEventId forKey:@"lastEventId"]; - [defaults synchronize]; - } - + [self updateUserDefaultsWithLastEventId]; + [self synchronizeUserDefaultsWithDisk]; currentProjectURL = nil; currentProjectName = nil; [ignoredFilePaths removeAllObjects]; @@ -259,6 +254,25 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification lastEventId = [NSNumber numberWithUnsignedLongLong:eventId]; } +/*! + Updates the user defaults with the last recorded event Id. + */ +- (void)updateUserDefaultsWithLastEventId +{ + if (lastEventId && [lastEventId longLongValue] != 0) + { + [[NSUserDefaults standardUserDefaults] setObject:lastEventId forKey:@"lastEventId"]; + } +} + +/*! + Tells the standard user defaults to synchronize with disk. + */ +- (void)synchronizeUserDefaultsWithDisk +{ + [[NSUserDefaults standardUserDefaults] synchronize]; +} + /*! Run a NSTask with the given arguments @param arguments NSArray containing the NSTask arguments @@ -460,14 +474,26 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification [PBXContent writeToFile:XCodeSupportPBXPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; DLog(@"PBX file adapted to the project"); - DLog(@"Creating source folder %@", [XCodeSupportProjectSources path]); - [fm createDirectoryAtPath:[XCodeSupportProjectSources path] withIntermediateDirectories:YES attributes:nil error:nil]; + [self createXcodeSupportProjectSourcesDirIfNecessary]; return NO; } + [self createXcodeSupportProjectSourcesDirIfNecessary]; return YES; } +/*! + Create the .xCodeSupport/Sources folder if necessary. + */ +- (void)createXcodeSupportProjectSourcesDirIfNecessary +{ + if ([fm fileExistsAtPath:[XCodeSupportProjectSources path]]) + return; + + DLog(@"Creating source folder %@", [XCodeSupportProjectSources path]); + [fm createDirectoryAtPath:[XCodeSupportProjectSources path] withIntermediateDirectories:YES attributes:nil error:nil]; +} + /*! Initialize the creation of the .xCodeSupport project. This Operation is threaded diff --git a/Tools/capp/Resources/Templates/NibApplication/Resources/MainMenu.xib b/Tools/capp/Resources/Templates/NibApplication/Resources/MainMenu.xib index 0c98cf0b6..5a9d4667c 100644 --- a/Tools/capp/Resources/Templates/NibApplication/Resources/MainMenu.xib +++ b/Tools/capp/Resources/Templates/NibApplication/Resources/MainMenu.xib @@ -2,13 +2,13 @@ 1050 - 10J869 - 1306 - 1038.35 - 461.00 + 11E53 + 2182 + 1138.47 + 569.00 com.apple.InterfaceBuilder.CocoaPlugin - 1306 + 2182 YES @@ -27,11 +27,8 @@ com.apple.InterfaceBuilder.CocoaPlugin - YES - - YES - - + PluginDependencyRecalculationVersion + YES @@ -1127,8 +1124,9 @@ Window NSWindow + - + 256 YES @@ -1137,7 +1135,6 @@ 301 {{192, 143}, {96, 21}} - YES -2079981824 @@ -1164,7 +1161,6 @@ 301 {{192, 191}, {96, 22}} - YES -1804468671 @@ -1199,11 +1195,10 @@ {{7, 11}, {480, 360}} - - {{0, 0}, {1440, 878}} - {1e+13, 1e+13} + {10000000000000, 10000000000000} + YES AppController @@ -1212,6 +1207,30 @@ YES + + + terminate: + + + + 449 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + delegate + + + + 451 + performMiniaturize: @@ -1252,14 +1271,6 @@ 127 - - - orderFrontStandardAboutPanel: - - - - 142 - performClose: @@ -1692,21 +1703,13 @@ 448 - - - terminate: - - - - 449 - - delegate - - + theWindow + + - 451 + 459 @@ -1716,21 +1719,15 @@ 458 - - - theWindow - - - - 459 - YES 0 - + + YES + @@ -1794,7 +1791,6 @@ - 1 217 @@ -1837,19 +1833,16 @@ 75 - 3 80 - 8 78 - 6 72 @@ -1860,7 +1853,6 @@ 82 - 9 124 @@ -1875,31 +1867,26 @@ 77 - 5 73 - 1 79 - 7 112 - 10 74 - 2 125 @@ -2072,7 +2059,6 @@ - 2 111 @@ -2117,7 +2103,6 @@ 136 - 1111 144 @@ -2128,7 +2113,6 @@ 129 - 121 143 @@ -2661,142 +2645,70 @@ -2.IBPluginDependency -3.IBPluginDependency 103.IBPluginDependency - 103.ImportedFromIB2 106.IBPluginDependency - 106.ImportedFromIB2 - 106.editorWindowContentRectSynchronizationRect 111.IBPluginDependency - 111.ImportedFromIB2 112.IBPluginDependency - 112.ImportedFromIB2 124.IBPluginDependency - 124.ImportedFromIB2 125.IBPluginDependency - 125.ImportedFromIB2 - 125.editorWindowContentRectSynchronizationRect 126.IBPluginDependency - 126.ImportedFromIB2 129.IBPluginDependency - 129.ImportedFromIB2 130.IBPluginDependency - 130.ImportedFromIB2 - 130.editorWindowContentRectSynchronizationRect 131.IBPluginDependency - 131.ImportedFromIB2 134.IBPluginDependency - 134.ImportedFromIB2 136.IBPluginDependency - 136.ImportedFromIB2 143.IBPluginDependency - 143.ImportedFromIB2 144.IBPluginDependency - 144.ImportedFromIB2 145.IBPluginDependency - 145.ImportedFromIB2 149.IBPluginDependency - 149.ImportedFromIB2 150.IBPluginDependency - 150.ImportedFromIB2 19.IBPluginDependency - 19.ImportedFromIB2 195.IBPluginDependency - 195.ImportedFromIB2 196.IBPluginDependency - 196.ImportedFromIB2 197.IBPluginDependency - 197.ImportedFromIB2 198.IBPluginDependency - 198.ImportedFromIB2 199.IBPluginDependency - 199.ImportedFromIB2 200.IBPluginDependency - 200.ImportedFromIB2 - 200.editorWindowContentRectSynchronizationRect 201.IBPluginDependency - 201.ImportedFromIB2 202.IBPluginDependency - 202.ImportedFromIB2 203.IBPluginDependency - 203.ImportedFromIB2 204.IBPluginDependency - 204.ImportedFromIB2 205.IBPluginDependency - 205.ImportedFromIB2 - 205.editorWindowContentRectSynchronizationRect 206.IBPluginDependency - 206.ImportedFromIB2 207.IBPluginDependency - 207.ImportedFromIB2 208.IBPluginDependency - 208.ImportedFromIB2 209.IBPluginDependency - 209.ImportedFromIB2 210.IBPluginDependency - 210.ImportedFromIB2 211.IBPluginDependency - 211.ImportedFromIB2 212.IBPluginDependency - 212.ImportedFromIB2 - 212.editorWindowContentRectSynchronizationRect 213.IBPluginDependency - 213.ImportedFromIB2 214.IBPluginDependency - 214.ImportedFromIB2 215.IBPluginDependency - 215.ImportedFromIB2 216.IBPluginDependency - 216.ImportedFromIB2 217.IBPluginDependency - 217.ImportedFromIB2 218.IBPluginDependency - 218.ImportedFromIB2 219.IBPluginDependency - 219.ImportedFromIB2 220.IBPluginDependency - 220.ImportedFromIB2 - 220.editorWindowContentRectSynchronizationRect 221.IBPluginDependency - 221.ImportedFromIB2 23.IBPluginDependency - 23.ImportedFromIB2 236.IBPluginDependency - 236.ImportedFromIB2 239.IBPluginDependency - 239.ImportedFromIB2 24.IBPluginDependency - 24.ImportedFromIB2 - 24.editorWindowContentRectSynchronizationRect - 29.IBEditorWindowLastContentRect 29.IBPluginDependency - 29.ImportedFromIB2 - 29.WindowOrigin - 29.editorWindowContentRectSynchronizationRect 295.IBPluginDependency 296.IBPluginDependency - 296.editorWindowContentRectSynchronizationRect 297.IBPluginDependency 298.IBPluginDependency 346.IBPluginDependency - 346.ImportedFromIB2 348.IBPluginDependency - 348.ImportedFromIB2 349.IBPluginDependency - 349.ImportedFromIB2 - 349.editorWindowContentRectSynchronizationRect 350.IBPluginDependency - 350.ImportedFromIB2 351.IBPluginDependency - 351.ImportedFromIB2 354.IBPluginDependency - 354.ImportedFromIB2 - 371.IBEditorWindowLastContentRect 371.IBPluginDependency 371.IBWindowTemplateEditedContentRect 371.NSWindowTemplate.visibleAtLaunch - 371.editorWindowContentRectSynchronizationRect 372.IBPluginDependency 375.IBPluginDependency - 376.IBEditorWindowLastContentRect 376.IBPluginDependency 377.IBPluginDependency 378.IBPluginDependency @@ -2809,7 +2721,6 @@ 385.IBPluginDependency 386.IBPluginDependency 387.IBPluginDependency - 388.IBEditorWindowLastContentRect 388.IBPluginDependency 389.IBPluginDependency 390.IBPluginDependency @@ -2848,183 +2759,92 @@ 456.IBPluginDependency 457.IBPluginDependency 5.IBPluginDependency - 5.ImportedFromIB2 56.IBPluginDependency - 56.ImportedFromIB2 - 57.IBEditorWindowLastContentRect 57.IBPluginDependency - 57.ImportedFromIB2 - 57.editorWindowContentRectSynchronizationRect 58.IBPluginDependency - 58.ImportedFromIB2 72.IBPluginDependency - 72.ImportedFromIB2 73.IBPluginDependency - 73.ImportedFromIB2 74.IBPluginDependency - 74.ImportedFromIB2 75.IBPluginDependency - 75.ImportedFromIB2 77.IBPluginDependency - 77.ImportedFromIB2 78.IBPluginDependency - 78.ImportedFromIB2 79.IBPluginDependency - 79.ImportedFromIB2 80.IBPluginDependency - 80.ImportedFromIB2 81.IBPluginDependency - 81.ImportedFromIB2 - 81.editorWindowContentRectSynchronizationRect 82.IBPluginDependency - 82.ImportedFromIB2 83.IBPluginDependency - 83.ImportedFromIB2 92.IBPluginDependency - 92.ImportedFromIB2 - + YES com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{596, 852}, {216, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{522, 812}, {146, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{436, 809}, {64, 6}} - 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 - - {{608, 612}, {275, 83}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{187, 434}, {243, 243}} - 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 - - {{608, 612}, {167, 43}} - 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 - - {{608, 612}, {241, 103}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{525, 802}, {197, 73}} - {{143, 285}, {478, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - {74, 862} - {{6, 978}, {478, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{475, 832}, {234, 43}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {215, 63}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{303, 221}, {480, 360}} + 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 + 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 {{303, 221}, {480, 360}} - {{33, 99}, {480, 360}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{437, 242}, {86, 43}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3037,7 +2857,6 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{523, 2}, {178, 283}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -3076,40 +2895,21 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - {{155, 102}, {245, 183}} com.apple.InterfaceBuilder.CocoaPlugin - - {{23, 794}, {245, 183}} 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 - - {{145, 474}, {199, 203}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - @@ -3168,10 +2968,10 @@ NSMenuCheckmark NSMenuMixedState - + YES - {9, 8} - {7, 2} + {11, 11} + {10, 3} diff --git a/Tools/capp_lint/capp_lint b/Tools/capp_lint/capp_lint index e08186d8c..599eb7002 100755 --- a/Tools/capp_lint/capp_lint +++ b/Tools/capp_lint/capp_lint @@ -36,7 +36,7 @@ import os import os.path import re import sys - +import unittest EXIT_CODE_SHOW_HTML = 205 EXIT_CODE_SHOW_TOOLTIP = 206 @@ -77,7 +77,54 @@ def relative_path(basedir, filename): return filename +def string_replacer(line): + """Take string literals like 'hello' and replace them with empty string literals, while respecting escaping.""" + + r = [] + in_quote = None + escapes = 0 + for i, c in enumerate(line): + if in_quote: + if not escapes and c == in_quote: + in_quote = None + r.append(c) + continue + + # We're inside of a string literal. Ignore everything. + else: + if not escapes and (c == '"' or c == "'"): + in_quote = c + r.append(c) + continue + + # Outside of a string literal, preserve everything. + r.append(c) + + if c == '\\': + escapes = (escapes + 1) % 2 + else: + escapes = 0 + + if in_quote: + # Unterminated string literal. + pass + return "".join(r) + + class LintChecker(object): + """Examine Objective-J code statically and generate warnings for possible errors and deviations from the coding-style standard. + + >>> LintChecker().lint_text('var b = 5+5;') + [{'positions': [9], 'filename': '', 'lineNum': 1, 'message': 'binary operator without surrounding spaces', 'type': 2, 'line': u'var b = 5+5;'}] + + >>> LintChecker().lint_text(''' + ... if( 1 ) { + ... var b=7; + ... c = 8; + ... } + ... ''') + [{'positions': [2], 'filename': '', 'lineNum': 2, 'message': 'missing space between control statement and parentheses', 'type': 2, 'line': u'if( 1 ) {'}, {'positions': [8], 'filename': '', 'lineNum': 2, 'message': 'braces should be on their own line', 'type': 1, 'line': u'if( 1 ) {'}, {'positions': [3, 5], 'filename': '', 'lineNum': 2, 'message': 'space inside parentheses', 'type': 1, 'line': u'if( 1 ) {'}, {'positions': [7], 'filename': '', 'lineNum': 3, 'message': 'assignment operator without surrounding spaces', 'type': 2, 'line': u' var b=7;'}, {'lineNum': 4, 'message': 'accidental global variable', 'type': 1, 'line': u' c = 8;', 'filename': ''}] + """ VAR_BLOCK_START_RE = re.compile(ur'''(?x) (?P\s*) # indent before a var keyword @@ -128,15 +175,33 @@ class LintChecker(object): TRAILING_WHITESPACE_RE = re.compile(ur'^.*(\s+)$') STRIP_LINE_COMMENT_RE = re.compile(ur'(.*)\s*(?://.*|/\*.*\*/\s*)$') LINE_COMMENT_RE = re.compile(ur'\s*(?:/\*.*\*/\s*|//.*)$') + COMMENT_RE = re.compile(ur'/\*.*?\*/') BLOCK_COMMENT_START_RE = re.compile(ur'\s*/\*.*(?!\*/\s*)$') BLOCK_COMMENT_END_RE = re.compile(ur'.*?\*/') METHOD_RE = ur'[-+]\s*\([a-zA-Z_$]\w*\)\s*[a-zA-Z_$]\w*' FUNCTION_RE = re.compile(ur'\s*function\s*(?P[a-zA-Z_$]\w*)?\(.*\)\s*\{?') - STRING_LITERAL_RE = re.compile(ur'(?]*\)\s*\w+|[a-zA-Z_$]\w*(\+\+|--)|([ -+*/%^&|<>!]=?|&&|\|\||<<|>>>|={1,3}|!==?)\s*[-+][\w(\[])'), 'pass': False}, - 'preprocess': STD_IGNORES, + # Also convert literals like 1.5e+7 to 42 so that the - or + in there is ignored for purposes of this warning. + 'preprocess': STD_IGNORES + EXPONENTIAL_TO_SIMPLE, 'regex': re.compile(ur'(?<=[\w)\]"\']|([ ]))([-+*/%^]|&&?|\|\|?|<<|>>>?)(?=[\w({\["\']|(?(1)\b\b|[ ]))'), 'error': 'binary operator without surrounding spaces', 'showPositionForGroup': 2, 'type': ERROR_TYPE_WARNING }, - { - # Filter out @import statements, method declarations - 'filter': {'regex': re.compile(ur'^(@import\b|\s*' + METHOD_RE + ')'), 'pass': False}, - - 'preprocess': STD_IGNORES, - 'regex': re.compile(ur'(?:[-*/%^&|<>!]=?|&&|\|\||<<|>>>|={1,3}|!==?)\s*(?"): self.filename = filename self.filesToCheck = [] @@ -759,6 +833,8 @@ class LintChecker(object): print u'EOF\n' pass + return self.errors + def count_files_checked(self): return len(self.filesToCheck) @@ -959,6 +1035,50 @@ class LintChecker(object): exit_show_html(html) +class MiscTest(unittest.TestCase): + def test_string_replacer(self): + self.assertEquals(string_replacer("x = 'hello';"), "x = '';") + self.assertEquals(string_replacer("x = '\\' hello';"), "x = '';") + self.assertEquals(string_replacer("x = '\\\\';"), "x = '';") + self.assertEquals(string_replacer("""x = '"string in string"';"""), "x = '';") + + self.assertEquals(string_replacer('x = "hello";'), 'x = "";') + self.assertEquals(string_replacer('x = "\\" hello";'), 'x = "";') + self.assertEquals(string_replacer('x = "\\\\";'), 'x = "";') + self.assertEquals(string_replacer('''x = "'";'''), 'x = "";') + + +class LintCheckerTest(unittest.TestCase): + def test_exponential_notation(self): + """Test that exponential notation such as 1.1e-6 doesn't cause a warning about missing whitespace.""" + + # This should not report "binary operator without surrounding spaces". + self.assertEquals(LintChecker().lint_text("a = 2.1e-6;"), []) + self.assertEquals(LintChecker().lint_text("a = 2.1e+6;"), []) + self.assertEquals(LintChecker().lint_text("a = 2e-0;"), []) + self.assertEquals(LintChecker().lint_text("a = 2e+0;"), []) + + # But this should. + self.assertEquals(LintChecker().lint_text("a = 1.1e-6+2e2;"), [{'positions': [6], 'filename': '', 'lineNum': 1, 'message': 'binary operator without surrounding spaces', 'type': 2, 'line': u'a = 1.1e-6+2e2;'}]) + + def test_function_types(self): + """Test that function definitions like function(/*CPString*/key) don't cause warnings about surrounding spaces.""" + + # This should not report "binary operator without surrounding spaces". + self.assertEquals(LintChecker().lint_text("var resolveMultipleValues = function(/*CPString*/key, /*CPDictionary*/bindings, /*GSBindingOperationKind*/operation)"), []) + + def test_unary_plus(self): + """Test that = +, like in `x = +y;`, doesn't cause a warning.""" + + # + converts number in a string to a number. + self.assertEquals(LintChecker().lint_text("var y = +x;"), []) + + def test_string_escaping(self): + """Test that string literals are not parsed as syntax, even when they end with a double backslash.""" + + self.assertEquals(LintChecker().lint_text('var x = "(\\\\";'), []) + + if __name__ == '__main__': usage = 'usage: %prog [options] [file ... | -]' parser = OptionParser(usage=usage, version='1.02') diff --git a/Tools/nib2cib/NSButton.j b/Tools/nib2cib/NSButton.j index f83e48356..e62a9e9a6 100644 --- a/Tools/nib2cib/NSButton.j +++ b/Tools/nib2cib/NSButton.j @@ -196,6 +196,7 @@ var NSButtonIsBorderedMask = 0x00800000, _keyEquivalent = [cell keyEquivalent]; _keyEquivalentModifierMask = [cell keyEquivalentModifierMask]; + _imageDimsWhenDisabled = YES; _allowsMixedState = [cell allowsMixedState]; [self setImage:[cell normalImage]]; diff --git a/Tools/nib2cib/NSPredicateEditor.j b/Tools/nib2cib/NSPredicateEditor.j index 2ef4ea8a1..add06a19b 100644 --- a/Tools/nib2cib/NSPredicateEditor.j +++ b/Tools/nib2cib/NSPredicateEditor.j @@ -27,12 +27,12 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { self = [super NS_initWithCoder:aCoder]; - + if (self) - { + { _allTemplates = [aCoder decodeObjectForKey:@"NSPredicateTemplates"]; } - + return self; } @@ -59,7 +59,7 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { self = [super init]; - + if (self) { _templateType = [aCoder decodeIntForKey:@"NSPredicateTemplateType"]; @@ -71,7 +71,7 @@ _rightIsWildcard = [aCoder decodeBoolForKey:@"NSPredicateTemplateRightIsWildcard"]; _views = [aCoder decodeObjectForKey:@"NSPredicateTemplateViews"]; } - + return self; } diff --git a/Tools/nib2cib/NSRuleEditor.j b/Tools/nib2cib/NSRuleEditor.j index 8955626f4..fb7be960d 100644 --- a/Tools/nib2cib/NSRuleEditor.j +++ b/Tools/nib2cib/NSRuleEditor.j @@ -32,7 +32,7 @@ - (id)NS_initWithCoder:(CPCoder)aCoder { self = [super NS_initWithCoder:aCoder]; - + if (self) { _alignmentGridWidth = [aCoder decodeFloatForKey:@"NSRuleEditorAlignmentGridWidth"]; @@ -40,20 +40,20 @@ _stringsFilename = [aCoder decodeObjectForKey:@"NSRuleEditorStringsFileName"]; _editable = [aCoder decodeBoolForKey:@"NSRuleEditorEditable"]; _allowsEmptyCompoundRows = [aCoder decodeBoolForKey:@"NSRuleEditorAllowsEmptyCompoundRows"]; - _disallowEmpty = [aCoder decodeBoolForKey:@"NSRuleEditorDisallowEmpty"]; + _disallowEmpty = [aCoder decodeBoolForKey:@"NSRuleEditorDisallowEmpty"]; _nestingMode = [aCoder decodeIntForKey:@"NSRuleEditorNestingMode"]; _typeKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorRowTypeKeyPath"]; _itemsKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorItemsKeyPath"]; _valuesKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorValuesKeyPath"]; _subrowsArrayKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorSubrowsArrayKeyPath"]; _boundArrayKeyPath = [aCoder decodeObjectForKey:@"NSRuleEditorBoundArrayKeyPath"]; - + //_slicesHolder = [aCoder decodeObjectForKey:@"NSRuleEditorViewSliceHolder"]; _boundArrayOwner = [aCoder decodeObjectForKey:@"NSRuleEditorBoundArrayOwner"]; _slices = [aCoder decodeObjectForKey:@"NSRuleEditorSlices"]; - _ruleDelegate = [aCoder decodeObjectForKey:@"NSRuleEditorDelegate"]; + _ruleDelegate = [aCoder decodeObjectForKey:@"NSRuleEditorDelegate"]; } - + return self; } @@ -99,7 +99,7 @@ { if (self = [super init]) boundArray = [aCoder decodeObjectForKey:@"NSBoundArray"]; - + return self; } diff --git a/Tools/nib2cib/Nib2Cib.j b/Tools/nib2cib/Nib2Cib.j index 424570cb5..20a9942e9 100644 --- a/Tools/nib2cib/Nib2Cib.j +++ b/Tools/nib2cib/Nib2Cib.j @@ -40,7 +40,7 @@ var FILE = require("file"), DefaultTheme = "Aristo", BuildTypes = ["Debug", "Release"], DefaultFile = "MainMenu", - AllowedStoredOptionsRe = new RegExp("^(defaultTheme|auxThemes|verbosity|quiet|frameworks|format)$"); + AllowedStoredOptionsRe = new RegExp("^(defaultTheme|auxThemes|verbosity|quiet|frameworks|format)$"), ArgsRe = /"[^\"]+"|'[^\']+'|\S+/g; @@ -127,6 +127,8 @@ var FILE = require("file"), if (systemFontSize) [CPFont setSystemFontSize:parseFloat(systemFontSize, 10)]; } + else + infoPlist = [CPDictionary dictionary]; var themeList = [self getThemeList:options], themes = [self loadThemesFromList:themeList];