diff --git a/AppKit/CPBezierPath.j b/AppKit/CPBezierPath.j index 908c5ca2a..c6633ce97 100644 --- a/AppKit/CPBezierPath.j +++ b/AppKit/CPBezierPath.j @@ -165,6 +165,19 @@ var DefaultLineWidth = 1.0; CGPathAddCurveToPoint(_path, nil, controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y); } +- (CGRect)bounds +{ + // TODO: this should return this. The controlPointBounds is not a tight fit. + // return CGPathGetPathBoundingBox(_path); + + return [self controlPointBounds]; +} + +- (CGRect)controlPointBounds +{ + return CGPathGetBoundingBox(_path); +} + /*! Create a line segment between the first and last points in the subpath, closing it. */ @@ -272,6 +285,11 @@ var DefaultLineWidth = 1.0; CGPathAddPath(_path, nil, CGPathWithRoundedRectangleInRect(rect, xRadius, yRadius, YES, YES, YES, YES)); } +- (void)appendBezierPathWithArcFromPoint:(CGPoint)fromPoint toPoint:(CGPoint)toPoint radius:(float)radius +{ + CGPathAddArcToPoint(_path, null, fromPoint.x, fromPoint.y, toPoint.x, toPoint.y, radius); +} + /*! Append the contents of a CPBezierPath object. */ @@ -288,4 +306,21 @@ var DefaultLineWidth = 1.0; _path = CGPathCreateMutable(); } +- (void)addClip +{ + var ctx = [[CPGraphicsContext currentContext] graphicsPort]; + + CGContextAddPath(ctx, _path); + CGContextClip(ctx); +} + +- (void)setClip +{ + var ctx = [[CPGraphicsContext currentContext] graphicsPort]; + + CGContextBeginPath(ctx); + CGContextAddPath(ctx, _path); + CGContextClip(ctx); +} + @end diff --git a/AppKit/CPBox.j b/AppKit/CPBox.j index 8151b33d6..ee4b63a3f 100644 --- a/AppKit/CPBox.j +++ b/AppKit/CPBox.j @@ -322,6 +322,16 @@ CPBelowBottom = 6; [self _manageTitlePositioning]; } +- (CPFont)titleFont +{ + return [_titleView font]; +} + +- (void)setTitleFont:(CPFont)aFont +{ + [_titleView setFont:aFont]; +} + - (void)_manageTitlePositioning { if (_titlePosition == CPNoTitle) diff --git a/AppKit/CPCollectionView.j b/AppKit/CPCollectionView.j index f49631587..e1c934f4c 100644 --- a/AppKit/CPCollectionView.j +++ b/AppKit/CPCollectionView.j @@ -28,7 +28,7 @@ @import "CPView.j" @import "CPCollectionViewItem.j" - +@import "CPCompatibility.j" /*! @ingroup appkit @@ -647,9 +647,9 @@ if (index >= 0 && index < _items.length) { - if (_allowsMultipleSelection && ([anEvent modifierFlags] & CPCommandKeyMask || [anEvent modifierFlags] & CPShiftKeyMask)) + if (_allowsMultipleSelection && ([anEvent modifierFlags] & CPPlatformActionKeyMask || [anEvent modifierFlags] & CPShiftKeyMask)) { - if ([anEvent modifierFlags] & CPCommandKeyMask) + if ([anEvent modifierFlags] & CPPlatformActionKeyMask) { var indexes = [_selectionIndexes copy]; @@ -690,6 +690,10 @@ - (void)mouseDragged:(CPEvent)anEvent { + // Don't crash if we never registered the intial click. + if (!_mouseDownEvent) + return; + var locationInWindow = [anEvent locationInWindow], mouseDownLocationInWindow = [_mouseDownEvent locationInWindow]; diff --git a/AppKit/CPColor.j b/AppKit/CPColor.j index 4446e92b3..8a0ed9e02 100644 --- a/AppKit/CPColor.j +++ b/AppKit/CPColor.j @@ -611,6 +611,14 @@ function CPColorWithImages() return [[[self class] alloc] _initWithRGBA:components]; } +/*! + Returns the receiver. This method is a placeholder that does nothing but may be implemented in the future. +*/ +- (CPColor)colorUsingColorSpaceName:(id)aColorSpaceName +{ + return self; +} + /*! Returns an array with the HSB values for this color. The index values are ordered as: diff --git a/AppKit/CPFont.j b/AppKit/CPFont.j index 329a12111..6b63f6933 100644 --- a/AppKit/CPFont.j +++ b/AppKit/CPFont.j @@ -174,6 +174,21 @@ following: return _CPFontSystemFontSize; } ++ (float)systemFontSizeForControlSize:(CPControlSize)aSize +{ + // TODO These sizes should be themable or made less arbitrary in some other way. + switch (aSize) + { + case CPSmallControlSize: + return _CPFontSystemFontSize - 1; + case CPMiniControlSize: + return _CPFontSystemFontSize - 2; + case CPRegularControlSize: + default: + return _CPFontSystemFontSize; + } +} + /*! Sets the default system font size. */ diff --git a/AppKit/CPGraphics.j b/AppKit/CPGraphics.j index 494b70afe..cbf51c440 100644 --- a/AppKit/CPGraphics.j +++ b/AppKit/CPGraphics.j @@ -23,6 +23,16 @@ @import "CPColor.j" @import "CPGraphicsContext.j" +CPCalibratedWhiteColorSpace = @"CalibratedWhiteColorSpace"; +CPCalibratedBlackColorSpace = @"CalibratedBlackColorSpace"; +CPCalibratedRGBColorSpace = @"CalibratedRGBColorSpace"; +CPDeviceWhiteColorSpace = @"DeviceWhiteColorSpace"; +CPDeviceBlackColorSpace = @"DeviceBlackColorSpace"; +CPDeviceRGBColorSpace = @"DeviceRGBColorSpace"; +CPDeviceCMYKColorSpace = @"DeviceCMYKColorSpace"; +CPNamedColorSpace = @"NamedColorSpace"; +CPPatternColorSpace = @"PatternColorSpace"; +CPCustomColorSpace = @"CustomColorSpace"; function CPDrawTiledRects( /* CGRect */ boundsRect, diff --git a/AppKit/CPGraphicsContext.j b/AppKit/CPGraphicsContext.j index 741cca2d0..1299fdf0b 100644 --- a/AppKit/CPGraphicsContext.j +++ b/AppKit/CPGraphicsContext.j @@ -25,7 +25,8 @@ @import "CGContext.j" -var CPGraphicsContextCurrent = nil; +var CPGraphicsContextCurrent = nil, + CPGraphicsContextThreadStack = nil; /*! @ingroup appkit @@ -52,6 +53,28 @@ var CPGraphicsContextCurrent = nil; CPGraphicsContextCurrent = aGraphicsContext; } ++ (void)saveGraphicsState +{ + if (!CPGraphicsContextCurrent) + return; + + if (!CPGraphicsContextThreadStack) + CPGraphicsContextThreadStack = [CPMutableArray array]; + + [CPGraphicsContextThreadStack addObject:CPGraphicsContextCurrent]; + [CPGraphicsContextCurrent saveGraphicsState]; +} + ++ (void)restoreGraphicsState +{ + var lastContext = [CPGraphicsContextThreadStack lastObject]; + if (lastContext) + { + [lastContext restoreGraphicsState]; + [CPGraphicsContextThreadStack removeLastObject]; + } +} + /*! Creates a graphics context with a provided port. @param aContext the context to initialize with @@ -99,4 +122,14 @@ var CPGraphicsContextCurrent = nil; return YES; } +- (void)saveGraphicsState +{ + CGContextSaveGState(_graphicsPort); +} + +- (void)restoreGraphicsState +{ + CGContextRestoreGState(_graphicsPort); +} + @end diff --git a/AppKit/CPMenu/CPMenu.j b/AppKit/CPMenu/CPMenu.j index bdf617a8f..2d4bf62fe 100644 --- a/AppKit/CPMenu/CPMenu.j +++ b/AppKit/CPMenu/CPMenu.j @@ -976,8 +976,7 @@ var _CPMenuBarVisible = NO, for (; index < count; ++index) { - var item = _items[index], - modifierMask = [item keyEquivalentModifierMask]; + var item = _items[index]; if ([anEvent _triggersKeyEquivalent:[item keyEquivalent] withModifierMask:[item keyEquivalentModifierMask]]) { diff --git a/AppKit/CPOutlineView.j b/AppKit/CPOutlineView.j index ffddcfab1..2fdfff156 100644 --- a/AppKit/CPOutlineView.j +++ b/AppKit/CPOutlineView.j @@ -376,9 +376,8 @@ var CPOutlineViewCoalesceSelectionNotificationStateOff = 0, var previousRowCount = [self numberOfRows]; itemInfo.isExpanded = YES; - // XXX Shouldn't the items reload before the notification is sent? - [self _noteItemDidExpand:anItem]; [self reloadItem:anItem reloadChildren:YES]; + [self _noteItemDidExpand:anItem]; // Shift selection indexes below so that the same items remain selected. var rowCountDelta = [self numberOfRows] - previousRowCount; @@ -469,9 +468,8 @@ var CPOutlineViewCoalesceSelectionNotificationStateOff = 0, } itemInfo.isExpanded = NO; - // XXX Shouldn't the items reload before the notification is sent? - [self _noteItemDidCollapse:anItem]; [self reloadItem:anItem reloadChildren:YES]; + [self _noteItemDidCollapse:anItem]; // Send selection notifications only after the items have loaded so that // the new selection is consistent with the actual rows for any observers. diff --git a/AppKit/CPRuleEditor/_CPRuleEditorViewSlice.j b/AppKit/CPRuleEditor/_CPRuleEditorViewSlice.j index f0128dbcd..61f22edcd 100644 --- a/AppKit/CPRuleEditor/_CPRuleEditorViewSlice.j +++ b/AppKit/CPRuleEditor/_CPRuleEditorViewSlice.j @@ -45,7 +45,7 @@ { var context = [[CPGraphicsContext currentContext] graphicsPort], bounds = [self bounds], - maxX = CGRectGetWidth(bounds) - 2, + maxX = CGRectGetWidth(bounds), maxY = CGRectGetHeight(bounds); // Draw background @@ -63,7 +63,7 @@ // Draw Top Border CGContextBeginPath(context); - CGContextMoveToPoint(context, 1, 0); + CGContextMoveToPoint(context, 0, 0); CGContextAddLineToPoint(context, maxX, 0); CGContextClosePath(context); CGContextSetStrokeColor(context, [_ruleEditor _sliceTopBorderColor]); @@ -71,8 +71,8 @@ // Draw Bottom Border CGContextBeginPath(context); - CGContextMoveToPoint(context, 1, maxY - 0.5); - CGContextAddLineToPoint(context, maxX, maxY - 0.5); + CGContextMoveToPoint(context, 0, maxY); + CGContextAddLineToPoint(context, maxX, maxY); CGContextClosePath(context); var bottomColor = (_rowIndex == [_ruleEditor _lastRow]) ? [_ruleEditor _sliceLastBottomBorderColor] : [_ruleEditor _sliceBottomBorderColor]; CGContextSetStrokeColor(context, bottomColor); @@ -106,4 +106,4 @@ return [CPString stringWithFormat:@"<%@ %p index:%d indentation:%d>",[self className],self,[self rowIndex],[self indentation]]; } -@end \ No newline at end of file +@end diff --git a/AppKit/CPRuleEditor/_CPRuleEditorViewSliceRow.j b/AppKit/CPRuleEditor/_CPRuleEditorViewSliceRow.j index 58f0fe5ce..127785b67 100644 --- a/AppKit/CPRuleEditor/_CPRuleEditorViewSliceRow.j +++ b/AppKit/CPRuleEditor/_CPRuleEditorViewSliceRow.j @@ -121,7 +121,7 @@ var CONTROL_HEIGHT = 16., return [CPMenuItem separatorItem]; } -- (_CPRuleEditorTextField)_createStaticTextFieldWithStringValue:(CPString )text +- (_CPRuleEditorTextField)_createStaticTextFieldWithStringValue:(CPString)text { var textField = [[_CPRuleEditorTextField alloc] initWithFrame:CPMakeRect(0, 0, 200, CONTROL_HEIGHT)], refont = [_ruleEditor font], @@ -352,6 +352,15 @@ var CONTROL_HEIGHT = 16., optionFrame = _ruleOptionFrames[i]; optionFrame.origin.y = (rowHeight - CGRectGetHeight(optionFrame)) / 2 - 2; + + // small positioning fix + if ([ruleOptionView isKindOfClass:CPTextField]) + { + optionFrame.origin.y += 2; + [_ruleOptionViews[i] setValue:CGInsetMake(7, 7, 7, 8) forThemeAttribute:@"content-inset"]; + } + + if (widthChanged) { optionFrame.origin.x = optionViewOriginX; diff --git a/AppKit/CPScrollView.j b/AppKit/CPScrollView.j index 42bfddf86..15af71088 100644 --- a/AppKit/CPScrollView.j +++ b/AppKit/CPScrollView.j @@ -172,10 +172,10 @@ var CPScrollerStyleGlobal = CPScrollerStyleOverlay, scrollerWidth = [CPScroller scrollerWidth]; if (hFlag) - frameSize.height -= scrollerWidth; + frameSize.height += scrollerWidth; if (vFlag) - frameSize.width -= scrollerWidth; + frameSize.width += scrollerWidth; return frameSize; } diff --git a/AppKit/CPSearchField.j b/AppKit/CPSearchField.j index 173fbfd7b..c9f6ba148 100644 --- a/AppKit/CPSearchField.j +++ b/AppKit/CPSearchField.j @@ -501,7 +501,12 @@ var RECENT_SEARCH_PREFIX = @" "; if (_CGRectContainsPoint([self searchButtonRectForBounds:[self bounds]], point)) { if (_searchMenuTemplate == nil) - [self _sendAction:self]; + { + if ([_searchButton target] && [_searchButton action]) + [_searchButton mouseDown:anEvent]; + else + [self _sendAction:self]; + } else [self _showMenu]; } diff --git a/AppKit/CPSegmentedControl.j b/AppKit/CPSegmentedControl.j index 4a28f091f..0399cf050 100644 --- a/AppKit/CPSegmentedControl.j +++ b/AppKit/CPSegmentedControl.j @@ -366,11 +366,14 @@ CPSegmentSwitchTrackingMomentary = 2; @param aSegment the segment to enable/disable @throws CPRangeException if \c aSegment is out of bounds */ -- (void)setEnabled:(BOOL)isEnabled forSegment:(unsigned)aSegment +- (void)setEnabled:(BOOL)shouldBeEnabled forSegment:(unsigned)aSegment { - [_segments[aSegment] setEnabled:isEnabled]; + if ([_segments[aSegment] enabled] === shouldBeEnabled) + return; - if (isEnabled) + [_segments[aSegment] setEnabled:shouldBeEnabled]; + + if (shouldBeEnabled) _themeStates[aSegment] &= ~CPThemeStateDisabled; else _themeStates[aSegment] |= CPThemeStateDisabled; diff --git a/AppKit/CPTableColumn.j b/AppKit/CPTableColumn.j index b0349993d..335da30eb 100644 --- a/AppKit/CPTableColumn.j +++ b/AppKit/CPTableColumn.j @@ -494,7 +494,13 @@ CPTableColumnUserResizingMask = 1 << 1; */ - (CPSortDescriptor)sortDescriptorPrototype { - return _sortDescriptorPrototype; + if (_sortDescriptorPrototype) + return _sortDescriptorPrototype; + + var binderClass = [[self class] _binderClassForBinding:CPValueBinding], + binding = [binderClass getBinding:CPValueBinding forObject:self]; + + return [binding _defaultSortDescriptorPrototype]; } /*! @@ -570,6 +576,30 @@ CPTableColumnUserResizingMask = 1 << 1; [tableView reloadDataForRowIndexes:rowIndexes columnIndexes:columnIndexes]; } +- (CPSortDescriptor)_defaultSortDescriptorPrototype +{ + if (![self createsSortDescriptor]) + return nil; + + var keyPath = [_info objectForKey:CPObservedKeyPathKey], + dotIndex = keyPath.indexOf("."); + + if (dotIndex === CPNotFound) + return nil; + + var firstPart = keyPath.substring(0, dotIndex), + key = keyPath.substring(dotIndex + 1); + + return [CPSortDescriptor sortDescriptorWithKey:key ascending:YES]; +} + +- (BOOL)createsSortDescriptor +{ + var options = [_info objectForKey:CPOptionsKey], + optionValue = [options objectForKey:CPCreatesSortDescriptorBindingOption]; + return optionValue === nil ? YES : [optionValue boolValue]; +} + @end @implementation CPTableColumn (Bindings) diff --git a/AppKit/CPTableHeaderView.j b/AppKit/CPTableHeaderView.j index 2420a9a5f..9051de645 100644 --- a/AppKit/CPTableHeaderView.j +++ b/AppKit/CPTableHeaderView.j @@ -39,8 +39,8 @@ + (id)themeAttributes { - return [CPDictionary dictionaryWithObjects:[[CPNull null], [CPNull null], CGInsetMakeZero(), [CPNull null], [CPNull null], [CPNull null], CGSizeMakeZero()] - forKeys:[@"background-color", @"text-alignment", @"text-inset", @"text-color", @"font", @"text-shadow-color", @"text-shadow-offset"]]; + return [CPDictionary dictionaryWithObjects:[[CPNull null], CPLeftTextAlignment, CPLineBreakByTruncatingTail, CGInsetMakeZero(), [CPNull null], [CPNull null], [CPNull null], CGSizeMakeZero()] + forKeys:[@"background-color", @"text-alignment", @"line-break-mode", @"text-inset", @"text-color", @"font", @"text-shadow-color", @"text-shadow-offset"]]; } - (void)initWithFrame:(CGRect)frame @@ -78,6 +78,7 @@ [_textField setTextShadowColor:[self currentValueForThemeAttribute:@"text-shadow-color"]]; [_textField setTextShadowOffset:[self currentValueForThemeAttribute:@"text-shadow-offset"]]; [_textField setAlignment:[self currentValueForThemeAttribute:@"text-alignment"]]; + [_textField setLineBreakMode:[self currentValueForThemeAttribute:@"line-break-mode"]]; } - (void)setStringValue:(CPString)string @@ -102,7 +103,52 @@ - (void)setFont:(CPFont)aFont { - [self setValue:aFont forThemeAttribute:"font"]; + [self setValue:aFont forThemeAttribute:@"font"]; +} + +- (CPFont)font +{ + return [self currentValueForThemeAttribute:@"font"] +} + +- (void)setAlignment:(CPTextAlignment)alignment +{ + [self setValue:alignment forThemeAttribute:@"text-alignment"]; +} + +- (CPTextAlignment)alignment +{ + return [self currentValueForThemeAttribute:@"text-alignment"] +} + +- (void)setLineBreakMode:(CPLineBreakMode)mode +{ + [self setValue:mode forThemeAttribute:@"line-break-mode"]; +} + +- (CPLineBreakMode)lineBreakMode +{ + return [self currentValueForThemeAttribute:@"line-break-mode"] +} + +- (void)setTextColor:(CPColor)aColor +{ + [self setValue:aColor forThemeAttribute:@"text-color"]; +} + +- (CPColor)textColor +{ + return [self currentValueForThemeAttribute:@"text-color"] +} + +- (void)setTextShadowColor:(CPColor)aColor +{ + [self setValue:aColor forThemeAttribute:@"text-shadow-color"]; +} + +- (CPColor)textShadowColor +{ + return [self currentValueForThemeAttribute:@"text-shadow-color"] } - (void)_setIndicatorImage:(CPImage)anImage @@ -122,6 +168,10 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringValueKey", _CPTableColumnHeaderViewFontKey = @"_CPTableColumnHeaderViewFontKey", + _CPTableColumnHeaderViewTextColorKey = @"_CPTableColumnHeaderViewTextColorKey", + _CPTableColumnHeaderViewTextShadowColorKey = @"_CPTableColumnHeaderViewTextShadowColorKey", + _CPTableColumnHeaderViewAlignmentKey = @"_CPTableColumnHeaderViewAlignmentKey", + _CPTableColumnHeaderViewLineBreakModeKey = @"_CPTableColumnHeaderViewLineBreakModeKey", _CPTableColumnHeaderViewImageKey = @"_CPTableColumnHeaderViewImageKey"; @implementation _CPTableColumnHeaderView (CPCoding) @@ -134,6 +184,10 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringVal [self _setIndicatorImage:[aCoder decodeObjectForKey:_CPTableColumnHeaderViewImageKey]]; [self setStringValue:[aCoder decodeObjectForKey:_CPTableColumnHeaderViewStringValueKey]]; [self setFont:[aCoder decodeObjectForKey:_CPTableColumnHeaderViewFontKey]]; + [self setTextColor:[aCoder decodeObjectForKey:_CPTableColumnHeaderViewTextColorKey]]; + [self setTextShadowColor:[aCoder decodeObjectForKey:_CPTableColumnHeaderViewTextShadowColorKey]]; + [self setAlignment:[aCoder decodeIntForKey:_CPTableColumnHeaderViewAlignmentKey]]; + [self setLineBreakMode:[aCoder decodeIntForKey:_CPTableColumnHeaderViewLineBreakModeKey]]; } return self; @@ -145,7 +199,11 @@ var _CPTableColumnHeaderViewStringValueKey = @"_CPTableColumnHeaderViewStringVal [aCoder encodeObject:[_textField text] forKey:_CPTableColumnHeaderViewStringValueKey]; [aCoder encodeObject:[_textField image] forKey:_CPTableColumnHeaderViewImageKey]; - [aCoder encodeObject:[_textField font] forKey:_CPTableColumnHeaderViewFontKey]; + [aCoder encodeObject:[self font] forKey:_CPTableColumnHeaderViewFontKey]; + [aCoder encodeObject:[self textColor] forKey:_CPTableColumnHeaderViewTextColorKey]; + [aCoder encodeObject:[self textShadowColor] forKey:_CPTableColumnHeaderViewTextShadowColorKey]; + [aCoder encodeInt:[self alignment] forKey:_CPTableColumnHeaderViewAlignmentKey]; + [aCoder encodeInt:[self lineBreakMode] forKey:_CPTableColumnHeaderViewLineBreakModeKey]; } @end diff --git a/AppKit/CPTableView.j b/AppKit/CPTableView.j index 8d8361921..49a08a7d3 100644 --- a/AppKit/CPTableView.j +++ b/AppKit/CPTableView.j @@ -29,6 +29,7 @@ @import "CPTableColumn.j" @import "_CPCornerView.j" @import "CPScroller.j" +@import "CPCompatibility.j" CPTableViewColumnDidMoveNotification = @"CPTableViewColumnDidMoveNotification"; @@ -221,6 +222,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; SEL _doubleAction; CPInteger _clickedRow; + CPInteger _clickedColumn; unsigned _columnAutoResizingStyle; int _lastTrackedRowIndex; @@ -323,7 +325,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5; */ - (void)_init { - _lastSelectedRow = -1; + _lastSelectedRow = _clickedColumn = _clickedRow = -1; _selectedColumnIndexes = [CPIndexSet indexSet]; _selectedRowIndexes = [CPIndexSet indexSet]; @@ -541,8 +543,12 @@ NOT YET IMPLEMENTED } /* - * - clickedColumn + Returns the index of the the column the user clicked to trigger an action, or -1 if no column was clicked. */ +- (CPInteger)clickedColumn +{ + return _clickedColumn; +} /*! Returns the index of the the row the user clicked to trigger an action, or -1 if no row was clicked. @@ -2644,7 +2650,7 @@ Your delegate can implement this method to avoid subclassing the tableview to ad if (_allowsColumnSelection) { [self _noteSelectionIsChanging]; - if (modifierFlags & CPCommandKeyMask) + if (modifierFlags & CPPlatformActionKeyMask) { if ([self isColumnSelected:clickedColumn]) [self deselectColumn:clickedColumn]; @@ -2881,13 +2887,8 @@ Your delegate can implement this method to avoid subclassing the tableview to ad row = [_exposedRows indexGreaterThanIndex:row]; } - // Add the column header view - var headerFrame = [headerView frame]; - headerFrame.origin = _CGPointMakeZero(); - - var columnHeaderView = [[_CPTableColumnHeaderView alloc] initWithFrame:headerFrame]; - [columnHeaderView setStringValue:[headerView stringValue]]; - [columnHeaderView setThemeState:[headerView themeState]]; + // Add a copy of the header view. + var columnHeaderView = [CPKeyedUnarchiver unarchiveObjectWithData:[CPKeyedArchiver archivedDataWithRootObject:headerView]]; [dragView addSubview:columnHeaderView]; [dragView setBackgroundColor:[CPColor whiteColor]]; @@ -3380,12 +3381,15 @@ Your delegate can implement this method to avoid subclassing the tableview to ad rowIndex = 0, rowsCount = rowArray.length; - for (; rowIndex < rowsCount; ++rowIndex) + if (dataViewsForTableColumn) { - var row = rowArray[rowIndex], - dataView = dataViewsForTableColumn[row]; + for (; rowIndex < rowsCount; ++rowIndex) + { + var row = rowArray[rowIndex], + dataView = dataViewsForTableColumn[row]; - [dataView setFrame:[self frameOfDataViewAtColumn:column row:row]]; + [dataView setFrame:[self frameOfDataViewAtColumn:column row:row]]; + } } } } @@ -4192,7 +4196,7 @@ Your delegate can implement this method to avoid subclassing the tableview to ad _isSelectingSession = NO; var CLICK_TIME_DELTA = 1000, - columnIndex, + columnIndex = -1, column, rowIndex, shouldEdit = YES; @@ -4200,6 +4204,7 @@ Your delegate can implement this method to avoid subclassing the tableview to ad if (_implementedDataSourceMethods & CPTableViewDataSource_tableView_writeRowsWithIndexes_toPasteboard_) { rowIndex = [self rowAtPoint:aPoint]; + if (rowIndex !== -1) { if ([_draggedRowIndexes count] > 0) @@ -4221,12 +4226,15 @@ Your delegate can implement this method to avoid subclassing the tableview to ad || [self infoForBinding:@"content"])) { columnIndex = [self columnAtPoint:lastPoint]; + if (columnIndex !== -1) { column = _tableColumns[columnIndex]; + if ([column isEditable]) { rowIndex = [self rowAtPoint:aPoint]; + if (rowIndex !== -1) { if (_implementedDelegateMethods & CPTableViewDelegate_tableView_shouldEditTableColumn_row_) @@ -4246,6 +4254,7 @@ Your delegate can implement this method to avoid subclassing the tableview to ad if ([[CPApp currentEvent] clickCount] === 2 && _doubleAction) { _clickedRow = [self rowAtPoint:aPoint]; + _clickedColumn = [self columnAtPoint:lastPoint]; [self sendAction:_doubleAction to:_target]; } } @@ -4785,10 +4794,15 @@ Your delegate can implement this method to avoid subclassing the tableview to ad _contentBindingExpicitelySet = NO; } - if ([[self infoForBinding:@"selectionIndexes"] objectForKey:CPObservedObjectKey] !== destination) - [self bind:@"selectionIndexes" toObject:destination withKeyPath:@"selectionIndexes" options:nil]; + // If the content binding was set manually assume the user is taking manual control of establishing bindings. + if (!_contentBindingExpicitelySet) + { + if ([[self infoForBinding:@"selectionIndexes"] objectForKey:CPObservedObjectKey] !== destination) + [self bind:@"selectionIndexes" toObject:destination withKeyPath:@"selectionIndexes" options:nil]; - //[self bind:@"sortDescriptors" toObject:destination withKeyPath:@"sortDescriptors" options:nil]; + if ([[self infoForBinding:@"sortDescriptors"] objectForKey:CPObservedObjectKey] !== destination) + [self bind:@"sortDescriptors" toObject:destination withKeyPath:@"sortDescriptors" options:nil]; + } } - (void)bind:(CPString)aBinding toObject:(id)anObject withKeyPath:(CPString)aKeyPath options:(CPDictionary)options diff --git a/AppKit/CPToolbar.j b/AppKit/CPToolbar.j index 0b1afce9b..8c2a717e2 100644 --- a/AppKit/CPToolbar.j +++ b/AppKit/CPToolbar.j @@ -1174,6 +1174,10 @@ var LABEL_MARGIN = 2.0; - (void)setEnabled:(BOOL)shouldBeEnabled { + // Tiling is very expensive so try to avoid it. The CPToolbarItem should already be careful to not notifying about its enabled state needlessly. + if ([self isEnabled] === shouldBeEnabled) + return; + [super setEnabled:shouldBeEnabled]; if (shouldBeEnabled) diff --git a/AppKit/CPToolbarItem.j b/AppKit/CPToolbarItem.j index 47be03820..6c6478a0f 100644 --- a/AppKit/CPToolbarItem.j +++ b/AppKit/CPToolbarItem.j @@ -275,6 +275,9 @@ CPToolbarPrintItemIdentifier = @"CPToolbarPrintItem"; */ - (void)setEnabled:(BOOL)shouldBeEnabled { + if (_isEnabled === shouldBeEnabled) + return; + if ([_view respondsToSelector:@selector(setEnabled:)]) [_view setEnabled:shouldBeEnabled]; @@ -457,26 +460,49 @@ CPToolbarItemVisibilityPriorityUser if (_view) { if ([target respondsToSelector:@selector(validateToolbarItem:)]) - [self setEnabled:[target validateToolbarItem:self]]; + { + var shouldBeEnabled = [target validateToolbarItem:self]; + if (_isEnabled !== shouldBeEnabled) + [self setEnabled:shouldBeEnabled]; + } return; } if (!action) - return [self setEnabled:NO]; + { + if (_isEnabled) + return [self setEnabled:NO]; + return; + } if (target && ![target respondsToSelector:action]) - return [self setEnabled:NO]; + { + if (_isEnabled) + return [self setEnabled:NO]; + return; + } target = [CPApp targetForAction:action to:target from:self]; if (!target) - return [self setEnabled:NO]; + { + if (_isEnabled) + return [self setEnabled:NO]; + return; + } if ([target respondsToSelector:@selector(validateToolbarItem:)]) - [self setEnabled:[target validateToolbarItem:self]]; + { + var shouldBeEnabled = [target validateToolbarItem:self]; + if (_isEnabled !== shouldBeEnabled) + [self setEnabled:shouldBeEnabled]; + } else - [self setEnabled:YES]; + { + if (!_isEnabled) + [self setEnabled:YES]; + } } - (BOOL)autovalidates diff --git a/AppKit/CPView.j b/AppKit/CPView.j index 7160f092d..a1b1d42ba 100644 --- a/AppKit/CPView.j +++ b/AppKit/CPView.j @@ -98,9 +98,6 @@ var CPViewFlags = { }, CPViewHasCustomDrawRect = 1 << 0, CPViewHasCustomLayoutSubviews = 1 << 1; -var CPCurrentToolTip, - CPCurrentToolTipTimer, - CPToolTipDelay = 1.0; /*! @ingroup appkit @@ -246,8 +243,8 @@ var CPCurrentToolTip, - (void)_setupToolTipHandlers { _toolTipInstalled = NO; - _toolTipFunctionIn = function(e) { [self _fireToolTip]; } - _toolTipFunctionOut = function(e) { [self _invalidateToolTip]; }; + _toolTipFunctionIn = function(e) { [_CPToolTip scheduleToolTipForView:self]; } + _toolTipFunctionOut = function(e) { [_CPToolTip invalidateCurrentToolTipIfNeeded]; }; } + (CPSet)keyPathsForValuesAffectingFrame @@ -336,6 +333,9 @@ var CPCurrentToolTip, if (_toolTip == aToolTip) return; + if (aToolTip && ![aToolTip isKindOfClass:CPString]) + aToolTip = [aToolTip description]; + _toolTip = aToolTip; if (_toolTip) @@ -398,54 +398,6 @@ var CPCurrentToolTip, _toolTipInstalled = NO; } -/*! @ignore - Starts the tooltip timer. -*/ -- (void)_fireToolTip -{ - if (CPCurrentToolTipTimer) - { - [CPCurrentToolTipTimer invalidate]; - - if (CPCurrentToolTip) - [CPCurrentToolTip close]; - - CPCurrentToolTip = nil; - } - - if (_toolTip) - CPCurrentToolTipTimer = [CPTimer scheduledTimerWithTimeInterval:CPToolTipDelay target:self selector:@selector(_showToolTip:) userInfo:nil repeats:NO]; -} - -/*! @ignore - Stop the tooltip timer if any -*/ -- (void)_invalidateToolTip -{ - if (CPCurrentToolTipTimer) - { - [CPCurrentToolTipTimer invalidate]; - CPCurrentToolTipTimer = nil; - } - - if (CPCurrentToolTip) - { - [CPCurrentToolTip close]; - CPCurrentToolTip = nil; - } -} - -/*! @ignore - Actually shows the tooltip if any -*/ -- (void)_showToolTip:(CPTimer)aTimer -{ - if (CPCurrentToolTip) - [CPCurrentToolTip close]; - - CPCurrentToolTip = [_CPToolTip toolTipWithString:_toolTip]; -} - /*! Returns the container view of the receiver @return the receiver's containing view @@ -987,32 +939,90 @@ var CPCurrentToolTip, } else { - var images = [[_backgroundColor patternImage] imageSlices]; + var images = [[_backgroundColor patternImage] imageSlices], + partIndex = 0; if (_backgroundType === BackgroundVerticalThreePartImage) { + var top = _DOMImageSizes[0] ? _DOMImageSizes[0].height : 0, + bottom = _DOMImageSizes[2] ? _DOMImageSizes[2].height : 0; + // Make sure to repeat the top and bottom pieces horizontally if they're not the exact width needed. - CPDOMDisplayServerSetStyleSize(_DOMImageParts[0], size.width, _DOMImageSizes[0].height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[1], size.width, size.height - _DOMImageSizes[0].height - _DOMImageSizes[2].height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[2], size.width, _DOMImageSizes[2].height); + if (top) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], size.width, top); + partIndex++; + } + if (_DOMImageSizes[1]) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], size.width, size.height - top - bottom); + partIndex++; + } + if (bottom) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], size.width, bottom); + } } else if (_backgroundType === BackgroundHorizontalThreePartImage) { + var left = _DOMImageSizes[0] ? _DOMImageSizes[0].width : 0, + right = _DOMImageSizes[2] ? _DOMImageSizes[2].width : 0; + // Make sure to repeat the left and right pieces vertically if they're not the exact height needed. - CPDOMDisplayServerSetStyleSize(_DOMImageParts[0], _DOMImageSizes[0].width, size.height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[1], size.width - _DOMImageSizes[0].width - _DOMImageSizes[2].width, size.height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[2], _DOMImageSizes[2].width, size.height); + if (left) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], left, size.height); + partIndex++; + } + if (_DOMImageSizes[1]) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], size.width - left - right, size.height); + partIndex++; + } + if (right) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], right, size.height); + } } else if (_backgroundType === BackgroundNinePartImage) { - var width = size.width - _DOMImageSizes[0].width - _DOMImageSizes[2].width, - height = size.height - _DOMImageSizes[0].height - _DOMImageSizes[6].height; + var left = _DOMImageSizes[0] ? _DOMImageSizes[0].width : 0, + right = _DOMImageSizes[2] ? _DOMImageSizes[2].width : 0, + top = _DOMImageSizes[0] ? _DOMImageSizes[0].height : 0, + bottom = _DOMImageSizes[6] ? _DOMImageSizes[6].height : 0, + width = size.width - left - right, + height = size.height - top - bottom; - CPDOMDisplayServerSetStyleSize(_DOMImageParts[1], width, _DOMImageSizes[0].height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[3], _DOMImageSizes[3].width, height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[4], width, height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[5], _DOMImageSizes[5].width, height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[7], width, _DOMImageSizes[7].height); + if (_DOMImageSizes[0]) + partIndex++; + if (_DOMImageSizes[1]) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], width, top); + partIndex++; + } + if (_DOMImageSizes[2]) + partIndex++; + if (_DOMImageSizes[3]) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], _DOMImageSizes[3].width, height); + partIndex++; + } + if (_DOMImageSizes[4]) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], width, height); + partIndex++; + } + if (_DOMImageSizes[5]) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], _DOMImageSizes[5].width, height); + partIndex++; + } + if (_DOMImageSizes[6]) + partIndex++; + if (_DOMImageSizes[7]) + { + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], width, _DOMImageSizes[7].height); + } } } } @@ -1508,7 +1518,7 @@ var CPCurrentToolTip, */ - (CPView)hitTest:(CPPoint)aPoint { - if (_isHidden || !_hitTests || !CPRectContainsPoint(_frame, aPoint)) + if (_isHidden || !_hitTests || !_CGRectContainsPoint(_frame, aPoint)) return nil; var view = nil, @@ -1584,17 +1594,18 @@ var CPCurrentToolTip, colorHasAlpha = colorExists && [_backgroundColor alphaComponent] < 1.0, supportsRGBA = CPFeatureIsCompatible(CPCSSRGBAFeature), colorNeedsDOMElement = colorHasAlpha && !supportsRGBA, - amount = 0; + amount = 0, + slices; if ([patternImage isThreePartImage]) { _backgroundType = [patternImage isVertical] ? BackgroundVerticalThreePartImage : BackgroundHorizontalThreePartImage; - amount = 3 - _DOMImageParts.length; + amount = 3; } else if ([patternImage isNinePartImage]) { _backgroundType = BackgroundNinePartImage; - amount = 9 - _DOMImageParts.length; + amount = 9; } else { @@ -1602,6 +1613,34 @@ var CPCurrentToolTip, amount = (colorNeedsDOMElement ? 1 : 0) - _DOMImageParts.length; } + // Prepare multipart image data and reduce number of required DOM parts by number of empty slices in the multipart image to save needless DOM elements. + if (_backgroundType === BackgroundVerticalThreePartImage || _backgroundType === BackgroundHorizontalThreePartImage || _backgroundType === BackgroundNinePartImage) + { + slices = [patternImage imageSlices]; + + // We won't need more divs than there are slices. + amount = MIN(amount, slices.length); + + for (var i = 0, count = slices.length; i < count; i++) + { + var image = slices[i], + size = [image size]; + + if (!size || (size.width == 0 && size.height == 0)) + size = nil; + + _DOMImageSizes[i] = size; + + // If there's a nil slice or a slice with no size, it won't need a div. + if (!size) + amount--; + } + + // Now that we know how many divs we really need, compare that to number we actually have. + amount -= _DOMImageParts.length; + } + + // Make sure the number of divs we have match our needs. if (amount > 0) { while (amount--) @@ -1643,70 +1682,148 @@ var CPCurrentToolTip, } else { - var slices = [patternImage imageSlices], - count = MIN(_DOMImageParts.length, slices.length), - frameSize = _frame.size; + var frameSize = _frame.size, + partIndex = 0; - while (count--) + for (var i = 0; i < slices.length; i++) { - var image = slices[count], - size = _DOMImageSizes[count] = image ? [image size] : _CGSizeMakeZero(); + var size = _DOMImageSizes[i]; - CPDOMDisplayServerSetStyleSize(_DOMImageParts[count], size.width, size.height); + if (!size) + continue; - _DOMImageParts[count].style.background = image ? "url(\"" + [image filename] + "\")" : ""; + var image = slices[i]; + + // // If image was nil, size should have been nil too. + // assert(image != nil); + + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], size.width, size.height); + + _DOMImageParts[partIndex].style.background = "url(\"" + [image filename] + "\")"; if (!supportsRGBA) { if (CPFeatureIsCompatible(CPOpacityRequiresFilterFeature)) - try { _DOMImageParts[count].style.removeAttribute("filter") } catch (anException) { } + try { _DOMImageParts[partIndex].style.removeAttribute("filter") } catch (anException) { } else - _DOMImageParts[count].style.opacity = 1.0; + _DOMImageParts[partIndex].style.opacity = 1.0; } + + partIndex++; } if (_backgroundType == BackgroundNinePartImage) { - var width = frameSize.width - _DOMImageSizes[0].width - _DOMImageSizes[2].width, - height = frameSize.height - _DOMImageSizes[0].height - _DOMImageSizes[6].height; + var left = _DOMImageSizes[0] ? _DOMImageSizes[0].width : 0, + right = _DOMImageSizes[2] ? _DOMImageSizes[2].width : 0, + top = _DOMImageSizes[0] ? _DOMImageSizes[0].height : 0, + bottom = _DOMImageSizes[6] ? _DOMImageSizes[6].height : 0, + width = frameSize.width - left - right, + height = frameSize.height - top - bottom; - CPDOMDisplayServerSetStyleSize(_DOMImageParts[1], width, _DOMImageSizes[0].height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[3], _DOMImageSizes[3].width, height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[4], width, height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[5], _DOMImageSizes[5].width, height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[7], width, _DOMImageSizes[7].height); + partIndex = 0; - CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[0], NULL, 0.0, 0.0); - CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[1], NULL, _DOMImageSizes[0].width, 0.0); - CPDOMDisplayServerSetStyleRightTop(_DOMImageParts[2], NULL, 0.0, 0.0); - CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[3], NULL, 0.0, _DOMImageSizes[1].height); - CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[4], NULL, _DOMImageSizes[0].width, _DOMImageSizes[0].height); - CPDOMDisplayServerSetStyleRightTop(_DOMImageParts[5], NULL, 0.0, _DOMImageSizes[1].height); - CPDOMDisplayServerSetStyleLeftBottom(_DOMImageParts[6], NULL, 0.0, 0.0); - CPDOMDisplayServerSetStyleLeftBottom(_DOMImageParts[7], NULL, _DOMImageSizes[6].width, 0.0); - CPDOMDisplayServerSetStyleRightBottom(_DOMImageParts[8], NULL, 0.0, 0.0); + if (_DOMImageSizes[0]) + { + CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[partIndex], NULL, 0.0, 0.0); + partIndex++; + } + if (_DOMImageSizes[1]) + { + CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[partIndex], NULL, left, 0.0); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], width, _DOMImageSizes[1].height); + partIndex++; + } + if (_DOMImageSizes[2]) + { + CPDOMDisplayServerSetStyleRightTop(_DOMImageParts[partIndex], NULL, 0.0, 0.0); + partIndex++; + } + if (_DOMImageSizes[3]) + { + CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[partIndex], NULL, 0.0, top); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], _DOMImageSizes[3].width, height); + partIndex++; + } + if (_DOMImageSizes[4]) + { + CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[partIndex], NULL, left, top); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], width, height); + partIndex++; + } + if (_DOMImageSizes[5]) + { + CPDOMDisplayServerSetStyleRightTop(_DOMImageParts[partIndex], NULL, 0.0, top); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], _DOMImageSizes[5].width, height); + partIndex++; + } + if (_DOMImageSizes[6]) + { + CPDOMDisplayServerSetStyleLeftBottom(_DOMImageParts[partIndex], NULL, 0.0, 0.0); + partIndex++; + } + if (_DOMImageSizes[7]) + { + CPDOMDisplayServerSetStyleLeftBottom(_DOMImageParts[partIndex], NULL, left, 0.0); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], width, _DOMImageSizes[7].height); + partIndex++; + } + if (_DOMImageSizes[8]) + { + CPDOMDisplayServerSetStyleRightBottom(_DOMImageParts[partIndex], NULL, 0.0, 0.0); + } } else if (_backgroundType == BackgroundVerticalThreePartImage) { - // Make sure to repeat the top and bottom pieces horizontally if they're not the exact width needed. - CPDOMDisplayServerSetStyleSize(_DOMImageParts[0], frameSize.width, _DOMImageSizes[0].height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[1], frameSize.width, frameSize.height - _DOMImageSizes[0].height - _DOMImageSizes[2].height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[2], frameSize.width, _DOMImageSizes[2].height); + var top = _DOMImageSizes[0] ? _DOMImageSizes[0].height : 0, + bottom = _DOMImageSizes[2] ? _DOMImageSizes[2].height : 0; - CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[0], NULL, 0.0, 0.0); - CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[1], NULL, 0.0, _DOMImageSizes[0].height); - CPDOMDisplayServerSetStyleLeftBottom(_DOMImageParts[2], NULL, 0.0, 0.0); + partIndex = 0; + + // Make sure to repeat the top and bottom pieces horizontally if they're not the exact width needed. + if (top) + { + CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[partIndex], NULL, 0.0, 0.0); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], frameSize.width, top); + partIndex++; + } + if (_DOMImageSizes[1]) + { + CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[partIndex], NULL, 0.0, top); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], frameSize.width, frameSize.height - top - bottom); + partIndex++; + } + if (bottom) + { + CPDOMDisplayServerSetStyleLeftBottom(_DOMImageParts[partIndex], NULL, 0.0, 0.0); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], frameSize.width, bottom); + } } else if (_backgroundType == BackgroundHorizontalThreePartImage) { - // Make sure to repeat the left and right pieces vertically if they're not the exact height needed. - CPDOMDisplayServerSetStyleSize(_DOMImageParts[0], _DOMImageSizes[0].width, frameSize.height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[1], frameSize.width - _DOMImageSizes[0].width - _DOMImageSizes[2].width, frameSize.height); - CPDOMDisplayServerSetStyleSize(_DOMImageParts[2], _DOMImageSizes[2].width, frameSize.height); + var left = _DOMImageSizes[0] ? _DOMImageSizes[0].width : 0, + right = _DOMImageSizes[2] ? _DOMImageSizes[2].width : 0; - CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[0], NULL, 0.0, 0.0); - CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[1], NULL, _DOMImageSizes[0].width, 0.0); - CPDOMDisplayServerSetStyleRightTop(_DOMImageParts[2], NULL, 0.0, 0.0); + partIndex = 0; + + // Make sure to repeat the left and right pieces vertically if they're not the exact height needed. + if (left) + { + CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[partIndex], NULL, 0.0, 0.0); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], left, frameSize.height); + partIndex++; + } + if (_DOMImageSizes[1]) + { + CPDOMDisplayServerSetStyleLeftTop(_DOMImageParts[partIndex], NULL, left, 0.0); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], frameSize.width - left - right, frameSize.height); + partIndex++; + } + if (right) + { + CPDOMDisplayServerSetStyleRightTop(_DOMImageParts[partIndex], NULL, 0.0, 0.0); + CPDOMDisplayServerSetStyleSize(_DOMImageParts[partIndex], right, frameSize.height); + } } } #endif @@ -2907,6 +3024,7 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask", [self _setupToolTipHandlers]; _toolTip = [aCoder decodeObjectForKey:CPViewToolTipKey]; + if (_toolTip) [self _installToolTipEventHandlers]; @@ -3143,5 +3261,3 @@ var _CPViewGetTransform = function(/*CPView*/ fromView, /*CPView */ toView) return transform; }; - - diff --git a/AppKit/CPWebView.j b/AppKit/CPWebView.j index 020f695ac..57717d744 100644 --- a/AppKit/CPWebView.j +++ b/AppKit/CPWebView.j @@ -1032,6 +1032,11 @@ CPWebViewAppKitScrollMaxPollCount = 3; var documentURL = [CPURL URLWithString:window.location.href]; if ([documentURL isFileURL] && CPFeatureIsCompatible(CPSOPDisabledFromFileURLs)) return YES; + + // Relative URLs always pass the SOP. + if (![self scheme] && ![self host] && ![self port]) + return YES; + return ([documentURL scheme] == [self scheme] && [documentURL host] == [self host] && [documentURL port] == [self port]); } diff --git a/AppKit/CPWindow/CPWindow.j b/AppKit/CPWindow/CPWindow.j index 7e46c28e0..9fa4ffd69 100644 --- a/AppKit/CPWindow/CPWindow.j +++ b/AppKit/CPWindow/CPWindow.j @@ -287,6 +287,9 @@ var CPWindowActionMessageKeys = [ unsigned _shadowStyle; BOOL _showsResizeIndicator; + int _positioningMask; + CGRect _positioningScreenRect; + BOOL _isDocumentEdited; BOOL _isDocumentSaving; @@ -535,6 +538,49 @@ CPTexturedBackgroundWindowMask // set up a default key view loop. if (_keyViewLoopIsDirty && ![self autorecalculatesKeyViewLoop]) [self recalculateKeyViewLoop]; + + // At this time we know the final screen (or browser) size and can apply the positioning mask, if any, from the nib. + if (_positioningScreenRect) + { + var actualScreenRect = [CPPlatform isBrowser] ? [_platformWindow contentBounds] : [[self screen] visibleFrame], + frame = [self frame], + origin = frame.origin; + + if (actualScreenRect) + { + if ((_positioningMask & CPWindowPositionFlexibleLeft) && (_positioningMask & CPWindowPositionFlexibleRight)) + { + // Proportional Horizontal. + origin.x *= (actualScreenRect.size.width / _positioningScreenRect.size.width); + } + else if (_positioningMask & CPWindowPositionFlexibleLeft) + { + // Fixed from Right + origin.x += actualScreenRect.size.width - _positioningScreenRect.size.width; + } + else if (_positioningMask & CPWindowPositionFlexibleRight) + { + // Fixed from Left + } + + if ((_positioningMask & CPWindowPositionFlexibleTop) && (_positioningMask & CPWindowPositionFlexibleBottom)) + { + // Proportional Vertical. + origin.y *= (actualScreenRect.size.height / _positioningScreenRect.size.height); + } + else if (_positioningMask & CPWindowPositionFlexibleTop) + { + // Fixed from Bottom + origin.y += actualScreenRect.size.height - _positioningScreenRect.size.height; + } + else if (_positioningMask & CPWindowPositionFlexibleBottom) + { + // Fixed from Top + } + + [self setFrameOrigin:origin]; + } + } } - (void)_setWindowView:(CPView)aWindowView diff --git a/AppKit/Cib/_CPCibWindowTemplate.j b/AppKit/Cib/_CPCibWindowTemplate.j index 9ea2b4096..408324b91 100644 --- a/AppKit/Cib/_CPCibWindowTemplate.j +++ b/AppKit/Cib/_CPCibWindowTemplate.j @@ -4,29 +4,20 @@ @import "CGGeometry.j" @import "CPWindow.j" +CPWindowPositionFlexibleRight = 1 << 19; +CPWindowPositionFlexibleLeft = 1 << 20; +CPWindowPositionFlexibleBottom = 1 << 21; +CPWindowPositionFlexibleTop = 1 << 22; -var _CPCibWindowTemplateMinSizeKey = @"_CPCibWindowTemplateMinSizeKey", - _CPCibWindowTemplateMaxSizeKey = @"_CPCibWindowTemplateMaxSizeKey", - - _CPCibWindowTemplateViewClassKey = @"_CPCibWindowTemplateViewClassKey", - _CPCibWindowTemplateWindowClassKey = @"_CPCibWindowTemplateWindowClassKey", - - _CPCibWindowTemplateWindowRectKey = @"_CPCibWindowTemplateWindowRectKey", - _CPCibWindowTemplateWindowStyleMaskKey = @"_CPCibWindowTempatStyleMaskKey", - _CPCibWindowTemplateWindowTitleKey = @"_CPCibWindowTemplateWindowTitleKey", - _CPCibWindowTemplateWindowViewKey = @"_CPCibWindowTemplateWindowViewKey", - - _CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop = @"_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop", - _CPCibWindowTemplateWindowIsFullPlatformWindowKey = @"_CPCibWindowTemplateWindowIsFullPlatformWindowKey"; @implementation _CPCibWindowTemplate : CPObject { CGSize _minSize; CGSize _maxSize; - //CGSize _screenRect; + CGRect _screenRect; id _viewClass; - //unsigned _wtFlags; + unsigned _wtFlags; CPString _windowClass; CGRect _windowRect; unsigned _windowStyleMask; @@ -52,67 +43,18 @@ var _CPCibWindowTemplateMinSizeKey = @"_CPCibWindowTemp _windowView = [[CPView alloc] initWithFrame:CGRectMake(0.0, 0.0, 400.0, 200.0)]; _windowIsFullPlatformWindow = NO; + + _wtFlags = CPPositionProportionalHorizontal | CPPositionProportionalVertical; } return self; } -- (id)initWithCoder:(CPCoder)aCoder -{ - self = [super init]; - - if (self) - { - if ([aCoder containsValueForKey:_CPCibWindowTemplateMinSizeKey]) - _minSize = [aCoder decodeSizeForKey:_CPCibWindowTemplateMinSizeKey]; - if ([aCoder containsValueForKey:_CPCibWindowTemplateMaxSizeKey]) - _maxSize = [aCoder decodeSizeForKey:_CPCibWindowTemplateMaxSizeKey]; - - _viewClass = [aCoder decodeObjectForKey:_CPCibWindowTemplateViewClassKey]; - - _windowClass = [aCoder decodeObjectForKey:_CPCibWindowTemplateWindowClassKey]; - _windowRect = [aCoder decodeRectForKey:_CPCibWindowTemplateWindowRectKey]; - _windowStyleMask = [aCoder decodeIntForKey:_CPCibWindowTemplateWindowStyleMaskKey]; - - _windowTitle = [aCoder decodeObjectForKey:_CPCibWindowTemplateWindowTitleKey]; - _windowView = [aCoder decodeObjectForKey:_CPCibWindowTemplateWindowViewKey]; - - _windowAutorecalculatesKeyViewLoop = [aCoder decodeBoolForKey:_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop]; - _windowIsFullPlatformWindow = [aCoder decodeBoolForKey:_CPCibWindowTemplateWindowIsFullPlatformWindowKey]; - } - - return self; -} - -- (void)encodeWithCoder:(CPCoder)aCoder -{ - if (_minSize) - [aCoder encodeSize:_minSize forKey:_CPCibWindowTemplateMinSizeKey]; - if (_maxSize) - [aCoder encodeSize:_maxSize forKey:_CPCibWindowTemplateMaxSizeKey]; - - [aCoder encodeObject:_viewClass forKey:_CPCibWindowTemplateViewClassKey]; - - [aCoder encodeObject:_windowClass forKey:_CPCibWindowTemplateWindowClassKey]; - [aCoder encodeRect:_windowRect forKey:_CPCibWindowTemplateWindowRectKey]; - [aCoder encodeInt:_windowStyleMask forKey:_CPCibWindowTemplateWindowStyleMaskKey]; - - [aCoder encodeObject:_windowTitle forKey:_CPCibWindowTemplateWindowTitleKey]; - [aCoder encodeObject:_windowView forKey:_CPCibWindowTemplateWindowViewKey]; - - if (_windowAutorecalculatesKeyViewLoop) - [aCoder encodeObject:_windowAutorecalculatesKeyViewLoop forKey:_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop]; - - if (_windowIsFullPlatformWindow) - [aCoder encodeObject:_windowIsFullPlatformWindow forKey:_CPCibWindowTemplateWindowIsFullPlatformWindowKey]; -} - - (CPString)customClassName { return _windowClass; } - - (void)setCustomClassName:(CPString)aClassName { _windowClass = aClassName; @@ -155,7 +97,85 @@ var _CPCibWindowTemplateMinSizeKey = @"_CPCibWindowTemp [theWindow setAutorecalculatesKeyViewLoop:_windowAutorecalculatesKeyViewLoop]; [theWindow setFullBridge:_windowIsFullPlatformWindow]; + theWindow._positioningMask = _wtFlags; + theWindow._positioningScreenRect = _screenRect; + return theWindow; } @end + +var _CPCibWindowTemplateMinSizeKey = @"_CPCibWindowTemplateMinSizeKey", + _CPCibWindowTemplateMaxSizeKey = @"_CPCibWindowTemplateMaxSizeKey", + + _CPCibWindowTemplateViewClassKey = @"_CPCibWindowTemplateViewClassKey", + _CPCibWindowTemplateWTFlagsKey = @"_CPCibWindowTemplateWTFlagsKey", + _CPCibWindowTemplateWindowClassKey = @"_CPCibWindowTemplateWindowClassKey", + + _CPCibWindowTemplateWindowRectKey = @"_CPCibWindowTemplateWindowRectKey", + _CPCibWindowTemplateScreenRectKey = @"_CPCibWindowTemplateScreenRectKey", + _CPCibWindowTemplateWindowStyleMaskKey = @"_CPCibWindowTempatStyleMaskKey", + _CPCibWindowTemplateWindowTitleKey = @"_CPCibWindowTemplateWindowTitleKey", + _CPCibWindowTemplateWindowViewKey = @"_CPCibWindowTemplateWindowViewKey", + + _CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop = @"_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop", + _CPCibWindowTemplateWindowIsFullPlatformWindowKey = @"_CPCibWindowTemplateWindowIsFullPlatformWindowKey"; + +@implementation _CPCibWindowTemplate (Coding) + +- (id)initWithCoder:(CPCoder)aCoder +{ + self = [super init]; + + if (self) + { + if ([aCoder containsValueForKey:_CPCibWindowTemplateMinSizeKey]) + _minSize = [aCoder decodeSizeForKey:_CPCibWindowTemplateMinSizeKey]; + if ([aCoder containsValueForKey:_CPCibWindowTemplateMaxSizeKey]) + _maxSize = [aCoder decodeSizeForKey:_CPCibWindowTemplateMaxSizeKey]; + + _viewClass = [aCoder decodeObjectForKey:_CPCibWindowTemplateViewClassKey]; + + _windowClass = [aCoder decodeObjectForKey:_CPCibWindowTemplateWindowClassKey]; + _wtFlags = [aCoder decodeIntForKey:_CPCibWindowTemplateWTFlagsKey]; + _windowRect = [aCoder decodeRectForKey:_CPCibWindowTemplateWindowRectKey]; + _screenRect = [aCoder decodeRectForKey:_CPCibWindowTemplateScreenRectKey]; + _windowStyleMask = [aCoder decodeIntForKey:_CPCibWindowTemplateWindowStyleMaskKey]; + + _windowTitle = [aCoder decodeObjectForKey:_CPCibWindowTemplateWindowTitleKey]; + _windowView = [aCoder decodeObjectForKey:_CPCibWindowTemplateWindowViewKey]; + + _windowAutorecalculatesKeyViewLoop = [aCoder decodeBoolForKey:_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop]; + _windowIsFullPlatformWindow = [aCoder decodeBoolForKey:_CPCibWindowTemplateWindowIsFullPlatformWindowKey]; + } + + return self; +} + +- (void)encodeWithCoder:(CPCoder)aCoder +{ + if (_minSize) + [aCoder encodeSize:_minSize forKey:_CPCibWindowTemplateMinSizeKey]; + if (_maxSize) + [aCoder encodeSize:_maxSize forKey:_CPCibWindowTemplateMaxSizeKey]; + + [aCoder encodeObject:_viewClass forKey:_CPCibWindowTemplateViewClassKey]; + + [aCoder encodeObject:_windowClass forKey:_CPCibWindowTemplateWindowClassKey]; + [aCoder encodeInt:_wtFlags forKey:_CPCibWindowTemplateWTFlagsKey]; + [aCoder encodeRect:_windowRect forKey:_CPCibWindowTemplateWindowRectKey]; + [aCoder encodeRect:_screenRect forKey:_CPCibWindowTemplateScreenRectKey]; + [aCoder encodeInt:_windowStyleMask forKey:_CPCibWindowTemplateWindowStyleMaskKey]; + + [aCoder encodeObject:_windowTitle forKey:_CPCibWindowTemplateWindowTitleKey]; + [aCoder encodeObject:_windowView forKey:_CPCibWindowTemplateWindowViewKey]; + + if (_windowAutorecalculatesKeyViewLoop) + [aCoder encodeObject:_windowAutorecalculatesKeyViewLoop forKey:_CPCibWindowTemplateWindowAutorecalculatesKeyViewLoop]; + + if (_windowIsFullPlatformWindow) + [aCoder encodeObject:_windowIsFullPlatformWindow forKey:_CPCibWindowTemplateWindowIsFullPlatformWindowKey]; +} + +@end + diff --git a/AppKit/CoreGraphics/CGContext.j b/AppKit/CoreGraphics/CGContext.j index a67d7b200..883ef2241 100644 --- a/AppKit/CoreGraphics/CGContext.j +++ b/AppKit/CoreGraphics/CGContext.j @@ -321,6 +321,16 @@ function CGContextClosePath(aContext) CGPathCloseSubpath(aContext.path); } +/*! + Return YES if the current path in the given context is empty. + @param aContext the CGContext to examine + @return BOOL +*/ +function CGContextIsPathEmpty(aContext) +{ + return (!aContext.path || CGPathIsEmpty(aContext.path)); +} + /*! Moves the current location of aContext to the given x and y coordinates @param aContext the CGContext to move diff --git a/AppKit/CoreGraphics/CGContextCanvas.j b/AppKit/CoreGraphics/CGContextCanvas.j index 5660c9cc3..65deeb0cc 100644 --- a/AppKit/CoreGraphics/CGContextCanvas.j +++ b/AppKit/CoreGraphics/CGContextCanvas.j @@ -129,7 +129,7 @@ function CGContextAddPath(aContext, aPath) break; case kCGPathElementAddArc: _CGContextAddArcCanvas(aContext, element.x, element.y, element.radius, element.startAngle, element.endAngle, element.clockwise); break; - case kCGPathElementAddArcTo: //_CGContextAddArcToPointCanvas(aContext, element.cp1x, element.cp1.y, element.cp2.x, element.cp2y, element.radius); + case kCGPathElementAddArcToPoint: _CGContextAddArcToPointCanvas(aContext, element.p1x, element.p1y, element.p2x, element.p2y, element.radius); break; } } diff --git a/AppKit/CoreGraphics/CGContextVML.j b/AppKit/CoreGraphics/CGContextVML.j index e3b09caf9..66d17d89f 100644 --- a/AppKit/CoreGraphics/CGContextVML.j +++ b/AppKit/CoreGraphics/CGContextVML.j @@ -215,7 +215,7 @@ function CGContextDrawPath(aContext, aMode) COORD(start.x), ',', COORD(start.y), " ", COORD(end.x), ',', COORD(end.y)); break; - case kCGPathElementAddArcTo: break; + case kCGPathElementAddArcToPoint: break; } // TODO: Following is broken for curves due to @@ -332,4 +332,4 @@ function CGContextDrawLinearGradient(aContext, aGradient, aStartPoint, anEndPoin // aContext.buffer += vml.join(""); // else // aContext.DOMElement.innerHTML = vml.join(""); -} \ No newline at end of file +} diff --git a/AppKit/CoreGraphics/CGPath.j b/AppKit/CoreGraphics/CGPath.j index bc0fe4c2f..9db475c66 100644 --- a/AppKit/CoreGraphics/CGPath.j +++ b/AppKit/CoreGraphics/CGPath.j @@ -118,6 +118,17 @@ function CGPathAddArc(aPath, aTransform, x, y, aRadius, aStartAngle, anEndAngle, function CGPathAddArcToPoint(aPath, aTransform, x1, y1, x2, y2, aRadius) { + var p1 = _CGPointMake(x1, y1), + p2 = _CGPointMake(x2, y2); + + if (aTransform) + { + p1 = _CGPointApplyAffineTransform(p1, aTransform); + p2 = _CGPointApplyAffineTransform(p2, aTransform); + } + + aPath.current = p2; + aPath.elements[aPath.count++] = { type:kCGPathElementAddArcToPoint, p1x:p1.x, p1y:p1.y, p2x:p2.x, p2y:p2.y, radius:aRadius }; } function CGPathAddCurveToPoint(aPath, aTransform, cp1x, cp1y, cp2x, cp2y, x, y) @@ -186,6 +197,12 @@ function CGPathAddPath(aPath, aTransform, anotherPath) element.endAngle, element.isClockwise); break; + case kCGPathElementAddArcToPoint: CGPathAddArcToPoint(aPath, aTransform, + element.p1x, element.p1y, + element.p2x, element.p2y, + element.radius); + break; + case kCGPathElementAddQuadCurveToPoint: CGPathAddQuadCurveToPoint(aPath, aTransform, element.cpx, element.cpy, element.x, element.y); @@ -389,6 +406,108 @@ function CGPathIsEmpty(aPath) return !aPath || aPath.count == 0; } +/*! + Calculate the smallest rectangle to contain both the path of the receiver and all control points. +*/ +function CGPathGetBoundingBox(aPath) +{ + if (!aPath || !aPath.count) + return _CGRectMakeZero(); + + var ox = 0, + oy = 0, + rx = 0, + ry = 0, + movePoint = nil; + + function addPoint(x, y) + { + ox = MIN(ox, x); + oy = MIN(oy, y); + rx = MAX(rx, x); + ry = MAX(ry, y); + } + + for (var i = 0, count = aPath.count; i < count; ++i) + { + var element = aPath.elements[i]; + + // Just enclose all the control points. The curves must be inside of the control points. + // This won't work for CGPathGetPathBoundingBox. + switch (element.type) + { + case kCGPathElementAddLineToPoint: + if (movePoint) + { + addPoint(movePoint.x, movePoint.y); + movePoint = nil; + } + + addPoint(element.x, element.y); + break; + + case kCGPathElementAddCurveToPoint: + if (movePoint) + { + addPoint(movePoint.x, movePoint.y); + movePoint = nil; + } + + addPoint(element.cp1x, element.cp1y); + addPoint(element.cp2x, element.cp2y); + addPoint(element.x, element.y); + break; + + case kCGPathElementAddArc: + if (movePoint) + { + addPoint(movePoint.x, movePoint.y); + movePoint = nil; + } + + addPoint(element.x, element.y); + break; + + case kCGPathElementAddArcToPoint: + if (movePoint) + { + addPoint(movePoint.x, movePoint.y); + movePoint = nil; + } + + addPoint(element.p1x, element.p1y); + addPoint(element.p2x, element.p2y); + break; + + case kCGPathElementAddQuadCurveToPoint: + if (movePoint) + { + addPoint(movePoint.x, movePoint.y); + movePoint = nil; + } + + addPoint(element.cpx, element.cpy); + addPoint(element.x, element.y); + break; + + case kCGPathElementMoveToPoint: + movePoint = _CGPointMake(element.x, element.y); + break; + + case kCGPathElementCloseSubpath: + if (movePoint) + { + addPoint(movePoint.x, movePoint.y); + movePoint = nil; + } + + break; + } + } + + return _CGRectMake(ox, oy, rx - ox, ry - oy); +} + /*! @} */ diff --git a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j index bdab72a10..77494eb2c 100644 --- a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j +++ b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j @@ -113,14 +113,12 @@ @import "CPEvent.j" @import "CPText.j" @import "CPCompatibility.j" - @import "CPDOMWindowLayer.j" @import "CPPlatform.j" @import "CPPlatformWindow.j" @import "CPPlatformWindow+DOMKeys.j" - // List of all open native windows var PlatformWindows = [CPSet set]; @@ -1242,6 +1240,10 @@ var resizeTimer = nil; else if (type === "mousedown") { + // If we receive a click event, then we invalidate any scheduled + // or visible tooltips + [_CPToolTip invalidateCurrentToolTipIfNeeded]; + var button = aDOMEvent.button; _mouseDownIsRightClick = button == 2 || (CPBrowserIsOperatingSystem(CPMacOperatingSystem) && button == 0 && modifierFlags & CPControlKeyMask); @@ -1601,7 +1603,7 @@ var _CPEventFromNativeMouseEvent = function(aNativeEvent, anEventType, aPoint, m }; var CLICK_SPACE_DELTA = 5.0, - CLICK_TIME_DELTA = (typeof document != "undefined" && document.addEventListener) ? 350.0 : 1000.0; + CLICK_TIME_DELTA = (typeof document != "undefined" && document.addEventListener) ? 0.55 : 1.0; var CPDOMEventGetClickCount = function(aComparisonEvent, aTimestamp, aLocation) { diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-center.png index 9f6eb024f..f77a72971 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-center.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-left.png index d26b98bc0..7a3460d1e 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-left.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-right.png index 9a6a3b92d..8699666f1 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-right.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-down-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-center.png index 84dccac61..4be4e4e23 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-center.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-left.png index 5905f74f0..c89d0dd35 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-left.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-right.png index 2c2a7a64f..713876e20 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-right.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-disabled-up-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-center.png index 4b450ed81..29f45bca5 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-center.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-left.png index 34ef68ee9..9d9416686 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-left.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-right.png index 76d28a271..ab8e8a71f 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-right.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-down-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-center.png index 591a0e4f1..af6cd7a19 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-center.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-left.png index c090f5762..9fca8e81e 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-left.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-right.png index 7fd6db716..6d537c46f 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-right.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-down-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-center.png index 3e66486b6..66b733398 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-center.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-left.png index 5962a2299..c122be142 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-left.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-right.png index 5adfec42c..140392021 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-right.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-highlighted-up-right.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-center.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-center.png index b022dfe9f..95ba0cfb7 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-center.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-center.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-left.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-left.png index 6ab25ca19..f82cd40c5 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-left.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-left.png differ diff --git a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-right.png b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-right.png index d9630e755..a30db38ac 100644 Binary files a/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-right.png and b/AppKit/Themes/Aristo/Resources/stepper-bezel-big-up-right.png differ diff --git a/AppKit/Themes/Aristo/ThemeDescriptors.j b/AppKit/Themes/Aristo/ThemeDescriptors.j index d5f368fbc..ab6038066 100755 --- a/AppKit/Themes/Aristo/ThemeDescriptors.j +++ b/AppKit/Themes/Aristo/ThemeDescriptors.j @@ -1678,6 +1678,7 @@ var themedButtonValues = nil, [@"text-shadow-color", [CPColor whiteColor]], [@"text-shadow-offset", CGSizeMake(0.0, 1.0)], [@"text-alignment", CPLeftTextAlignment], + [@"line-break-mode", CPLineBreakByTruncatingTail], [@"background-color", pressed, CPThemeStateHighlighted], [@"background-color", highlighted, CPThemeStateSelected], diff --git a/AppKit/_CPToolTip.j b/AppKit/_CPToolTip.j index db37f34e3..c67bf4b4c 100644 --- a/AppKit/_CPToolTip.j +++ b/AppKit/_CPToolTip.j @@ -27,7 +27,10 @@ _CPToolTipWindowMask = 1 << 27; var _CPToolTipHeight = 24.0, - _CPToolTipFontSize = 11.0; + _CPToolTipFontSize = 11.0, + _CPToolTipDelay = 1.0, + _CPToolTipCurrentToolTip, + _CPToolTipCurrentToolTipTimer; /*! @ingroup appkit This is a basic tooltip that behaves mostly like Cocoa ones. @@ -41,6 +44,46 @@ var _CPToolTipHeight = 24.0, #pragma mark - #pragma mark Class Methods +/*! @ignore + Invalidate any scheduled tooltips, or hide any visible one +*/ ++ (void)invalidateCurrentToolTipIfNeeded +{ + if (_CPToolTipCurrentToolTipTimer) + { + [_CPToolTipCurrentToolTipTimer invalidate]; + _CPToolTipCurrentToolTipTimer = nil; + } + + if (_CPToolTipCurrentToolTip) + { + [_CPToolTipCurrentToolTip close]; + _CPToolTipCurrentToolTip = nil; + } +} + +/*! @ignore + Schedule a tooltip for the given view + @param aView the view that might display the tooltip +*/ ++ (void)scheduleToolTipForView:(CPView)aView +{ + if (![aView toolTip] || ![[aView toolTip] length]) + return; + + [_CPToolTip invalidateCurrentToolTipIfNeeded]; + + var callbackFunction = function() { + [_CPToolTip invalidateCurrentToolTipIfNeeded]; + _CPToolTipCurrentToolTip = [_CPToolTip toolTipWithString:[aView toolTip]]; + }; + + _CPToolTipCurrentToolTipTimer = [CPTimer scheduledTimerWithTimeInterval:_CPToolTipDelay + callback:callbackFunction + repeats:NO]; +} + + /*! Returns an initialized _CPToolTip with the given text and attach it to given view. @param aString the content of the tooltip */ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..b78b2f6c5 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,480 @@ +Contributing +------------ + +As an open source project, your contributions are important to the future of Cappuccino. Whether you're looking to write code, add new documentation, or just report a bug, you'll be helping everyone who uses Cappuccino in the future. + +## Reporting Bugs + +We use [GitHub to track issues](https://github.com/cappuccino/cappuccino/issues). You might be interested in our [issue life cycle](http://www.cappuccino-project.org/community/contribute/the-issue-lifecycle/) which explains the process of how an issue is taken from new to resolved. + +## Patches + +To contribute a patch or a fix, fork Cappuccino and then clone your fork and make the changes to a branch of your fork: + + git clone https://github.com//cappuccino.git + git checkout -b descriptive-branch-name master + + # Check that the unit tests work. + jake test + + # Make changes. Make sure you follow the coding style guidelines and write unit tests. + + # Check that everything is still working, then commit. + jake test + git commit + + git push origin descriptive-branch-name + +Now you can go to GitHub and [make a pull request](https://help.github.com/articles/using-pull-requests). + +Some things are difficult to unit test in a way that's worthwhile. For instance a change to the mouse interaction of a `CPButton`. In this case a manual test is fine instead. Find the closest related manual test in `Tests/Manual` and add whatever it takes to easily reproduce the patched behavior, ideally with some labels describing how someone running the manual test should exercise it. + +## Cappuccino Coding Style Guidelines + +### Trailing whitespace +Leave no trailing spaces or tabs at the end of a line (`trailing whitespace`), even if the line is empty and in an otherwise indented block. + +### Indentation + +Use spaces, not tabs. Tabs should only appear in files that require them for semantic meaning, like Makefiles (which there are currently none of). The indent size is 4 spaces. + +##### Right: + + function main() + { + return 0; + } + +##### Wrong: + + function main() + { + return 0; + } + +--- + +A case label should be indented once from its switch statement. The case statement is indented out from the longest label. + +##### Right: + + switch (condition) + { + case fooCondition: + case barCondition: i++; + break; + + default: i--; + } + +##### Wrong: + + switch (condition) { + case fooCondition: + case barCondition: + i++; + break; + default: + i--; + } + +### Spacing + +Do not place spaces around unary operators. + +##### Right: + + i++ + +##### Wrong: + + i ++ + +--- + +Do place spaces around binary and ternary operators. + +##### Right: + + y = m * x + b; + f(a, b); + c = a | b; + return condition ? 1 : 0; + +##### Wrong: + + y=m*x+b; + f(a,b); + c = a|b; + return condition ? 1:0; + +--- + +Place spaces between control statements and their parentheses. + +##### Right: + + if (condition) + doIt(); + +##### Wrong: + + if(condition) + doIt(); + +--- + +Do not place spaces between a function and its parentheses, or between a parenthesis and its content. + +##### Right: + + f(a, b); + +##### Wrong: + + f (a, b); + f( a, b ); + +--- + +Do not place spaces between the return type of an Objective-J method and the selector name. DO place spaces between the method type and the method return type. + +##### Right: + + - (void)method; + +##### Wrong: + + - (void) method; + -(void)method; + +--- + +Do not place spaces between Objective-J selectors and arguments. + +##### Right: + + [myNumber addNumber:5] + +##### Wrong: + + [myNumber addNumber: 5] + +### Line breaking + +Each statement should get its own line. + +##### Right: + + var x, + y; + x++; + y++; + if (condition) + doIt(); + +##### Wrong: + + var x, y; + x++; y++; + if (condition) doIt(); + +### Braces + +Every brace gets its own line, very simple to remember: + +##### Right: + + int main() + { + //... + } + + if (condition) + { + //... + } + else if (condition) + { + //... + } + + @implementation MyObject : CPObject + { + } + + @end + +##### Wrong: + + int main() { + ... + } + + if (condition) { + ... + } else if (condition) { + ... + } + + @implementation MyObject : CPObject {} + @end + +### Null, false and 0 + +In JavaScript, the null object value should be written as null. In Objective-J, it should be written as `nil` when the variable refers to an object, and `Nil` when it refers to a `Class`. Objective-J `BOOL` values should be written as `YES` and `NO`. + +Tests for `true/false`, `null/non-null`, and zero/non-zero should all be done without equality comparisons, except for cases when a value could be both 0 or `null` (or another "falsey" value). In this case, the comparison should be preceded by a comment explaining the distinction. + +##### Right: + + if (condition) + doIt(); + + if (!ptr) + return; + + if (!count) + return; + + // object is an ID number, so 0 is OK, but null is not. + if (object === null) + return; + +##### Wrong: + + if (condition == true) + doIt(); + + if (ptr == NULL) + return; + + if (count == 0) + return; + + if (object == null) + return; + +--- + +In Objective-J, instance variables are initialized to `nil` automatically. Don't add explicit initializations to `nil` or `NO` in an init method. + +### Names + +Use CamelCase. Capitalize the first letter of a class. Lower-case the first letter of a variable or function name. Fully capitalize acronyms. + +##### Right: + + @implementation Data : //... + @implementation HTMLDocument : //... + +##### Wrong: + + @implementation data : //... + @implementation HtmlDocument : //... + +--- + +Multiple var declarations should be collapsed with commas. + +##### Right: + + var index = 0, + count = 5; + +##### Wrong: + + var index = 0; + var count = 5; + +--- + +Variable declarations should be created as needed, rather than up front ("hoisted"). + +##### Right: + + - (BOOL)doSomething:(id)aFoo + { + var importantVariable = [aFoo message]; + if (!importantVariable) + return; + + var index = [aFoo count]; + while (index--) + { + var innerVariable = [aFoo objectAtIndex:index]; + //do something; + } + } + +##### Wrong: + + - (BOOL)doSomething:(id)aFoo + { + var importantVariable = [aFoo message], + index = [aFoo count], + innerVariable; + + if (!importantVariable) + return; + + while (index--) + { + innerVariable = [aFoo objectAtIndex:index]; + //do something; + } + } + +--- + +Use full words, except in the rare case where an abbreviation would be more canonical and easier to understand. + +##### Right: + + var characterSize, + length, + tabIndex; // more canonical + +##### Wrong: + + var charSize, + len, + tabulationIndex; // bizarre + +--- + +Prefix Objective-J instance variables with `_`, but only when writing code for the Cappuccino frameworks. User level (application) code should not prefix variables with `_`. This prevents conflicts between the two scopes. + +##### Right: + + @implementation CPString + { + unsigned _length; + } + @end + +##### Wrong: + + @implementation CPString + { + unsigned length; + } + @end + +--- + +Precede boolean values with words like "is" and "did". + +##### Right: + + var isValid; + var didSendData; + - (BOOL)isEditable; + - (BOOL)didReceiveResponse; + +##### Wrong: + + var valid; + var sentData; + - (BOOL)editable; + - (BOOL)receivedResponse; + +--- + +Precede setters with the word "set". Use bare words for getters. Setter and getter names should match the names of the variables being set/gotten. + +##### Right: + + - (void)setCount:(unsigned)aCount; // sets _count + - (unsigned)count; // returns _count + +##### Wrong: + + - (unsigned)getCount; + +--- + +Use descriptive verbs in function names, and place desired types in comments. + +##### Right: + + function convertToASCII(/*String*/ aString) + +##### Wrong: + + function toASCII(str) + +--- + +Use descriptive parameter names that are not abbreviated. + +##### Right: + + - (void)convertString:(CPString)aString toFormat:(Format)aFormat; + - (void)appendSubviews:(CPArray)subviews inOrder:(BOOL)shouldBeInOrder; + +##### Wrong: + + - (void)convertString:(CPString)str toFormat:(Format)f; + - (void)appendSubviews:(CPArray)s inOrder:(BOOL)flag; + +--- + +Use descriptive parameter types, despite not being fully supported in JavaScript. At some point we will be adding optional static typing, and even until then this serves as a much better indicator of what the method expects. Of course, if the method can truly take any input or return any output, it is perfectly acceptable to use `id`, `CPObject`, or `var`. + +##### Right: + + - (char)characterAtIndex:(unsigned)anIndex; + - (void)insertObject:(id)anObject; + +##### Wrong: + + - (String)characterAtIndex:(var)index; + +--- + +Objective-J method names should follow the Cocoa naming guidelines — they should read like a phrase and each piece of the selector should start with a lowercase letter and use intercaps. + +Enum members should user InterCaps with an initial capital letter. + +`#defined` constants should use all uppercase names with words separated by underscores. + +Macros that expand to function calls or other non-constant computation: these should be named like functions, and should have parentheses at the end, even if they take no arguments (with the exception of some special macros like ASSERT). + +##### Right: + + #define StopButtonTitle() \ + CPLocalizedString(@"Stop", @"Stop button title") + +##### Wrong: + + #define STOP_BUTTON_TITLE \ + CPLocalizedString(@"Stop", @"Stop button title") + + #define StopButtontitle \ + CPLocalizedString(@"Stop", @"Stop button title") + +### import Statements + +1. Include external frameworks first. +2. Include Foundation classes before AppKit classes. +3. Include files in alphabetical order. +4. Use local imports whenever possible. + +##### Right: + + // (Within AppKit) + import + import + + import "CPTabViewItem.j" + import "CPTabView.j" + +##### Wrong: + + // (Within AppKit) + import "CPTabView.j" + import + + import + import diff --git a/Foundation/CPKeyedArchiver.j b/Foundation/CPKeyedArchiver.j index 83dbc52ee..0dd5b1659 100644 --- a/Foundation/CPKeyedArchiver.j +++ b/Foundation/CPKeyedArchiver.j @@ -176,8 +176,6 @@ var _CPKeyedArchiverStringClass = Nil, _replacementObjects = [CPDictionary dictionary]; - _data = data; - _plistObject = [CPDictionary dictionary]; _plistObjects = [CPArray arrayWithObject:_CPKeyedArchiverNullString]; } diff --git a/Foundation/CPNumberFormatter.j b/Foundation/CPNumberFormatter.j index 1fafb8969..ec6a5b177 100644 --- a/Foundation/CPNumberFormatter.j +++ b/Foundation/CPNumberFormatter.j @@ -90,6 +90,11 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; - (CPString)stringFromNumber:(CPNumber)number { + if (_numberStyle == CPNumberFormatterPercentStyle) + { + number *= 100.0; + } + var dcmn = [number isKindOfClass:CPDecimalNumber] ? number : [[CPDecimalNumber alloc] _initWithJSNumber:number]; // TODO Add locale support. @@ -97,6 +102,7 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; { case CPNumberFormatterCurrencyStyle: case CPNumberFormatterDecimalStyle: + case CPNumberFormatterPercentStyle: UPDATE_NUMBER_HANDLER_IF_NECESSARY(); dcmn = [dcmn decimalNumberByRoundingAccordingToBehavior:_numberHandler]; @@ -134,6 +140,11 @@ CPNumberFormatterRoundHalfUp = CPRoundPlain; string = _currencyCode + string; } + if (_numberStyle == CPNumberFormatterPercentStyle) + { + string += "%"; + } + return string; default: return [number description]; diff --git a/Tests/AppKit/CPOutlineViewTest.j b/Tests/AppKit/CPOutlineViewTest.j index af61c64a8..eac2c4f34 100644 --- a/Tests/AppKit/CPOutlineViewTest.j +++ b/Tests/AppKit/CPOutlineViewTest.j @@ -161,6 +161,17 @@ [self assert:2 equals:[[outlineView selectedRowIndexes] count] message:"selections should remain"]; } + +- (void)testExpandCollapseItemVisibility +{ + var delegate = [TestExpandCollapseVisibilityDelegate new]; + [delegate setTester:self]; + [outlineView setDelegate:delegate]; + + [outlineView collapseItem:".1"]; + [outlineView expandItem:".1"]; +} + /*! Test that the outline view archives properly. */ @@ -270,3 +281,50 @@ } @end + +@implementation TestExpandCollapseVisibilityDelegate : CPObject +{ + id tester @accessors; +} + +- (void)outlineViewItemWillCollapse:(CPNotification)aNotification +{ + var anOutlineView = [aNotification object], + visibleRows = [anOutlineView rowsInRect:[anOutlineView visibleRect]]; + + [tester assertTrue:[anOutlineView isItemExpanded:".1"]]; + [tester assert:0 equals:visibleRows.location]; + [tester assert:8 equals:visibleRows.length]; +} + +- (void)outlineViewItemDidCollapse:(CPNotification)aNotification +{ + var anOutlineView = [aNotification object], + visibleRows = [anOutlineView rowsInRect:[anOutlineView visibleRect]]; + + [tester assertFalse:[anOutlineView isItemExpanded:".1"]]; + [tester assert:0 equals:visibleRows.location]; + [tester assert:4 equals:visibleRows.length]; +} + +- (void)outlineViewItemWillExpand:(CPNotification)aNotification +{ + var anOutlineView = [aNotification object], + visibleRows = [anOutlineView rowsInRect:[anOutlineView visibleRect]]; + + [tester assertFalse:[anOutlineView isItemExpanded:".1"]]; + [tester assert:0 equals:visibleRows.location]; + [tester assert:4 equals:visibleRows.length]; +} + +- (void)outlineViewItemDidExpand:(CPNotification)aNotification +{ + var anOutlineView = [aNotification object], + visibleRows = [anOutlineView rowsInRect:[anOutlineView visibleRect]]; + + [tester assertTrue:[anOutlineView isItemExpanded:".1"]]; + [tester assert:0 equals:visibleRows.location]; + [tester assert:8 equals:visibleRows.length]; +} + +@end diff --git a/Tests/AppKit/CPTableViewTest.j b/Tests/AppKit/CPTableViewTest.j index a65de663f..e5cc03661 100644 --- a/Tests/AppKit/CPTableViewTest.j +++ b/Tests/AppKit/CPTableViewTest.j @@ -267,6 +267,41 @@ [contentBindingTable reloadData]; } +- (void)testInitiallyHiddenColumns +{ + var table = [[CPTableView alloc] initWithFrame:CGRectMake(0, 0, 400, 400)], + tableColumn1 = [[CPTableColumn alloc] initWithIdentifier:@"A"], + tableColumn2 = [[CPTableColumn alloc] initWithIdentifier:@"B"], + delegate = [ContentBindingTableDelegate new]; + + [delegate setTester:self]; + [table setDelegate:delegate]; + + [delegate setTableEntries:[[@"A1", @"B1"], [@"A2", @"B2"], [@"A3", @"B3"]]]; + [table bind:@"content" toObject:delegate withKeyPath:@"tableEntries" options:nil]; + + [[theWindow contentView] addSubview:table]; + + [tableColumn1 setHidden:YES]; + + [tableColumn1 setWidth:50.0]; + [tableColumn2 setWidth:100.0]; + + [table addTableColumn:tableColumn1]; + [table addTableColumn:tableColumn2]; + + [table reloadData]; + + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; + + [self assertTrue:[table bounds].size.width > 100 && [table bounds].size.width < 200]; + + [tableColumn1 setHidden:NO]; + [tableColumn1 setWidth:100.0]; + + [self assertTrue:[table bounds].size.width >= 200]; +} + @end @implementation FirstResponderConfigurableTableView : CPTableView diff --git a/Tests/Foundation/CPDataTest.j b/Tests/Foundation/CPDataTest.j index f63baaad8..7a97a1850 100644 --- a/Tests/Foundation/CPDataTest.j +++ b/Tests/Foundation/CPDataTest.j @@ -71,10 +71,10 @@ var rawString = "cappuccino", bytes = [99, 97, 112, 112, 117, 99, 99, 105, 110, 111], base64 = "Y2FwcHVjY2lubw=="; - + var data = [CPData dataWithBase64:base64]; [self assert:rawString equals:[data rawString]]; - + data = [CPData dataWithBase64:base64]; [self assert:bytes equals:[data bytes]]; @@ -84,17 +84,16 @@ data = [CPData dataWithRawString:rawString]; [self assert:rawString equals:[data rawString]]; - + data = [CPData dataWithRawString:rawString]; [self assert:bytes equals:[data bytes]]; data = [CPData dataWithRawString:rawString]; [self assert:base64 equals:[data base64]]; - data = [CPData dataWithBytes:bytes]; [self assert:rawString equals:[data rawString]]; - + data = [CPData dataWithBytes:bytes]; [self assert:bytes equals:[data bytes]]; diff --git a/Tests/Foundation/CPNumberFormatterTest.j b/Tests/Foundation/CPNumberFormatterTest.j index 13775a26e..63380122a 100644 --- a/Tests/Foundation/CPNumberFormatterTest.j +++ b/Tests/Foundation/CPNumberFormatterTest.j @@ -143,6 +143,23 @@ [self assert:@"SEK0.02" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.015"]]]; } +- (void)testPercentStyle +{ + var numberFormatter = [CPNumberFormatter new]; + [numberFormatter setNumberStyle:CPNumberFormatterPercentStyle]; + + [self assert:@"1%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.01"]]]; + [self assert:@"100%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.0"]]]; + [self assert:@"150%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.5"]]]; + + [numberFormatter setMinimumFractionDigits:1]; + [numberFormatter setMaximumFractionDigits:1]; + + [self assert:@"1.0%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"0.01"]]]; + [self assert:@"100.2%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.002"]]]; + [self assert:@"150.7%" equals:[numberFormatter stringFromNumber:[CPDecimalNumber decimalNumberWithString:@"1.507"]]]; +} + - (void)testSetGeneratesDecimalNumbers_ { var numberFormatter = [CPNumberFormatter new]; diff --git a/Tests/Manual/ArrayController1/AppController.j b/Tests/Manual/ArrayController1/AppController.j index 85759d8fb..8619a17a4 100644 --- a/Tests/Manual/ArrayController1/AppController.j +++ b/Tests/Manual/ArrayController1/AppController.j @@ -26,11 +26,9 @@ CPLogRegister(CPLogConsole); - (void)awakeFromCib { - var contentView = [theWindow contentView]; + var contentView = [theWindow contentView], + notWrongItem = [Item new]; - //create our non ui objects - - var notWrongItem = [Item new]; [notWrongItem setRightOrWrong:"also right"]; itemsArray = [[Item new], notWrongItem]; @@ -104,8 +102,7 @@ CPLogRegister(CPLogConsole); { // bind array controller to self's itemsArray - [arrayController bind:@"contentArray" toObject:self - withKeyPath:@"itemsArray" options:nil]; + [arrayController bind:@"contentArray" toObject:self withKeyPath:@"itemsArray" options:nil]; // bind the total field -- no options on this one [totalCountField bind:CPValueBinding toObject:arrayController @@ -113,13 +110,14 @@ CPLogRegister(CPLogConsole); var bindingOptions = [CPDictionary dictionary]; //[bindingOptions setObject:@"No Name" forKey:@"NSNullPlaceholder"]; - [selectedNameField bind: @"value" toObject:arrayController - withKeyPath:@"selection.name" options:bindingOptions]; + [selectedNameField bind:CPValueBinding toObject:arrayController + withKeyPath:@"selection.name" options:bindingOptions]; // binding for "name" column var tableColumn = [tableView tableColumnWithIdentifier:@"name"], - bindingOptions = [CPDictionary dictionary]; - [tableColumn bind:@"value" toObject: arrayController + bindingOptions = [CPDictionary dictionary]; + + [tableColumn bind:CPValueBinding toObject:arrayController withKeyPath:@"arrangedObjects.name" options:bindingOptions]; @@ -129,13 +127,13 @@ CPLogRegister(CPLogConsole); //[bindingOptions removeObjectForKey:@"NSNullPlaceholder"]; //[bindingOptions setObject:YES // forKey:CPValidatesImmediatelyBindingOption]; - [selectedPriceField bind:@"value" toObject: arrayController + [selectedPriceField bind:CPValueBinding toObject: arrayController withKeyPath:@"selection.price" options:bindingOptions]; // binding for "price" column tableColumn = [tableView tableColumnWithIdentifier:@"price"]; bindingOptions = [CPDictionary dictionary]; - [tableColumn bind:@"value" toObject: arrayController + [tableColumn bind:CPValueBinding toObject:arrayController withKeyPath:@"arrangedObjects.price" options:bindingOptions]; tableColumn = [tableView tableColumnWithIdentifier:@"all right"]; @@ -215,4 +213,4 @@ CPLogRegister(CPLogConsole); return aValue == "wrong" ? "right" : aValue; } -@end \ No newline at end of file +@end diff --git a/Tests/Manual/CPButtonTest/AppController.j b/Tests/Manual/CPButtonTest/AppController.j index bbbdb388e..0574dd8cb 100644 --- a/Tests/Manual/CPButtonTest/AppController.j +++ b/Tests/Manual/CPButtonTest/AppController.j @@ -69,11 +69,6 @@ CPLogRegister(CPLogConsole); [[radio1 radioGroup] setAction:@selector(radioGroupClicked:)]; [multiCheckbox setState:CPMixedState]; - [pushInButton setButtonType:CPMomentaryLightButton]; - [pushOnOffButton setButtonType:CPPushOnPushOffButton]; - [toggleButton setButtonType:CPToggleButton]; - [momentaryChangeButton setButtonType:CPMomentaryChangeButton]; - [pushInButton setAlternateTitle:@"Should Not See Me"]; [toggleButton setAlternateTitle:@"Alternate Title For Toggle"]; [momentaryChangeButton setAlternateTitle:@"Changed!"]; diff --git a/Tests/Manual/CPButtonTest/Resources/MainMenu.cib b/Tests/Manual/CPButtonTest/Resources/MainMenu.cib index eb6637c5a..314417d74 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;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;108E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;2;57E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;110E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;111E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;69E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;112E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;72E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;114E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;70E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;76E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;116E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;89E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;92E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;118E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;105E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;106E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;120E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;104E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;121E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;73E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;122E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;57E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;123E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;86E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;87E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;127E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;129E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;130E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;88E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;132E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;133E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;80E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;95E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;96E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;141E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;142E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;143E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;53E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;145E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;145E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;146E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;149E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;150E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;156E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;158E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;162E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;156E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;108E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;163E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;164E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;165E;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;156E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;169E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;170E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;171E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;172E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;174E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;171E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;172E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;175E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;171E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;176E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;171E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;177E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;171E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;178E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;171E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;179E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;171E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;173E;E;D;K;10;$classnameS;16;_CPCibCustomViewK;8;$classesA;S;16;_CPCibCustomViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;66E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;180E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;181E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;182E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;183E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;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;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;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;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;186E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;188E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;190E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;191E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;192E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;194E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;172E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;195E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;196E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;197E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;194E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;172E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;198E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;157E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;199E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;200E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;201E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;202E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;203E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;204E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;205E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;189E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;206E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;207E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;208E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;209E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;210E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;211E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;212E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;212E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;213E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;214E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;215E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;216E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;217E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;218E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;219E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;220E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;221E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;222E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;156E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;223E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;162E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;156E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;224E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;225E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;172E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;226E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;162E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;172E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;227E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;210E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;228E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;229E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;229E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;230E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;231E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;233E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;234E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;235E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;236E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;237E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;238E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;232E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;239E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;240E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;210E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;241E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;242E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;242E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;243E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;244E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;245E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;167E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;155E;K;7;$aimageD;K;6;CP$UIDd;3;247E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;248E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;249E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;187E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;144E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;5;CPBoxK;8;$classesA;S;5;CPBoxS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;93E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;250E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;251E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;252E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;144E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;3;144E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;3;172E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;3;253E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;3;254E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;3;144E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;3;172E;K;10;CPBoxTitleD;K;6;CP$UIDd;3;255E;K;18;CPBoxTitlePositionD;K;6;CP$UIDd;3;155E;K;14;CPBoxTitleViewD;K;6;CP$UIDd;1;0E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;257E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;155E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;258E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;259E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;257E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;260E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;261E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;257E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;172E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;262E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;263E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;257E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;264E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;265E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;257E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;156E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;267E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;257E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;268E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;269E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;257E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;270E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;271E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;272E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;257E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;273E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;274E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;93E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;275E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;251E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;276E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;144E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;3;144E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;3;172E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;3;277E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;3;254E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;3;144E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;3;172E;K;10;CPBoxTitleD;K;6;CP$UIDd;3;278E;K;18;CPBoxTitlePositionD;K;6;CP$UIDd;3;155E;K;14;CPBoxTitleViewD;K;6;CP$UIDd;1;0E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;3;256E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;279E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;270E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;271E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;272E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;279E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;280E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;274E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;279E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;156E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;266E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;267E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;279E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;281E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;269E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;279E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;172E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;262E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;263E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;279E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;282E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;265E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;279E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;155E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;258E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;259E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;279E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;283E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;261E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;284E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;285E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;156E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;286E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;162E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;156E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;287E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;288E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;193E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;194E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;172E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;289E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;168E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;290E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;285E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;156E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;286E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;159E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;160E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;160E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;162E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;155E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;156E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;291E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;292E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;90E;E;E;S;8;delegateS;6;buttonS;8;checkboxS;10;clickCountS;11;imageButtonS;19;imageDisabledButtonS;21;momentaryChangeButtonS;12;monkeyButtonS;14;monkeyCheckboxS;19;monkeyCheckboxLabelS;11;monkeyLabelS;13;multiCheckboxS;12;positionMenuS;12;pushInButtonS;15;pushOnOffButtonD;K;10;$classnameS;7;CPRadioK;8;$classesA;S;7;CPRadioS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;126E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;293E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;293E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;254E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;294E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;295E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;155E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;172E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;296E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;297E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;298E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;300E;E;S;6;radio1D;K;6;$classD;K;6;CP$UIDd;3;126E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;301E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;293E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;254E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;294E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;166E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;155E;K;16;$aimage-positionD;K;6;CP$UIDd;3;155E;K;6;$afontD;K;6;CP$UIDd;3;154E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;144E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;155E;K;11;$aalignmentD;K;6;CP$UIDd;3;144E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;156E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;302E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;160E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;172E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;172E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;157E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;155E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;144E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;297E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;298E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;300E;E;S;6;radio2S;9;theWindowS;12;toggleButtonS;17;setImagePosition:S;11;countClick:S;20;switchSelectedRadio:S;12;monkeyClick:S;29;setMonkeyButtonHighlightedBy:S;28;setMonkeyButtonShowsStateBy:S;32;{10000000000000, 10000000000000}S;8;CPWindowS;23;{{100, 67}, {380, 253}}d;1;7S;19;CPButton Image Testd;1;0S;20;{{0, 0}, {380, 253}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;67E;E;E;d;2;18S;6;normalS;22;{{40, 212}, {101, 17}}S;19;{{0, 0}, {101, 17}}d;2;36S;9;textfieldD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;304E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;d;1;2d;1;4T;S;15;Image Position:d;4;3072F;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;161E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;305E;E;S;23;{{141, 211}, {201, 24}}S;19;{{0, 0}, {201, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;304E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;157E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;S;0;d;2;12S;8;No ImageS;17;_popUpItemAction:d;1;1d;7;1048576S;10;Image OnlyS;4;LeftS;5;RightS;5;BelowS;5;AboveS;8;OverlapsS;22;{{20, 20}, {340, 174}}S;20;{{0, 0}, {340, 174}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;69E;E;E;S;9;BezelViewS;20;{{22, 15}, {96, 24}}S;18;{{0, 0}, {96, 24}}S;6;Buttond;2;14S;22;{{141, 15}, {176, 24}}S;19;{{0, 0}, {176, 24}}S;17;Button With ImageS;20;{{29, 65}, {85, 40}}S;18;{{0, 0}, {85, 40}}S;9;check-boxS;8;selectedS;8;CheckboxS;22;{{163, 65}, {152, 40}}S;19;{{0, 0}, {152, 40}}S;19;Multistate CheckboxS;22;{{31, 120}, {168, 40}}S;19;{{0, 0}, {168, 40}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;129E;E;E;S;23;{{198, 128}, {119, 24}}S;19;{{0, 0}, {119, 24}}S;14;Set radio 2 OnS;22;{{141, 45}, {176, 24}}S;17;disabled+borderedS;19;Disabled With ImageS;13;AppControllerS;23;{{100, 354}, {318, 85}}d;2;15S;22;Continuous Button TestS;19;{{0, 0}, {318, 85}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;E;E;S;21;{{18, 18}, {120, 24}}S;19;{{0, 0}, {120, 24}}S;13;Normal ButtonS;22;{{150, 18}, {146, 24}}S;19;{{0, 0}, {146, 24}}d;5;65540S;17;Continuous ButtonS;21;{{17, 48}, {107, 17}}S;19;{{0, 0}, {107, 17}}S;16;Recorded clicks:S;22;{{126, 48}, {175, 17}}S;19;{{0, 0}, {175, 17}}S;1;0S;23;{{502, 67}, {271, 156}}S;25;CPButton Button Type TestS;20;{{0, 0}, {271, 156}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;E;E;S;21;{{29, 18}, {208, 24}}S;19;{{0, 0}, {208, 24}}S;26;Momentary Push In (Normal)S;21;{{29, 50}, {208, 24}}S;18;Push On / Push OffS;21;{{29, 82}, {208, 24}}S;6;ToggleS;22;{{29, 114}, {208, 24}}S;16;Momentary ChangeS;24;{{502, 265}, {480, 210}}S;18;Monkey Button TestS;20;{{0, 0}, {480, 210}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;E;E;S;22;{{151, 38}, {174, 24}}S;19;{{0, 0}, {174, 24}}D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;246E;K;4;nameD;K;6;CP$UIDd;3;306E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;6;valuesD;K;6;CP$UIDd;3;308E;E;S;13;Monkey ButtonS;15;Alternate TitleS;22;{{17, 80}, {222, 114}}S;20;{{0, 0}, {222, 114}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;257E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;161E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;309E;E;D;K;6;$classD;K;6;CP$UIDd;3;161E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;310E;E;S;13;Highlights ByS;6;{0, 0}D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;94E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;318E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;319E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;320E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;94E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;S;20;{{16, 8}, {137, 18}}S;19;{{0, 0}, {137, 18}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;311E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;S;16;CPPushInCellMaskS;21;{{16, 28}, {152, 18}}S;19;{{0, 0}, {152, 18}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;311E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;S;18;CPContentsCellMaskS;21;{{16, 48}, {172, 18}}S;19;{{0, 0}, {172, 18}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;311E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;S;20;CPChangeGrayCellMaskd;1;8S;21;{{16, 68}, {218, 18}}S;19;{{0, 0}, {218, 18}}D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;311E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;S;26;CPChangeBackgroundCellMaskS;23;{{241, 80}, {222, 114}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;279E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;161E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;312E;E;S;14;Shows State ByD;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;99E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;144E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;318E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;319E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;322E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;99E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;148E;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;311E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;311E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;311E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;D;K;6;$classD;K;6;CP$UIDd;3;153E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;303E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;311E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;160E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;157E;E;S;22;{{332, 41}, {131, 17}}S;19;{{0, 0}, {131, 17}}S;5;LabelS;22;{{151, 10}, {138, 32}}S;19;{{0, 0}, {138, 32}}S;15;Monkey CheckboxS;22;{{289, 10}, {131, 17}}S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;E;E;S;18;{{0, 0}, {82, 40}}S;5;radioS;17;selected+borderedS;7;Radio 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;299E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;313E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;127E;E;S;19;{{86, 0}, {82, 40}}S;7;Radio 2S;28;_CPFontSystemFacePlaceholderd;2;-1D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;314E;D;K;6;CP$UIDd;3;314E;D;K;6;CP$UIDd;3;314E;D;K;6;CP$UIDd;3;172E;E;E;S;5;imageD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;307E;K;10;CP.objectsD;K;11;highlightedD;K;6;CP$UIDd;3;316E;K;6;normalD;K;6;CP$UIDd;3;317E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;321E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;E;E;d;2;11D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;321E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;323E;E;f;18;0.6862745098039216D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;315E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;324E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;325E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;326E;E;D;K;6;$classD;K;6;CP$UIDd;3;315E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;324E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;327E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;328E;E;S;20;{{1, 15}, {220, 98}}S;19;{{0, 0}, {220, 98}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;E;E;f;4;0.42D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;100E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;129E;E;E;S;7;CPImageS;16;CPRemoveTemplateD;K;6;$classD;K;6;CP$UIDd;3;307E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;330E;E;E;S;13;CPAddTemplateD;K;6;$classD;K;6;CP$UIDd;3;307E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;331E;E;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;329E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;332E;E;D;K;6;$classD;K;6;CP$UIDd;3;329E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;332E;E;S;22;{"width":0,"height":0}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;108E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;2;57E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;110E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;111E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;69E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;112E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;72E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;113E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;83E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;114E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;70E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;115E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;76E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;116E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;89E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;117E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;92E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;118E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;105E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;119E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;106E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;120E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;104E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;121E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;73E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;122E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;57E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;123E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;86E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;124E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;87E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;125E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;127E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;128E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;3;129E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;130E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;131E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;77E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;88E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;132E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;57E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;133E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;80E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;81E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;134E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;75E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;135E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;92E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;95E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;96E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;97E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;98E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;100E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;101E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;102E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;103E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;138E;E;D;K;6;$classD;K;6;CP$UIDd;2;34E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;3;105E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;77E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;136E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;109E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;141E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;142E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;143E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;144E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;145E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;53E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;147E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;147E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;148E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;149E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;E;D;K;10;$classnameS;11;CPTextFieldK;8;$classesA;S;11;CPTextFieldS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;151E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;152E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;154E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;157E;K;11;$aalignmentD;K;6;CP$UIDd;3;158E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;159E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;160E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;162E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;164E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;157E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;158E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;13;CPPopUpButtonK;8;$classesA;S;13;CPPopUpButtonS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;3;108E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;165E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;166E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;167E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;158E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;1;0E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;171E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPMenuItemK;8;$classesA;S;10;CPMenuItemS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;172E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;173E;K;18;CPMenuItemStateKeyD;K;6;CP$UIDd;3;174E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;176E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;173E;K;16;CPMenuItemTagKeyD;K;6;CP$UIDd;3;174E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;177E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;173E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;178E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;173E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;179E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;173E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;180E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;173E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;18;CPMenuItemTitleKeyD;K;6;CP$UIDd;3;181E;K;19;CPMenuItemTargetKeyD;K;6;CP$UIDd;2;57E;K;19;CPMenuItemActionKeyD;K;6;CP$UIDd;3;173E;K;17;CPMenuItemMenuKeyD;K;6;CP$UIDd;3;108E;K;38;CPMenuItemKeyEquivalentModifierMaskKeyD;K;6;CP$UIDd;3;175E;E;D;K;10;$classnameS;16;_CPCibCustomViewK;8;$classesA;S;16;_CPCibCustomViewS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;66E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;53E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;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;53E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;3;185E;E;D;K;10;$classnameS;8;CPButtonK;8;$classesA;S;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;186E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;187E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;188E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;190E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;191E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;192E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;193E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;194E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;196E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;174E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;197E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;198E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;199E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;196E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;174E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;200E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;159E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;201E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;202E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;203E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;204E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;205E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;206E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;67E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;207E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;191E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;67E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;208E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;209E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;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;210E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;211E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;212E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;143E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;213E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;214E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;215E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;215E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;216E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;217E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;218E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;219E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;220E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;221E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;222E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;223E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;224E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;225E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;154E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;157E;K;11;$aalignmentD;K;6;CP$UIDd;3;158E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;159E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;226E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;162E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;164E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;157E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;158E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;79E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;227E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;228E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;79E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;154E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;157E;K;11;$aalignmentD;K;6;CP$UIDd;3;174E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;159E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;229E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;162E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;164E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;157E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;174E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;230E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;231E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;143E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;213E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;232E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;233E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;233E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;234E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;235E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;236E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;237E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;238E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;236E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;239E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;171E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;240E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;236E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;241E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;242E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;85E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;243E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;236E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;85E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;244E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;50E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;3;139E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;3;140E;K;30;_CPCibWindowTemplateWTFlagsKeyD;K;6;CP$UIDd;3;230E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;3;245E;K;33;_CPCibWindowTemplateScreenRectKeyD;K;6;CP$UIDd;3;143E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;3;144E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;3;246E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;91E;E;D;K;6;$classD;K;6;CP$UIDd;2;52E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;247E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;247E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;248E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;2;68E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;249E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;250E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;112E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;169E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;157E;K;7;$aimageD;K;6;CP$UIDd;3;252E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;253E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;254E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;189E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;146E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;5;CPBoxK;8;$classesA;S;5;CPBoxS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;93E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;255E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;256E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;257E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;146E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;3;146E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;3;174E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;3;258E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;3;259E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;3;146E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;3;174E;K;10;CPBoxTitleD;K;6;CP$UIDd;3;260E;K;18;CPBoxTitlePositionD;K;6;CP$UIDd;3;157E;K;14;CPBoxTitleViewD;K;6;CP$UIDd;1;0E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;3;261E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;262E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;157E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;263E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;264E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;262E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;265E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;266E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;262E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;174E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;267E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;268E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;262E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;269E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;270E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;262E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;158E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;271E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;272E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;262E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;273E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;274E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;262E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;275E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;276E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;277E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;262E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;278E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;279E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;93E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;280E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;256E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;281E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;25;CPViewAutoresizesSubviewsD;K;6;CP$UIDd;3;146E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;12;CPBoxTypeKeyD;K;6;CP$UIDd;3;146E;K;18;CPBoxBorderTypeKeyD;K;6;CP$UIDd;3;174E;K;19;CPBoxBorderColorKeyD;K;6;CP$UIDd;3;282E;K;17;CPBoxFillColorKeyD;K;6;CP$UIDd;3;259E;K;20;CPBoxCornerRadiusKeyD;K;6;CP$UIDd;3;146E;K;19;CPBoxBorderWidthKeyD;K;6;CP$UIDd;3;174E;K;10;CPBoxTitleD;K;6;CP$UIDd;3;283E;K;18;CPBoxTitlePositionD;K;6;CP$UIDd;3;157E;K;14;CPBoxTitleViewD;K;6;CP$UIDd;1;0E;K;21;CPBoxContentMarginKeyD;K;6;CP$UIDd;3;261E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;284E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;275E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;276E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;277E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;284E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;285E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;279E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;284E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;158E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;271E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;272E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;284E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;286E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;274E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;284E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;174E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;267E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;268E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;284E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;287E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;270E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;284E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;157E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;263E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;264E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;284E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;288E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;266E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;289E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;290E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;154E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;157E;K;11;$aalignmentD;K;6;CP$UIDd;3;158E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;159E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;291E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;162E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;164E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;157E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;158E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;71E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;292E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;293E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;195E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;196E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;174E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;294E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;170E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;54E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;91E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;295E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;290E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;91E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;154E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;157E;K;11;$aalignmentD;K;6;CP$UIDd;3;158E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;3;159E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;291E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;161E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;3;162E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;3;162E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;3;164E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;3;157E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;158E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;10;$classnameS;6;CPMenuK;8;$classesA;S;6;CPMenuS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;107E;K;14;CPMenuTitleKeyD;K;6;CP$UIDd;3;296E;K;14;CPMenuItemsKeyD;K;6;CP$UIDd;3;297E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;90E;E;E;S;8;delegateS;6;buttonS;8;checkboxS;10;clickCountS;11;imageButtonS;19;imageDisabledButtonS;21;momentaryChangeButtonS;12;monkeyButtonS;14;monkeyCheckboxS;19;monkeyCheckboxLabelS;11;monkeyLabelS;13;multiCheckboxS;12;positionMenuS;12;pushInButtonS;15;pushOnOffButtonD;K;10;$classnameS;7;CPRadioK;8;$classesA;S;7;CPRadioS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;126E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;174E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;298E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;298E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;149E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;259E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;299E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;300E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;157E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;157E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;174E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;301E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;302E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;303E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;305E;E;S;6;radio1D;K;6;$classD;K;6;CP$UIDd;3;126E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;74E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;306E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;298E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;74E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;149E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;3;259E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;299E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;168E;K;15;$aimage-scalingD;K;6;CP$UIDd;3;157E;K;16;$aimage-positionD;K;6;CP$UIDd;3;157E;K;6;$afontD;K;6;CP$UIDd;3;156E;K;17;$aline-break-modeD;K;6;CP$UIDd;3;146E;K;20;$avertical-alignmentD;K;6;CP$UIDd;3;157E;K;11;$aalignmentD;K;6;CP$UIDd;3;146E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;146E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;158E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;307E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;3;162E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;174E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;174E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;3;159E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;3;157E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;3;146E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;302E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;303E;K;20;CPRadioRadioGroupKeyD;K;6;CP$UIDd;3;305E;E;S;6;radio2S;9;theWindowS;12;toggleButtonS;17;setImagePosition:S;11;countClick:S;20;switchSelectedRadio:S;12;monkeyClick:S;29;setMonkeyButtonHighlightedBy:S;28;setMonkeyButtonShowsStateBy:S;32;{10000000000000, 10000000000000}S;8;CPWindowd;10;1954021376S;24;{{200, 665}, {380, 253}}S;22;{{0, 0}, {2560, 1418}}d;1;7S;19;CPButton Image Testd;1;0S;20;{{0, 0}, {380, 253}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;67E;E;E;d;2;18S;6;normalS;21;{{40, 213}, {95, 17}}S;18;{{0, 0}, {95, 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;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;309E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;d;1;2d;1;4T;S;15;Image Position:d;4;3072F;D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;163E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;310E;E;S;23;{{140, 211}, {202, 24}}S;19;{{0, 0}, {202, 24}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;309E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;159E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;S;0;d;2;12S;8;No ImageS;17;_popUpItemAction:d;1;1d;7;1048576S;10;Image OnlyS;4;LeftS;5;RightS;5;BelowS;5;AboveS;8;OverlapsS;22;{{20, 20}, {340, 174}}S;20;{{0, 0}, {340, 174}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;69E;E;E;S;9;BezelViewS;20;{{22, 15}, {96, 24}}S;18;{{0, 0}, {96, 24}}S;6;Buttond;2;14S;22;{{141, 15}, {176, 24}}S;19;{{0, 0}, {176, 24}}S;17;Button With ImageS;20;{{29, 65}, {85, 40}}S;18;{{0, 0}, {85, 40}}S;9;check-boxS;8;selectedS;8;CheckboxS;22;{{163, 65}, {152, 40}}S;19;{{0, 0}, {152, 40}}S;19;Multistate CheckboxS;22;{{31, 120}, {168, 40}}S;19;{{0, 0}, {168, 40}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;129E;E;E;S;23;{{198, 128}, {119, 24}}S;19;{{0, 0}, {119, 24}}S;14;Set radio 2 OnS;22;{{141, 45}, {176, 24}}S;17;disabled+borderedS;19;Disabled With ImageS;13;AppControllerd;9;611844096S;23;{{200, 333}, {318, 85}}d;2;15S;22;Continuous Button TestS;19;{{0, 0}, {318, 85}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;E;E;S;21;{{18, 18}, {120, 24}}S;19;{{0, 0}, {120, 24}}S;13;Normal ButtonS;22;{{150, 18}, {146, 24}}S;19;{{0, 0}, {146, 24}}d;5;65540S;17;Continuous ButtonS;21;{{17, 49}, {101, 17}}S;19;{{0, 0}, {101, 17}}S;16;Recorded clicks:S;22;{{126, 49}, {169, 17}}S;19;{{0, 0}, {169, 17}}S;1;0d;9;611845120S;25;{{1000, 262}, {271, 156}}S;25;CPButton Button Type TestS;20;{{0, 0}, {271, 156}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;E;E;S;21;{{29, 18}, {208, 24}}S;19;{{0, 0}, {208, 24}}S;26;Momentary Push In (Normal)S;21;{{29, 50}, {208, 24}}S;18;Push On / Push OffS;21;{{29, 82}, {208, 24}}S;6;Toggled;1;3S;22;{{29, 114}, {208, 24}}S;16;Momentary ChangeS;25;{{1000, 698}, {480, 220}}S;18;Monkey Button TestS;20;{{0, 0}, {480, 220}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;E;E;S;22;{{151, 48}, {174, 24}}S;19;{{0, 0}, {174, 24}}D;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;251E;K;4;nameD;K;6;CP$UIDd;3;311E;K;12;defaultValueD;K;6;CP$UIDd;1;0E;K;6;valuesD;K;6;CP$UIDd;3;313E;E;S;13;Monkey ButtonS;15;Alternate TitleS;22;{{17, 90}, {222, 114}}S;20;{{0, 0}, {222, 114}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;262E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;163E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;314E;E;D;K;6;$classD;K;6;CP$UIDd;3;163E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;315E;E;S;13;Highlights ByS;6;{0, 0}D;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;94E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;323E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;324E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;325E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;94E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;149E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;E;S;20;{{16, 8}, {137, 18}}S;19;{{0, 0}, {137, 18}}D;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;316E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;S;16;CPPushInCellMaskS;21;{{16, 28}, {152, 18}}S;19;{{0, 0}, {152, 18}}D;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;316E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;S;18;CPContentsCellMaskS;21;{{16, 48}, {172, 18}}S;19;{{0, 0}, {172, 18}}D;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;316E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;S;20;CPChangeGrayCellMaskd;1;8S;21;{{16, 68}, {218, 18}}S;19;{{0, 0}, {218, 18}}D;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;316E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;S;26;CPChangeBackgroundCellMaskS;23;{{241, 90}, {222, 114}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;284E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;163E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;317E;E;S;14;Shows State ByD;K;6;$classD;K;6;CP$UIDd;2;52E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;99E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;3;146E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;323E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;324E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;327E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;99E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;149E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;150E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;316E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;316E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;316E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;D;K;6;$classD;K;6;CP$UIDd;3;155E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;308E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;316E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;162E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;159E;E;S;22;{{332, 52}, {125, 17}}S;19;{{0, 0}, {125, 17}}S;5;LabelS;21;{{151, 7}, {138, 32}}S;19;{{0, 0}, {138, 32}}S;15;Monkey CheckboxS;22;{{307, 15}, {125, 17}}S;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;E;E;S;18;{{0, 0}, {82, 40}}S;5;radioS;17;selected+borderedS;7;Radio 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;304E;K;21;CPRadioGroupRadiosKeyD;K;6;CP$UIDd;3;318E;K;28;CPRadioGroupSelectedRadioKeyD;K;6;CP$UIDd;3;127E;E;S;19;{{86, 0}, {82, 40}}S;7;Radio 2S;28;_CPFontSystemFacePlaceholderd;2;-1D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;319E;D;K;6;CP$UIDd;3;319E;D;K;6;CP$UIDd;3;319E;D;K;6;CP$UIDd;3;174E;E;E;S;5;imageD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;312E;K;10;CP.objectsD;K;11;highlightedD;K;6;CP$UIDd;3;321E;K;6;normalD;K;6;CP$UIDd;3;322E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;326E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;E;E;d;2;11D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;326E;E;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;3;328E;E;f;18;0.6862745098039216D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;320E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;329E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;330E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;331E;E;D;K;6;$classD;K;6;CP$UIDd;3;320E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;329E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;332E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;333E;E;S;20;{{1, 15}, {220, 98}}S;19;{{0, 0}, {220, 98}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;E;E;f;4;0.42D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;100E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;129E;E;E;S;7;CPImageS;16;CPRemoveTemplateD;K;6;$classD;K;6;CP$UIDd;3;312E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;335E;E;E;S;13;CPAddTemplateD;K;6;$classD;K;6;CP$UIDd;3;312E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;336E;E;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;334E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;337E;E;D;K;6;$classD;K;6;CP$UIDd;3;334E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;337E;E;S;22;{"width":0,"height":0}E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/CPButtonTest/Resources/MainMenu.xib b/Tests/Manual/CPButtonTest/Resources/MainMenu.xib index 646fa37c3..791ef1c35 100644 --- a/Tests/Manual/CPButtonTest/Resources/MainMenu.xib +++ b/Tests/Manual/CPButtonTest/Resources/MainMenu.xib @@ -1,313 +1,333 @@ - - 1060 - 11E53 - 851 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.CocoaPlugin - 851 - - - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - - - PluginDependencyRecalculationVersion - - - - - NSApplication - - - FirstResponder - - - NSApplication - - - 7 - 2 - {{100, 1098}, {380, 253}} - 1954021376 - CPButton Image Test - NSWindow - - - {1.7976931348623157e+308, 1.7976931348623157e+308} - - - 274 - - - - 268 - {{40, 24}, {101, 17}} - - - YES - - 68288064 - 272630784 - Image Position: - - LucidaGrande - 13 - 1040 - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - - - - 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 + + 1080 + 12C54 + 2840 + 1187.34 + 625.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 2840 + + + NSBox + NSButton + NSButtonCell + NSCustomObject + NSCustomView + NSMatrix + NSMenu + NSMenuItem + NSPopUpButton + NSPopUpButtonCell + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate + + + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + + NSApplication + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{200, 500}, {380, 253}} + 1954021376 + CPButton Image Test + NSWindow + + + + + 274 + + + + 268 + {{40, 24}, {101, 17}} + + + + YES + + 68157504 + 272630784 + Image Position: + + LucidaGrande + 13 + 1044 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{140, 16}, {207, 26}} + + + + YES + + -2076180416 + 2048 + + + 109199360 + 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 + + NO + + + + 268 + + + + 268 + {{143, 103}, {176, 25}} + + + + YES + + 603979776 + 134217728 + Disabled With Image + + + -2034483200 + 163 + + + 200 + 25 + + NO + + + + 268 + {{194, 16}, {131, 32}} + + + + _NS:687 + YES + + 67108864 + 134217728 + Set radio 2 On + + _NS:687 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{31, 14}, {168, 40}} + + + + YES + NO + 1 + 2 + + + -2080374784 + 0 + Radio 1 + + + 1 + 1211912448 + 0 + + NSRadioButton + + + + 200 + 25 + + + 67108864 + 0 + Radio 2 + + + 1211912448 + 0 + + 400 + 75 + + + {82, 40} + {4, 2} + 1151868928 + NSActionCell + + 67108864 + 0 + Radio + + 1211912448 + 0 + + 549453824 + {18, 18} + + + + + + TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/ 29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5 @@ -332,1876 +352,1932 @@ AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - 3 - MCAwAA - - - - 400 - 75 - - - - - 3 - MQA - - - - - - 268 - {{163, 69}, {152, 40}} - - - YES - - -2080244224 - 16777216 - Multistate Checkbox - - - 1211912703 - 2 - - NSImage - NSSwitch - - - NSSwitch - - - - 200 - 25 - - - - - 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, 253} - - - - {{0, 0}, {2560, 1418}} - {1.7976931348623157e+308, 1.7976931348623157e+308} - YES - - - AppController - - - 15 - 2 - {{100, 979}, {318, 85}} - 611844096 - Continuous Button Test - NSWindow - - - {1.7976931348623157e+308, 1.7976931348623157e+308} - - - 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}, {2560, 1418}} - {1.7976931348623157e+308, 1.7976931348623157e+308} - YES - - - 15 - 2 - {{502, 1195}, {271, 156}} - 611845120 - CPButton Button Type Test - NSWindow - - - {1.7976931348623157e+308, 1.7976931348623157e+308} - - - 256 - - - - 268 - {{25, 108}, {220, 32}} - - - _NS:9 - YES - - 67239424 - 134217728 - Momentary Push In (Normal) - - _NS:9 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{25, 76}, {220, 32}} - - - _NS:9 - YES - - 67239424 - 134217728 - Push On / Push Off - - _NS:9 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{25, 44}, {220, 32}} - - - _NS:9 - YES - - 67239424 - 134217728 - Toggle - - _NS:9 - - -2038284033 - 129 - - - 200 - 25 - - - - - 268 - {{25, 12}, {220, 32}} - - _NS:9 - YES - - 67239424 - 134217728 - Momentary Change - - _NS:9 - - -2038284033 - 129 - - - 200 - 25 - - - - {271, 156} - - - _NS:20 - - {{0, 0}, {2560, 1418}} - {1.7976931348623157e+308, 1.7976931348623157e+308} - YES - - - 15 - 2 - {{502, 943}, {480, 210}} - 611845120 - Monkey Button Test - NSWindow - - - {1.7976931348623157e+308, 1.7976931348623157e+308} - - - 256 - - - - 268 - {{147, 142}, {186, 32}} - - - _NS:9 - YES - - 67239424 - 134217728 - Monkey Button - - _NS:9 - - -2034482945 - 129 - - NSImage - NSAddTemplate - - - NSImage - NSRemoveTemplate - - Alternate Title - - 200 - 25 - - - - - 12 - - - - 274 - - - - 268 - {{16, 72}, {137, 18}} - - - _NS:9 - 2 - YES - - 67239424 - 131072 - CPPushInCellMask - - LucidaGrande - 11 - 3088 - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 52}, {152, 18}} - - - _NS:9 - 1 - YES - - 67239424 - 131072 - CPContentsCellMask - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 32}, {172, 18}} - - - _NS:9 - 4 - YES - - 67239424 - 131072 - CPChangeGrayCellMask - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 12}, {218, 18}} - - - _NS:9 - 8 - YES - - 67239424 - 131072 - CPChangeBackgroundCellMask - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - {{1, 1}, {220, 98}} - - - _NS:11 - - - {{17, 16}, {222, 114}} - - - _NS:9 - {0, 0} - - 67239424 - 0 - Highlights By - - - 6 - System - textBackgroundColor - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - - 12 - - - - 274 - - - - 268 - {{16, 72}, {137, 18}} - - - _NS:9 - 2 - YES - - 67239424 - 131072 - CPPushInCellMask - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 52}, {152, 18}} - - - _NS:9 - 1 - YES - - 67239424 - 131072 - CPContentsCellMask - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 32}, {172, 18}} - - - _NS:9 - 4 - YES - - 67239424 - 131072 - CPChangeGrayCellMask - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{16, 12}, {218, 18}} - - _NS:9 - 8 - YES - - 67239424 - 131072 - CPChangeBackgroundCellMask - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - {{1, 1}, {220, 98}} - - - _NS:11 - - - {{241, 16}, {222, 114}} - - - _NS:9 - {0, 0} - - 67239424 - 0 - Shows State By - - - - 3 - MCAwLjgwMDAwMDAxMTkAA - - - - 1 - 0 - 2 - NO - - - - 268 - {{332, 152}, {131, 17}} - - - _NS:1505 - YES - - 68288064 - 272630784 - Label - - _NS:1505 - - - - - - - - 268 - {{151, 168}, {138, 32}} - - - _NS:9 - YES - - -2080244224 - 0 - Monkey Checkbox - - _NS:9 - - 1211912703 - 2 - - - - - 200 - 25 - - - - - 268 - {{289, 183}, {131, 17}} - - - _NS:1505 - YES - - 68288064 - 272630784 - Label - - _NS:1505 - - - - - - - {480, 210} - - - _NS:20 - - {{0, 0}, {2560, 1418}} - {1.7976931348623157e+308, 1.7976931348623157e+308} - YES - - - - - - - delegate - - - - 451 - - - - theWindow - - - - 1090 - - - - button - - - - 1174 - - - - imageButton - - - - 1175 - - - - checkbox - - - - 1176 - - - - multiCheckbox - - - - 1177 - - - - radio1 - - - - 1178 - - - - radio2 - - - - 1179 - - - - setImagePosition: - - - - 1180 - - - - positionMenu - - - - 1181 - - - - clickCount - - - - 1193 - - - - countClick: - - - - 1194 - - - - countClick: - - - - 1195 - - - - switchSelectedRadio: - - - - 1206 - - - - imageDisabledButton - - - - 1209 - - - - pushOnOffButton - - - - 1220 - - - - pushInButton - - - - 1221 - - - - toggleButton - - - - 1222 - - - - momentaryChangeButton - - - - 1223 - - - - setMonkeyButtonHighlightedBy: - - - - 1247 - - - - setMonkeyButtonHighlightedBy: - - - - 1248 - - - - setMonkeyButtonHighlightedBy: - - - - 1249 - - - - setMonkeyButtonHighlightedBy: - - - - 1250 - - - - setMonkeyButtonShowsStateBy: - - - - 1251 - - - - setMonkeyButtonShowsStateBy: - - - - 1252 - - - - setMonkeyButtonShowsStateBy: - - - - 1253 - - - - setMonkeyButtonShowsStateBy: - - - - 1254 - - - - monkeyButton - - - - 1255 - - - - monkeyLabel - - - - 1258 - - - - monkeyClick: - - - - 1259 - - - - monkeyClick: - - - - 1267 - - - - monkeyCheckboxLabel - - - - 1268 - - - - monkeyCheckbox - - - - 1269 - - - - - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 371 - - - - - - - - 372 - - - - - - - - - - 450 - - - - - 1148 - - - - - - - - 1149 - - - - - 1150 - - - - - - - - 1151 - - - - - - - - 1152 - - - - - - - - - - - - - - 1153 - - - - - 1154 - - - - - 1155 - - - - - 1163 - - - - - 1164 - - - - - 1165 - - - - - 1166 - - - - - 1182 - - - - - - - - - - - - - - 1130 - - - - - - - - 1131 - - - - - 1132 - - - - - - - - 1133 - - - - - 1134 - - - - - - - - 1135 - - - - - 1140 - - - - - - - - 1141 - - - - - 1142 - - - - - - - - - - 1146 - - - - - 1145 - - - - - 1143 - - - - - 1183 - - - - - - - - 1184 - - - - - - - - - - - 1185 - - - - - - - - 1186 - - - - - 1187 - - - - - - - - 1188 - - - - - 1189 - - - - - - - - 1190 - - - - - 1191 - - - - - - - - 1192 - - - - - 1196 - - - - - - - - 1197 - - - - - 1207 - - - - - - - - 1208 - - - - - 1210 - - - - - - - - 1211 - - - - - - - - - - - 1212 - - - - - - - - 1213 - - - - - 1214 - - - - - - - - 1215 - - - - - 1216 - - - - - - - - 1217 - - - - - 1218 - - - - - - - - 1219 - - - - - 1224 - - - - - - Window - Monkey Button Test - - - 1225 - - - - - - - - - - - - - 1226 - - - - - - - - 1227 - - - - - 1228 - - - - - - - - - - - 1230 - - - - - - - - 1231 - - - - - 1232 - - - - - - - - 1233 - - - - - 1234 - - - - - - - - 1235 - - - - - 1236 - - - - - - - - 1237 - - - - - 1238 - - - - - - - - - - - 1239 - - - - - - - - 1240 - - - - - - - - 1241 - - - - - - - - 1242 - - - - - - - - 1243 - - - - - 1244 - - - - - 1245 - - - - - 1246 - - - - - 1256 - - - - - - - - 1257 - - - - - 1260 - - - - - - - - 1261 - - - - - 1262 - - - - - - - - 1263 - - - - - - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{100, 979}, {318, 85}} - - - com.apple.InterfaceBuilder.CocoaPlugin - {{100, 979}, {318, 85}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{502, 1195}, {271, 156}} - com.apple.InterfaceBuilder.CocoaPlugin - {{502, 1195}, {271, 156}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{502, 943}, {480, 210}} - com.apple.InterfaceBuilder.CocoaPlugin - {{502, 943}, {480, 210}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{100, 1098}, {380, 253}} - - - com.apple.InterfaceBuilder.CocoaPlugin - {{100, 1098}, {380, 253}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - - - - - 1269 - - - - - AppController - NSObject - - id - id - id - id - id - id - - - - countClick: - id - - - monkeyClick: - id - - - radioGroupClicked: - id - - - setMonkeyButtonHighlightedBy: - id - - - setMonkeyButtonShowsStateBy: - id - - - switchSelectedRadio: - id - - - - NSButton - CPCheckBox - NSTextField - NSButton - NSButton - NSButton - NSButton - CPCheckBox - NSTextField - NSTextField - CPCheckBox - NSPopUpButton - NSButton - NSButton - CPRadio - CPRadio - NSButton - - - - button - NSButton - - - checkbox - CPCheckBox - - - clickCount - NSTextField - - - imageButton - NSButton - - - imageDisabledButton - NSButton - - - momentaryChangeButton - NSButton - - - monkeyButton - NSButton - - - monkeyCheckbox - CPCheckBox - - - monkeyCheckboxLabel - NSTextField - - - monkeyLabel - NSTextField - - - 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 - YES - - 3 - - {8, 8} - {11, 11} - {10, 3} - {8, 8} - {15, 15} - - + + + + + + 3 + MCAwAA + + + + 400 + 75 + + + + + 3 + MQA + + + + + + 268 + {{163, 69}, {152, 40}} + + + + YES + + -2080374784 + 16777216 + Multistate Checkbox + + + 1211912448 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + NO + + + + 268 + {{29, 69}, {85, 40}} + + + + YES + + -2080374784 + 134217728 + Checkbox + + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{143, 133}, {176, 25}} + + + + YES + + 67108864 + 134217728 + Button With Image + + + -2034483200 + 163 + + + 200 + 25 + + NO + + + + 268 + {{24, 133}, {96, 25}} + + + + YES + + 67108864 + 134217728 + Button + + + -2038284288 + 163 + + + 200 + 25 + + NO + + + {{20, 59}, {340, 174}} + + + + BezelView + + + {380, 253} + + + + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + YES + + + AppController + + + 15 + 2 + {{200, 1000}, {318, 85}} + 611844096 + Continuous Button Test + NSWindow + + + + + 256 + + + + 268 + {{14, 37}, {132, 32}} + + + + YES + + 67108864 + 134217728 + Normal Button + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{146, 37}, {158, 32}} + + + + YES + + 67633152 + 134217728 + Continuous Button + + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{17, 20}, {107, 17}} + + + + YES + + 68157504 + 272630784 + Recorded clicks: + + + + + + NO + + + + 268 + {{126, 20}, {175, 17}} + + + + YES + + 68157504 + 71304192 + 0 + + + + + + NO + + + {318, 85} + + + + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + YES + + + 15 + 2 + {{1000, 1000}, {271, 156}} + 611845120 + CPButton Button Type Test + NSWindow + + + + + 256 + + + + 268 + {{25, 108}, {220, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Momentary Push In (Normal) + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{25, 76}, {220, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Push On / Push Off + + _NS:9 + + -1232977920 + 129 + + + 200 + 25 + + NO + + + + 268 + {{25, 44}, {220, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Toggle + + _NS:9 + + -930988032 + 129 + + + 200 + 25 + + NO + + + + 268 + {{25, 12}, {220, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Momentary Change + + _NS:9 + + 142753792 + 129 + + + 200 + 25 + + NO + + + {271, 156} + + + + _NS:20 + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + YES + + + 7 + 2 + {{1000, 500}, {480, 220}} + 611845120 + Monkey Button Test + NSWindow + + + + + 256 + + + + 268 + {{147, 142}, {186, 32}} + + + + _NS:9 + YES + + 67108864 + 134217728 + Monkey Button + + _NS:9 + + -2034483200 + 129 + + NSImage + NSAddTemplate + + + NSImage + NSRemoveTemplate + + Alternate Title + + 200 + 25 + + NO + + + + 12 + + + + 274 + + + + 268 + {{16, 72}, {137, 18}} + + + + _NS:9 + 2 + YES + + 67108864 + 131072 + CPPushInCellMask + + LucidaGrande + 11 + 3100 + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{16, 52}, {152, 18}} + + + + _NS:9 + 1 + YES + + 67108864 + 131072 + CPContentsCellMask + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{16, 32}, {172, 18}} + + + + _NS:9 + 4 + YES + + 67108864 + 131072 + CPChangeGrayCellMask + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{16, 12}, {218, 18}} + + + + _NS:9 + 8 + YES + + 67108864 + 131072 + CPChangeBackgroundCellMask + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + {{1, 1}, {220, 98}} + + + + _NS:11 + + + {{17, 16}, {222, 114}} + + + + _NS:9 + {0, 0} + + 67108864 + 0 + Highlights By + + + 6 + System + textBackgroundColor + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 12 + + + + 274 + + + + 268 + {{16, 72}, {137, 18}} + + + + _NS:9 + 2 + YES + + 67108864 + 131072 + CPPushInCellMask + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{16, 52}, {152, 18}} + + + + _NS:9 + 1 + YES + + 67108864 + 131072 + CPContentsCellMask + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{16, 32}, {172, 18}} + + + + _NS:9 + 4 + YES + + 67108864 + 131072 + CPChangeGrayCellMask + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{16, 12}, {218, 18}} + + + + _NS:9 + 8 + YES + + 67108864 + 131072 + CPChangeBackgroundCellMask + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + {{1, 1}, {220, 98}} + + + + _NS:11 + + + {{241, 16}, {222, 114}} + + + + _NS:9 + {0, 0} + + 67108864 + 0 + Shows State By + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + + 1 + 0 + 2 + NO + + + + 268 + {{332, 152}, {131, 17}} + + + + _NS:1505 + YES + + 68157504 + 272630784 + Label + + _NS:1505 + + + + + NO + + + + 268 + {{151, 181}, {138, 32}} + + + + _NS:9 + YES + + -2080374784 + 0 + Monkey Checkbox + + _NS:9 + + 1211912448 + 2 + + + + + 200 + 25 + + NO + + + + 268 + {{307, 189}, {131, 17}} + + + + _NS:1505 + YES + + 68157504 + 272630784 + Label + + _NS:1505 + + + + + NO + + + {480, 220} + + + + _NS:20 + + {{0, 0}, {2560, 1418}} + {10000000000000, 10000000000000} + YES + + + + + + + delegate + + + + 451 + + + + theWindow + + + + 1090 + + + + button + + + + 1174 + + + + imageButton + + + + 1175 + + + + checkbox + + + + 1176 + + + + multiCheckbox + + + + 1177 + + + + radio1 + + + + 1178 + + + + radio2 + + + + 1179 + + + + setImagePosition: + + + + 1180 + + + + positionMenu + + + + 1181 + + + + clickCount + + + + 1193 + + + + countClick: + + + + 1194 + + + + countClick: + + + + 1195 + + + + switchSelectedRadio: + + + + 1206 + + + + imageDisabledButton + + + + 1209 + + + + pushOnOffButton + + + + 1220 + + + + pushInButton + + + + 1221 + + + + toggleButton + + + + 1222 + + + + momentaryChangeButton + + + + 1223 + + + + setMonkeyButtonHighlightedBy: + + + + 1247 + + + + setMonkeyButtonHighlightedBy: + + + + 1248 + + + + setMonkeyButtonHighlightedBy: + + + + 1249 + + + + setMonkeyButtonHighlightedBy: + + + + 1250 + + + + setMonkeyButtonShowsStateBy: + + + + 1251 + + + + setMonkeyButtonShowsStateBy: + + + + 1252 + + + + setMonkeyButtonShowsStateBy: + + + + 1253 + + + + setMonkeyButtonShowsStateBy: + + + + 1254 + + + + monkeyButton + + + + 1255 + + + + monkeyLabel + + + + 1258 + + + + monkeyClick: + + + + 1259 + + + + monkeyClick: + + + + 1267 + + + + monkeyCheckboxLabel + + + + 1268 + + + + monkeyCheckbox + + + + 1269 + + + + + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 371 + + + + + + + + 372 + + + + + + + + + + 450 + + + + + 1148 + + + + + + + + 1149 + + + + + 1150 + + + + + + + + 1151 + + + + + + + + 1152 + + + + + + + + + + + + + + 1153 + + + + + 1154 + + + + + 1155 + + + + + 1163 + + + + + 1164 + + + + + 1165 + + + + + 1166 + + + + + 1182 + + + + + + + + + + + + + + 1130 + + + + + + + + 1131 + + + + + 1132 + + + + + + + + 1133 + + + + + 1134 + + + + + + + + 1135 + + + + + 1140 + + + + + + + + 1141 + + + + + 1142 + + + + + + + + + + 1146 + + + + + 1145 + + + + + 1143 + + + + + 1183 + + + + + + + + 1184 + + + + + + + + + + + 1185 + + + + + + + + 1186 + + + + + 1187 + + + + + + + + 1188 + + + + + 1189 + + + + + + + + 1190 + + + + + 1191 + + + + + + + + 1192 + + + + + 1196 + + + + + + + + 1197 + + + + + 1207 + + + + + + + + 1208 + + + + + 1210 + + + + + + + + 1211 + + + + + + + + + + + 1212 + + + + + + + + 1213 + + + + + 1214 + + + + + + + + 1215 + + + + + 1216 + + + + + + + + 1217 + + + + + 1218 + + + + + + + + 1219 + + + + + 1224 + + + + + + Window - Monkey Button Test + + + 1225 + + + + + + + + + + + + + 1226 + + + + + + + + 1227 + + + + + 1228 + + + + + + + + + + + 1230 + + + + + + + + 1231 + + + + + 1232 + + + + + + + + 1233 + + + + + 1234 + + + + + + + + 1235 + + + + + 1236 + + + + + + + + 1237 + + + + + 1238 + + + + + + + + + + + 1239 + + + + + + + + 1240 + + + + + + + + 1241 + + + + + + + + 1242 + + + + + + + + 1243 + + + + + 1244 + + + + + 1245 + + + + + 1246 + + + + + 1256 + + + + + + + + 1257 + + + + + 1260 + + + + + + + + 1261 + + + + + 1262 + + + + + + + + 1263 + + + + + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{100, 979}, {318, 85}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{502, 1195}, {271, 156}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{502, 943}, {480, 210}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + com.apple.InterfaceBuilder.CocoaPlugin + {{100, 1098}, {380, 253}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + + + 1271 + + + + + AppController + NSObject + + id + id + id + id + id + id + + + + countClick: + id + + + monkeyClick: + id + + + radioGroupClicked: + id + + + setMonkeyButtonHighlightedBy: + id + + + setMonkeyButtonShowsStateBy: + id + + + switchSelectedRadio: + id + + + + NSButton + CPCheckBox + NSTextField + NSButton + NSButton + NSButton + NSButton + CPCheckBox + NSTextField + NSTextField + CPCheckBox + NSPopUpButton + NSButton + NSButton + CPRadio + CPRadio + NSButton + + + + button + NSButton + + + checkbox + CPCheckBox + + + clickCount + NSTextField + + + imageButton + NSButton + + + imageDisabledButton + NSButton + + + momentaryChangeButton + NSButton + + + monkeyButton + NSButton + + + monkeyCheckbox + CPCheckBox + + + monkeyCheckboxLabel + NSTextField + + + monkeyLabel + NSTextField + + + 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 + YES + 3 + + {8, 8} + {11, 11} + {10, 3} + {8, 8} + {15, 15} + + diff --git a/Tests/Manual/CPImageViewbindingsTest/AppController.j b/Tests/Manual/CPImageViewbindingsTest/AppController.j index 1779ffc44..8e0ccb094 100644 --- a/Tests/Manual/CPImageViewbindingsTest/AppController.j +++ b/Tests/Manual/CPImageViewbindingsTest/AppController.j @@ -34,7 +34,7 @@ var data = [[CPData alloc] initWithRawString:dataString], theRows = [CPPropertyListSerialization propertyListFromData:data format:CPPropertyListXMLFormat_v1_0]; -// Add a CPImage to the model to test CPValueBinding. + // Add a CPImage to the model to test CPValueBinding. var path = [[CPBundle mainBundle] pathForResource:@"value.jpg"], image = [[CPImage alloc] initWithContentsOfFile:path], dict = [CPDictionary dictionaryWithObject:image forKey:@"image"]; diff --git a/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.cib b/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.cib index 1acb56f51..02eee7113 100644 --- a/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.cib +++ b/Tests/Manual/TableTest/TableCibTest/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;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;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;1;0E;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;38E;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;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;24E;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;39E;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;40E;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;38E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;41E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;20E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;29E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;38E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;43E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;39E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;44E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;45E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;46E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;47E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;48E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;22E;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;21E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;50E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;51E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;52E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;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;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;54E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;55E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;56E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;57E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;58E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;2;60E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;2;61E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;26E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;27E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;2;62E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;2;62E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;2;62E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;2;62E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;2;63E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;2;63E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;2;63E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;2;64E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;2;65E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;2;49E;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;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;66E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;67E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;68E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;69E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;70E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;71E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;49E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;24E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;72E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;73E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;49E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;74E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;75E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;76E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;68E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;69E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;70E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;77E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;49E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;24E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;78E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;73E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;49E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;79E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;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;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;60E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;80E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;80E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;60E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;82E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;83E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;12;$agrid-colorD;K;6;CP$UIDd;2;84E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;73E;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;2;85E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;2;86E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;2;49E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;2;73E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;2;87E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;2;63E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;2;63E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;2;63E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;2;63E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;2;88E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;2;84E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;2;89E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;2;63E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;2;91E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;37E;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;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;92E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;2;93E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;94E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;2;95E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;2;97E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;2;99E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;89E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;87E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;63E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;100E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;101E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;94E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;2;95E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;102E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;103E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;89E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;87E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;63E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;104E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;105E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;62E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;106E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;107E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;109E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;89E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;87E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;63E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;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;2;62E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;111E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;112E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;114E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;89E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;87E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;63E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;115E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;62E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;111E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;116E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;118E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;89E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;87E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;63E;K;28;CPSortDescriptorPrototypeKeyD;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;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;61E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;119E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;119E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;61E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;120E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;29E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;2;63E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;121E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;E;E;S;8;delegateS;9;theWindowS;10;dataSourceS;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 428}, {686, 348}}d;1;7S;6;Windowd;1;0S;21;{{7, 11}, {686, 348}}S;20;{{0, 0}, {686, 348}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;24E;E;E;S;6;normalS;22;{{20, 20}, {646, 308}}S;20;{{0, 0}, {646, 308}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;64E;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;59E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;122E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;80E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;123E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;68E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;82E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;29E;E;D;K;6;$classD;K;6;CP$UIDd;2;59E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;124E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;125E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;126E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;68E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;82E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;37E;E;d;2;10T;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;E;d;1;2S;22;{{502, 16}, {15, 275}}S;19;{{0, 0}, {15, 275}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:d;1;4f;18;0.9482758620689655S;19;{{1, 1}, {516, 15}}S;19;{{0, 0}, {516, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9938271604938271S;20;{{0, 0}, {644, 290}}D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;128E;E;S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;2;81E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;129E;E;d;2;43S;6;{3, 2}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;E;E;d;1;3D;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;2;90E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;130E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;131E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;E;S;1;1d;3;101d;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;2;96E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;133E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;134E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;49E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;135E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;137E;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;98E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;139E;K;6;$afontD;K;6;CP$UIDd;3;141E;K;12;$atext-colorD;K;6;CP$UIDd;3;142E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;73E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;65E;K;11;$aalignmentD;K;6;CP$UIDd;2;49E;K;15;$acontent-insetD;K;6;CP$UIDd;3;144E;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;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;2;73E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;49E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;145E;E;S;1;2d;3;154D;K;6;$classD;K;6;CP$UIDd;2;96E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;147E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;134E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;49E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;148E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;137E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;138E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;139E;K;6;$afontD;K;6;CP$UIDd;3;149E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;73E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;65E;K;11;$aalignmentD;K;6;CP$UIDd;2;49E;K;15;$acontent-insetD;K;6;CP$UIDd;3;150E;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;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;2;73E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;49E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;145E;E;S;5;iconsd;3;188f;21;3.028234663852886e+53D;K;6;$classD;K;6;CP$UIDd;2;96E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;151E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;134E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;49E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;152E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;137E;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;3;108E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;49E;K;11;$aalignmentD;K;6;CP$UIDd;2;49E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;73E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;49E;E;d;2;81f;22;3.4028234663852885e+54D;K;6;$classD;K;6;CP$UIDd;2;96E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;153E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;134E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;65E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;154E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;137E;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;3;113E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;65E;K;16;$aimage-positionD;K;6;CP$UIDd;2;65E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;65E;K;11;$aalignmentD;K;6;CP$UIDd;2;65E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;73E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;156E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;87E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;65E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;49E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;157E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;158E;E;d;3;105D;K;6;$classD;K;6;CP$UIDd;2;96E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;159E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;134E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;49E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;160E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;137E;E;D;K;10;$classnameS;16;CPLevelIndicatorK;8;$classesA;S;16;CPLevelIndicatorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;117E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;K;11;$aalignmentD;K;6;CP$UIDd;2;49E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;73E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;2;65E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;2;49E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;2;89E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;2;89E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;2;89E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;2;49E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;2;49E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;2;87E;E;S;19;{{0, 0}, {644, 23}}S;14;tableHeaderRowS;13;AppControllerS;20;{{1, 1}, {644, 290}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;29E;E;E;S;21;{{1, 291}, {644, 17}}S;19;{{0, 0}, {644, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;37E;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;161E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;161E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;161E;E;E;S;22;{{502, 285}, {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;163E;E;E;S;12;columnHeaderS;8;Column 1D;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;136E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;164E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;165E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;87E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;87E;E;S;9;textfieldS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;140E;K;4;nameD;K;6;CP$UIDd;3;166E;K;12;defaultValueD;K;6;CP$UIDd;3;137E;K;6;valuesD;K;6;CP$UIDd;3;168E;E;D;K;6;$classD;K;6;CP$UIDd;2;81E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;169E;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;143E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;170E;E;S;0;d;4;3072D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;171E;E;E;S;3;TwoD;K;6;$classD;K;6;CP$UIDd;3;140E;K;4;nameD;K;6;CP$UIDd;3;166E;K;12;defaultValueD;K;6;CP$UIDd;3;137E;K;6;valuesD;K;6;CP$UIDd;3;172E;E;D;K;6;$classD;K;6;CP$UIDd;3;143E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;170E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;173E;E;E;S;9;ImageViewD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;174E;E;E;S;8;CheckboxS;9;check-boxS;5;Checkf;3;0.5f;4;0.05D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;175E;E;E;S;15;Level Indicatord;1;1D;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;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;97E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;97E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;176E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;E;S;17;Arial, sans-serifd;2;12S;4;fontD;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;167E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;177E;K;6;normalD;K;6;CP$UIDd;3;137E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;161E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;102E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;102E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;176E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;3;167E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;178E;K;6;normalD;K;6;CP$UIDd;3;179E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;107E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;107E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;176E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;112E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;112E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;176E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;E;D;K;6;$classD;K;6;CP$UIDd;3;162E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;116E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;127E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;127E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;116E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;176E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;53E;E;d;2;18D;K;6;$classD;K;6;CP$UIDd;3;136E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;164E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;165E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;63E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;87E;E;D;K;6;$classD;K;6;CP$UIDd;3;136E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;164E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;180E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;63E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;87E;E;D;K;6;$classD;K;6;CP$UIDd;3;136E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;164E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;180E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;87E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;87E;E;d;2;20E;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;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;2;24E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;1;0E;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;38E;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;20E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;24E;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;39E;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;40E;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;38E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;41E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;20E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;42E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;29E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;38E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;43E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;39E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;44E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;45E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;46E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;47E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;48E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;22E;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;21E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;50E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;50E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;51E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;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;23E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;53E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;54E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;55E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;22E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;56E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;57E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;23;CPScrollViewContentViewD;K;6;CP$UIDd;2;59E;K;29;CPScrollViewHeaderClipViewKeyD;K;6;CP$UIDd;2;60E;K;21;CPScrollViewVScrollerD;K;6;CP$UIDd;2;26E;K;21;CPScrollViewHScrollerD;K;6;CP$UIDd;2;27E;K;23;CPScrollViewVLineScrollD;K;6;CP$UIDd;2;61E;K;23;CPScrollViewVPageScrollD;K;6;CP$UIDd;2;61E;K;23;CPScrollViewHLineScrollD;K;6;CP$UIDd;2;61E;K;23;CPScrollViewHPageScrollD;K;6;CP$UIDd;2;61E;K;24;CPScrollViewHasVScrollerD;K;6;CP$UIDd;2;62E;K;24;CPScrollViewHasHScrollerD;K;6;CP$UIDd;2;62E;K;29;CPScrollViewAutohidesScrollerD;K;6;CP$UIDd;2;62E;K;25;CPScrollViewCornerViewKeyD;K;6;CP$UIDd;1;0E;K;31;CPScrollViewBottomCornerViewKeyD;K;6;CP$UIDd;2;63E;K;25;CPScrollViewBorderTypeKeyD;K;6;CP$UIDd;2;64E;K;28;CPScrollViewScrollerStyleKeyD;K;6;CP$UIDd;1;0E;K;32;CPScrollViewScrollerKnobStyleKeyD;K;6;CP$UIDd;2;49E;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;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;65E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;66E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;67E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;69E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;70E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;49E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;24E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;71E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;72E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;49E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;73E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;25E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;74E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;75E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;67E;K;17;CPViewIsHiddenKeyD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;69E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;76E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;49E;K;18;CPControlTargetKeyD;K;6;CP$UIDd;2;24E;K;18;CPControlActionKeyD;K;6;CP$UIDd;2;77E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;72E;K;21;CPScrollerControlSizeD;K;6;CP$UIDd;2;49E;K;24;CPScrollerKnobProportionD;K;6;CP$UIDd;2;78E;K;18;CPScrollerStyleKeyD;K;6;CP$UIDd;1;0E;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;28E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;59E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;79E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;79E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;59E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;82E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;12;$agrid-colorD;K;6;CP$UIDd;2;83E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;72E;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;2;84E;K;30;CPTableViewIntercellSpacingKeyD;K;6;CP$UIDd;2;85E;K;37;CPTableViewSelectionHighlightStyleKeyD;K;6;CP$UIDd;2;49E;K;37;CPTableViewColumnAutoresizingStyleKeyD;K;6;CP$UIDd;2;72E;K;31;CPTableViewMultipleSelectionKeyD;K;6;CP$UIDd;2;86E;K;28;CPTableViewEmptySelectionKeyD;K;6;CP$UIDd;2;62E;K;30;CPTableViewColumnReorderingKeyD;K;6;CP$UIDd;2;62E;K;28;CPTableViewColumnResizingKeyD;K;6;CP$UIDd;2;62E;K;29;CPTableViewColumnSelectionKeyD;K;6;CP$UIDd;2;62E;K;26;CPTableViewTableColumnsKeyD;K;6;CP$UIDd;2;87E;K;23;CPTableViewGridColorKeyD;K;6;CP$UIDd;2;83E;K;27;CPTableViewGridStyleMaskKeyD;K;6;CP$UIDd;2;88E;K;39;CPTableViewUsesAlternatingBackgroundKeyD;K;6;CP$UIDd;2;62E;K;34;CPTableViewAlternatingRowColorsKeyD;K;6;CP$UIDd;1;0E;K;24;CPTableViewCornerViewKeyD;K;6;CP$UIDd;2;90E;K;24;CPTableViewHeaderViewKeyD;K;6;CP$UIDd;2;37E;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;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;91E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;2;92E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;93E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;2;94E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;2;96E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;2;98E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;88E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;86E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;62E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;2;99E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;100E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;93E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;2;94E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;101E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;102E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;88E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;86E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;62E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;3;103E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;104E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;61E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;105E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;106E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;108E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;88E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;86E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;62E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;109E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;61E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;110E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;111E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;113E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;88E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;86E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;62E;K;28;CPSortDescriptorPrototypeKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;30E;K;26;CPTableColumnIdentifierKeyD;K;6;CP$UIDd;1;0E;K;21;CPTableColumnWidthKeyD;K;6;CP$UIDd;3;114E;K;24;CPTableColumnMinWidthKeyD;K;6;CP$UIDd;2;61E;K;24;CPTableColumnMaxWidthKeyD;K;6;CP$UIDd;3;110E;K;26;CPTableColumnHeaderViewKeyD;K;6;CP$UIDd;3;115E;K;24;CPTableColumnDataViewKeyD;K;6;CP$UIDd;3;117E;K;28;CPTableColumnResizingMaskKeyD;K;6;CP$UIDd;2;88E;K;24;CPTableColumnIsHiddenKeyD;K;6;CP$UIDd;2;86E;K;26;CPTableColumnIsEditableKeyD;K;6;CP$UIDd;2;62E;K;28;CPSortDescriptorPrototypeKeyD;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;36E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;60E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;118E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;118E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;60E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;119E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;29;CPTableHeaderViewTableViewKeyD;K;6;CP$UIDd;2;29E;K;33;CPTableHeaderViewDrawsColumnLinesD;K;6;CP$UIDd;2;62E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;3;120E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;E;E;S;8;delegateS;9;theWindowS;10;dataSourceS;32;{10000000000000, 10000000000000}S;8;CPWindowS;24;{{335, 128}, {686, 348}}d;1;7S;6;Windowd;1;0S;20;{{0, 0}, {686, 348}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;24E;E;E;S;6;normalS;22;{{20, 20}, {646, 308}}S;20;{{0, 0}, {646, 308}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;63E;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;58E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;121E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;79E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;122E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;67E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;29E;E;D;K;6;$classD;K;6;CP$UIDd;2;58E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;123E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;124E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;125E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;24E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;67E;K;21;CPViewBackgroundColorD;K;6;CP$UIDd;2;81E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;24;CPScrollViewDocumentViewD;K;6;CP$UIDd;2;37E;E;d;2;10T;D;K;6;$classD;K;6;CP$UIDd;2;21E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;24E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;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;24E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;E;d;1;2S;22;{{502, 16}, {15, 275}}S;19;{{0, 0}, {15, 275}}d;1;8d;11;-2147483648S;8;scrollerS;17;disabled+verticalS;27;_verticalScrollerDidScroll:d;1;4f;18;0.9482758620689655S;19;{{1, 2}, {644, 15}}S;19;{{0, 0}, {644, 15}}S;8;disabledS;29;_horizontalScrollerDidScroll:f;18;0.9415204678362573S;20;{{0, 0}, {644, 290}}D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;80E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;127E;E;S;9;tableviewD;K;6;$classD;K;6;CP$UIDd;2;80E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;128E;E;d;2;43S;6;{3, 2}F;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;E;E;d;1;3D;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;2;89E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;49E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;129E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;130E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;131E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;E;S;1;1d;3;101d;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;2;95E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;132E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;133E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;6;$afontD;K;6;CP$UIDd;3;135E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;49E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;136E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;135E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;2;49E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;2;72E;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;97E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;137E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;138E;K;6;$afontD;K;6;CP$UIDd;3;140E;K;12;$atext-colorD;K;6;CP$UIDd;3;141E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;72E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;64E;K;11;$aalignmentD;K;6;CP$UIDd;2;49E;K;15;$acontent-insetD;K;6;CP$UIDd;3;143E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;145E;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;2;72E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;49E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;144E;E;S;1;2d;3;154D;K;6;$classD;K;6;CP$UIDd;2;95E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;146E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;133E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;6;$afontD;K;6;CP$UIDd;3;147E;K;16;$atext-alignmentD;K;6;CP$UIDd;3;148E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;149E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;147E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;3;148E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;2;72E;E;D;K;6;$classD;K;6;CP$UIDd;2;97E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;137E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;138E;K;6;$afontD;K;6;CP$UIDd;3;150E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;72E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;64E;K;11;$aalignmentD;K;6;CP$UIDd;3;148E;K;15;$acontent-insetD;K;6;CP$UIDd;3;151E;K;17;CPControlValueKeyD;K;6;CP$UIDd;3;144E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;3;145E;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;2;72E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;3;148E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;3;144E;E;S;5;iconsd;3;188f;21;3.028234663852886e+53D;K;6;$classD;K;6;CP$UIDd;2;95E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;152E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;133E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;6;$afontD;K;6;CP$UIDd;3;153E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;64E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;154E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;153E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;2;64E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;2;72E;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;3;107E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;49E;K;11;$aalignmentD;K;6;CP$UIDd;2;49E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;72E;K;23;CPImageViewHasShadowKeyD;K;6;CP$UIDd;1;0E;K;28;CPImageViewImageAlignmentKeyD;K;6;CP$UIDd;2;49E;E;f;9;94.078125f;22;3.4028234663852885e+54D;K;6;$classD;K;6;CP$UIDd;2;95E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;155E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;133E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;6;$afontD;K;6;CP$UIDd;3;135E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;49E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;156E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;135E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;2;49E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;2;72E;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;3;112E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;157E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;15;$aimage-scalingD;K;6;CP$UIDd;2;64E;K;16;$aimage-positionD;K;6;CP$UIDd;2;64E;K;20;$avertical-alignmentD;K;6;CP$UIDd;2;64E;K;11;$aalignmentD;K;6;CP$UIDd;2;64E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;72E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;3;158E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;3;144E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;86E;K;23;CPButtonHighlightsByKeyD;K;6;CP$UIDd;3;148E;K;23;CPButtonShowsStateByKeyD;K;6;CP$UIDd;3;148E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;2;62E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;64E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;49E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;3;159E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;3;160E;E;d;2;92D;K;6;$classD;K;6;CP$UIDd;2;95E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;3;161E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;3;133E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;6;$afontD;K;6;CP$UIDd;3;135E;K;16;$atext-alignmentD;K;6;CP$UIDd;2;49E;K;38;_CPTableColumnHeaderViewStringValueKeyD;K;6;CP$UIDd;3;162E;K;32;_CPTableColumnHeaderViewImageKeyD;K;6;CP$UIDd;1;0E;K;31;_CPTableColumnHeaderViewFontKeyD;K;6;CP$UIDd;3;135E;K;36;_CPTableColumnHeaderViewTextColorKeyD;K;6;CP$UIDd;1;0E;K;42;_CPTableColumnHeaderViewTextShadowColorKeyD;K;6;CP$UIDd;1;0E;K;36;_CPTableColumnHeaderViewAlignmentKeyD;K;6;CP$UIDd;2;49E;K;40;_CPTableColumnHeaderViewLineBreakModeKeyD;K;6;CP$UIDd;2;72E;E;D;K;10;$classnameS;16;CPLevelIndicatorK;8;$classesA;S;16;CPLevelIndicatorS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;116E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;126E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;126E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;K;11;$aalignmentD;K;6;CP$UIDd;2;49E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;72E;K;24;CPLevelIndicatorStyleKeyD;K;6;CP$UIDd;2;64E;K;27;CPLevelIndicatorMinValueKeyD;K;6;CP$UIDd;2;49E;K;27;CPLevelIndicatorMaxValueKeyD;K;6;CP$UIDd;2;88E;K;31;CPLevelIndicatorWarningValueKeyD;K;6;CP$UIDd;2;88E;K;32;CPLevelIndicatorCriticalValueKeyD;K;6;CP$UIDd;2;88E;K;35;CPLevelIndicatorTickMarkPositionKeyD;K;6;CP$UIDd;2;49E;K;36;CPLevelIndicatorNumberOfTickMarksKeyD;K;6;CP$UIDd;2;49E;K;41;CPLevelIndicatorNumberOfMajorTickMarksKeyD;K;6;CP$UIDd;1;0E;K;29;CPLevelIndicatorIsEditableKeyD;K;6;CP$UIDd;2;86E;E;S;19;{{0, 0}, {644, 23}}S;14;tableHeaderRowS;13;AppControllerS;20;{{1, 1}, {644, 290}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;29E;E;E;S;21;{{1, 291}, {644, 17}}S;19;{{0, 0}, {644, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;37E;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;148E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;148E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;148E;E;E;S;20;{{502, 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;165E;E;E;S;12;columnHeaderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;134E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;166E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;167E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;86E;E;S;8;Column 1S;9;textfieldS;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;139E;K;4;nameD;K;6;CP$UIDd;3;168E;K;12;defaultValueD;K;6;CP$UIDd;3;169E;K;6;valuesD;K;6;CP$UIDd;3;171E;E;D;K;6;$classD;K;6;CP$UIDd;2;80E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;172E;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;142E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;173E;E;S;0;d;4;3072D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;174E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;134E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;166E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;175E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;62E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;86E;E;d;1;1S;3;TwoD;K;6;$classD;K;6;CP$UIDd;3;139E;K;4;nameD;K;6;CP$UIDd;3;168E;K;12;defaultValueD;K;6;CP$UIDd;3;169E;K;6;valuesD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;3;142E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;173E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;177E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;134E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;178E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;167E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;86E;E;S;5;ImageD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;179E;E;E;S;20;Checkbox really longS;9;check-boxS;5;Checkf;3;0.5f;4;0.05D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;180E;E;E;S;15;Level Indicatorf;3;0.8D;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;164E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;96E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;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;96E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;181E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;E;S;13;Lucida Granded;2;11S;4;fontD;K;6;$classD;K;6;CP$UIDd;3;134E;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;86E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;62E;E;D;K;10;$classnameS;12;CPDictionaryK;8;$classesA;S;12;CPDictionaryS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;170E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;184E;K;6;normalD;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;2;49E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;148E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;164E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;101E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;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;3;101E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;181E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;E;d;2;20D;K;6;$classD;K;6;CP$UIDd;3;170E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;186E;K;6;normalD;K;6;CP$UIDd;3;187E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;164E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;106E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;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;3;106E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;181E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;E;S;7;GeorgiaD;K;6;$classD;K;6;CP$UIDd;3;164E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;111E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;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;3;111E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;181E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;E;D;K;6;$classD;K;6;CP$UIDd;3;164E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;115E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;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;3;115E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;181E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;52E;E;d;2;18S;28;_CPFontSystemFacePlaceholderd;2;-1D;K;6;$classD;K;6;CP$UIDd;3;134E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;188E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;189E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;62E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;86E;E;D;K;6;$classD;K;6;CP$UIDd;3;134E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;182E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;189E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;62E;E;D;K;6;$classD;K;6;CP$UIDd;3;134E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;190E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;175E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;62E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;86E;E;D;K;6;$classD;K;6;CP$UIDd;3;134E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;190E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;175E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;86E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;2;86E;E;S;17;Arial, sans-serifd;2;12S;15;Times New RomanE;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.xib b/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.xib index 79c702e87..5afc744ff 100644 --- a/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.xib +++ b/Tests/Manual/TableTest/TableCibTest/Resources/MainMenu.xib @@ -2,39 +2,36 @@ 1050 - 10J3210 - 1306 - 1038.35 - 461.00 + 12C60 + 2843 + 1187.34 + 625.00 com.apple.InterfaceBuilder.CocoaPlugin - 1306 + 2843 YES - NSScroller - NSTableHeaderView - NSScrollView - NSTextFieldCell NSButtonCell - NSImageCell - NSTableView NSCustomObject + NSImageCell + NSLevelIndicatorCell + NSScrollView + NSScroller + NSTableColumn + NSTableHeaderView + NSTableView + NSTextFieldCell NSView NSWindowTemplate - NSLevelIndicatorCell - NSTableColumn YES com.apple.InterfaceBuilder.CocoaPlugin - YES - - YES - - + PluginDependencyRecalculationVersion + YES @@ -55,6 +52,7 @@ Window NSWindow + 256 @@ -78,21 +76,21 @@ YES + NO + YES 256 {644, 17} - + - - + + -2147483392 {{502, 0}, {16, 17}} - - @@ -103,13 +101,13 @@ 10 3.0282346638528862e+53 - 75628096 - 2048 - ImageView - - LucidaGrande + 75497536 + 134219776 + Image + + Georgia 11 - 3100 + 16 6 @@ -131,13 +129,8 @@ - 67239424 + 134217728 33554432 - - LucidaGrande - 13 - 1044 - 0 0 0 @@ -154,10 +147,14 @@ 40 1000 - 75628096 + 75497536 2048 Column 1 - + + LucidaGrande + 11 + 3100 + 3 MC4zMzMzMzI5ODU2AA @@ -165,10 +162,14 @@ - 337772096 + 337641536 2048 Text Cell - + + LucidaGrande + 13 + 1044 + 6 @@ -195,19 +196,23 @@ 40 1000 - 75628096 - 2048 + 75497536 + 67110912 Two - + + LucidaGrande-Bold + 20 + 16 + - 337772096 - 2048 + 337641536 + 67110912 Text Cell - LucidaGrande + TimesNewRomanPSMT 20 16 @@ -226,24 +231,24 @@ - 81 + 94.078125 10 3.4028234663852885e+54 - 75628096 + 75497536 2048 - Checkbox + Checkbox really long - 67239424 + 67108864 134217728 Check - 1211912703 + 1211912448 2 NSImage @@ -263,11 +268,11 @@ - 105 + 92 10 3.4028234663852885e+54 - 75628096 + 75497536 2048 Level Indicator @@ -275,7 +280,7 @@ - -2080244224 + -2080374784 0 @@ -313,6 +318,7 @@ 0 YES 0 + 1 {{1, 17}, {644, 290}} @@ -330,6 +336,7 @@ + NO _doScroller: 0.94827586206896552 @@ -337,14 +344,15 @@ -2147483392 - {{1, 292}, {516, 15}} + {{1, 291}, {644, 16}} + NO 1 _doScroller: - 0.99382716049382713 + 0.94152046783625731 @@ -361,28 +369,30 @@ 4 - {{20, 20}, {646, 308}} - 562 + 133682 - QSAAAEEgAABCNAAAQjQAAA + 0.25 + 4 + 1 - {{7, 11}, {686, 348}} + {686, 348} - {{0, 0}, {1920, 1178}} - {1e+13, 1e+13} + {{0, 0}, {1440, 878}} + {10000000000000, 10000000000000} + YES AppController @@ -421,7 +431,9 @@ YES 0 - + + YES + @@ -582,13 +594,14 @@ YES YES + -1.IBPluginDependency + -2.IBPluginDependency -3.IBPluginDependency - 371.IBEditorWindowLastContentRect 371.IBPluginDependency 371.IBWindowTemplateEditedContentRect 371.NSWindowTemplate.visibleAtLaunch - 371.editorWindowContentRectSynchronizationRect 372.IBPluginDependency + 450.IBPluginDependency 489.IBPluginDependency 490.IBPluginDependency 491.IBPluginDependency @@ -598,18 +611,25 @@ 495.IBPluginDependency 496.IBPluginDependency 497.IBPluginDependency + 501.IBPluginDependency 503.IBPluginDependency + 504.IBPluginDependency + 506.IBPluginDependency 508.IBPluginDependency 510.IBPluginDependency - + YES com.apple.InterfaceBuilder.CocoaPlugin - {{370, 244}, {558, 348}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin {{370, 244}, {558, 348}} - {{33, 99}, {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 diff --git a/Tools/Documentation/doxygen.css b/Tools/Documentation/doxygen.css index a7eb4334c..3a4678440 100644 --- a/Tools/Documentation/doxygen.css +++ b/Tools/Documentation/doxygen.css @@ -188,9 +188,24 @@ dl.el { margin-left: -1cm; } -.fragment { - font-family: Courier, monospace, fixed; - font-size: 105%; +.fragment .line { + font-family: Consolas, Courier, monospace, fixed; + white-space: pre-wrap; /* css-3 */ + white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + word-wrap: break-word; /* Internet Explorer 5.5+ */ + font-size: 11px; + margin-bottom: 3px; +} + +.fragment .lineno { + color: #d4d4d4; + margin-right: 10px; +} + +.fragment .lineno a { + color: #d4d4d4; } pre.fragment { @@ -443,7 +458,7 @@ table.memberdecls { } .memItemLeft, .memItemRight, .memTemplParams { - border-top: 1px solid #ccc; + border-top: 1px solid #f3f3f3; } .memItemLeft, .memTemplItemLeft { @@ -813,7 +828,7 @@ table.fieldtable { float:left; padding-left:10px; padding-right: 15px; - background-image:url('bc_s.png'); + padding-top: 0px; background-repeat:no-repeat; background-position:right; color:#374E7C; @@ -1079,7 +1094,7 @@ dl.citelist dd { /* ADDITIONS */ .tabs, .tabs2, .tabs3 { background: -moz-linear-gradient(-90deg, #fff, #eee); - background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee)); + background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#eee)); border-bottom: 1px solid #ccc; width: 100%; z-index: 101; @@ -1150,7 +1165,7 @@ dl.citelist dd { .tablist li.current a { background: -moz-linear-gradient(-90deg, #eee, #fff); - background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#fff)); + background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#fff)); color: #444; text-shadow: 0px 1px 1px #f2f2f2; } @@ -1283,3 +1298,23 @@ dl.citelist dd { #nav-tree-contents { margin: 6px 0px 0px 0px; } + +.memSeparator { + display: none; +} + +.inherit_header td { + padding-top: 30px; + padding-bottom: 10px; + font: 13px normal "Lucida Grande", Helvetica, Arial, Geneva, sans-serif; + font-size: 14px; +} + +#nav-sync { +right: 5px; +} +#nav-sync img { + width: 16px; +} + +} \ No newline at end of file diff --git a/Tools/XcodeCapp/TNXCodeCapp.h b/Tools/XcodeCapp/TNXCodeCapp.h index b43cfa130..2097b6dc8 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.h +++ b/Tools/XcodeCapp/TNXCodeCapp.h @@ -73,7 +73,9 @@ extern NSString * const XCCListeningStartNotification; - (BOOL)isXIBFile:(NSString *)path; - (BOOL)isXCCIgnoreFile:(NSString *)path; - (BOOL)prepareXCodeSupportProject; -- (NSURL*)shadowURLForSourceURL:(NSURL*)aSourceURL; +- (NSURL*)shadowHeaderURLForSourceURL:(NSURL*)aSourceURL; +- (void)cleanUpShadowsRelatedToSourceURL:(NSURL*)aSourceURL; +- (NSURL*)shadowImplementationURLForSourceURL:(NSURL*)aSourceURL; - (NSURL*)sourceURLForShadowName:(NSString *)aString; - (void)handleFileModification:(NSString*)fullPath notify:(BOOL)shouldNotify; - (void)handleFileRemoval:(NSString*)fullPath; diff --git a/Tools/XcodeCapp/TNXCodeCapp.m b/Tools/XcodeCapp/TNXCodeCapp.m index a77736932..1e35e29cc 100644 --- a/Tools/XcodeCapp/TNXCodeCapp.m +++ b/Tools/XcodeCapp/TNXCodeCapp.m @@ -19,6 +19,7 @@ #import "TNXCodeCapp.h" #include "macros.h" +NSString * const XCCUnderscoreReplacement = @"DoNotPutThisStringInFileNameOrWorldWillDie"; NSString * const XCCDidPopulateProjectNotification = @"XCCDidPopulateProjectNotification"; NSString * const XCCConversionStartNotification = @"XCCConversionStartNotification"; NSString * const XCCConversionStopNotification = @"XCCConversionStopNotification"; @@ -39,8 +40,8 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification @synthesize supportFileLevelAPI; @synthesize isUsingFileLevelAPI; -#pragma mark - -#pragma mark Initialization + +#pragma mark - Initialization /*! Initialize the AppController @@ -48,7 +49,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification - (id)init { self = [super init]; - + if (self) { errorList = [NSMutableArray arrayWithCapacity:10]; @@ -57,7 +58,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification parserPath = [[NSBundle mainBundle] pathForResource:@"parser" ofType:@"j"]; lastEventId = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastEventId"]; appStartedTimestamp = [NSDate date]; - + [self setIsListening:NO]; [self setIsUsingFileLevelAPI:NO]; @@ -65,11 +66,11 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification SInt32 versionMinor = 0; Gestalt(gestaltSystemVersionMajor, &versionMajor); Gestalt(gestaltSystemVersionMinor, &versionMinor); - + [self setSupportFileLevelAPI:versionMajor >= 10 && versionMinor >= 7]; // Uncomment to simulate 10.6 mode // [self setSupportFileLevelAPI:NO]; - + [self configure]; if([fm fileExistsAtPath:[@"~/.bash_profile" stringByExpandingTildeInPath]]) @@ -91,21 +92,21 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification profilePath = @""; } } - + return self; } - (void)start -{ +{ if (![[NSUserDefaults standardUserDefaults] boolForKey:@"XCCReopenLastProject"]) return; NSString *lastOpenedPath = [[NSUserDefaults standardUserDefaults] objectForKey:@"LastOpenedPath"]; - + if (lastOpenedPath) { if ([fm fileExistsAtPath:lastOpenedPath]) - { + { [self listenProjectAtPath:[NSString stringWithFormat:@"%@/", lastOpenedPath]]; } else @@ -115,6 +116,135 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification } } + +#pragma mark - Project Management + +/*! + Check if .XcodeSupport needs to be initialized. + If not needed, check that all J files are mirrored. If no, + then launch conversion for missing mirrored h files + @return YES or NO + */ +- (BOOL)prepareXCodeSupportProject +{ + XCodeSupportProjectName = [NSString stringWithFormat:@"%@.xcodeproj/", currentProjectName]; + XCodeTemplatePBXPath = [[NSBundle mainBundle] pathForResource:@"project.pbxproj" ofType:@"sample"]; + XCodeSupportProject = [NSURL URLWithString:XCodeSupportProjectName relativeToURL:currentProjectURL]; + XCodeSupportProjectSources = [NSURL URLWithString:@".XcodeSupport/" relativeToURL:currentProjectURL]; + XCodeSupportPBXPath = [NSString stringWithFormat:@"%@/project.pbxproj", [XCodeSupportProject path]]; + PBXModifierScriptPath = [[NSBundle mainBundle] pathForResource:@"pbxprojModifier" ofType:@"py"]; + + + //[fm removeItemAtURL:XCodeSupportProjectSources error:nil]; + //[fm removeItemAtURL:XCodeSupportProject error:nil]; + + // create the template project if it doesn't exist + if (![fm fileExistsAtPath:[XCodeSupportProjectSources path]]) + { + NSLog(@"prepareXCodeSupportProject: Xcode support folder created at: %@", [XCodeSupportProject path]); + [fm createDirectoryAtPath:[XCodeSupportProject path] withIntermediateDirectories:YES attributes:nil error:nil]; + + DLog(@"prepareXCodeSupportProject: Copying project.pbxproj from %@ to %@", XCodeTemplatePBXPath, [XCodeSupportProject path]); + [fm copyItemAtPath:XCodeTemplatePBXPath toPath:XCodeSupportPBXPath error:nil]; + + DLog(@"prepareXCodeSupportProject: Reading the content of the project.pbxproj"); + NSMutableString *PBXContent = [NSMutableString stringWithContentsOfFile:XCodeSupportPBXPath encoding:NSUTF8StringEncoding error:nil]; + + [PBXContent writeToFile:XCodeSupportPBXPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; + DLog(@"prepareXCodeSupportProject: PBX file adapted to the project"); + + [self createXcodeSupportProjectSourcesDirIfNecessary]; + return NO; + } + + [self createXcodeSupportProjectSourcesDirIfNecessary]; + return YES; +} + +/*! + Create the .XcodeSupport/Sources folder if necessary. + */ +- (void)createXcodeSupportProjectSourcesDirIfNecessary +{ + if ([fm fileExistsAtPath:[XCodeSupportProjectSources path]]) + return; + + DLog(@"createXcodeSupportProjectSourcesDirIfNecessary: 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 + @param arguments Thread arguments (not used) + @param shouldNotify is YES, XCCDidPopulateProjectNotification will be send + */ +- (void)populateXCodeProject:(NSNumber *)shouldNotify +{ + if ([shouldNotify boolValue]) + [delegate performSelector:@selector(growlWithTitle:message:) withObject:@"Loading project" withObject:[currentProjectURL path]]; + + NSArray *subdpaths = [fm subpathsAtPath:[currentProjectURL path]]; + + for (NSString *p in subdpaths) + { + NSString *filePath = [NSString stringWithFormat:@"%@/%@", [currentProjectURL path], p]; + + BOOL isDir = NO; + [fm fileExistsAtPath:filePath isDirectory:&isDir]; + + if (isDir || ![self isObjJFile:filePath] || [self isPathMatchingIgnoredPaths:filePath]) + continue; + + NSURL *eventualShadow = [self shadowHeaderURLForSourceURL:[NSURL fileURLWithPath:filePath]]; + + if (![fm fileExistsAtPath:[eventualShadow path]]) + { + DLog(@"populateXCodeProject: Computing missing shadow file for %@", filePath); + [self handleFileModification:filePath notify:NO]; + } + } + + if ([shouldNotify boolValue]) + { + NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:currentProjectURL, @"URL", nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCDidPopulateProjectNotification object:self userInfo:info]; + } +} + +/*! + Start all needed processes for listening to a given path + @param path The folder path to listen to + */ +- (void)listenProjectAtPath:(NSString *)path +{ + NSMutableString *tempName = [NSMutableString stringWithString:[path lastPathComponent]]; + + currentProjectURL = [NSURL fileURLWithPath:path]; + + [tempName replaceOccurrencesOfString:@" " + withString:@"_" + options:NSCaseInsensitiveSearch + range:NSMakeRange(0, [tempName length])]; + currentProjectName = [NSString stringWithString:tempName]; + + [self computeIgnoredPaths]; + + BOOL isProjectReady = [self prepareXCodeSupportProject]; + + [NSThread detachNewThreadSelector:@selector(populateXCodeProject:) toTarget:self withObject:[NSNumber numberWithBool:!isProjectReady]]; + + [self initializeEventStreamWithPath:[currentProjectURL path]]; + + NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:path, @"path", [NSNumber numberWithInt:(isProjectReady) ? 1 : 0], @"ready", nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:XCCListeningStartNotification object:self userInfo:info]; + + [[NSUserDefaults standardUserDefaults] setObject:[currentProjectURL path] forKey:@"LastOpenedPath"]; +} + + +#pragma mark - Event Stream + /*! Initializes the FSEvent stream @param aPath the path of the folder to listen @@ -123,18 +253,18 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { if ([self isListening]) return; - + [self stopEventStream]; - + NSMutableArray *pathsToWatch = [NSMutableArray arrayWithObject:aPath]; void *appPointer = (void *)self; FSEventStreamContext context = {0, appPointer, NULL, NULL, NULL}; CFTimeInterval latency = 2.0; FSEventStreamCreateFlags flags = 0; - + if (supportsFileBasedListening) { - DLog(@"Initializing the FSEventStream at file level (clean)"); + DLog(@"initializeEventStreamWithPath: Initializing the FSEventStream at file level (clean)"); flags = kFSEventStreamCreateFlagUseCFTypes | kFSEventStreamCreateFlagNoDefer | kFSEventStreamCreateFlagFileEvents; } else @@ -142,10 +272,10 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification NSLog(@"Initializing the FSEventStream at folder level (dirty)"); flags = kFSEventStreamCreateFlagUseCFTypes; } - + // add symlinked directories NSArray *fileList = [fm contentsOfDirectoryAtPath:aPath error:nil]; - + for (NSString *node in fileList) { NSDictionary *attributes = [fm attributesOfItemAtPath:aPath error:nil]; @@ -160,19 +290,15 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification } } } - + stream = FSEventStreamCreate(NULL, &fsevents_callback, &context, (CFArrayRef) pathsToWatch, [lastEventId unsignedLongLongValue], latency, flags); - + FSEventStreamScheduleWithRunLoop(stream, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); FSEventStreamStart(stream); [self setIsListening:YES]; } - -#pragma mark - -#pragma mark Utilities - /*! Stop listening the FSEvent stream if active */ @@ -210,7 +336,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { if (![self supportFileLevelAPI]) { - DLog(@"System doesn't support file level API"); + DLog(@"configure: System doesn't support file level API"); [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInt:2] forKey:@"XCCAPIMode"]; } @@ -229,7 +355,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification if (supportsFileBasedListening) { - DLog(@"using 10.7+ mode listening (clean)"); + DLog(@"configure: using 10.7+ mode listening (clean)"); [self setCurrentAPIMode:@"File level (Lion)"]; [self setIsUsingFileLevelAPI:YES]; @@ -237,7 +363,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification } else { - DLog(@"using 10.6 mode listening (dirty)"); + DLog(@"configure: using 10.6 mode listening (dirty)"); reactToInodeModification = NO; [self setCurrentAPIMode:@"Folder level (Snow Leopard)"]; [self setIsUsingFileLevelAPI:NO]; @@ -273,6 +399,9 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification [[NSUserDefaults standardUserDefaults] synchronize]; } + +#pragma mark - Shell Helpers + /*! Run a NSTask with the given arguments @param arguments NSArray containing the NSTask arguments @@ -284,22 +413,25 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification NSData *stdOut; NSString *response; NSNumber *status; - + task = [[NSTask alloc] init]; - + [task setLaunchPath: @"/bin/bash"]; [task setArguments: arguments]; [task setStandardOutput:[NSPipe pipe]]; [task launch]; [task waitUntilExit]; - + stdOut = [[[task standardOutput] fileHandleForReading] availableData]; response = [[NSString alloc] initWithData:stdOut encoding:NSUTF8StringEncoding]; status = [NSNumber numberWithInt:[task terminationStatus]]; - + return [NSArray arrayWithObjects:status, response, nil]; } + +#pragma mark - Event Handlers + /*! Handle a file modification. If it's a .J or XIB or NIB, it will perform the according conversion. If it's .xcodecapp-ignore, it will @@ -315,7 +447,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification if ([self isPathMatchingIgnoredPaths:fullPath] || ![fm fileExistsAtPath:fullPath]) return; - DLog(@"Parsing modified file: %@", fullPath); + DLog(@"handleFileModification:notify: Parsing modified file: %@", fullPath); NSArray *arguments = nil; NSArray *PBXArguments = nil; @@ -324,16 +456,19 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification NSString *response = nil; NSNumber *status = [NSNumber numberWithInt:0]; NSString *splitPath = [fullPath substringFromIndex:[[currentProjectURL path] length] + 1]; - NSString *shadowPath = [[self shadowURLForSourceURL:[NSURL URLWithString:[fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] path]; - - DLog(@"Shadow path: %@", shadowPath); - + NSURL *encodedURL = [NSURL URLWithString:[fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + NSURL *shadowHeaderURL = [self shadowHeaderURLForSourceURL:encodedURL]; + NSURL *shadowImplementationURL = [self shadowImplementationURLForSourceURL:encodedURL]; + + DLog(@"handleFileModification:notify: Shadow header path: %@", shadowHeaderURL); + DLog(@"handleFileModification:notify: Shadow implementation path: %@", shadowImplementationURL); + [[NSNotificationCenter defaultCenter] postNotificationName:XCCConversionStartNotification object:self]; if ([self isXIBFile:fullPath]) { arguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; nib2cib '%@';) 2>&1", profilePath, fullPath],@"",nil]; + [NSString stringWithFormat:@"(%@; nib2cib '%@';) 2>&1", profilePath, fullPath],@"",nil]; successTitle = @"XIB converted"; successMsg = splitPath; @@ -341,19 +476,20 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification else if ([self isObjJFile:fullPath]) { arguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; objj '%@' '%@' '%@';) 2>&1", - profilePath, - parserPath, - fullPath, - shadowPath], - @"",nil]; + [NSString stringWithFormat:@"(%@; objj '%@' '%@' '%@' '%@';) 2>&1", + profilePath, + parserPath, + fullPath, + [shadowHeaderURL path], + [shadowImplementationURL path]],nil]; PBXArguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; python %@ add '%@' '%@' '%@' '%@') 2>&1", + [NSString stringWithFormat:@"(%@; python %@ add '%@' '%@' '%@' '%@' '%@') 2>&1", profilePath, PBXModifierScriptPath, XCodeSupportPBXPath, - shadowPath, + [shadowHeaderURL path], + [shadowImplementationURL path], fullPath, [currentProjectURL path]],nil]; @@ -371,22 +507,22 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification // Run the task and get the response if needed if (arguments) { - DLog(@"Running conversion task..."); + DLog(@"handleFileModification:notify: Running conversion task..."); NSArray *statusInfo = [self runTask:arguments]; - + status = [statusInfo objectAtIndex:0]; response = [statusInfo objectAtIndex:1]; - - DLog(@"Conversion task result/response: %@/%@", status, response); + + DLog(@"handleFileModification:notify: Conversion task result/response: %@/%@", status, response); } if (PBXArguments) { - DLog(@"Running update PBX task..."); + DLog(@"handleFileModification:notify: Running update PBX task..."); NSArray *statusInfo = [self runTask:PBXArguments]; status = [statusInfo objectAtIndex:0]; response = [statusInfo objectAtIndex:1]; - DLog(@"Update PBX Task result/response: %@/%@", status, response); + DLog(@"handleFileModification:notify: Update PBX Task result/response: %@/%@", status, response); } if ([status intValue] == 0 && shouldNotify) @@ -397,12 +533,12 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { if (response) [errorList addObject:response]; - + [delegate performSelector:@selector(growlWithTitle:message:) withObject:@"Error processing file" withObject:splitPath]; } [[NSNotificationCenter defaultCenter] postNotificationName:XCCConversionStopNotification object:self]; - DLog(@"Processed: %@", fullPath); + DLog(@"handleFileModification:notify: Processed: %@", fullPath); } /*! @@ -416,37 +552,18 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification { if ([self isPathMatchingIgnoredPaths:fullPath] || [fm fileExistsAtPath:fullPath]) return; - + + NSString *encodedPath = [fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + if ([self isObjJFile:fullPath]) - { - NSString *shadowPath = [[self shadowURLForSourceURL:[NSURL URLWithString:[fullPath stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]] path]; - - DLog(@"Removing shadow file: %@", shadowPath); - [fm removeItemAtPath:shadowPath error:nil]; - - DLog(@"Removing PBX reference task..."); - -#if DEBUG - NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@' '%@' '%@') 2>&1", - profilePath, - PBXModifierScriptPath, - XCodeSupportPBXPath, - shadowPath, - fullPath, - [currentProjectURL path]],nil]; - NSArray *statusInfo = [self runTask:PBXArguments]; - NSNumber *status = [statusInfo objectAtIndex:0]; - NSString *response = [statusInfo objectAtIndex:1]; -#endif - DLog(@"PBX Reference removal status/response: %@/%@", status, response); - } + [self cleanUpShadowsRelatedToSourceURL:[NSURL URLWithString:encodedPath]]; else if ([self isXCCIgnoreFile:fullPath]) - { [self computeIgnoredPaths]; - } } + +#pragma mark - Source Files Management + /*! Check if given full path is Objective-J file @param path the path to check @@ -480,114 +597,23 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification } -/*! - Check if .XcodeSupport needs to be initialized. - If not needed, check that all J files are mirrored. If no, - then launch conversion for missing mirrored h files - @return YES or NO - */ -- (BOOL)prepareXCodeSupportProject -{ - XCodeSupportProjectName = [NSString stringWithFormat:@"%@.xcodeproj/", currentProjectName]; - XCodeTemplatePBXPath = [[NSBundle mainBundle] pathForResource:@"project.pbxproj" ofType:@"sample"]; - XCodeSupportProject = [NSURL URLWithString:XCodeSupportProjectName relativeToURL:currentProjectURL]; - XCodeSupportProjectSources = [NSURL URLWithString:@".XcodeSupport/" relativeToURL:currentProjectURL]; - XCodeSupportPBXPath = [NSString stringWithFormat:@"%@/project.pbxproj", [XCodeSupportProject path]]; - PBXModifierScriptPath = [[NSBundle mainBundle] pathForResource:@"pbxprojModifier" ofType:@"py"]; - - - //[fm removeItemAtURL:XCodeSupportProjectSources error:nil]; - //[fm removeItemAtURL:XCodeSupportProject error:nil]; - - // create the template project if it doesn't exist - if (![fm fileExistsAtPath:[XCodeSupportProjectSources path]]) - { - NSLog(@"Xcode support folder created at: %@", [XCodeSupportProject path]); - [fm createDirectoryAtPath:[XCodeSupportProject path] withIntermediateDirectories:YES attributes:nil error:nil]; - - DLog(@"Copying project.pbxproj from %@ to %@", XCodeTemplatePBXPath, [XCodeSupportProject path]); - [fm copyItemAtPath:XCodeTemplatePBXPath toPath:XCodeSupportPBXPath error:nil]; - - DLog(@"Reading the content of the project.pbxproj"); - NSMutableString *PBXContent = [NSMutableString stringWithContentsOfFile:XCodeSupportPBXPath encoding:NSUTF8StringEncoding error:nil]; - - [PBXContent writeToFile:XCodeSupportPBXPath atomically:YES encoding:NSUTF8StringEncoding error:nil]; - DLog(@"PBX file adapted to the project"); - - [self createXcodeSupportProjectSourcesDirIfNecessary]; - return NO; - } - - [self createXcodeSupportProjectSourcesDirIfNecessary]; - return YES; -} +#pragma mark - Shadow Files Management /*! - 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 - @param arguments Thread arguments (not used) - @param shouldNotify is YES, XCCDidPopulateProjectNotification will be send - */ -- (void)populateXCodeProject:(NSNumber *)shouldNotify -{ - if ([shouldNotify boolValue]) - [delegate performSelector:@selector(growlWithTitle:message:) withObject:@"Loading project" withObject:[currentProjectURL path]]; - - NSArray *subdpaths = [fm subpathsAtPath:[currentProjectURL path]]; - - for (NSString *p in subdpaths) - { - NSString *filePath = [NSString stringWithFormat:@"%@/%@", [currentProjectURL path], p]; - - BOOL isDir = NO; - [fm fileExistsAtPath:filePath isDirectory:&isDir]; - - if (isDir || ![self isObjJFile:filePath] || [self isPathMatchingIgnoredPaths:filePath]) - continue; - - NSURL *eventualShadow = [self shadowURLForSourceURL:[NSURL fileURLWithPath:filePath]]; - - if (![fm fileExistsAtPath:[eventualShadow path]]) - { - DLog(@"Computing missing shadow file for %@", filePath); - [self handleFileModification:filePath notify:NO]; - } - } - - if ([shouldNotify boolValue]) - { - NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:currentProjectURL, @"URL", nil]; - [[NSNotificationCenter defaultCenter] postNotificationName:XCCDidPopulateProjectNotification object:self userInfo:info]; - } -} - -/*! - Compute the mirorred (shadow) name for a given path + Compute the mirorred (shadow) header file name for a given path @param aSourceURL the origin path - @return NSURL representing the shadow path + @return NSURL representing the shadow URL for the header file */ -- (NSURL *)shadowURLForSourceURL:(NSURL*)aSourceURL +- (NSURL *)shadowHeaderURLForSourceURL:(NSURL*)aSourceURL { if (!aSourceURL) - [NSException raise:NSInvalidArgumentException format:@"shadowURLForSourceURL: aSource URL must not be null"]; + [NSException raise:NSInvalidArgumentException format:@"shadowHeaderURLForSourceURL: aSource URL must not be null"]; NSMutableString *flattenedPath = [NSMutableString stringWithString:[aSourceURL path]]; - + // Replace "_" with a substring that is unlikely to be in a filename [flattenedPath replaceOccurrencesOfString:@"_" - withString:@"≤‹°∞°›≥" + withString:XCCUnderscoreReplacement options:0 range:NSMakeRange(0, [flattenedPath length])]; @@ -596,12 +622,33 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification options:0 range:NSMakeRange(0, [flattenedPath length])]; - DLog(@"Flattened path: %@", flattenedPath); - NSString *basename = [NSString stringWithFormat:@"%@.m", [[flattenedPath stringByDeletingPathExtension] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; - + DLog(@"shadowHeaderURLForSourceURL: Flattened path: %@", flattenedPath); + NSString *basename = [NSString stringWithFormat:@"%@.h", [[flattenedPath stringByDeletingPathExtension] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + return [NSURL URLWithString:basename relativeToURL:XCodeSupportProjectSources]; } +/*! + Compute the mirorred (shadow) implementation file name for a given path + @param aSourceURL the origin path + @return NSURL representing the shadow URL for the implementation file + */ +- (NSURL *)shadowImplementationURLForSourceURL:(NSURL*)aSourceURL +{ + if (!aSourceURL) + [NSException raise:NSInvalidArgumentException format:@"shadowImplementationURLForSourceURL: aSource URL must not be null"]; + + NSURL *shadowHeaderURL = [self shadowHeaderURLForSourceURL:aSourceURL]; + NSURL *shadowImplPath = [[shadowHeaderURL URLByDeletingPathExtension] URLByAppendingPathExtension:@"m"]; + + return shadowImplPath; +} + +/*! + Compute the Cappuccino source file that is related to the given shadow header file URL + @param aString the origin path + @return NSURL representing the URL for the related Cappuccino source file + */ - (NSURL *)sourceURLForShadowName:(NSString *)aString { NSMutableString * unshadowedPath = [NSMutableString stringWithString:aString]; @@ -611,12 +658,12 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification options:0 range:NSMakeRange(0, [unshadowedPath length])]; - [unshadowedPath replaceOccurrencesOfString:@"≤‹°∞°›≥" - withString:@"_" - options:0 - range:NSMakeRange(0, [unshadowedPath length])]; + [unshadowedPath replaceOccurrencesOfString:XCCUnderscoreReplacement + withString:@"_" + options:0 + range:NSMakeRange(0, [unshadowedPath length])]; - [unshadowedPath replaceOccurrencesOfString:@".m" + [unshadowedPath replaceOccurrencesOfString:@".h" withString:@".j" options:0 range:NSMakeRange(0, [unshadowedPath length])]; @@ -624,6 +671,64 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification return [NSURL fileURLWithPath:[NSString stringWithString:unshadowedPath]]; } +/*! + Clean up any shadow files and PBX entries related to given the Cappuccino source file URL + @param anURL the Cappuccino source file URL + */ +- (void)cleanUpShadowsRelatedToSourceURL:(NSURL *)anURL +{ + NSURL *shadowHeaderURL = [self shadowHeaderURLForSourceURL:anURL]; + NSURL *shadowImplementationURL = [self shadowImplementationURLForSourceURL:anURL]; + + DLog(@"cleanUpShadowsRelatedToSourceURL: Removing shadow header file: %@", shadowHeaderURL); + [fm removeItemAtURL:shadowHeaderURL error:nil]; + + DLog(@"cleanUpShadowsRelatedToSourceURL: Removing shadow implementation file: %@", shadowImplementationURL); + [fm removeItemAtURL:shadowImplementationURL error:nil]; + + DLog(@"cleanUpShadowsRelatedToSourceURL:Removing PBX reference task..."); + NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", + [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@' '%@' '%@' '%@') 2>&1", + profilePath, + PBXModifierScriptPath, + XCodeSupportPBXPath, + [shadowHeaderURL path], + [shadowImplementationURL path], + [anURL path], + [currentProjectURL path]],nil]; + + NSArray *statusInfo = [self runTask:PBXArguments]; + NSNumber *status = [statusInfo objectAtIndex:0]; + NSString *response = [statusInfo objectAtIndex:1]; + DLog(@"cleanUpShadowsRelatedToSourceURL: PBX Reference removal status/response: %@/%@", status, response); +} + +/*! + Clean the support folder according to files present in given path + */ +- (void)tidyShadowedFiles +{ + NSArray *subpaths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[XCodeSupportProjectSources path] error:NULL]; + + for (NSString *subpath in subpaths) + { + if ([subpath pathExtension] != @".h" || [subpath lastPathComponent] == @"xcc_general_include.h") + continue; + + NSURL *unshadowed = [self sourceURLForShadowName:subpath]; + + if (![fm fileExistsAtPath:[unshadowed path]]) + { + [self cleanUpShadowsRelatedToSourceURL:unshadowed]; + + if (![self supportFileLevelAPI] && [self respondsToSelector:@selector(updateLastModificationDate:forPath:)]) + [self performSelector:@selector(updateLastModificationDate:forPath:) withObject:nil withObject:unshadowed]; + } + } +} + + +#pragma mark - XCC Ignore management /*! Compute the ignored paths according to any existing @@ -645,7 +750,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification [ignoredFilePaths addObject:pattern]; } } - + [ignoredFilePaths addObject:@"*/.git/*"]; [ignoredFilePaths addObject:@"*/.svn/*"]; [ignoredFilePaths addObject:@"*/.hg/*"]; @@ -656,7 +761,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification [ignoredFilePaths addObject:@"*main.j"]; [ignoredFilePaths addObject:@"*.xcodeproj/*"]; [ignoredFilePaths addObject:@"*.DS_Store"]; - + NSLog(@"Ignoring file paths: %@", ignoredFilePaths); } @@ -706,76 +811,6 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification return NO; } -/*! - Start all needed processes for listening to a given path - @param path The folder path to listen to - */ -- (void)listenProjectAtPath:(NSString *)path -{ - NSMutableString *tempName = [NSMutableString stringWithString:[path lastPathComponent]]; - - currentProjectURL = [NSURL fileURLWithPath:path]; - - [tempName replaceOccurrencesOfString:@" " - withString:@"_" - options:NSCaseInsensitiveSearch - range:NSMakeRange(0, [tempName length])]; - currentProjectName = [NSString stringWithString:tempName]; - - [self computeIgnoredPaths]; - - BOOL isProjectReady = [self prepareXCodeSupportProject]; - - [NSThread detachNewThreadSelector:@selector(populateXCodeProject:) toTarget:self withObject:[NSNumber numberWithBool:!isProjectReady]]; - - [self initializeEventStreamWithPath:[currentProjectURL path]]; - - NSDictionary *info = [NSDictionary dictionaryWithObjectsAndKeys:path, @"path", [NSNumber numberWithInt:(isProjectReady) ? 1 : 0], @"ready", nil]; - [[NSNotificationCenter defaultCenter] postNotificationName:XCCListeningStartNotification object:self userInfo:info]; - - [[NSUserDefaults standardUserDefaults] setObject:[currentProjectURL path] forKey:@"LastOpenedPath"]; -} - -/*! - Clean the support folder according to files present in given path - */ -- (void)tidyShadowedFiles -{ - NSArray *subpaths = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:[XCodeSupportProjectSources path] error:NULL]; - - for (NSString *subpath in subpaths) - { - NSString *unshadowed = [[self sourceURLForShadowName:subpath] path]; - NSString *shadowFullPath = [NSString stringWithFormat:@"%@/%@", [XCodeSupportProjectSources path], subpath]; - - if (![fm fileExistsAtPath:unshadowed]) - { - DLog(@"cleaning shadow file: %@", subpath); - [fm removeItemAtPath:shadowFullPath error:nil]; - -#if DEBUG - NSArray *PBXArguments = [NSArray arrayWithObjects: @"-c", - [NSString stringWithFormat:@"(%@; python %@ remove '%@' '%@' '%@' '%@') 2>&1", - profilePath, - PBXModifierScriptPath, - XCodeSupportPBXPath, - shadowFullPath, - unshadowed, - [currentProjectURL path]],nil]; - - DLog(@"Cleaning PBX reference task..."); - NSArray *statusInfo = [self runTask:PBXArguments]; - NSNumber *status = [statusInfo objectAtIndex:0]; - NSString *response = [statusInfo objectAtIndex:1]; -#endif - DLog(@"PBX Reference cleaning status/response: %@/%@", status, response); - - if (![self supportFileLevelAPI] && [self respondsToSelector:@selector(updateLastModificationDate:forPath:)]) - [self performSelector:@selector(updateLastModificationDate:forPath:) withObject:nil withObject:unshadowed]; - } - } -} - @end @@ -786,7 +821,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification if (!pathModificationDates) { pathModificationDates = [[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"pathModificationDates"] mutableCopy]; - + if (!pathModificationDates) pathModificationDates = [NSMutableDictionary new]; } @@ -804,7 +839,7 @@ NSString * const XCCListeningStartNotification = @"XCCListeningStartNotification if (!pathModificationDates) { pathModificationDates = [[[NSUserDefaults standardUserDefaults] dictionaryForKey:@"pathModificationDates"] mutableCopy]; - + if (!pathModificationDates) pathModificationDates = [NSMutableDictionary new]; } diff --git a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj index 94becb428..7e0c5e38e 100644 --- a/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj +++ b/Tools/XcodeCapp/XcodeCapp.xcodeproj/project.pbxproj @@ -194,6 +194,7 @@ isa = PBXNativeTarget; buildConfigurationList = 027D99A313696A7000D3DB13 /* Build configuration list for PBXNativeTarget "XcodeCapp" */; buildPhases = ( + 024699001602C04A00F0AE43 /* ShellScript */, 027D999A13696A7000D3DB13 /* Resources */, 027D999D13696A7000D3DB13 /* Sources */, 02998CF81369C383006C73DB /* CopyFiles */, @@ -255,6 +256,25 @@ }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 024699001602C04A00F0AE43 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/*.m", + "$(SRCROOT)/*.h", + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /usr/bin/perl; + shellScript = "#!/usr/bin/perl\n\nwhile (<>) {\n s/\\s+$//;\n print \"$_\\n\";\n}"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 027D999D13696A7000D3DB13 /* Sources */ = { isa = PBXSourcesBuildPhase; diff --git a/Tools/XcodeCapp/parser.j b/Tools/XcodeCapp/parser.j index f765fb598..2b8a5208b 100644 --- a/Tools/XcodeCapp/parser.j +++ b/Tools/XcodeCapp/parser.j @@ -26,7 +26,8 @@ var FILE = require("file"); function main(args) { var fileURL = new CFURL(args[1]), - outputURL = new CFURL(args[2]), + outputHeaderURL = new CFURL(args[2]), + outputSourceURL = new CFURL(args[3]), source = FILE.read(fileURL, { charset: "UTF-8" }), flags = ObjectiveJ.Preprocessor.Flags.IncludeDebugSymbols | ObjectiveJ.Preprocessor.Flags.IncludeTypeSignatures, @@ -65,7 +66,8 @@ function main(args) eval(source); - var ObjectiveCSource = ""; + var ObjectiveCSource = "", + ObjectiveCHeader = ""; classes.forEach(function(aClass) { @@ -104,22 +106,29 @@ function main(args) var className = class_getName(aClass), superClassName = superClasses[className]; - ObjectiveCSource += + ObjectiveCHeader += "#import \n" + "#import \n" + + "#import \"xcc_general_include.h\"\n" + "\n@interface " + class_getName(aClass) + (superClassName === "Nil" ? "" : (" : " + NSCompatibleClassName(superClassName))) + "\n\n" + outlets.join("\n") + "\n" + actions.join("\n") + - "\n@end\n\n"+ + "\n@end\n"; + + ObjectiveCSource += + "#import \"" + outputHeaderURL.absoluteString().replace(/\\/g,'/').replace( /.*\//, '' ) + "\"" + "\n@implementation " + class_getName(aClass) + "\n@end\n"; }); if (ObjectiveCSource.length) - FILE.write(outputURL, ObjectiveCSource, { charset:"UTF-8" }); + FILE.write(outputSourceURL, ObjectiveCSource, { charset:"UTF-8" }); + + if (ObjectiveCHeader.length) + FILE.write(outputHeaderURL, ObjectiveCHeader, { charset:"UTF-8" }); } function NSCompatibleClassName(aClassName, asPointer) @@ -127,10 +136,10 @@ function NSCompatibleClassName(aClassName, asPointer) if (aClassName === "var" || aClassName === "id") return "id"; - var suffix = aClassName.substr(0, 2), + var prefix = aClassName.substr(0, 2), asterisk = asPointer ? "*" : ""; - if (suffix !== "CP") + if (prefix !== "CP") return aClassName + asterisk; var NSClassName = "NS" + aClassName.substr(2); @@ -138,9 +147,16 @@ function NSCompatibleClassName(aClassName, asPointer) if (NSClasses[NSClassName]) return NSClassName + asterisk; + if (ReplacementClasses[aClassName]) + return ReplacementClasses[aClassName] + asterisk; + return aClassName + asterisk; } +var ReplacementClasses = { + "CPWebView": "WebView" +}; + var NSClasses = { "NSAffineTransform" : YES, "NSAppleEventDescriptor" : YES, @@ -486,4 +502,4 @@ var NSClasses = { "NSWindowController" : YES, "NSWorkspace" : YES, "NSPopover": YES - }; \ No newline at end of file + }; diff --git a/Tools/XcodeCapp/pbxprojModifier.py b/Tools/XcodeCapp/pbxprojModifier.py index b81ebb29d..434210bbd 100755 --- a/Tools/XcodeCapp/pbxprojModifier.py +++ b/Tools/XcodeCapp/pbxprojModifier.py @@ -3,49 +3,58 @@ from mod_pbxproj import XcodeProject XCODESUPPORTFOLDER = ".XcodeSupport" -def add_file(project, shadowGroup, sourceGroup, shadowPath, sourcePath, projectBaseURL): - project.add_file(shadowPath, parent=shadowGroup) - project.add_file(sourcePath, parent=sourceGroup) - project.save() +def update_general_include(project, projectBaseURL): + xcc_general_include_file = "%s/%s/xcc_general_include.h" % (projectBaseURL, XCODESUPPORTFOLDER) + content = "" -def remove_file(project, shadowGroup, sourceGroup, shadowPath, sourcePath, projectBaseURL): - project.remove_file("%s/%s" % (XCODESUPPORTFOLDER, os.path.basename(shadowPath)), parent=shadowGroup) + for file in os.listdir("%s/%s" % (projectBaseURL, XCODESUPPORTFOLDER)): + if file.endswith(".h"): + content += "#include \"%s\"\n" % file + + f = open(xcc_general_include_file, "w") + f.write(content) + f.close() + + if len(project.get_files_by_os_path("%s/%s" % (XCODESUPPORTFOLDER, os.path.basename(xcc_general_include_file)))) == 0: + project.add_file(xcc_general_include_file, parent=shadowGroup) + + +def add_file(project, shadowGroup, sourceGroup, shadowHeaderPath, shadowImplementationFilePath, sourcePath, projectBaseURL): + project.add_file(shadowHeaderPath, parent=shadowGroup) + project.add_file(shadowImplementationFilePath, parent=shadowGroup) + project.add_file(sourcePath, parent=sourceGroup) + +def remove_file(project, shadowGroup, sourceGroup, shadowHeaderPath, shadowImplementationFilePath, sourcePath, projectBaseURL): + project.remove_file("%s/%s" % (XCODESUPPORTFOLDER, os.path.basename(shadowHeaderPath)), parent=shadowGroup) + project.remove_file("%s/%s" % (XCODESUPPORTFOLDER, os.path.basename(shadowImplementationFilePath)), parent=shadowGroup) project.remove_file(os.path.relpath(sourcePath, projectBaseURL), parent=sourceGroup) - project.save() if __name__ == '__main__': - action = sys.argv[1] - PBXProjectFilePath = sys.argv[2] - shadowFilePath = sys.argv[3] - sourceFilePath = sys.argv[4] - projectBaseURL = sys.argv[5] - + action = sys.argv[1] + PBXProjectFilePath = sys.argv[2] + shadowHeaderFilePath = sys.argv[3] + shadowImplementationFilePath = sys.argv[4] + sourceFilePath = sys.argv[5] + projectBaseURL = sys.argv[6] + project = XcodeProject.Load(PBXProjectFilePath) - + shadowGroup = project.get_or_create_group('Classes') sourceGroup = project.get_or_create_group('Sources') - - if "main.m" in shadowFilePath: + + if "main.j" in sourceFilePath: sys.exit(0) - - files = project.get_files_by_os_path("%s/%s" % (XCODESUPPORTFOLDER, os.path.basename(shadowFilePath))) + + files = project.get_files_by_os_path("%s/%s" % (XCODESUPPORTFOLDER, os.path.basename(shadowHeaderFilePath))) if action == "add" and len(files) == 0: - add_file(project, shadowGroup, sourceGroup, shadowFilePath, sourceFilePath, projectBaseURL) + update_general_include(project, projectBaseURL) + add_file(project, shadowGroup, sourceGroup, shadowHeaderFilePath, shadowImplementationFilePath, sourceFilePath, projectBaseURL) + project.save() elif action == "remove" and len(files) == 1: - remove_file(project, shadowGroup, sourceGroup, shadowFilePath, sourceFilePath, projectBaseURL) - - - - - - - - - - - - \ No newline at end of file + update_general_include(project, projectBaseURL) + remove_file(project, shadowGroup, sourceGroup, shadowHeaderFilePath, shadowImplementationFilePath, sourceFilePath, projectBaseURL) + project.save() diff --git a/Tools/nib2cib/NSButton.j b/Tools/nib2cib/NSButton.j index 59437de96..f5597344c 100644 --- a/Tools/nib2cib/NSButton.j +++ b/Tools/nib2cib/NSButton.j @@ -269,8 +269,6 @@ var NSButtonIsBorderedMask = 0x00800000, _highlightsBy = [cell highlightsBy]; _showsStateBy = [cell showsStateBy]; - [self setTag:[cell tag]]; - return self; } diff --git a/Tools/nib2cib/NSColorWell.j b/Tools/nib2cib/NSColorWell.j index dbb0a0042..9630f0301 100644 --- a/Tools/nib2cib/NSColorWell.j +++ b/Tools/nib2cib/NSColorWell.j @@ -45,6 +45,9 @@ CPLog.debug("NSColorWell: adjusting height from %d to %d", frameSize.height, 24.0); frameSize.height = 24.0; [self setFrameSize:frameSize]; + + // Adjust for differences between Cocoa and Cappuccino widget framing. + _frame.origin.x -= 3; } } diff --git a/Tools/nib2cib/NSComboBox.j b/Tools/nib2cib/NSComboBox.j index 16ed5ba49..ee405c663 100644 --- a/Tools/nib2cib/NSComboBox.j +++ b/Tools/nib2cib/NSComboBox.j @@ -48,6 +48,9 @@ size = [self frameSize]; [self setFrameSize:CGSizeMake(size.width, MIN(size.height, maxSize.height))]; + + // Adjust for differences between Cocoa and Cappuccino widget framing. + _frame.origin.x += 1; } return self; diff --git a/Tools/nib2cib/NSControl.j b/Tools/nib2cib/NSControl.j index a2ee25a75..5db1eeff3 100644 --- a/Tools/nib2cib/NSControl.j +++ b/Tools/nib2cib/NSControl.j @@ -56,6 +56,11 @@ [self setLineBreakMode:[cell lineBreakMode]]; [self setFormatter:[cell formatter]]; + + // In IB, both cells and controls can have tags. + // If the control has a tag, that takes precedence. + if ([aCoder containsValueForKey:@"NSTag"]) + [self setTag:[aCoder decodeIntForKey:@"NSTag"]]; } return self; diff --git a/Tools/nib2cib/NSMatrix.j b/Tools/nib2cib/NSMatrix.j index 4f061a52e..f3d09cdd0 100644 --- a/Tools/nib2cib/NSMatrix.j +++ b/Tools/nib2cib/NSMatrix.j @@ -82,6 +82,7 @@ var NSMatrixRadioModeMask = 0x40000000, [self setBackgroundColor:backgroundColor]; self.isa = [CPView class]; + NIB_CONNECTION_EQUIVALENCY_TABLE[[self UID]] = radioGroup; } else { diff --git a/Tools/nib2cib/NSPopUpButton.j b/Tools/nib2cib/NSPopUpButton.j index 83166acf5..ece79a2f9 100644 --- a/Tools/nib2cib/NSPopUpButton.j +++ b/Tools/nib2cib/NSPopUpButton.j @@ -36,10 +36,10 @@ _menu = [cell menu]; // adjust the frame - _frame.origin.x -= 3; + _frame.origin.x -= 4; _frame.origin.y -= 4; - _frame.size.width += 6; - _bounds.size.width += 6; + _frame.size.width += 7; + _bounds.size.width += 7; [self setPullsDown:[cell pullsDown]]; _preferredEdge = [cell preferredEdge]; diff --git a/Tools/nib2cib/NSSegmentedControl.j b/Tools/nib2cib/NSSegmentedControl.j index da94613d4..e696bb236 100644 --- a/Tools/nib2cib/NSSegmentedControl.j +++ b/Tools/nib2cib/NSSegmentedControl.j @@ -57,6 +57,8 @@ [self tileWithChangedSegment:i]; } + // Adjust for differences between Cocoa and Cappuccino widget framing. + frame.origin.x += 4; frame.size.width = originalWidth; [self setFrame:frame]; } diff --git a/Tools/nib2cib/NSStepper.j b/Tools/nib2cib/NSStepper.j index a17a52938..c5b3746ae 100644 --- a/Tools/nib2cib/NSStepper.j +++ b/Tools/nib2cib/NSStepper.j @@ -38,6 +38,11 @@ _valueWraps = [cell valueWraps]; _autorepeat = [cell autorepeat]; _objectValue = [cell objectValue]; + + // Convert Cocoa normal size to Cappuccino normal size. + _frame.origin.y += 2; + _frame.size.height -= 2; + _bounds.size.height -= 2; } return self; diff --git a/Tools/nib2cib/NSTableColumn.j b/Tools/nib2cib/NSTableColumn.j index 10ef6dcea..4ed159db6 100644 --- a/Tools/nib2cib/NSTableColumn.j +++ b/Tools/nib2cib/NSTableColumn.j @@ -90,7 +90,8 @@ headerView = [[_CPTableColumnHeaderView alloc] initWithFrame:CPRectMakeZero()]; [headerView setStringValue:[headerCell objectValue]]; - [headerView setValue:[dataViewCell alignment] forThemeAttribute:@"text-alignment"]; + [headerView setFont:[headerCell font]]; + [headerView setAlignment:[headerCell alignment]]; [self setHeaderView:headerView]; diff --git a/Tools/nib2cib/NSWindowTemplate.j b/Tools/nib2cib/NSWindowTemplate.j index 5e79cd353..7f8df2686 100644 --- a/Tools/nib2cib/NSWindowTemplate.j +++ b/Tools/nib2cib/NSWindowTemplate.j @@ -23,15 +23,20 @@ @import -var NSBorderlessWindowMask = 0x00, - NSTitledWindowMask = 0x01, - NSClosableWindowMask = 0x02, - NSMiniaturizableWindowMask = 0x04, - NSResizableWindowMask = 0x08, - NSUtilityWindowMask = 0x10, - NSDocModalWindowMask = 0x40, - NSTexturedBackgroundWindowMask = 0x100, - NSHUDBackgroundWindowMask = 0x2000, +var NSBorderlessWindowMask = 0x00, + NSTitledWindowMask = 0x01, + NSClosableWindowMask = 0x02, + NSMiniaturizableWindowMask = 0x04, + NSResizableWindowMask = 0x08, + NSUtilityWindowMask = 0x10, + NSDocModalWindowMask = 0x40, + NSTexturedBackgroundWindowMask = 0x100, + NSHUDBackgroundWindowMask = 0x2000, + + NSPositionFlexibleRight = 1 << 19, + NSPositionFlexibleLeft = 1 << 20, + NSPositionFlexibleBottom = 1 << 21, + NSPositionFlexibleTop = 1 << 22, NSAutorecalculatesKeyViewLoopWTFlag = 0x800; diff --git a/common.jake b/common.jake index 720f7d923..9eded1280 100644 --- a/common.jake +++ b/common.jake @@ -466,8 +466,18 @@ global.sudo = function(/*Array or String*/ command) // First try without sudo command = normalizeCommand(command); - if (OS.system(command + " >/dev/null 2>&1")) + var returnCode = OS.system(command + " >/dev/null 2>&1") + + if (returnCode) + { + // if this is set, then disable the use of sudo. + // This is very usefull for CI scripts and stuff like that + if (SYSTEM.env["CAPP_NOSUDO"] == 1) + return returnCode; + return OS.system("sudo -p '\nEnter your admin password: ' " + command); + } + return 0; };