Merge branch 'refs/heads/master' into nib2cib-cpbrowser-compat

This commit is contained in:
Andrew Hankinson committed 2013-02-10 22:45:31 -05:00
commit 391abe4991
76 files changed
+8616 -2192

No files matched your search

+1
View File
@@ -1114,6 +1114,7 @@
}
var isPlaceholder = CPIsControllerMarker(newValue);
if (isPlaceholder)
{
if (newValue === CPNotApplicableMarker && [options objectForKey:CPRaisesForNotApplicableKeysBindingOption])
+47 -14
View File
@@ -421,9 +421,9 @@ CPBelowBottom = 6;
// NSBox does not include a horizontal flag for the separator type. We have to determine
// the type of separator to draw by the width and height of the frame.
if (CGRectGetWidth(bounds) === 5.0)
return [self _drawVerticalSeperatorInRect:bounds];
return [self _drawVerticalSeparatorInRect:bounds];
else if (CGRectGetHeight(bounds) === 5.0)
return [self _drawHorizontalSeperatorInRect:bounds];
return [self _drawHorizontalSeparatorInRect:bounds];
break;
}
@@ -438,6 +438,13 @@ CPBelowBottom = 6;
bounds.size.height -= [_titleView frameSize].height;
}
// Primary or secondary type boxes always draw the same way, unless they are CPNoBorder.
if ((_boxType === CPBoxPrimary || _boxType === CPBoxSecondary) && _borderType !== CPNoBorder)
{
[self _drawPrimaryBorderInRect:bounds];
return;
}
switch (_borderType)
{
case CPBezelBorder:
@@ -455,7 +462,7 @@ CPBelowBottom = 6;
}
}
- (void)_drawHorizontalSeperatorInRect:(CGRect)aRect
- (void)_drawHorizontalSeparatorInRect:(CGRect)aRect
{
var context = [[CPGraphicsContext currentContext] graphicsPort];
@@ -467,7 +474,7 @@ CPBelowBottom = 6;
CGContextStrokePath(context);
}
- (void)_drawVerticalSeperatorInRect:(CGRect)aRect
- (void)_drawVerticalSeparatorInRect:(CGRect)aRect
{
var context = [[CPGraphicsContext currentContext] graphicsPort];
@@ -504,22 +511,51 @@ CPBelowBottom = 6;
shadowSize = [self valueForThemeAttribute:@"inner-shadow-size"],
shadowColor = [self valueForThemeAttribute:@"inner-shadow-color"];
var baseRect = aRect;
aRect = CGRectInset(aRect, borderWidth / 2.0, borderWidth / 2.0);
// clip the canvas to the actual content view in order to only display inner shadow
CGContextBeginPath(context);
CGContextAddPath(context, CGPathWithRoundedRectangleInRect(aRect, cornerRadius, cornerRadius, YES, YES, YES, YES));
CGContextClip(context);
CGContextSaveGState(context);
CGContextSetFillColor(context, [self fillColor]);
CGContextSetStrokeColor(context, [self borderColor]);
CGContextSetShadowWithColor(context, shadowOffset, shadowSize, shadowColor);
CGContextSetLineWidth(context, borderWidth);
CGContextSetFillColor(context, [self fillColor]);
CGContextFillRoundedRectangleInRect(context, aRect, cornerRadius, YES, YES, YES, YES);
CGContextStrokeRoundedRectangleInRect(context, aRect, cornerRadius, YES, YES, YES, YES);
CGContextRestoreGState(context);
}
- (void)_drawPrimaryBorderInRect:(CGRect)aRect
{
// Draw the "primary" style CPBox.
var context = [[CPGraphicsContext currentContext] graphicsPort],
cornerRadius = [self cornerRadius],
borderWidth = [self borderWidth],
shadowOffset = [self valueForThemeAttribute:@"inner-shadow-offset"],
shadowSize = [self valueForThemeAttribute:@"inner-shadow-size"],
shadowColor = [self valueForThemeAttribute:@"inner-shadow-color"],
baseRect = aRect;
aRect = CGRectInset(aRect, borderWidth / 2.0, borderWidth / 2.0);
CGContextSaveGState(context);
CGContextSetStrokeColor(context, [self borderColor]);
CGContextSetLineWidth(context, borderWidth);
CGContextSetFillColor(context, [self fillColor]);
CGContextFillRoundedRectangleInRect(context, aRect, cornerRadius, YES, YES, YES, YES);
CGContextBeginPath(context);
// Note we can't use the 0.5 inset rectangle when setting up clipping. The clipping has to be
// on integer coordinates for this to look right in Chrome.
CGContextAddPath(context, CGPathWithRoundedRectangleInRect(baseRect, cornerRadius, cornerRadius, YES, YES, YES, YES));
CGContextClip(context);
CGContextSetShadowWithColor(context, shadowOffset, shadowSize, shadowColor);
CGContextStrokeRoundedRectangleInRect(context, aRect, cornerRadius, YES, YES, YES, YES);
CGContextRestoreGState(context);
}
- (void)_drawNoBorderInRect:(CGRect)aRect
{
@@ -529,9 +565,6 @@ CPBelowBottom = 6;
CGContextFillRect(context, aRect);
}
@end
var CPBoxTypeKey = @"CPBoxTypeKey",
+18 -27
View File
@@ -426,11 +426,26 @@
- (void)keyDown:(CPEvent)anEvent
{
var column = [self selectedColumn];
if (column === -1)
var key = [anEvent charactersIgnoringModifiers],
column = [self selectedColumn];
if (column === CPNotFound)
return;
[_tableViews[column] keyDown:anEvent];
if (key === CPLeftArrowFunctionKey || key === CPRightArrowFunctionKey)
{
if (key === CPLeftArrowFunctionKey)
{
var previousColumn = column - 1,
selectedRow = [self selectedRowInColumn:previousColumn];
[self selectRow:selectedRow inColumn:previousColumn];
}
else
[self selectRow:0 inColumn:column + 1];
}
else
[_tableViews[column] keyDown:anEvent];
}
// SIZING
@@ -829,30 +844,6 @@
[super dragViewForRowsWithIndexes:dragRows tableColumns:theTableColumns event:dragEvent offset:dragViewOffset];
}
- (void)moveUp:(id)sender
{
[super moveUp:sender];
[_browser selectRow:[self selectedRow] inColumn:[_browser selectedColumn]];
}
- (void)moveDown:(id)sender
{
[super moveDown:sender];
[_browser selectRow:[self selectedRow] inColumn:[_browser selectedColumn]];
}
- (void)moveLeft:(id)sender
{
var previousColumn = [_browser selectedColumn] - 1,
selectedRow = [_browser selectedRowInColumn:previousColumn];
[_browser selectRow:selectedRow inColumn:previousColumn];
}
- (void)moveRight:(id)sender
{
[_browser selectRow:0 inColumn:[_browser selectedColumn] + 1];
}
@end
+528 -197
View File
@@ -20,6 +20,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import "../Foundation/CPRange.h"
#import "../Foundation/Ref.h"
@import <Foundation/CPArray.j>
@import <Foundation/CPData.j>
@import <Foundation/CPIndexSet.j>
@@ -28,6 +31,7 @@
@import "CPCollectionViewItem.j"
@import "CPCompatibility.j"
@import "CPDragServer_Constants.j"
@import "CPPasteboard.j"
@import "CPView.j"
@@ -67,6 +71,8 @@
@return an array of drag types (CPString)
*/
var HORIZONTAL_MARGIN = 2;
@implementation CPCollectionView : CPView
{
CPArray _content;
@@ -103,6 +109,17 @@
id _delegate;
CPEvent _mouseDownEvent;
BOOL _needsMinMaxItemSizeUpdate;
CGSize _storedFrameSize;
BOOL _uniformSubviewsResizing @accessors(property=uniformSubviewsResizing);
BOOL _lockResizing;
CPInteger _currentDropIndex;
CPDragOperation _currentDragOperation;
_CPCollectionViewDropIndicator _dropView;
}
- (id)initWithFrame:(CGRect)aFrame
@@ -111,28 +128,52 @@
if (self)
{
_items = [];
_content = [];
_maxNumberOfRows = 0;
_maxNumberOfColumns = 0;
_cachedItems = [];
_itemSize = CGSizeMakeZero();
_minItemSize = CGSizeMakeZero();
_maxItemSize = CGSizeMakeZero();
_minItemSize = _CGSizeMakeZero();
_maxItemSize = _CGSizeMakeZero();
[self setBackgroundColors:nil];
_verticalMargin = 5.0;
_tileWidth = -1.0;
_selectionIndexes = [CPIndexSet indexSet];
_allowsEmptySelection = YES;
_isSelectable = YES;
_allowsEmptySelection = YES;
[self _init];
}
return self;
}
- (void)_init
{
_content = [];
_items = [];
_cachedItems = [];
_numberOfColumns = CPNotFound;
_numberOfRows = CPNotFound;
_itemSize = _CGSizeMakeZero();
_selectionIndexes = [CPIndexSet indexSet];
_storedFrameSize = _CGSizeMakeZero();
_needsMinMaxItemSizeUpdate = YES;
_uniformSubviewsResizing = NO;
_lockResizing = NO;
_currentDropIndex = -1;
_currentDragOperation = CPDragOperationNone;
_dropView = nil;
[self setAutoresizesSubviews:NO];
[self setAutoresizingMask:0];
}
/*!
Sets the item prototype to \c anItem
@@ -187,7 +228,7 @@
_itemForDragging = nil;
_itemPrototype = anItem;
[self reloadContent];
[self _reloadContentCachingRemovedItems:NO];
}
/*!
@@ -210,13 +251,7 @@
item = _cachedItems.pop();
else
{
if (!_itemData)
if (_itemPrototype)
_itemData = [CPKeyedArchiver archivedDataWithRootObject:_itemPrototype];
item = [CPKeyedUnarchiver unarchiveObjectWithData:_itemData];
}
item = [_itemPrototype copy];
[item setRepresentedObject:anObject];
[[item view] setFrameSize:_itemSize];
@@ -382,8 +417,13 @@
return [_selectionIndexes copy];
}
/* @ignore */
- (void)reloadContent
{
[self _reloadContentCachingRemovedItems:YES];
}
/* @ignore */
- (void)_reloadContentCachingRemovedItems:(BOOL)shouldCache
{
// Remove current views
var count = _items.length;
@@ -393,7 +433,8 @@
[[_items[count] view] removeFromSuperview];
[_items[count] setSelected:NO];
_cachedItems.push(_items[count]);
if (shouldCache)
_cachedItems.push(_items[count]);
}
_items = [];
@@ -417,91 +458,163 @@
while ((index = [_selectionIndexes indexGreaterThanIndex:index]) != CPNotFound && index < count)
[_items[index] setSelected:YES];
[self tile];
[self tileIfNeeded:NO];
}
/* @ignore */
- (void)tile
- (void)resizeSubviewsWithOldSize:(CPSize)oldBoundsSize
{
var width = CGRectGetWidth([self bounds]);
// Desactivate subviews autoresizing
}
if (width == _tileWidth)
- (void)resizeWithOldSuperviewSize:(CPSize)oldBoundsSize
{
if (_lockResizing)
return;
// We try to fit as many views per row as possible. Any remaining space is then
// either proportioned out to the views (if their minSize != maxSize) or used as
// margin
var itemSize = CGSizeMakeCopy(_minItemSize);
_lockResizing = YES;
_numberOfColumns = MAX(1.0, FLOOR(width / itemSize.width));
[self tile];
if (_maxNumberOfColumns > 0)
_numberOfColumns = MIN(_maxNumberOfColumns, _numberOfColumns);
var remaining = width - _numberOfColumns * itemSize.width,
itemsNeedSizeUpdate = NO;
if (remaining > 0 && itemSize.width < _maxItemSize.width)
itemSize.width = MIN(_maxItemSize.width, itemSize.width + FLOOR(remaining / _numberOfColumns));
// When we ONE column and a non-integral width, the FLOORing above can cause the item width to be smaller than the total width.
if (_maxNumberOfColumns == 1 && itemSize.width < _maxItemSize.width && itemSize.width < width)
itemSize.width = MIN(_maxItemSize.width, width);
if (!CGSizeEqualToSize(_itemSize, itemSize))
{
_itemSize = itemSize;
itemsNeedSizeUpdate = YES;
}
var index = 0,
count = _items.length;
if (_maxNumberOfColumns > 0 && _maxNumberOfRows > 0)
count = MIN(count, _maxNumberOfColumns * _maxNumberOfRows);
_numberOfRows = CEIL(count / _numberOfColumns);
_horizontalMargin = FLOOR((width - _numberOfColumns * itemSize.width) / (_numberOfColumns + 1));
var x = _horizontalMargin,
y = -itemSize.height;
for (; index < count; ++index)
{
if (index % _numberOfColumns == 0)
{
x = _horizontalMargin;
y += _verticalMargin + itemSize.height;
}
var view = [_items[index] view];
[view setFrameOrigin:CGPointMake(x, y)];
if (itemsNeedSizeUpdate)
[view setFrameSize:_itemSize];
x += itemSize.width + _horizontalMargin;
}
var superview = [self superview],
proposedHeight = y + itemSize.height + _verticalMargin;
if ([superview isKindOfClass:[CPClipView class]])
{
var superviewSize = [superview bounds].size;
proposedHeight = MAX(superviewSize.height, proposedHeight);
}
_tileWidth = width;
[self setFrameSize:CGSizeMake(width, proposedHeight)];
_tileWidth = -1.0;
_lockResizing = NO;
}
- (void)resizeSubviewsWithOldSize:(CGSize)aSize
- (void)tile
{
[self tile];
[self tileIfNeeded:!_uniformSubviewsResizing];
}
- (void)tileIfNeeded:(BOOL)lazyFlag
{
var frameSize = [[self superview] frameSize],
count = _items.length,
oldNumberOfColumns = _numberOfColumns,
oldNumberOfRows = _numberOfRows,
oldItemSize = _itemSize,
storedFrameSize = _storedFrameSize;
// No need to tile if we are not yet placed in the view hierarchy.
if (!frameSize)
return;
[self _updateMinMaxItemSizeIfNeeded];
[self _computeGridWithSize:frameSize count:AT_REF(count)];
//CPLog.debug("frameSize="+CPStringFromSize(frameSize) + "itemSize="+CPStringFromSize(itemSize) + " ncols=" + colsRowsCount[0] +" nrows="+ colsRowsCount[1]+" displayCount="+ colsRowsCount[2]);
[self setFrameSize:_storedFrameSize];
//CPLog.debug("OLD " + oldNumberOfColumns + " NEW " + _numberOfColumns);
if (!lazyFlag ||
_numberOfColumns !== oldNumberOfColumns ||
_numberOfRows !== oldNumberOfRows ||
!_CGSizeEqualToSize(_itemSize, oldItemSize))
[self displayItems:_items frameSize:_storedFrameSize itemSize:_itemSize columns:_numberOfColumns rows:_numberOfRows count:count];
}
- (void)_computeGridWithSize:(CGSize)aSuperviewSize count:(Function)countRef
{
var width = aSuperviewSize.width,
height = aSuperviewSize.height,
itemSize = _CGSizeMakeCopy(_minItemSize),
maxItemSizeWidth = _maxItemSize.width,
maxItemSizeHeight = _maxItemSize.height,
itemsCount = [_items count],
numberOfRows,
numberOfColumns;
numberOfColumns = FLOOR(width / itemSize.width);
if (maxItemSizeWidth == 0)
numberOfColumns = MIN(numberOfColumns, _maxNumberOfColumns);
if (_maxNumberOfColumns > 0)
numberOfColumns = MIN(MIN(_maxNumberOfColumns, itemsCount), numberOfColumns);
numberOfColumns = MAX(1.0, numberOfColumns);
itemSize.width = FLOOR(width / numberOfColumns);
if (maxItemSizeWidth > 0)
{
itemSize.width = MIN(maxItemSizeWidth, itemSize.width);
if (numberOfColumns == 1)
itemSize.width = MIN(maxItemSizeWidth, width);
}
numberOfRows = MAX(1.0 , MIN(CEIL(itemsCount / numberOfColumns), _maxNumberOfRows));
height = MAX(height, numberOfRows * (_minItemSize.height + _verticalMargin));
var itemSizeHeight = FLOOR(height / numberOfRows);
if (maxItemSizeHeight > 0)
itemSizeHeight = MIN(itemSizeHeight, maxItemSizeHeight);
_itemSize = _CGSizeMake(MAX(_minItemSize.width, itemSize.width), MAX(_minItemSize.height, itemSizeHeight));
_storedFrameSize = _CGSizeMake(MAX(width, _minItemSize.width), height);
_numberOfColumns = numberOfColumns;
_numberOfRows = numberOfRows;
countRef(MIN(itemsCount, numberOfColumns * numberOfRows));
}
- (void)displayItems:(CPArray)displayItems frameSize:(CGSize)aFrameSize itemSize:(CGSize)anItemSize columns:(CPInteger)numberOfColumns rows:(CPInteger)numberOfRows count:(CPInteger)displayCount
{
// CPLog.debug("DISPLAY ITEMS " + numberOfColumns + " " + numberOfRows);
_horizontalMargin = _uniformSubviewsResizing ? FLOOR((aFrameSize.width - numberOfColumns * anItemSize.width) / (numberOfColumns + 1)) : HORIZONTAL_MARGIN;
var x = _horizontalMargin,
y = -anItemSize.height;
[displayItems enumerateObjectsUsingBlock:function(item, idx, stop)
{
var view = [item view];
if (idx >= displayCount)
{
[view setFrameOrigin:_CGPointMake(-anItemSize.width, -anItemSize.height)];
return;
}
if (idx % numberOfColumns == 0)
{
x = _horizontalMargin;
y += _verticalMargin + anItemSize.height;
}
[view setFrameOrigin:_CGPointMake(x, y)];
[view setFrameSize:anItemSize];
x += anItemSize.width + _horizontalMargin;
}];
}
- (void)_updateMinMaxItemSizeIfNeeded
{
if (!_needsMinMaxItemSizeUpdate)
return;
var prototypeView;
if (_itemPrototype && (prototypeView = [_itemPrototype view]))
{
if (_minItemSize.width == 0)
_minItemSize.width = [prototypeView frameSize].width;
if (_minItemSize.height == 0)
_minItemSize.height = [prototypeView frameSize].height;
if (_maxItemSize.height == 0 && !([prototypeView autoresizingMask] & CPViewHeightSizable))
_maxItemSize.height = [prototypeView frameSize].height;
if (_maxItemSize.width == 0 && !([prototypeView autoresizingMask] & CPViewWidthSizable))
_maxItemSize.width = [prototypeView frameSize].width;
_needsMinMaxItemSizeUpdate = NO;
}
}
// Laying Out the Collection View
@@ -574,10 +687,14 @@
{
if (aSize === nil || aSize === undefined)
[CPException raise:CPInvalidArgumentException reason:"Invalid value provided for minimum size"];
if (CGSizeEqualToSize(_minItemSize, aSize))
if (_CGSizeEqualToSize(_minItemSize, aSize))
return;
_minItemSize = CGSizeMakeCopy(aSize);
_minItemSize = _CGSizeMakeCopy(aSize);
if (_CGSizeEqualToSize(_minItemSize, _CGSizeMakeZero()))
_needsMinMaxItemSizeUpdate = YES;
[self tile];
}
@@ -596,10 +713,13 @@
*/
- (void)setMaxItemSize:(CGSize)aSize
{
if (CGSizeEqualToSize(_maxItemSize, aSize))
if (_CGSizeEqualToSize(_maxItemSize, aSize))
return;
_maxItemSize = CGSizeMakeCopy(aSize);
_maxItemSize = _CGSizeMakeCopy(aSize);
// if (_maxItemSize.width == 0 || _maxItemSize.height == 0)
// _needsMinMaxItemSizeUpdate = YES;
[self tile];
}
@@ -620,7 +740,7 @@
_backgroundColors = backgroundColors;
if (!_backgroundColors)
_backgroundColors = [CPColor whiteColor];
_backgroundColors = [[CPColor whiteColor]];
if ([_backgroundColors count] === 1)
[self setBackgroundColor:_backgroundColors[0]];
@@ -668,9 +788,9 @@
newSelectedRange = nil;
if (index < firstSelectedIndex)
newSelectedRange = CPMakeRange(index, (firstSelectedIndex - index) + 1);
newSelectedRange = _CPMakeRange(index, (firstSelectedIndex - index) + 1);
else
newSelectedRange = CPMakeRange(firstSelectedIndex, (index - firstSelectedIndex) + 1);
newSelectedRange = _CPMakeRange(firstSelectedIndex, (index - firstSelectedIndex) + 1);
indexes = [[self selectionIndexes] copy];
[indexes addIndexesInRange:newSelectedRange];
@@ -692,65 +812,6 @@
[self setSelectionIndexes:[CPIndexSet indexSet]];
}
- (void)mouseDragged:(CPEvent)anEvent
{
// Don't crash if we never registered the intial click.
if (!_mouseDownEvent)
return;
var locationInWindow = [anEvent locationInWindow],
mouseDownLocationInWindow = [_mouseDownEvent locationInWindow];
// FIXME: This is because Safari's drag hysteresis is 3px x 3px
if ((ABS(locationInWindow.x - mouseDownLocationInWindow.x) < 3) &&
(ABS(locationInWindow.y - mouseDownLocationInWindow.y) < 3))
return;
if (![_delegate respondsToSelector:@selector(collectionView:dragTypesForItemsAtIndexes:)])
return;
// If we don't have any selected items, we've clicked away, and thus the drag is meaningless.
if (![_selectionIndexes count])
return;
if ([_delegate respondsToSelector:@selector(collectionView:canDragItemsAtIndexes:withEvent:)] &&
![_delegate collectionView:self canDragItemsAtIndexes:_selectionIndexes withEvent:_mouseDownEvent])
return;
// Set up the pasteboard
var dragTypes = [_delegate collectionView:self dragTypesForItemsAtIndexes:_selectionIndexes];
[[CPPasteboard pasteboardWithName:CPDragPboard] declareTypes:dragTypes owner:self];
if (!_itemForDragging)
_itemForDragging = [self newItemForRepresentedObject:_content[[_selectionIndexes firstIndex]]];
else
[_itemForDragging setRepresentedObject:_content[[_selectionIndexes firstIndex]]];
var view = [_itemForDragging view];
[view setFrameSize:_itemSize];
[view setAlphaValue:0.7];
[self dragView:view
at:[[_items[[_selectionIndexes firstIndex]] view] frame].origin
offset:CGSizeMakeZero()
event:_mouseDownEvent
pasteboard:nil
source:self
slideBack:YES];
}
/*!
Places the selected items on the specified pasteboard. The items are requested from the collection's delegate.
@param aPasteboard the pasteboard to put the items on
@param aType the format the pasteboard data
*/
- (void)pasteboard:(CPPasteboard)aPasteboard provideDataForType:(CPString)aType
{
[aPasteboard setData:[_delegate collectionView:self dataForItemsAtIndexes:_selectionIndexes forType:aType] forType:aType];
}
// Cappuccino Additions
/*!
@@ -768,6 +829,13 @@
[self tile];
}
- (void)setUniformSubviewsResizing:(float)flag
{
_uniformSubviewsResizing = flag;
[self tileIfNeeded:NO];
}
/*!
Gets the collection view's current vertical spacing between elements.
*/
@@ -810,10 +878,17 @@
- (int)_indexAtPoint:(CGPoint)thePoint
{
var row = FLOOR(thePoint.y / (_itemSize.height + _verticalMargin)),
column = FLOOR(thePoint.x / (_itemSize.width + _horizontalMargin));
var column = FLOOR(thePoint.x / (_itemSize.width + _horizontalMargin));
return row * _numberOfColumns + column;
if (column < _numberOfColumns)
{
var row = FLOOR(thePoint.y / (_itemSize.height + _verticalMargin));
if (row < _numberOfRows)
return (row * _numberOfColumns + column);
}
return CPNotFound;
}
- (CPCollectionViewItem)itemAtIndex:(unsigned)anIndex
@@ -844,6 +919,284 @@
@end
@implementation CPCollectionView (DragAndDrop)
/*
TODO: dropOperation is not supported yet. The visible drop operation is like CPCollectionViewDropBefore.
*/
/*!
Places the selected items on the specified pasteboard. The items are requested from the collection's delegate.
@param aPasteboard the pasteboard to put the items on
@param aType the format the pasteboard data
*/
- (void)pasteboard:(CPPasteboard)aPasteboard provideDataForType:(CPString)aType
{
[aPasteboard setData:[_delegate collectionView:self dataForItemsAtIndexes:_selectionIndexes forType:aType] forType:aType];
}
- (void)mouseDragged:(CPEvent)anEvent
{
// Don't crash if we never registered the intial click.
if (!_mouseDownEvent)
return;
// Create and position the drop indicator view.
if (!_dropView)
_dropView = [[_CPCollectionViewDropIndicator alloc] initWithFrame:_CGRectMake(-8, -8, 0, 0)];
[_dropView setFrameSize:_CGSizeMake(10, _itemSize.height + _verticalMargin)];
[self addSubview:_dropView];
var locationInWindow = [anEvent locationInWindow],
mouseDownLocationInWindow = [_mouseDownEvent locationInWindow];
// FIXME: This is because Safari's drag hysteresis is 3px x 3px
if ((ABS(locationInWindow.x - mouseDownLocationInWindow.x) < 3) &&
(ABS(locationInWindow.y - mouseDownLocationInWindow.y) < 3))
return;
if (![_delegate respondsToSelector:@selector(collectionView:dragTypesForItemsAtIndexes:)])
return;
// If we don't have any selected items, we've clicked away, and thus the drag is meaningless.
if (![_selectionIndexes count])
return;
if ([_delegate respondsToSelector:@selector(collectionView:canDragItemsAtIndexes:withEvent:)] &&
![_delegate collectionView:self canDragItemsAtIndexes:_selectionIndexes withEvent:_mouseDownEvent])
return;
// Set up the pasteboard
var dragTypes = [_delegate collectionView:self dragTypesForItemsAtIndexes:_selectionIndexes];
[[CPPasteboard pasteboardWithName:CPDragPboard] declareTypes:dragTypes owner:self];
var dragImageOffset = _CGSizeMakeZero(),
view = [self _draggingViewForItemsAtIndexes:_selectionIndexes withEvent:_mouseDownEvent offset:dragImageOffset];
[view setFrameSize:_itemSize];
[view setAlphaValue:0.7];
var dragLocation = [self convertPoint:locationInWindow fromView:nil],
dragPoint = _CGPointMake(dragLocation.x - _itemSize.width / 2 , dragLocation.y - _itemSize.height / 2);
[self dragView:view
at:dragPoint
offset:dragImageOffset
event:_mouseDownEvent
pasteboard:nil
source:self
slideBack:YES];
}
- (CPView)_draggingViewForItemsAtIndexes:(CPIndexSet)indexes withEvent:(CPEvent)anEvent offset:(CGPoint)offset
{
if ([_delegate respondsToSelector:@selector(collectionView:draggingViewForItemsAtIndexes:withEvent:offset:)])
return [_delegate collectionView:self draggingViewForItemsAtIndexes:indexes withEvent:anEvent offset:offset];
return [self draggingViewForItemsAtIndexes:indexes withEvent:anEvent offset:offset];
}
- (CPView)draggingViewForItemsAtIndexes:(CPIndexSet)indexes withEvent:(CPEvent)event offset:(CGPoint)dragImageOffset
{
var idx = _content[[indexes firstIndex]];
if (!_itemForDragging)
_itemForDragging = [self newItemForRepresentedObject:idx];
else
[_itemForDragging setRepresentedObject:idx];
return [_itemForDragging view];
}
- (BOOL)_canDragItemsAtIndexes:(CPIndexSet)indexes withEvent:(CPEvent)anEvent
{
if ([self respondsToSelector:@selector(collectionView:canDragItemsAtIndexes:withEvent:)])
return [_delegate collectionView:self canDragItemsAtIndexes:indexes withEvent:anEvent];
return YES;
}
- (CPDragOperation)draggingEntered:(id)draggingInfo
{
var dropIndex = -1,
dropIndexRef = AT_REF(dropIndex);
var dragOp = [self _validateDragWithInfo:draggingInfo dropIndex:dropIndexRef dropOperation:1];
dropIndex = dropIndexRef();
[self _updateDragAndDropStateWithDraggingInfo:draggingInfo newDragOperation:dragOp newDropIndex:dropIndex newDropOperation:1];
return _currentDragOperation;
}
- (CPDragOperation)draggingUpdated:(id)draggingInfo
{
if (![self _dropIndexDidChange:draggingInfo])
return _currentDragOperation;
var dropIndex,
dropIndexRef = AT_REF(dropIndex);
var dragOperation = [self _validateDragWithInfo:draggingInfo dropIndex:dropIndexRef dropOperation:1];
dropIndex = dropIndexRef();
[self _updateDragAndDropStateWithDraggingInfo:draggingInfo newDragOperation:dragOperation newDropIndex:dropIndex newDropOperation:1];
return dragOperation;
}
- (CPDragOperation)_validateDragWithInfo:(id)draggingInfo dropIndex:(Function)dropIndexRef dropOperation:(int)dropOperation
{
var result = CPDragOperationMove,
dropIndex = [self _dropIndexForDraggingInfo:draggingInfo proposedDropOperation:dropOperation];
if ([_delegate respondsToSelector:@selector(collectionView:validateDrop:proposedIndex:dropOperation:)])
{
var dropIndexRef2 = AT_REF(dropIndex);
result = [_delegate collectionView:self validateDrop:draggingInfo proposedIndex:dropIndexRef2 dropOperation:dropOperation];
if (result !== CPDragOperationNone)
{
dropIndex = dropIndexRef2();
}
}
dropIndexRef(dropIndex);
return result;
}
- (void)draggingExited:(id)draggingInfo
{
[self _updateDragAndDropStateWithDraggingInfo:draggingInfo newDragOperation:0 newDropIndex:-1 newDropOperation:1];
}
- (void)draggingEnded:(id)draggingInfo
{
[self _updateDragAndDropStateWithDraggingInfo:draggingInfo newDragOperation:0 newDropIndex:-1 newDropOperation:1];
}
/*
Not supported. Use -collectionView:dataForItemsAtIndexes:fortype:
- (BOOL)_writeItemsAtIndexes:(CPIndexSet)indexes toPasteboard:(CPPasteboard)pboard
{
if ([self respondsToSelector:@selector(collectionView:writeItemsAtIndexes:toPasteboard:)])
return [_delegate collectionView:self writeItemsAtIndexes:indexes toPasteboard:pboard];
return NO;
}
*/
- (BOOL)performDragOperation:(id)draggingInfo
{
var result = NO;
if (_currentDragOperation && _currentDropIndex !== -1)
result = [_delegate collectionView:self acceptDrop:draggingInfo index:_currentDropIndex dropOperation:1];
[self draggingEnded:draggingInfo]; // Is this correct ?
return result;
}
- (void)_updateDragAndDropStateWithDraggingInfo:(id)draggingInfo newDragOperation:(CPDragOperation)dragOperation newDropIndex:(CPInteger)dropIndex newDropOperation:(CPInteger)dropOperation
{
_currentDropIndex = dropIndex;
_currentDragOperation = dragOperation;
var frameOrigin,
dropviewFrameWidth = _CGRectGetWidth([_dropView frame]);
if (_currentDropIndex == -1 || _currentDragOperation == CPDragOperationNone)
frameOrigin = _CGPointMake(-dropviewFrameWidth, 0);
else
{
var offset;
if ((_currentDropIndex % _numberOfColumns) !== 0 || _currentDropIndex == [_items count])
{
dropIndex = _currentDropIndex - 1;
offset = (_horizontalMargin - dropviewFrameWidth) / 2;
}
else
{
offset = - _itemSize.width - dropviewFrameWidth - (_horizontalMargin - dropviewFrameWidth) / 2;
}
var rect = [self frameForItemAtIndex:dropIndex];
frameOrigin = _CGPointMake(_CGRectGetMaxX(rect) + offset, rect.origin.y - _verticalMargin);
}
[_dropView setFrameOrigin:frameOrigin];
}
- (BOOL)_dropIndexDidChange:(id)draggingInfo
{
var dropIndex = [self _dropIndexForDraggingInfo:draggingInfo proposedDropOperation:1];
if (dropIndex == CPNotFound)
dropIndex = [[self content] count];
return (_currentDropIndex !== dropIndex)
}
- (CPInteger)_dropIndexForDraggingInfo:(id)draggingInfo proposedDropOperation:(int)dropOperation
{
var location = [self convertPoint:[draggingInfo draggingLocation] fromView:nil],
locationX = location.x + _itemSize.width / 2;
var column = MIN(FLOOR(locationX / (_itemSize.width + _horizontalMargin)), _numberOfColumns),
row = FLOOR(location.y / (_itemSize.height + _verticalMargin));
if (row >= _numberOfRows - 1)
{
if (row >= _numberOfRows)
{
row = _numberOfRows - 1;
column = _numberOfColumns;
}
return MIN((row * _numberOfColumns + column), [_items count]);
}
return (row * _numberOfColumns + column);
}
@end
@implementation _CPCollectionViewDropIndicator : CPView
{
}
- (void)drawRect:(CGRect)aRect
{
var context = [[CPGraphicsContext currentContext] graphicsPort],
width = _CGRectGetWidth(aRect),
circleRect = _CGRectMake(1, 1, width - 2, width - 2);
CGContextSetStrokeColor(context, [CPColor colorWithHexString:@"4886ca"]);
CGContextSetFillColor(context, [CPColor whiteColor]);
CGContextSetLineWidth(context, 3);
//draw white under the circle thing
CGContextFillRect(context, circleRect);
//draw the circle thing
CGContextStrokeEllipseInRect(context, circleRect);
//then draw the line
CGContextBeginPath(context);
CGContextMoveToPoint(context, FLOOR(width / 2), _CGRectGetMinY(aRect) + width);
CGContextAddLineToPoint(context, FLOOR(width / 2), _CGRectGetHeight(aRect));
CGContextClosePath(context);
CGContextStrokePath(context);
}
@end
@implementation CPCollectionView (KeyboardInteraction)
- (void)_modifySelectionWithNewIndex:(int)anIndex direction:(int)aDirection expand:(BOOL)shouldExpand
@@ -858,9 +1211,9 @@
// if the direction is backward (-1) check with the bottom anchor
if (aDirection === -1)
[indexes addIndexesInRange:CPMakeRange(anIndex, bottomAnchor - anIndex + 1)];
[indexes addIndexesInRange:_CPMakeRange(anIndex, bottomAnchor - anIndex + 1)];
else
[indexes addIndexesInRange:CPMakeRange(topAnchor, anIndex - topAnchor + 1)];
[indexes addIndexesInRange:_CPMakeRange(topAnchor, anIndex - topAnchor + 1)];
}
else
indexes = [CPIndexSet indexSetWithIndex:anIndex];
@@ -873,7 +1226,7 @@
{
var frame = [self frameForItemsAtIndexes:[self selectionIndexes]];
if (!CGRectIsNull(frame))
if (!_CGRectIsNull(frame))
[self scrollRectToVisible:frame];
}
@@ -953,6 +1306,11 @@
[self interpretKeyEvents:[anEvent]];
}
- (void)setAutoresizingMask:(int)aMask
{
[super setAutoresizingMask:0];
}
@end
@implementation CPCollectionView (Deprecated)
@@ -987,35 +1345,12 @@ var CPCollectionViewMinItemSizeKey = @"CPCollectionViewMinItemSizeK
@implementation CPCollectionView (CPCoding)
- (void)awakeFromCib
{
[super awakeFromCib];
var prototypeView = [_itemPrototype view];
if (prototypeView && (CGSizeEqualToSize(_minItemSize, CGSizeMakeZero()) || CGSizeEqualToSize(_maxItemSize, CGSizeMakeZero())))
{
var item = _itemPrototype;
if (CGSizeEqualToSize(_minItemSize, CGSizeMakeZero()))
_minItemSize = [prototypeView frameSize];
else if (CGSizeEqualToSize(_maxItemSize, CGSizeMakeZero()))
_maxItemSize = [prototypeView frameSize];
}
}
- (id)initWithCoder:(CPCoder)aCoder
{
self = [super initWithCoder:aCoder];
if (self)
{
_items = [];
_content = [];
_cachedItems = [];
_itemSize = CGSizeMakeZero();
_minItemSize = [aCoder decodeSizeForKey:CPCollectionViewMinItemSizeKey];
_maxItemSize = [aCoder decodeSizeForKey:CPCollectionViewMaxItemSizeKey];
@@ -1029,11 +1364,7 @@ var CPCollectionViewMinItemSizeKey = @"CPCollectionViewMinItemSizeK
[self setBackgroundColors:[aCoder decodeObjectForKey:CPCollectionViewBackgroundColorsKey]];
_tileWidth = -1.0;
_selectionIndexes = [CPIndexSet indexSet];
_allowsEmptySelection = YES;
[self _init];
}
return self;
@@ -1043,10 +1374,10 @@ var CPCollectionViewMinItemSizeKey = @"CPCollectionViewMinItemSizeK
{
[super encodeWithCoder:aCoder];
if (!CGSizeEqualToSize(_minItemSize, CGSizeMakeZero()))
if (!_CGSizeEqualToSize(_minItemSize, _CGSizeMakeZero()))
[aCoder encodeSize:_minItemSize forKey:CPCollectionViewMinItemSizeKey];
if (!CGSizeEqualToSize(_maxItemSize, CGSizeMakeZero()))
if (!_CGSizeEqualToSize(_maxItemSize, _CGSizeMakeZero()))
[aCoder encodeSize:_maxItemSize forKey:CPCollectionViewMaxItemSizeKey];
[aCoder encodeInt:_maxNumberOfRows forKey:CPCollectionViewMaxNumberOfRowsKey];
+26 -1
View File
@@ -22,13 +22,38 @@
@import "CPViewController.j"
/*!
Represents an object inside a CPCollectionView.
*/
@implementation CPCollectionViewItem : CPViewController
{
BOOL _isSelected;
CPData _cachedArchive;
}
- (id)copy
{
var cibName = [self cibName],
copy;
if (cibName)
{
copy = [[[self class] alloc] initWithCibName:cibName bundle:[self cibBundle]];
}
else
{
if (!_cachedArchive)
_cachedArchive = [CPKeyedArchiver archivedDataWithRootObject:self];
copy = [CPKeyedUnarchiver unarchiveObjectWithData:_cachedArchive];
// copy connections
}
[copy setRepresentedObject:[self representedObject]];
[copy setSelected:_isSelected];
return copy;
}
// Setting the Represented Object
+1 -1
View File
@@ -1302,7 +1302,7 @@ var cloneObject = function(object)
if (object.hasOwnProperty(key))
if (object[key].constructor === Array)
clone[key] = object[key].slice(0);
else if (typeof(object) === "object")
else if (typeof(object[key]) === "object")
clone[key] = cloneObject(object[key]);
else
clone[key] = object[key];
+6 -4
View File
@@ -1155,11 +1155,13 @@ var CPComboBoxCompletionTest = function(object, index, context)
switch (theBinding)
{
case CPContentBinding: [_source setContent:newValue];
break;
case CPContentBinding:
[_source setContent:newValue];
break;
case CPContentValuesBinding: [_source setContentValues:newValue];
break;
case CPContentValuesBinding:
[_source setContentValues:newValue];
break;
}
}
+38 -2
View File
@@ -27,6 +27,7 @@
@import "CGColor.j"
@import "CGColorSpace.j"
@import "CGGradient.j"
@import "CPBezierPath.j"
@import "CPGraphicsContext.j"
CPGradientDrawsBeforeStartingLocation = kCGGradientDrawsBeforeStartLocation;
@@ -40,6 +41,11 @@ CPGradientDrawsAfterEndingLocation = kCGGradientDrawsAfterEndLocation;
CGGradient _gradient;
}
- (id)initWithStartingColor:(CPColor)startingColor endingColor:(CPColor)endingColor
{
return [self initWithColors:[startingColor, endingColor]];
}
- (id)initWithColors:(CPArray)someColors
{
var count = [someColors count];
@@ -83,7 +89,19 @@ CPGradientDrawsAfterEndingLocation = kCGGradientDrawsAfterEndLocation;
CGContextClipToRect(ctx, rect);
CGContextAddRect(ctx, rect);
var startPoint,
[self _drawAtAngle:angle];
CGContextRestoreGState(ctx);
}
/*!
@ignore like draw in rect but apply no clipping.
*/
- (void)_drawInRect:(CGRect)rect atAngle:(float)angle
{
var ctx = [[CPGraphicsContext currentContext] graphicsPort],
startPoint,
endPoint;
// Modulo of negative values doesn't work as expected in JS.
@@ -117,7 +135,25 @@ CPGradientDrawsAfterEndingLocation = kCGGradientDrawsAfterEndLocation;
startPoint.y + length * SIN(radians));
[self drawFromPoint:startPoint toPoint:endPoint options:CPGradientDrawsBeforeStartingLocation | CPGradientDrawsAfterEndingLocation];
CGContextRestoreGState(ctx);
}
- (void)drawInBezierPath:(CPBezierPath)aPath angle:(float)anAngle
{
[CPGraphicsContext saveGraphicsState];
var ctx = [[CPGraphicsContext currentContext] graphicsPort];
// Nail down the path which CGContextDrawLinearGradient will cause to be filled.
// Note we don't do this by clipping to the path and then calling drawInRect:atAngle:
// as this would cut off any antialias of the drawing, plus any active context shadow.
CGContextBeginPath(ctx);
CGContextAddPath(ctx, aPath._path);
CGContextSetLineWidth(ctx, [aPath lineWidth]);
CGContextClosePath(ctx);
[self _drawInRect:[aPath bounds] atAngle:anAngle];
[CPGraphicsContext restoreGraphicsState];
}
- (void)drawFromPoint:(NSPoint)startingPoint toPoint:(NSPoint)endingPoint options:(NSGradientDrawingOptions)options
+1 -1
View File
@@ -223,7 +223,7 @@ var _CPMenuBarVisible = NO,
- (float)menuBarHeight
{
if (self === [CPApp mainMenu])
return [[CPTheme defaultTheme] valueForAttributeWithName:@"menu-bar-height" forClass:_CPMenuView];
return [CPMenu menuBarHeight];
return 0.0;
}
+7 -28
View File
@@ -31,11 +31,9 @@
*/
@implementation CPShadow : CPObject
{
CGSize _offset;
float _blurRadius;
CPColor _color;
CPString _cssString;
CGSize _offset @accessors(property=shadowOffset);
float _blurRadius @accessors(property=shadowBlurRadius);
CPColor _color @accessors(property=shadowColor);
}
/*!
@@ -60,35 +58,16 @@
_offset = anOffset;
_blurRadius = aBlurRadius;
_color = aColor;
_cssString = [_color cssString] + " " + ROUND(anOffset.width) + @"px " + ROUND(anOffset.height) + @"px " + ROUND(_blurRadius) + @"px";
}
return self;
}
/*!
Returns the shadow's offset.
*/
- (CGSize)shadowOffset
- (void)set
{
return _offset;
}
var context = [[CPGraphicsContext currentContext] graphicsPort];
/*!
Returns the shadow's blur radius
*/
- (float)shadowBlurRadius
{
return _blurRadius;
}
/*!
Returns the shadow's color.
*/
- (CPColor)shadowColor
{
return _color;
CGContextSetShadowWithColor(context, _offset, _blurRadius, _color);
}
/*!
@@ -96,7 +75,7 @@
*/
- (CPString)cssString
{
return _cssString;
return [_color cssString] + " " + ROUND(_offset.width) + @"px " + ROUND(_offset.height) + @"px " + ROUND(_blurRadius) + @"px";
}
@end
+205 -27
View File
@@ -27,13 +27,14 @@
@import <Foundation/CPIndexSet.j>
@import <Foundation/CPTimer.j>
@import "_CPAutocompleteMenu.j"
@import "CPButton.j"
@import "CPPopUpButton.j"
@import "CPScrollView.j"
@import "CPTableView.j"
@import "CPText.j"
@import "CPTextField.j"
@import "CPWindow_Constants.j"
@import "_CPAutocompleteMenu.j"
@global CPApp
@@ -59,6 +60,9 @@ var CPScrollDestinationNone = 0,
CPScrollDestinationLeft = 1,
CPScrollDestinationRight = 2;
CPTokenFieldDisclosureButtonType = 0;
CPTokenFieldDeleteButtonType = 1;
@implementation CPTokenField : CPTextField
{
CPScrollView _tokenScrollView;
@@ -76,6 +80,8 @@ var CPScrollDestinationNone = 0,
CPEvent _mouseDownEvent;
BOOL _shouldNotifyTarget;
int _buttonType @accessors(property=buttonType);
}
+ (CPCharacterSet)defaultTokenizingCharacterSet
@@ -104,6 +110,7 @@ var CPScrollDestinationNone = 0,
{
_completionDelay = [[self class] defaultCompletionDelay];
_tokenizingCharacterSet = [[self class] defaultTokenizingCharacterSet];
_buttonType = CPTokenFieldDisclosureButtonType;
[self setBezeled:YES];
[self _init];
@@ -561,7 +568,7 @@ var CPScrollDestinationNone = 0,
if (newToken === nil)
{
newToken = [[_CPTokenFieldToken alloc] init];
newToken = [_CPTokenFieldToken new];
[newToken setTokenField:self];
[newToken setRepresentedObject:tokenObject];
[newToken setStringValue:tokenValue];
@@ -652,7 +659,7 @@ var CPScrollDestinationNone = 0,
return CPTextFieldBlurFunction(
anEvent,
CPTokenFieldInputOwner,
[CPTokenFieldInputOwner._tokenScrollView documentView]._DOMElement,
CPTokenFieldInputOwner ? [CPTokenFieldInputOwner._tokenScrollView documentView]._DOMElement : nil,
CPTokenFieldDOMInputElement,
CPTokenFieldInputResigning,
AT_REF(CPTokenFieldInputDidBlur));
@@ -1089,6 +1096,8 @@ var CPScrollDestinationNone = 0,
tokenFrame = fitAndFrame(tokenViewSize.width, tokenViewSize.height);
[tokenView setFrame:tokenFrame];
[tokenView setButtonType:_buttonType];
}
if (isEditing && !_selectedRange.length && _CPMaxRange(_selectedRange) >= [tokens count])
@@ -1241,6 +1250,30 @@ var CPScrollDestinationNone = 0,
return aString;
}
- (BOOL)_hasMenuForRepresentedObject:(id)aRepresentedObject
{
var delegate = [self delegate];
if ([delegate respondsToSelector:@selector(tokenField:hasMenuForRepresentedObject:)] &&
[delegate respondsToSelector:@selector(tokenField:menuForRepresentedObject:)])
return [delegate tokenField:self hasMenuForRepresentedObject:aRepresentedObject];
return NO;
}
- (CPMenu)_menuForRepresentedObject:(id)aRepresentedObject
{
var delegate = [self delegate];
if ([delegate respondsToSelector:@selector(tokenField:hasMenuForRepresentedObject:)] &&
[delegate respondsToSelector:@selector(tokenField:menuForRepresentedObject:)])
{
var hasMenu = [delegate tokenField:self hasMenuForRepresentedObject:aRepresentedObject];
if (hasMenu)
return [delegate tokenField:self menuForRepresentedObject:aRepresentedObject] || nil;
}
return nil;
}
// We put the string on the pasteboard before calling this delegate method.
// By default, we write the NSStringPboardType as well as an array of NSStrings.
// - (BOOL)tokenField:(NSTokenField *)tokenField writeRepresentedObjects:(NSArray *)objects toPasteboard:(NSPasteboard *)pboard;
@@ -1265,13 +1298,25 @@ var CPScrollDestinationNone = 0,
[_autocompleteMenu _hideCompletions];
}
- (void)setButtonType:(int)aButtonType
{
if (_buttonType === aButtonType)
return;
_buttonType = aButtonType;
[self setNeedsLayout];
}
@end
@implementation _CPTokenFieldToken : CPTextField
{
_CPTokenFieldTokenCloseButton _deleteButton;
CPTokenField _tokenField;
id _representedObject;
_CPTokenFieldTokenCloseButton _deleteButton;
_CPTokenFieldTokenDisclosureButton _disclosureButton;
CPTokenField _tokenField;
id _representedObject;
int _buttonType;
}
+ (CPString)defaultThemeClass
@@ -1288,12 +1333,10 @@ var CPScrollDestinationNone = 0,
{
if (self = [super initWithFrame:frame])
{
_deleteButton = [[_CPTokenFieldTokenCloseButton alloc] initWithFrame:CGRectMakeZero()];
[self addSubview:_deleteButton];
[self setEditable:NO];
[self setHighlighted:NO];
[self setBezeled:YES];
[self setButtonType:CPTokenFieldDisclosureButtonType];
}
return self;
@@ -1317,6 +1360,7 @@ var CPScrollDestinationNone = 0,
- (void)setRepresentedObject:(id)representedObject
{
_representedObject = representedObject;
[self setNeedsLayout];
}
- (void)setEditable:(BOOL)shouldBeEditable
@@ -1329,9 +1373,12 @@ var CPScrollDestinationNone = 0,
{
var r = [super setThemeState:aState];
// Share hover state with the delete button.
if (r && aState === CPThemeStateHovered)
[_deleteButton setThemeState:aState];
// Share hover state with the disclosure and delete buttons.
if (aState & CPThemeStateHovered)
{
[_disclosureButton setThemeState:CPThemeStateHovered];
[_deleteButton setThemeState:CPThemeStateHovered];
}
return r;
}
@@ -1340,9 +1387,12 @@ var CPScrollDestinationNone = 0,
{
var r = [super unsetThemeState:aState];
// Share hover state with the delete button.
if (r && aState === CPThemeStateHovered)
[_deleteButton unsetThemeState:aState];
// Share hover state with the disclosure and delete button.
if (aState & CPThemeStateHovered)
{
[_disclosureButton unsetThemeState:CPThemeStateHovered];
[_deleteButton unsetThemeState:CPThemeStateHovered];
}
return r;
}
@@ -1360,6 +1410,47 @@ var CPScrollDestinationNone = 0,
return size;
}
- (void)setButtonType:(int)aButtonType
{
if (_buttonType === aButtonType)
return;
_buttonType = aButtonType;
if (_buttonType === CPTokenFieldDisclosureButtonType)
{
if (_deleteButton)
{
[_deleteButton removeFromSuperview];
_deleteButton = nil;
}
if (!_disclosureButton)
{
_disclosureButton = [[_CPTokenFieldTokenDisclosureButton alloc] initWithFrame:CGRectMakeZero()];
[self addSubview:_disclosureButton];
}
}
else
{
if (_disclosureButton)
{
[_disclosureButton removeFromSuperview];
_disclosureButton = nil;
}
if (!_deleteButton)
{
_deleteButton = [[_CPTokenFieldTokenCloseButton alloc] initWithFrame:CGRectMakeZero()];
[self addSubview:_deleteButton];
[_deleteButton setTarget:self];
[_deleteButton setAction:@selector(_delete:)];
}
}
[self setNeedsLayout];
}
- (void)layoutSubviews
{
[super layoutSubviews];
@@ -1368,17 +1459,33 @@ var CPScrollDestinationNone = 0,
positioned:CPWindowBelow
relativeToEphemeralSubviewNamed:@"content-view"];
if (bezelView)
if (bezelView && _tokenField)
{
[_deleteButton setTarget:self];
[_deleteButton setAction:@selector(_delete:)];
[_deleteButton setEnabled:[self isEditable]];
switch (_buttonType)
{
case CPTokenFieldDisclosureButtonType:
var shouldBeEnabled = [self hasMenu];
[_disclosureButton setHidden:!shouldBeEnabled];
var frame = [bezelView frame],
buttonOffset = [_deleteButton currentValueForThemeAttribute:@"offset"],
buttonSize = [_deleteButton currentValueForThemeAttribute:@"min-size"];
if (shouldBeEnabled)
[_disclosureButton setMenu:[self menu]];
[_deleteButton setFrame:_CGRectMake(CGRectGetMaxX(frame) - buttonOffset.x, CGRectGetMinY(frame) + buttonOffset.y, buttonSize.width, buttonSize.height)];
var frame = [bezelView frame],
buttonOffset = [_disclosureButton currentValueForThemeAttribute:@"offset"],
buttonSize = [_disclosureButton currentValueForThemeAttribute:@"min-size"];
[_disclosureButton setFrame:_CGRectMake(CGRectGetMaxX(frame) - buttonOffset.x, CGRectGetMinY(frame) + buttonOffset.y, buttonSize.width, buttonSize.height)];
break;
case CPTokenFieldDeleteButtonType:
[_deleteButton setEnabled:[self isEditable] && [self isEnabled]];
var frame = [bezelView frame],
buttonOffset = [_deleteButton currentValueForThemeAttribute:@"offset"],
buttonSize = [_deleteButton currentValueForThemeAttribute:@"min-size"];
[_deleteButton setFrame:_CGRectMake(CGRectGetMaxX(frame) - buttonOffset.x, CGRectGetMinY(frame) + buttonOffset.y, buttonSize.width, buttonSize.height)];
break;
}
}
}
@@ -1398,11 +1505,18 @@ var CPScrollDestinationNone = 0,
[_tokenField _deleteToken:self];
}
- (BOOL)hasMenu
{
return [_tokenField _hasMenuForRepresentedObject:_representedObject];
}
- (CPMenu)menu
{
return [_tokenField _menuForRepresentedObject:_representedObject];
}
@end
/*
Theming hook.
*/
@implementation _CPTokenFieldTokenCloseButton : CPButton
{
}
@@ -1421,11 +1535,73 @@ var CPScrollDestinationNone = 0,
return "tokenfield-token-close-button";
}
- (void)mouseEntered:(CPEvent)anEvent
{
// Don't toggle hover state from within the button - we use the hover state of the token field as a whole.
}
- (void)mouseExited:(CPEvent)anEvent
{
// Don't toggle hover state from within the button - we use the hover state of the token field as a whole.
}
@end
@implementation _CPTokenFieldTokenDisclosureButton : CPPopUpButton
{
}
+ (id)themeAttributes
{
var attributes = [CPButton themeAttributes];
[attributes setObject:_CGPointMake(15, 5) forKey:@"offset"];
return attributes;
}
+ (CPString)defaultThemeClass
{
return "tokenfield-token-disclosure-button";
}
- (id)initWithFrame:(CGRect)aFrame
{
if (self = [self initWithFrame:aFrame pullsDown:YES])
{
[self setBordered:YES];
[super setTitle:@""];
}
return self;
}
- (void)setTitle:(CPString)aTitle
{
// skip
}
- (void)synchronizeTitleAndSelectedItem
{
// skip
}
- (void)mouseEntered:(CPEvent)anEvent
{
// Don't toggle hover state from within the button - we use the hover state of the token field as a whole.
}
- (void)mouseExited:(CPEvent)anEvent
{
// Don't toggle hover state from within the button - we use the hover state of the token field as a whole.
}
@end
var CPTokenFieldTokenizingCharacterSetKey = "CPTokenFieldTokenizingCharacterSetKey",
CPTokenFieldCompletionDelayKey = "CPTokenFieldCompletionDelay";
CPTokenFieldCompletionDelayKey = "CPTokenFieldCompletionDelay",
CPTokenFieldButtonTypeKey = "CPTokenFieldButtonTypeKey";
@implementation CPTokenField (CPCoding)
@@ -1437,6 +1613,7 @@ var CPTokenFieldTokenizingCharacterSetKey = "CPTokenFieldTokenizingCharacterSe
{
_tokenizingCharacterSet = [aCoder decodeObjectForKey:CPTokenFieldTokenizingCharacterSetKey] || [[self class] defaultTokenizingCharacterSet];
_completionDelay = [aCoder decodeDoubleForKey:CPTokenFieldCompletionDelayKey] || [[self class] defaultCompletionDelay];
_buttonType = [aCoder decodeIntForKey:CPTokenFieldButtonTypeKey] || CPTokenFieldDisclosureButtonType;
[self _init];
@@ -1453,6 +1630,7 @@ var CPTokenFieldTokenizingCharacterSetKey = "CPTokenFieldTokenizingCharacterSe
[aCoder encodeInt:_tokenizingCharacterSet forKey:CPTokenFieldTokenizingCharacterSetKey];
[aCoder encodeDouble:_completionDelay forKey:CPTokenFieldCompletionDelayKey];
[aCoder encodeInt:_buttonType forKey:CPTokenFieldButtonTypeKey];
}
@end
+2 -2
View File
@@ -1467,7 +1467,7 @@ CPTexturedBackgroundWindowMask
- (void)setRepresentedFilename:(CPString)aFilePath
{
// FIXME: urls vs filepaths and all.
[self setRepresentedURL:aFilePath];
[self setRepresentedURL:[CPURL URLWithString:aFilePath]];
}
/*!
@@ -1475,7 +1475,7 @@ CPTexturedBackgroundWindowMask
*/
- (CPString)representedFilename
{
return _representedURL;
return [_representedURL absoluteString];
}
/*!
+7 -18
View File
@@ -309,11 +309,13 @@
// resize the window
var theWindow = [self window],
frame = [theWindow frame];
frame = [theWindow frame],
dy;
var dy = _CGRectGetHeight([_headView frame]) + _CGRectGetHeight([_dividerView frame]);
if (enable)
dy = -dy;
dy = -(_CGRectGetHeight([_headView frame]) + _CGRectGetHeight([_dividerView frame]));
else
dy = [self toolbarMaxY] + 1.0;
var newHeight = _CGRectGetMaxY(frame) + dy,
newWidth = _CGRectGetMaxX(frame);
@@ -321,9 +323,11 @@
frame.size.height += dy;
[self setFrameSize:_CGSizeMake(newWidth, newHeight)];
[self tile];
[theWindow setFrame:frame display:NO animate:NO];
[self setNeedsLayout];
}
- (void)layoutSubviews
@@ -335,22 +339,7 @@
[_minimizeButton setImage:[self valueForThemeAttribute:@"minimize-image-button"]];
[_minimizeButton setAlternateImage:[self valueForThemeAttribute:@"minimize-image-highlighted-button"]];
if (![_headView isHidden])
[_headView setFrame:CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), [self toolbarMaxY])];
else
[_headView setFrame:CGRectMake(0.0, 0.0, CGRectGetWidth(bounds), 0)];
if (![_dividerView isHidden])
[_dividerView setFrame:CGRectMake(0.0, CGRectGetMaxY([_headView frame]), CGRectGetWidth(bounds), 1.0)];
else
[_dividerView setFrame:CGRectMake(0.0, CGRectGetMaxY([_headView frame]), CGRectGetWidth(bounds), 0.0)];
[_dividerView setBackgroundColor:[self valueForThemeAttribute:@"divider-color"]];
var y = CGRectGetMaxY([_dividerView frame]);
[_bodyView setFrame:CGRectMake(0.0, y, CGRectGetWidth(bounds), CGRectGetHeight(bounds) - y)];
[_bodyView setBackgroundColor:[self valueForThemeAttribute:@"body-color"]];
[_headView setNeedsLayout];
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

+35 -1
View File
@@ -1174,6 +1174,32 @@ var themedButtonValues = nil,
return token;
}
+ (_CPTokenFieldTokenDisclosureButton)themedTokenFieldDisclosureButton
{
var button = [[_CPTokenFieldTokenDisclosureButton alloc] initWithFrame:CGRectMake(0, 0, 9, 9)],
arrowImage = PatternColor("token-disclosure.png", 7.0, 6.0),
arrowImageHiglighted = PatternColor("token-disclosure-highlighted.png", 7.0, 6.0),
themeValues =
[
[@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal],
[@"bezel-color", nil, CPThemeStateBordered],
[@"bezel-color", arrowImage, CPThemeStateBordered | CPThemeStateHovered],
[@"bezel-color", arrowImageHiglighted, CPThemeStateBordered | CPThemeStateHovered | CPThemeStateHighlighted],
[@"min-size", CGSizeMake(7.0, 6.0)],
[@"max-size", CGSizeMake(7.0, 6.0)],
[@"offset", CGPointMake(17, 7)]
];
[self registerThemeValues:themeValues forView:button];
return button;
}
+ (_CPTokenFieldTokenCloseButton)themedTokenFieldTokenCloseButton
{
var button = [[_CPTokenFieldTokenCloseButton alloc] initWithFrame:CGRectMake(0, 0, 9, 9)],
@@ -2414,6 +2440,14 @@ var themedButtonValues = nil,
[@"window-standard-bottom-right.png", 2.0, 2.0]
]),
dividerColor = PatternColor(
"window-standard-divider{position}.png",
{
width: 1.0,
height: 1.0,
orientation: PatternIsHorizontal
}),
closeButtonImage = PatternImage(@"window-standard-close-button.png", 16, 16),
closeButtonImageHighlighted = PatternImage(@"window-standard-button-highlighted.png",16, 16),
unsavedButtonImage = PatternImage(@"window-standard-button-unsaved.png",16, 16),
@@ -2441,7 +2475,7 @@ var themedButtonValues = nil,
[@"title-vertical-alignment", CPCenterVerticalTextAlignment],
[@"title-bar-height", 31],
[@"divider-color", [CPColor colorWithHexString:@"979797"]],
[@"divider-color", dividerColor],
[@"body-color", bezelColor],
[@"title-bar-height", 31],
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 545 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 992 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

+49 -13
View File
@@ -269,7 +269,7 @@ var themedButtonValues = nil,
{
var button = [[CPPopUpButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 25.0) pullsDown:YES],
color = PatternColor(
"popup-bezel{state}{position}.png",
"pulldown-bezel{state}{position}.png",
{
states: ["", "disabled"],
width: 3.0,
@@ -709,7 +709,7 @@ var themedButtonValues = nil,
[@"text-color", textDisabledColor, CPThemeStateDisabled],
[@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBezeled],
[@"content-inset", CGInsetMake(1.0, 24.0, 2.0, 16.0), CPThemeStateBezeled],
[@"content-inset", CGInsetMake(1.0, 20.0, 2.0, 20.0), CPThemeStateBezeled],
// Minimum height == maximum height since tokens are fixed height.
[@"min-size", CGSizeMake(0.0, 19.0)],
@@ -723,6 +723,32 @@ var themedButtonValues = nil,
return token;
}
+ (_CPTokenFieldTokenDisclosureButton)themedTokenFieldDisclosureButton
{
var button = [[_CPTokenFieldTokenDisclosureButton alloc] initWithFrame:CGRectMake(0, 0, 9, 9)],
arrowImage = PatternColor("token-disclosure.png", 7.0, 6.0),
arrowImageHiglighted = PatternColor("token-disclosure-highlighted.png", 7.0, 6.0),
themeValues =
[
[@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal],
[@"bezel-color", nil, CPThemeStateBordered],
[@"bezel-color", arrowImage, CPThemeStateBordered | CPThemeStateHovered],
[@"bezel-color", arrowImageHiglighted, CPThemeStateBordered | CPThemeStateHovered | CPThemeStateHighlighted],
[@"min-size", CGSizeMake(7.0, 6.0)],
[@"max-size", CGSizeMake(7.0, 6.0)],
[@"offset", CGPointMake(16, 7)]
];
[self registerThemeValues:themeValues forView:button];
return button;
}
+ (_CPTokenFieldTokenCloseButton)themedTokenFieldTokenCloseButton
{
var button = [[_CPTokenFieldTokenCloseButton alloc] initWithFrame:CGRectMake(0, 0, 9, 9)],
@@ -732,16 +758,17 @@ var themedButtonValues = nil,
themeValues =
[
[@"bezel-color", bezelColor, CPThemeStateBordered],
[@"bezel-color", bezelHighlightedColor, CPThemeStateBordered | CPThemeStateHighlighted],
[@"bezel-color", bezelColor, CPThemeStateBordered | CPThemeStateHovered],
[@"bezel-color", [bezelColor colorWithAlphaComponent:0], CPThemeStateBordered | CPThemeStateDisabled],
[@"bezel-color", bezelHighlightedColor, CPThemeStateBordered | CPThemeStateHighlighted],
[@"min-size", CGSizeMake(8.0, 8.0)],
[@"max-size", CGSizeMake(8.0, 8.0)],
[@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered],
[@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered | CPThemeStateHighlighted],
[@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered],
[@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBordered | CPThemeStateHighlighted],
[@"offset", CGPointMake(17, 6), CPThemeStateBordered]
[@"offset", CGPointMake(16, 6), CPThemeStateBordered]
];
[self registerThemeValues:themeValues forView:button];
@@ -1523,7 +1550,7 @@ var themedButtonValues = nil,
+ (CPProgressIndicator)themedBarProgressIndicator
{
var progressBar = [[CPProgressIndicator alloc] initWithFrame:CGRectMake(0,0,75,25)];
var progressBar = [[CPProgressIndicator alloc] initWithFrame:CGRectMake(0, 0, 75, 25)];
[progressBar setDoubleValue:30];
var bezelColor = PatternColor(
@@ -1555,7 +1582,7 @@ var themedButtonValues = nil,
+ (CPProgressIndicator)themedIndeterminateBarProgressIndicator
{
var progressBar = [[CPProgressIndicator alloc] initWithFrame:CGRectMake(0,0,75,25)];
var progressBar = [[CPProgressIndicator alloc] initWithFrame:CGRectMake(0, 0, 75, 25)];
[progressBar setIndeterminate:YES];
@@ -1589,7 +1616,7 @@ var themedButtonValues = nil,
+ (CPProgressIndicator)themedSpinningProgressIndicator
{
var progressBar = [[CPProgressIndicator alloc] initWithFrame:CGRectMake(0,0,64,64)];
var progressBar = [[CPProgressIndicator alloc] initWithFrame:CGRectMake(0, 0, 64, 64)];
[progressBar setStyle:CPProgressIndicatorSpinningStyle];
var spinningMini = PatternColor(@"progress-indicator-spinning-style-mini.gif", 16.0, 16.0),
@@ -1631,7 +1658,7 @@ var themedButtonValues = nil,
+ (CPLevelIndicator)themedLevelIndicator
{
var levelIndicator = [[CPLevelIndicator alloc] initWithFrame:CGRectMake(0,0,100,100)],
var levelIndicator = [[CPLevelIndicator alloc] initWithFrame:CGRectMake(0, 0, 100, 100)],
bezelColor = PatternColor(
"level-indicator-bezel{position}.png",
@@ -1842,7 +1869,16 @@ var themedButtonValues = nil,
{
positions: "full",
width: 5.0,
height: 1.0
height: 1.0,
bottomHeight:5.0
}),
dividerColor = PatternColor(
"window-standard-divider{position}.png",
{
width: 1.0,
height: 1.0,
orientation: PatternIsHorizontal
}),
closeButtonImage = PatternImage(@"window-standard-close-button.png", 16, 16),
@@ -1877,7 +1913,7 @@ var themedButtonValues = nil,
[@"title-vertical-alignment", CPCenterVerticalTextAlignment],
[@"title-bar-height", 31],
[@"divider-color", [CPColor colorWithHexString:@"858585"]],
[@"divider-color", dividerColor],
[@"body-color", bezelColor],
[@"title-bar-height", 31],
+8 -3
View File
@@ -115,8 +115,13 @@ var _CPAutocompleteMenuMaximumHeight = 307;
- (void)setIndexOfSelectedItem:(int)anIndex
{
[tableView selectRowIndexes:[CPIndexSet indexSetWithIndex:anIndex] byExtendingSelection:NO];
[tableView scrollRowToVisible:anIndex];
if (anIndex == CPNotFound)
[tableView selectRowIndexes:[CPIndexSet indexSet] byExtendingSelection:NO];
else
{
[tableView selectRowIndexes:[CPIndexSet indexSetWithIndex:anIndex] byExtendingSelection:NO];
[tableView scrollRowToVisible:anIndex];
}
}
- (int)indexOfSelectedItem
@@ -198,7 +203,7 @@ var _CPAutocompleteMenuMaximumHeight = 307;
[self setIndexOfSelectedItem:indexOfSelectedItem];
[textField setThemeState:CPThemeStateAutocompleting];
[_menuWindow orderFront:self];
[[textField window] addChildWindow:_menuWindow ordered:CPWindowAbove];
[self layoutSubviews];
}
+15 -3
View File
@@ -23,6 +23,7 @@
@import <Foundation/CPObject.j>
@import "CPButton.j"
@import "CPMenu.j"
@import "CPPanel.j"
// Use forward declaration because this file is imported by CPPopover
@@ -189,7 +190,8 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0,
originRight = _CGPointCreateCopy(platformOrigin),
originTop = _CGPointCreateCopy(platformOrigin),
originBottom = _CGPointCreateCopy(platformOrigin),
frameSize = [self frame].size;
frameSize = [self frame].size,
menuBarHeight = [CPMenu menuBarVisible] ? [CPMenu menuBarHeight] : 0;
// CPMaxXEdge
originRight.x += platformRect.size.width;
@@ -215,12 +217,15 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0,
case CPMaxXEdge:
requestedOrigin = originRight;
break;
case CPMinXEdge:
requestedOrigin = originLeft;
break;
case CPMinYEdge:
requestedOrigin = originTop;
break;
case CPMaxYEdge:
requestedOrigin = originBottom;
break;
@@ -252,8 +257,8 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0,
if (origin.y < 0)
{
[_windowView setArrowOffsetY:origin.y];
origin.y = 0;
[_windowView setArrowOffsetY:origin.y - menuBarHeight];
origin.y = menuBarHeight;
}
if (origin.y + frameSize.height > nativeRect.size.height)
@@ -456,6 +461,13 @@ var _CPPopoverWindow_shouldClose_ = 1 << 0,
{
#if PLATFORM(DOM)
_DOMElement.removeEventListener(CPBrowserStyleProperty('transitionend'), transitionCompleteFunction, YES);
// Make sure to clear these properties when the animation is done. Without this,
// the window becomes blurry in Chrome, presumably because the browser composits
// a layer with a transform differently even when it's an identity transform.
[self setCSS3Property:@"Transform" value:nil];
[self setCSS3Property:@"TransformOrigin" value:nil];
[self setCSS3Property:@"Transition" value:nil];
#endif
if (_implementedDelegateMethods & _CPPopoverWindow_didShow_)
[_delegate popoverWindowDidShow:self];
+2 -2
View File
@@ -528,7 +528,7 @@
Raises an exception.
CPArray objects are not observable, so this method raises an exception when invoked on an CPArray object.
Instead of observing a array, observe the ordered to-many relationship for which the array is the collection of related objects.
Instead of observing an array, observe the ordered to-many relationship for which the array is the collection of related objects.
*/
- (void)addObserver:(id)anObserver forKeyPath:(CPString)aKeyPath options:(CPKeyValueObservingOptions)anOptions context:(id)aContext
{
@@ -539,7 +539,7 @@
Raises an exception.
CPArray objects are not observable, so this method raises an exception when invoked on an CPArray object.
Instead of observing a array, observe the ordered to-many relationship for which the array is the collection of related objects.
Instead of observing an array, observe the ordered to-many relationship for which the array is the collection of related objects.
*/
- (void)removeObserver:(id)anObserver forKeyPath:(CPString)aKeyPath
{
+23
View File
@@ -120,6 +120,29 @@ var concat = Array.prototype.concat,
return self[anIndex];
}
- (CPArray)objectsAtIndexes:(CPIndexSet)indexes
{
if ([indexes lastIndex] >= self.length)
[CPException raise:CPRangeException reason:_cmd + " indexes out of bounds"];
var ranges = indexes._ranges,
count = ranges.length,
result = [],
i = 0;
for (; i < count; i++)
{
var range = ranges[i],
loc = range.location,
len = range.length,
subArray = self.slice(loc, loc + len);
result.splice.apply(result, [result.length, 0].concat(subArray));
}
return result;
}
- (CPUInteger)indexOfObject:(id)anObject inRange:(CPRange)aRange
{
// Only use isEqual: if our object is a CPObject.
+7 -2
View File
@@ -190,13 +190,18 @@
if (self === anObject)
return YES;
if (self.isa !== anObject.isa || _value !== [anObject evaluateObject:nil])
if (self.isa !== anObject.isa || _value !== [anObject evaluateWithObject:nil])
return NO;
return YES;
}
- (BOOL)evaluateObject:(id)object
- (BOOL)evaluateWithObject:(id)object
{
return _value;
}
- (BOOL)evaluateWithObject:(id)object substitutionVariables:(CPDictionary)variables
{
return _value;
}
+19
View File
@@ -1,6 +1,7 @@
@import <AppKit/CPWindow.j>
@import <AppKit/_CPBorderlessWindowView.j>
@import <Foundation/CPURL.j>
[CPApplication sharedApplication];
@@ -109,4 +110,22 @@
message:@"nextTextField should be the previous valid key view of contentView"];
}
- (void)testRepresentedFilename
{
/*
representedURL and representedFilename
are drawn from the _representedURL variable.
*/
var aURL = @"http://www.cappuccino-project.org";
[[self window] setRepresentedURL:[CPURL URLWithString:aURL]];
[self assertTrue:[[[self window] representedURL] class] === [CPURL class]];
/*
Test for Issue 1633
Make sure that changing it via setRepresentedFilename doesn't change the type
*/
[[self window] setRepresentedFilename:aURL];
[self assertTrue:[[[self window] representedURL] class] === [CPURL class]];
}
@end
+48
View File
@@ -212,6 +212,54 @@ var ELEMENTS = 100,
}
}
- (void)testObjectsAtIndexesSpeed
{
var SIZE = 1000,
c = SIZE,
r = rr = REPEATS = 100,
location = 0,
array = [CPArray array],
indexes = [CPIndexSet indexSet];
while (c--)
array.push(""+c);
while (location < SIZE - 10)
{
var rangeLength = ROUND(10 * RAND());
[indexes addIndexesInRange:CPMakeRange(location, rangeLength)];
location += rangeLength + ROUND(10 * RAND());
}
var d = new Date(),
test1,
test2;
while (r--)
test1 = [array _previous_objectsAtIndexes:indexes];
var dd = new Date();
while (rr--)
test2 = [array objectsAtIndexes:indexes];
var ddd = new Date();
CPLog.warn("\n_CPJavaScriptArray -objectsAtIndexes:");
CPLog.warn(" CPArray -objectsAtIndexes: " + (dd - d) + "ms.");
CPLog.warn("_CPJavaScriptArray -objectsAtIndexes: " + (ddd - dd) + "ms.");
if (![test1 isEqual:test2])
[self fail:"_CPJavaScriptArray -objectsAtIndexes: returns an wrong value"];
}
@end
@implementation _CPJavaScriptArray (ObjectsAtIndexes)
- (CPArray)_previous_objectsAtIndexes:(CPIndexSet)indexes
{
return [super objectsAtIndexes:indexes];
}
@end
@implementation CPArray (NativeSort)
+9
View File
@@ -50,6 +50,15 @@
[self assertTrue:expectedReturnValue === returnValue];
}
- (void)testCPDescriptionOfObject
{
var jSON = {"name": "Martin", "access":null},
d = CPDescriptionOfObject(jSON);
[self assertTrue:d.indexOf("name:") !== -1 message:"Can't find 'name:' in description of json " + d];
[self assertTrue:d.indexOf("access:") !== -1 message:"Can't find 'access:' in description of json " + d];
}
@end
@implementation SuperReceiver : CPObject
+17
View File
@@ -450,6 +450,23 @@
[self assertTrue:([filtered count] == 2) message:@"Count should be 2 and is " + [filtered count]];
}
- (void)testTruepredicate
{
var data = [1, 2, 3],
result;
var tpred = [CPPredicate predicateWithFormat:@"TRUEPREDICATE"];
var ctpred = [CPCompoundPredicate andPredicateWithSubpredicates:[tpred]];
// fails if evaluateWithObject: isn't implemented in CPPredicate_BOOL
result = [tpred evaluateWithObject:"gazonk"];
[self assertTrue:result message:"'" + [tpred description] + "' should evaluate to true"];
// fails if evaluateWithObject:substitutionVariables: isn't implemented in CPPredicate_BOOL
result = [data filteredArrayUsingPredicate:ctpred];
[self assertTrue:[result isEqual:data] message:"[1, 2, 3] filtered with '" + [ctpred description] + "' should return [1, 2, 3]"];
}
@end
@implementation CPObject (PredicateTesting)
+2 -2
View File
@@ -18,12 +18,12 @@
@outlet CPScrollView mainScrollView;
}
- (void)awakeFromCib
{
[self makeRedViews];
[[theWindow contentView] setBackgroundColor:[[CPColor greenColor] colorWithAlphaComponent:0.25]];
[documentView setBackgroundColor:[CPColor whiteColor]];
[mainScrollView setDocumentView:documentView];
[theWindow setFullPlatformWindow:YES];
+2
View File
@@ -4,6 +4,8 @@
<dict>
<key>Main cib file base name</key>
<string>MainMenu.cib</string>
<key>CPDefaultTheme</key>
<string>Aristo2</string>
<key>CPBundleName</key>
<string>CPBox</string>
</dict>
@@ -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;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;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;3;142E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;199E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;202E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;3;205E;D;K;6;CP$UIDd;3;206E;D;K;Line truncated
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;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;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;3;170E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;197E;D;K;6;CP$UIDd;3;198E;D;K;6;CP$UIDd;3;200E;D;K;6;CP$UIDd;3;201E;D;K;6;CP$UIDd;3;203E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;204E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;206E;D;Line truncated
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -126,7 +126,7 @@
- (id)browser:(id)aBrowser imageValueForItem:(id)anItem
{
return [[CPImage alloc] initWithContentsOfFile:"http://cappuccino-project.org/images/favicon.png" size:CGSizeMake(16, 16)];
return [[CPImage alloc] initWithContentsOfFile:"http://cappuccino-project.org/img/favicon.ico" size:CGSizeMake(16, 16)];
}
- (id)browser:(id)aBrowser objectValueForItem:(id)anItem
@@ -0,0 +1,264 @@
/*
* AppController.j
* CPCollectionViewNibTest
*
* Created by You on November 28, 2012.
* Copyright 2012, Your Company All rights reserved.
*/
@import <Foundation/CPObject.j>
//@import "CPCollectionView.j"
CPLogRegister(CPLogConsole);
@implementation AppController : CPObject
{
CPWindow theWindow; //this "outlet" is connected automatically by the Cib
@outlet CPCollectionView collectionView @accessors;
@outlet InternalProtoypeItem prototypeItemInternal;
@outlet ExternalProtoypeItem prototypeItemExternal;
@outlet CPTableView tableView;
}
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
{
// This is called when the application is done loading.
}
- (void)awakeFromCib
{
[self willChangeValueForKey:@"minItemWidth"];
[self willChangeValueForKey:@"minItemHeight"];
[collectionView setMinItemSize:CGSizeMake(100, 100)];
[self didChangeValueForKey:@"minItemWidth"];
[self didChangeValueForKey:@"minItemHeight"];
[self willChangeValueForKey:@"maxItemWidth"];
[self willChangeValueForKey:@"maxItemHeight"];
[collectionView setMaxItemSize:CGSizeMake(200, 150)];
[self didChangeValueForKey:@"maxItemWidth"];
[self didChangeValueForKey:@"maxItemHeight"];
[collectionView registerForDraggedTypes:[@"DragType"]];
//[theWindow setFullPlatformWindow:YES];
}
- (IBAction)setPrototypeItem:(id)sender
{
var prototypeItem = [[sender selectedItem] tag] ? prototypeItemExternal : prototypeItemInternal;
[collectionView setItemPrototype:prototypeItem];
}
- (void)setMinItemWidth:(CPInteger)aWidth
{
var size = CGSizeMakeCopy([collectionView minItemSize]);
size.width = aWidth;
[collectionView setMinItemSize:size];
}
- (CPInteger)minItemWidth
{
return [collectionView minItemSize].width;
}
- (void)setMinItemHeight:(CPInteger)aHeight
{
var size = CGSizeMakeCopy([collectionView minItemSize]);
size.height = aHeight;
[collectionView setMinItemSize:size];
}
- (CPInteger)minItemHeight
{
return [collectionView minItemSize].height;
}
- (void)setMaxItemWidth:(CPInteger)aWidth
{
var size = CGSizeMakeCopy([collectionView maxItemSize]);
size.width = aWidth;
[collectionView setMaxItemSize:size];
}
- (CPInteger)maxItemWidth
{
return [collectionView maxItemSize].width;
}
- (void)setMaxItemHeight:(CPInteger)aHeight
{
var size = CGSizeMakeCopy([collectionView maxItemSize]);
size.height = aHeight;
[collectionView setMaxItemSize:size];
}
- (CPInteger)maxItemHeight
{
return [collectionView maxItemSize].height;
}
/*
DELEGATE METHODS
*/
- (CPData)collectionView:(CPCollectionView)aCollectionView dataForItemsAtIndexes:(CPIndexSet)indices forType:(CPString)aType
{
return indices;
}
- (CPView)collectionView:(CPCollectionView)aCollectionView draggingViewForItemsAtIndexes:(CPIndexSet)indexes withEvent:(CPEvent)event offset:(CGPoint)dragImageOffset
{
return [aCollectionView draggingViewForItemsAtIndexes:indexes withEvent:event offset:dragImageOffset];
}
- (CPArray)collectionView:(CPCollectionView)aCollectionView dragTypesForItemsAtIndexes:(CPIndexSet)indices
{
return [@"DragType"];
}
- (BOOL)collectionView:(CPCollectionView)aCollectionView canDragItemsAtIndexes:(CPIndexSet)indexes withEvent:(CPEvent)anEvent
{
return YES;
}
/*
- (BOOL)collectionView:(CPCollectionView)aCollectionView writeItemsAtIndexes:(CPIndexSet)indexes toPasteboard:(CPPasteboard)pboard
{
return YES;
}
*/
- (CPDragOperation)collectionView:(CPCollectionView)aCollectionView validateDrop:(id)draggingInfo proposedIndex:(Function)proposedIndexRef dropOperation:(CPInteger)collectionViewDropOperation
{
var pboard = [draggingInfo draggingPasteboard],
dragIndex = [[pboard dataForType:@"DragType"] firstIndex],
proposedIndex = proposedIndexRef();
if (proposedIndex == dragIndex || proposedIndex == dragIndex + 1)
return CPDragOperationNone;
return CPDragOperationMove;
}
- (BOOL)collectionView:(CPCollectionView)aCollectionView acceptDrop:(id)draggingInfo index:(CPInteger)proposedIndex dropOperation:(CPInteger)collectionViewDropOperation
{
var pboard = [draggingInfo draggingPasteboard],
dragIndexes = [pboard dataForType:@"DragType"];
[[aCollectionView content] moveIndexes:dragIndexes toIndex:proposedIndex];
[aCollectionView reloadContent];
[tableView reloadData];
return YES;
}
@end
@implementation InternalProtoypeItem: CPCollectionViewItem
{
@outlet CPTextField textField;
}
- (id)initWithCoder:(CPCoder)aCoder
{
self = [super initWithCoder:aCoder];
textField = [aCoder decodeObjectForKey:@"TextField"];
return self;
}
- (void)encodeWithCoder:(CPCoder)aCoder
{
[super encodeWithCoder:aCoder];
[aCoder encodeConditionalObject:textField forKey:@"TextField"];
}
- (void)setRepresentedObject:(id)anObject
{
[super setRepresentedObject:anObject];
[textField setStringValue:[anObject objectForKey:@"value"]];
[[self view] setColor:[anObject objectForKey:@"color"]];
}
@end
@implementation ExternalProtoypeItem: CPCollectionViewItem
{
}
- (void)setRepresentedObject:(id)anObject
{
[super setRepresentedObject:anObject];
[[self view] setColor:[anObject objectForKey:@"color"]];
}
@end
var keyCode = 0;
@implementation ArrayController : CPArrayController
{
}
- (void)newObject
{
return [CPDictionary dictionaryWithObjectsAndKeys:(String.fromCharCode(65 + keyCode++)), @"value", [CPColor randomColor], @"color"];
}
@end
@implementation ColorView : CPView
{
CPColor color @accessors;
}
- (void)setColor:(CPColor)aColor
{
color = aColor;
[self setNeedsDisplay:YES];
}
- (void)drawRect:(CGRect)aRect
{
if (!color)
color = [CPColor grayColor];
var context = [[CPGraphicsContext currentContext] graphicsPort];
CGContextSetFillColor(context, color);
CGContextFillRect(context, aRect);
}
@end
@implementation CPArray (MoveIndexes)
- (void)moveIndexes:(CPIndexSet)indexes toIndex:(int)insertIndex
{
var aboveCount = 0,
object,
removeIndex;
var index = [indexes lastIndex];
while (index != CPNotFound)
{
if (index >= insertIndex)
{
removeIndex = index + aboveCount;
aboveCount ++;
}
else
{
removeIndex = index;
insertIndex --;
}
object = [self objectAtIndex:removeIndex];
[self removeObjectAtIndex:removeIndex];
[self insertObject:object atIndex:insertIndex];
index = [indexes indexLessThanIndex:index];
}
}
@end
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Main cib file base name</key>
<string>MainMenu.cib</string>
<key>CPBundleName</key>
<string>CPCollectionViewNibTest</string>
</dict>
</plist>
@@ -0,0 +1,94 @@
/*
* Jakefile
* CPCollectionViewNibTest
*
* Created by You on November 28, 2012.
* Copyright 2012, Your Company All rights reserved.
*/
var ENV = require("system").env,
FILE = require("file"),
JAKE = require("jake"),
task = JAKE.task,
FileList = JAKE.FileList,
app = require("cappuccino/jake").app,
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug",
OS = require("os");
app ("CPCollectionViewNibTest", function(task)
{
task.setBuildIntermediatesPath(FILE.join("Build", "CPCollectionViewNibTest.build", configuration));
task.setBuildPath(FILE.join("Build", configuration));
task.setProductName("CPCollectionViewNibTest");
task.setIdentifier("com.yourcompany.CPCollectionViewNibTest");
task.setVersion("1.0");
task.setAuthor("Your Company");
task.setEmail("feedback @nospam@ yourcompany.com");
task.setSummary("CPCollectionViewNibTest");
task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**")));
task.setResources(new FileList("Resources/**"));
task.setIndexFilePath("index.html");
task.setInfoPlistPath("Info.plist");
task.setNib2CibFlags("-R Resources/");
if (configuration === "Debug")
task.setCompilerFlags("-DDEBUG -g");
else
task.setCompilerFlags("-O");
});
task ("default", ["CPCollectionViewNibTest"], function()
{
printResults(configuration);
});
task ("build", ["default"]);
task ("debug", function()
{
ENV["CONFIGURATION"] = "Debug";
JAKE.subjake(["."], "build", ENV);
});
task ("release", function()
{
ENV["CONFIGURATION"] = "Release";
JAKE.subjake(["."], "build", ENV);
});
task ("run", ["debug"], function()
{
OS.system(["open", FILE.join("Build", "Debug", "CPCollectionViewNibTest", "index.html")]);
});
task ("run-release", ["release"], function()
{
OS.system(["open", FILE.join("Build", "Release", "CPCollectionViewNibTest", "index.html")]);
});
task ("deploy", ["release"], function()
{
FILE.mkdirs(FILE.join("Build", "Deployment", "CPCollectionViewNibTest"));
OS.system(["press", "-f", FILE.join("Build", "Release", "CPCollectionViewNibTest"), FILE.join("Build", "Deployment", "CPCollectionViewNibTest")]);
printResults("Deployment")
});
task ("desktop", ["release"], function()
{
FILE.mkdirs(FILE.join("Build", "Desktop", "CPCollectionViewNibTest"));
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPCollectionViewNibTest"), FILE.join("Build", "Desktop", "CPCollectionViewNibTest", "CPCollectionViewNibTest.app"));
printResults("Desktop")
});
task ("run-desktop", ["desktop"], function()
{
OS.system([FILE.join("Build", "Desktop", "CPCollectionViewNibTest", "CPCollectionViewNibTest.app", "Contents", "MacOS", "NativeHost"), "-i"]);
});
function printResults(configuration)
{
print("----------------------------");
print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPCollectionViewNibTest"));
print("----------------------------");
}
@@ -0,0 +1 @@
280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;16E;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;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;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;47E;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;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;62E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;1;0E;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;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;95E;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;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;3;110E;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;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;2;57E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;2;62E;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;Line truncated
File diff suppressed because it is too large. Load diff
@@ -0,0 +1 @@
280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;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;19E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;1;0E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;25E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;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;26E;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;27E;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;21E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;28E;E;D;K;10;$classnameS;21;CPCibBindingConnectorK;8;$classesA;S;21;CPCibBindingConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;25E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;29E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;30E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;31E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;33E;E;D;K;6;$classD;K;6;CP$UIDd;2;16E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;23E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;11E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;34E;K;31;CPCibBindingConnectorBindingKeyD;K;6;CP$UIDd;2;35E;K;31;CPCibBindingConnectorKeyPathKeyD;K;6;CP$UIDd;2;36E;K;31;CPCibBindingConnectorOptionsKeyD;K;6;CP$UIDd;2;37E;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;38E;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;20E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;39E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;40E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;40E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;41E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;42E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;43E;K;28;_CPCibCustomViewClassNameKeyD;K;6;CP$UIDd;2;44E;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;22E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;21E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;39E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;45E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;46E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;21E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;47E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;48E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;49E;K;6;$afontD;K;6;CP$UIDd;2;51E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;52E;K;11;$aalignmentD;K;6;CP$UIDd;2;52E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;53E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;54E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;55E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;53E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;53E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;53E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;57E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;52E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;52E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;21E;K;18;CPResponderMenuLine truncated
@@ -0,0 +1,298 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1070</int>
<string key="IBDocument.SystemVersion">11G63</string>
<string key="IBDocument.InterfaceBuilderVersion">2844</string>
<string key="IBDocument.AppKitVersion">1138.51</string>
<string key="IBDocument.HIToolboxVersion">569.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2844</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSCustomObject</string>
<string>NSCustomView</string>
<string>NSTextField</string>
<string>NSTextFieldCell</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001">
<string key="NSClassName">NSCollectionViewItem</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSCustomView" id="1005">
<reference key="NSNextResponder"/>
<int key="NSvFlags">303</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="167825784">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">311</int>
<string key="NSFrame">{{44, 4}, {82, 13}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="589750618">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">selected !</string>
<object class="NSFont" key="NSSupport" id="792037410">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="167825784"/>
<object class="NSColor" key="NSBackgroundColor" id="48019285">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="581683701">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MSAxIDEAA</bytes>
</object>
</object>
</object>
<object class="NSTextField" id="169792613">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">271</int>
<string key="NSFrame">{{39, 70}, {87, 17}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="667750628"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="791687302">
<int key="NSCellFlags">68157504</int>
<int key="NSCellFlags2">138413056</int>
<string key="NSContents">External</string>
<reference key="NSSupport" ref="792037410"/>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="169792613"/>
<reference key="NSBackgroundColor" ref="48019285"/>
<object class="NSColor" key="NSTextColor" id="132551368">
<int key="NSColorSpace">6</int>
<string key="NSCatalogName">System</string>
<string key="NSColorName">controlTextColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MAA</bytes>
</object>
</object>
</object>
</object>
<object class="NSTextField" id="667750628">
<reference key="NSNextResponder" ref="1005"/>
<int key="NSvFlags">319</int>
<string key="NSFrame">{{48, 27}, {69, 39}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="167825784"/>
<string key="NSReuseIdentifierKey">_NS:1535</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="484930569">
<int key="NSCellFlags">342884417</int>
<int key="NSCellFlags2">138413056</int>
<string key="NSContents">T</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">32</double>
<int key="NSfFlags">16</int>
</object>
<string key="NSCellIdentifier">_NS:1535</string>
<reference key="NSControlView" ref="667750628"/>
<bool key="NSDrawsBackground">YES</bool>
<reference key="NSBackgroundColor" ref="581683701"/>
<reference key="NSTextColor" ref="132551368"/>
</object>
</object>
</array>
<string key="NSFrameSize">{165, 94}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="169792613"/>
<string key="NSClassName">ColorView</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords">
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">view</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="1005"/>
</object>
<int key="connectionID">16</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: representedObject.value</string>
<reference key="source" ref="667750628"/>
<reference key="destination" ref="1001"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="667750628"/>
<reference key="NSDestination" ref="1001"/>
<string key="NSLabel">value: representedObject.value</string>
<string key="NSBinding">value</string>
<string key="NSKeyPath">representedObject.value</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">39</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">hidden: selected</string>
<reference key="source" ref="167825784"/>
<reference key="destination" ref="1001"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="167825784"/>
<reference key="NSDestination" ref="1001"/>
<string key="NSLabel">hidden: selected</string>
<string key="NSBinding">hidden</string>
<string key="NSKeyPath">selected</string>
<dictionary key="NSOptions">
<integer value="0" key="NSNoSelectionPlaceholder"/>
<integer value="0" key="NSNullPlaceholder"/>
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">72</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">1</int>
<reference key="object" ref="1005"/>
<array class="NSMutableArray" key="children">
<reference ref="667750628"/>
<reference ref="169792613"/>
<reference ref="167825784"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">28</int>
<reference key="object" ref="667750628"/>
<array class="NSMutableArray" key="children">
<reference ref="484930569"/>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">29</int>
<reference key="object" ref="484930569"/>
<reference key="parent" ref="667750628"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">32</int>
<reference key="object" ref="169792613"/>
<array class="NSMutableArray" key="children">
<reference ref="791687302"/>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">33</int>
<reference key="object" ref="791687302"/>
<reference key="parent" ref="169792613"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">43</int>
<reference key="object" ref="167825784"/>
<array class="NSMutableArray" key="children">
<reference ref="589750618"/>
</array>
<reference key="parent" ref="1005"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">44</int>
<reference key="object" ref="589750618"/>
<reference key="parent" ref="167825784"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="NO" key="1.IBNSViewMetadataLastInspectedTranslatesAutoresizingMaskIntoConstraints"/>
<boolean value="NO" key="1.IBNSViewMetadataTranslatesAutoresizingMaskIntoConstraints"/>
<string key="1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="28.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="29.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="32.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="33.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="43.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">72</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">ColorView</string>
<string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/ColorView.h</string>
</object>
</object>
</array>
</object>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
</data>
</archive>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

@@ -0,0 +1,107 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!--
index-debug.html
CPCollectionViewNibTest
Created by You on November 28, 2012.
Copyright 2012, Your Company All rights reserved.
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="apple-touch-icon" href="Resources/icon.png" />
<link rel="apple-touch-startup-image" href="Resources/default.png" />
<title>CPCollectionViewNibTest</title>
<script type="text/javascript">
OBJJ_MAIN_FILE = "main.j";
OBJJ_INCLUDE_PATHS = ["Frameworks/Debug", "Frameworks", "SomethingElse"];
</script>
<script type="text/javascript" src="Frameworks/Debug/Objective-J/Objective-J.js" charset="UTF-8"></script>
<script type="text/javascript">
objj_msgSend_reset();
// DEBUG OPTIONS:
// Uncomment to enable printing of backtraces on exceptions:
//objj_msgSend_decorate(objj_backtrace_decorator);
// Uncomment to supress exceptions that take place inside a message
//objj_msgSend_decorate(objj_supress_exceptions_decorator)
// Uncomment to enable runtime type checking:
//objj_msgSend_decorate(objj_typecheck_decorator);
// Uncomment (along with both above) to print backtraces on type check errors:
//objj_typecheck_prints_backtrace = true;
// Uncomment to disable the default logger (CPLogConsole if window.console exists, CPLogPopup otherwise):
//CPLogUnregister(CPLogDefault);
// Uncomment to enable a specific logger:
//CPLogRegister(CPLogConsole);
//CPLogRegister(CPLogPopup);
// Tag view DOM elements with a "data-cappuccino-view" attribute that contains
// the class name of the view that created them. Comment this or set to false to disable.
appkit_tag_dom_elements = true;
</script>
<style type="text/css">
body{margin:0; padding:0;}
#container {position: absolute; top:50%; left:50%;}
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
</style>
<!--[if lt IE 7]>
<STYLE type="text/css">
#container { position: relative; top: 50%; }
#content { position: relative;}
</STYLE>
<![endif]-->
</head>
<body style="">
<div id="cappuccino-body">
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
<script type="text/javascript">
document.write("<div id='container'><p id='content'>" +
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
"Loading CPCollectionViewNibTest...</p></div>");
</script>
<noscript>
<div id="container">
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
</ul>
</div>
</div>
</noscript>
</div>
</div>
</body>
</html>
@@ -0,0 +1,77 @@
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<!--
index.html
CPCollectionViewNibTest
Created by You on November 28, 2012.
Copyright 2012, Your Company All rights reserved.
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="apple-touch-icon" href="Resources/icon.png" />
<link rel="apple-touch-startup-image" href="Resources/default.png" />
<title>CPCollectionViewNibTest</title>
<script type="text/javascript">
OBJJ_MAIN_FILE = "main.j";
</script>
<script type="text/javascript" src="Frameworks/Objective-J/Objective-J.js" charset="UTF-8"></script>
<style type="text/css">
body{margin:0; padding:0;}
#container {position: absolute; top:50%; left:50%;}
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
</style>
<!--[if lt IE 7]>
<STYLE type="text/css">
#container { position: relative; top: 50%; }
#content { position: relative;}
</STYLE>
<![endif]-->
</head>
<body style="">
<div id="cappuccino-body">
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
<script type="text/javascript">
document.write("<div id='container'><p id='content'>" +
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
"Loading CPCollectionViewNibTest...</p></div>");
</script>
<noscript>
<div id="container">
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
</ul>
</div>
</div>
</noscript>
</div>
</div>
</body>
</html>
@@ -0,0 +1,18 @@
/*
* AppController.j
* CPCollectionViewNibTest
*
* Created by You on November 28, 2012.
* Copyright 2012, Your Company All rights reserved.
*/
@import <Foundation/Foundation.j>
@import <AppKit/AppKit.j>
@import "AppController.j"
function main(args, namedArgs)
{
CPApplicationMain(args, namedArgs);
}
@@ -1,7 +1,7 @@
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;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;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;43E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;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;45E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;68E;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;83E;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;84E;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;76E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;85E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;86E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;50E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;87E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;45E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;88E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;89E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;76E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$Line truncated
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;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;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;51E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;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;78E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;1;0E;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;2;89E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;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;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;76E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;76E;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;97E;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;98E;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;87E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;99E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;87E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;57E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;3;100E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;87E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;58E;K;23;_CPCibConnectorLabelKLine truncated
KeyPath: arrangedObjects.selectionIndex
ContentValues Transformer: TransformerD;K;6;$classD;K;6;CP$UIDd;3;167E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;297E;E;S;22;{{851, 31}, {192, 25}}S;19;{{0, 0}, {192, 25}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;160E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;266E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;240E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;164E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;203E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;164E;E;d;2;-1S;22;{{423, 203}, {35, 25}}S;18;{{0, 0}, {35, 25}}d;2;36S;6;buttonS;17;selected+borderedd;1;1D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;247E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;298E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;299E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;300E;E;S;15;Gradient Buttond;2;14S;22;{{389, 203}, {35, 25}}D;K;6;$classD;K;6;CP$UIDd;3;247E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;298E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;301E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;302E;E;S;23;{{851, 106}, {192, 25}}S;23;{{851, 183}, {192, 25}}S;22;{{551, 94}, {279, 51}}S;70;Binding: CPSelectedTagBinding
ContentValues Transformer: TransformerD;K;6;$classD;K;6;CP$UIDd;3;189E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;326E;E;S;22;{{853, 31}, {192, 25}}S;19;{{0, 0}, {192, 25}}S;12;popup-buttonS;8;borderedD;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;295E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;262E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;186E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;225E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;186E;E;d;2;-1S;22;{{423, 203}, {35, 25}}S;18;{{0, 0}, {35, 25}}d;2;36S;6;buttonS;17;selected+borderedd;1;1D;K;10;$classnameS;20;_CPCibCustomResourceK;8;$classesA;S;20;_CPCibCustomResourceS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;269E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;327E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;328E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;329E;E;S;15;Gradient Buttond;2;14S;22;{{389, 203}, {35, 25}}D;K;6;$classD;K;6;CP$UIDd;3;269E;K;32;_CPCibCustomResourceClassNameKeyD;K;6;CP$UIDd;3;327E;K;35;_CPCibCustomResourceResourceNameKeyD;K;6;CP$UIDd;3;330E;K;33;_CPCibCustomResourcePropertiesKeyD;K;6;CP$UIDd;3;331E;E;S;23;{{853, 106}, {192, 25}}S;23;{{853, 183}, {192, 25}}S;22;{{554, 93}, {279, 51}}S;70;Binding: CPSelectedTagBinding
KeyPath: selection.tag
Transformer: NoneS;23;{{551, 162}, {279, 51}}S;73;Binding: CPSelectedValueBinding
Transformer: NoneS;23;{{554, 161}, {279, 51}}S;73;Binding: CPSelectedValueBinding
KeyPath: selection.name
Transformer: NoneS;13;AppControllerS;12;CPDictionaryS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;TransformerS;28;_CPFontSystemFacePlaceholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;58E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;167E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;303E;E;S;21;{{0, 189}, {461, 17}}S;19;{{0, 0}, {461, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;65E;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;304E;D;K;6;CP$UIDd;3;304E;D;K;6;CP$UIDd;3;304E;D;K;6;CP$UIDd;3;246E;E;E;S;22;{{467, 183}, {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;306E;E;E;S;12;columnHeaderD;K;6;$classD;K;6;CP$UIDd;3;160E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;307E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;308E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;203E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;203E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;203E;E;S;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;282E;K;4;nameD;K;6;CP$UIDd;3;309E;K;12;defaultValueD;K;6;CP$UIDd;3;161E;K;6;valuesD;K;6;CP$UIDd;3;310E;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;284E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;311E;E;S;8;compare:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;312E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;282E;K;4;nameD;K;6;CP$UIDd;3;309E;K;12;defaultValueD;K;6;CP$UIDd;3;161E;K;6;valuesD;K;6;CP$UIDd;3;313E;E;D;K;6;$classD;K;6;CP$UIDd;3;284E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;314E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;282E;K;4;nameD;K;6;CP$UIDd;3;309E;K;12;defaultValueD;K;6;CP$UIDd;3;161E;K;6;valuesD;K;6;CP$UIDd;3;315E;E;D;K;6;$classD;K;6;CP$UIDd;3;284E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;316E;E;E;S;3;TagD;K;6;$classD;K;6;CP$UIDd;3;282E;K;4;nameD;K;6;CP$UIDd;3;309E;K;12;defaultValueD;K;6;CP$UIDd;3;161E;K;6;valuesD;K;6;CP$UIDd;3;317E;E;D;K;6;$classD;K;6;CP$UIDd;3;284E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;311E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;318E;D;K;6;CP$UIDd;3;318E;D;K;6;CP$UIDd;3;318E;D;K;6;CP$UIDd;3;246E;E;E;S;7;CPImageS;13;CPAddTemplateD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;319E;E;E;S;16;CPRemoveTemplateD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;320E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;D;K;6;CP$UIDd;3;246E;E;E;f;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;305E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;211E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;273E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;273E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;211E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;321E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;154E;E;S;13;Lucida Granded;2;11S;4;fontD;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;322E;K;6;normalD;K;6;CP$UIDd;3;323E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;305E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;218E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;273E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;273E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;218E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;321E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;322E;K;6;normalD;K;6;CP$UIDd;3;323E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;305E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;222E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;273E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;273E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;222E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;321E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;154E;E;D;K;6;$classD;K;6;CP$UIDd;2;98E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;322E;K;6;normalD;K;6;CP$UIDd;3;323E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;305E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;226E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;273E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;273E;K;18;CPVLine truncated
Transformer: NoneS;22;{{853, 62}, {192, 25}}S;19;bordered+pulls-downS;23;{{853, 137}, {192, 25}}S;23;{{853, 214}, {192, 25}}S;13;AppControllerS;12;CPDictionaryS;10;OtherViewsD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;S;11;TransformerS;28;_CPFontSystemFacePlaceholderD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;268E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;66E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;189E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;3;332E;E;S;21;{{0, 189}, {461, 17}}S;19;{{0, 0}, {461, 17}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;73E;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;333E;D;K;6;CP$UIDd;3;333E;D;K;6;CP$UIDd;3;333E;D;K;6;CP$UIDd;3;268E;E;E;S;20;{{467, 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;335E;E;E;S;12;columnHeaderD;K;6;$classD;K;6;CP$UIDd;3;182E;K;13;CPFontNameKeyD;K;6;CP$UIDd;3;336E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;3;337E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;3;225E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;3;225E;K;17;CPFontIsSystemKeyD;K;6;CP$UIDd;3;225E;E;S;11;placeholderD;K;10;$classnameS;17;_CPThemeAttributeK;8;$classesA;S;17;_CPThemeAttributeS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;3;311E;K;4;nameD;K;6;CP$UIDd;3;338E;K;12;defaultValueD;K;6;CP$UIDd;3;183E;K;6;valuesD;K;6;CP$UIDd;3;339E;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;313E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;340E;E;S;8;compare:D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;341E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;311E;K;4;nameD;K;6;CP$UIDd;3;338E;K;12;defaultValueD;K;6;CP$UIDd;3;183E;K;6;valuesD;K;6;CP$UIDd;3;342E;E;D;K;6;$classD;K;6;CP$UIDd;3;313E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;340E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;343E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;311E;K;4;nameD;K;6;CP$UIDd;3;338E;K;12;defaultValueD;K;6;CP$UIDd;3;183E;K;6;valuesD;K;6;CP$UIDd;3;344E;E;D;K;6;$classD;K;6;CP$UIDd;3;313E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;340E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;345E;E;E;S;3;TagD;K;6;$classD;K;6;CP$UIDd;3;311E;K;4;nameD;K;6;CP$UIDd;3;338E;K;12;defaultValueD;K;6;CP$UIDd;3;183E;K;6;valuesD;K;6;CP$UIDd;3;346E;E;D;K;6;$classD;K;6;CP$UIDd;3;313E;K;15;CPValueValueKeyD;K;6;CP$UIDd;3;340E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;347E;D;K;6;CP$UIDd;3;347E;D;K;6;CP$UIDd;3;347E;D;K;6;CP$UIDd;3;268E;E;E;S;7;CPImageS;13;CPAddTemplateD;K;6;$classD;K;6;CP$UIDd;3;112E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;348E;E;E;S;16;CPRemoveTemplateD;K;6;$classD;K;6;CP$UIDd;3;112E;K;10;CP.objectsD;K;4;sizeD;K;6;CP$UIDd;3;349E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;268E;D;K;6;CP$UIDd;3;268E;E;E;f;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;334E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;233E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;302E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;302E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;233E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;350E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;225E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;176E;E;S;13;Lucida Granded;2;11S;4;fontD;K;6;$classD;K;6;CP$UIDd;3;112E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;351E;K;6;normalD;K;6;CP$UIDd;3;352E;E;E;S;39;{"top":0,"right":5,"bottom":0,"left":5}D;K;6;$classD;K;6;CP$UIDd;3;334E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;240E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;302E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;302E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;240E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;350E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;225E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;3;176E;E;D;K;6;$classD;K;6;CP$UIDd;3;112E;K;10;CP.objectsD;K;21;selectedTableDataViewD;K;6;CP$UIDd;3;351E;K;6;normalD;K;6;CP$UIDd;3;352E;E;E;D;K;6;$classD;K;6;CP$UIDd;3;334E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;3;244E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;3;302E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;3;302E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;3;244E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;3;350E;K;17;CPViewHitTestsKeyD;K;6;CP$UIDd;3;225E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;KLine truncated
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1070</int>
<string key="IBDocument.SystemVersion">11E53</string>
<string key="IBDocument.InterfaceBuilderVersion">2541</string>
<string key="IBDocument.AppKitVersion">1138.47</string>
<string key="IBDocument.HIToolboxVersion">569.00</string>
<int key="IBDocument.SystemTarget">1080</int>
<string key="IBDocument.SystemVersion">12C60</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.34</string>
<string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2541</string>
<string key="NS.object.0">3084</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSArrayController</string>
@@ -72,8 +72,10 @@
<string key="NSFrameSize">{461, 189}</string>
<reference key="NSSuperview" ref="553243621"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="440695772"/>
<reference key="NSNextKeyView" ref="255563368"/>
<bool key="NSEnabled">YES</bool>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<bool key="NSControlAllowsExpansionToolTips">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="1047672327">
<reference key="NSNextResponder" ref="255563368"/>
<int key="NSvFlags">256</int>
@@ -84,11 +86,9 @@
<reference key="NSTableView" ref="923425026"/>
</object>
<object class="_NSCornerView" key="NSCornerView" id="658621637">
<reference key="NSNextResponder" ref="21141462"/>
<nil key="NSNextResponder"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{467, 0}, {16, 17}}</string>
<reference key="NSSuperview" ref="21141462"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="553243621"/>
</object>
<array class="NSMutableArray" key="NSTableColumns">
@@ -98,7 +98,7 @@
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Name</string>
<object class="NSFont" key="NSSupport" id="26">
@@ -121,7 +121,7 @@
</object>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="341330413">
<int key="NSCellFlags">337772096</int>
<int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<object class="NSFont" key="NSSupport" id="286828715">
@@ -162,7 +162,7 @@
<double key="NSMinWidth">40</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Email</string>
<reference key="NSSupport" ref="26"/>
@@ -170,7 +170,7 @@
<reference key="NSTextColor" ref="941123393"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="675321479">
<int key="NSCellFlags">337772096</int>
<int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="286828715"/>
@@ -189,7 +189,7 @@
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Job</string>
<reference key="NSSupport" ref="26"/>
@@ -205,7 +205,7 @@
<reference key="NSTextColor" ref="941123393"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="259554294">
<int key="NSCellFlags">337772096</int>
<int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="286828715"/>
@@ -223,7 +223,7 @@
<double key="NSMinWidth">10</double>
<double key="NSMaxWidth">3.4028234663852886e+38</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags">75497536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Tag</string>
<reference key="NSSupport" ref="26"/>
@@ -231,7 +231,7 @@
<reference key="NSTextColor" ref="941123393"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="514501649">
<int key="NSCellFlags">337772096</int>
<int key="NSCellFlags">337641536</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="286828715"/>
@@ -284,6 +284,7 @@
<reference key="NSSuperview" ref="21141462"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="276571813"/>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="21141462"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.93827160493827155</double>
@@ -295,6 +296,7 @@
<reference key="NSSuperview" ref="21141462"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="963909245"/>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="21141462"/>
<string key="NSAction">_doScroller:</string>
@@ -314,19 +316,20 @@
<reference key="NSBGColor" ref="110612647"/>
<int key="NScvFlags">4</int>
</object>
<reference ref="658621637"/>
</array>
<string key="NSFrame">{{-1, 168}, {461, 206}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="255563368"/>
<reference key="NSNextKeyView" ref="553243621"/>
<int key="NSsFlags">133680</int>
<reference key="NSVScroller" ref="440695772"/>
<reference key="NSHScroller" ref="276571813"/>
<reference key="NSContentView" ref="553243621"/>
<reference key="NSHeaderClipView" ref="255563368"/>
<reference key="NSCornerView" ref="658621637"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
<double key="NSMinMagnification">0.25</double>
<double key="NSMaxMagnification">4</double>
<double key="NSMagnification">1</double>
</object>
<object class="NSTextField" id="139268363">
<reference key="NSNextResponder" ref="439893737"/>
@@ -337,7 +340,7 @@
<reference key="NSNextKeyView" ref="265667800"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="544809989">
<int key="NSCellFlags">-1804468671</int>
<int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="286828715"/>
@@ -357,6 +360,7 @@
<reference key="NSColor" ref="171316758"/>
</object>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="265667800">
<reference key="NSNextResponder" ref="439893737"/>
@@ -367,7 +371,7 @@
<reference key="NSNextKeyView" ref="234045077"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="80116128">
<int key="NSCellFlags">-1804468671</int>
<int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="286828715"/>
@@ -377,6 +381,7 @@
<reference key="NSBackgroundColor" ref="94501946"/>
<reference key="NSTextColor" ref="973282227"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="234045077">
<reference key="NSNextResponder" ref="439893737"/>
@@ -384,10 +389,9 @@
<string key="NSFrame">{{20, 20}, {440, 22}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="183099492">
<int key="NSCellFlags">-1804468671</int>
<int key="NSCellFlags">-1804599231</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="286828715"/>
@@ -397,6 +401,7 @@
<reference key="NSBackgroundColor" ref="94501946"/>
<reference key="NSTextColor" ref="973282227"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="980787201">
<reference key="NSNextResponder" ref="439893737"/>
@@ -407,11 +412,11 @@
<reference key="NSNextKeyView" ref="207231359"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="616150971">
<int key="NSCellFlags">-2076049856</int>
<int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="286828715"/>
<reference key="NSControlView" ref="980787201"/>
<int key="NSButtonFlags">109199615</int>
<int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
@@ -430,6 +435,7 @@
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="227504618">
<reference key="NSNextResponder" ref="439893737"/>
@@ -441,7 +447,7 @@
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="696901424">
<int key="NSCellFlags">-2076049856</int>
<int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="286828715"/>
<string key="NSCellIdentifier">_NS:9</string>
@@ -465,6 +471,7 @@
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="167479266">
<reference key="NSNextResponder" ref="439893737"/>
@@ -476,7 +483,7 @@
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="320811235">
<int key="NSCellFlags">-2076049856</int>
<int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="286828715"/>
<string key="NSCellIdentifier">_NS:9</string>
@@ -500,6 +507,7 @@
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="963909245">
<reference key="NSNextResponder" ref="439893737"/>
@@ -526,6 +534,7 @@ ZWN0aW9uSW5kZXgKQ29udGVudFZhbHVlcyBUcmFuc2Zvcm1lcjogVHJhbnNmb3JtZXI</string>
</object>
<reference key="NSTextColor" ref="244375399"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="261655068">
<reference key="NSNextResponder" ref="439893737"/>
@@ -554,6 +563,7 @@ ZWN0aW9uSW5kZXgKQ29udGVudFZhbHVlcyBUcmFuc2Zvcm1lcjogVHJhbnNmb3JtZXI</string>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSButton" id="233523132">
<reference key="NSNextResponder" ref="439893737"/>
@@ -582,6 +592,7 @@ ZWN0aW9uSW5kZXgKQ29udGVudFZhbHVlcyBUcmFuc2Zvcm1lcjogVHJhbnNmb3JtZXI</string>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="207231359">
<reference key="NSNextResponder" ref="439893737"/>
@@ -603,6 +614,7 @@ cm1lcjogTm9uZQ</string>
<reference key="NSBackgroundColor" ref="960857922"/>
<reference key="NSTextColor" ref="244375399"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSTextField" id="723938739">
<reference key="NSNextResponder" ref="439893737"/>
@@ -624,6 +636,113 @@ c2Zvcm1lcjogTm9uZQ</string>
<reference key="NSBackgroundColor" ref="960857922"/>
<reference key="NSTextColor" ref="244375399"/>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="236389337">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">265</int>
<string key="NSFrame">{{851, 284}, {197, 26}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="436779994">
<int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="286828715"/>
<reference key="NSControlView" ref="236389337"/>
<int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
<nil key="NSMenuItem"/>
<bool key="NSMenuItemRespectAlignment">YES</bool>
<object class="NSMenu" key="NSMenu" id="721202863">
<string key="NSTitle">OtherViews</string>
<array class="NSMutableArray" key="NSMenuItems"/>
<reference key="NSMenuFont" ref="286828715"/>
</object>
<int key="NSSelectedIndex">-1</int>
<bool key="NSPullDown">YES</bool>
<int key="NSPreferredEdge">1</int>
<bool key="NSUsesItemFromMenu">YES</bool>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="61795147">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">265</int>
<string key="NSFrame">{{851, 209}, {197, 26}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="307019822">
<int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="286828715"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="61795147"/>
<int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
<nil key="NSMenuItem"/>
<bool key="NSMenuItemRespectAlignment">YES</bool>
<object class="NSMenu" key="NSMenu" id="1047253413">
<string key="NSTitle">OtherViews</string>
<array class="NSMutableArray" key="NSMenuItems"/>
<reference key="NSMenuFont" ref="286828715"/>
</object>
<int key="NSSelectedIndex">-1</int>
<bool key="NSPullDown">YES</bool>
<int key="NSPreferredEdge">1</int>
<bool key="NSUsesItemFromMenu">YES</bool>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
<object class="NSPopUpButton" id="94601708">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">265</int>
<string key="NSFrame">{{851, 132}, {197, 26}}</string>
<reference key="NSSuperview" ref="439893737"/>
<reference key="NSWindow"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="337377179">
<int key="NSCellFlags">-2076180416</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="286828715"/>
<string key="NSCellIdentifier">_NS:9</string>
<reference key="NSControlView" ref="94601708"/>
<int key="NSButtonFlags">109199360</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
<nil key="NSMenuItem"/>
<bool key="NSMenuItemRespectAlignment">YES</bool>
<object class="NSMenu" key="NSMenu" id="923610304">
<string key="NSTitle">OtherViews</string>
<array class="NSMutableArray" key="NSMenuItems"/>
<reference key="NSMenuFont" ref="286828715"/>
</object>
<int key="NSSelectedIndex">-1</int>
<bool key="NSPullDown">YES</bool>
<int key="NSPreferredEdge">1</int>
<bool key="NSUsesItemFromMenu">YES</bool>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
</object>
</array>
<string key="NSFrameSize">{1074, 373}</string>
@@ -1016,6 +1135,155 @@ c2Zvcm1lcjogTm9uZQ</string>
</object>
<int key="connectionID">634</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">content: arrangedObjects</string>
<reference key="source" ref="236389337"/>
<reference key="destination" ref="78391650"/>
<object class="NSNibBindingConnector" key="connector" id="891220335">
<reference key="NSSource" ref="236389337"/>
<reference key="NSDestination" ref="78391650"/>
<string key="NSLabel">content: arrangedObjects</string>
<string key="NSBinding">content</string>
<string key="NSKeyPath">arrangedObjects</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">638</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">contentValues: arrangedObjects.name</string>
<reference key="source" ref="236389337"/>
<reference key="destination" ref="78391650"/>
<object class="NSNibBindingConnector" key="connector" id="1067519583">
<reference key="NSSource" ref="236389337"/>
<reference key="NSDestination" ref="78391650"/>
<string key="NSLabel">contentValues: arrangedObjects.name</string>
<string key="NSBinding">contentValues</string>
<string key="NSKeyPath">arrangedObjects.name</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValueTransformerName</string>
<string key="NS.object.0">Transformer</string>
</object>
<reference key="NSPreviousConnector" ref="891220335"/>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">639</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">selectedIndex: selectionIndex</string>
<reference key="source" ref="236389337"/>
<reference key="destination" ref="78391650"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="236389337"/>
<reference key="NSDestination" ref="78391650"/>
<string key="NSLabel">selectedIndex: selectionIndex</string>
<string key="NSBinding">selectedIndex</string>
<string key="NSKeyPath">selectionIndex</string>
<reference key="NSPreviousConnector" ref="1067519583"/>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">640</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">contentValues: arrangedObjects.job</string>
<reference key="source" ref="61795147"/>
<reference key="destination" ref="78391650"/>
<object class="NSNibBindingConnector" key="connector" id="704173633">
<reference key="NSSource" ref="61795147"/>
<reference key="NSDestination" ref="78391650"/>
<string key="NSLabel">contentValues: arrangedObjects.job</string>
<string key="NSBinding">contentValues</string>
<string key="NSKeyPath">arrangedObjects.job</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">644</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">selectedTag: selection.tag</string>
<reference key="source" ref="61795147"/>
<reference key="destination" ref="78391650"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="61795147"/>
<reference key="NSDestination" ref="78391650"/>
<string key="NSLabel">selectedTag: selection.tag</string>
<string key="NSBinding">selectedTag</string>
<string key="NSKeyPath">selection.tag</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSValidatesImmediately</string>
<boolean value="YES" key="NS.object.0"/>
</object>
<reference key="NSPreviousConnector" ref="704173633"/>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">645</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">content: arrangedObjects</string>
<reference key="source" ref="94601708"/>
<reference key="destination" ref="78391650"/>
<object class="NSNibBindingConnector" key="connector" id="961993347">
<reference key="NSSource" ref="94601708"/>
<reference key="NSDestination" ref="78391650"/>
<string key="NSLabel">content: arrangedObjects</string>
<string key="NSBinding">content</string>
<string key="NSKeyPath">arrangedObjects</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSInsertsNullPlaceholder</string>
<boolean value="YES" key="NS.object.0"/>
</object>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">649</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">contentValues: arrangedObjects.name</string>
<reference key="source" ref="94601708"/>
<reference key="destination" ref="78391650"/>
<object class="NSNibBindingConnector" key="connector" id="530167100">
<reference key="NSSource" ref="94601708"/>
<reference key="NSDestination" ref="78391650"/>
<string key="NSLabel">contentValues: arrangedObjects.name</string>
<string key="NSBinding">contentValues</string>
<string key="NSKeyPath">arrangedObjects.name</string>
<object class="NSDictionary" key="NSOptions">
<string key="NS.key.0">NSInsertsNullPlaceholder</string>
<boolean value="YES" key="NS.object.0"/>
</object>
<reference key="NSPreviousConnector" ref="961993347"/>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">650</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">selectedValue: selection.name</string>
<reference key="source" ref="94601708"/>
<reference key="destination" ref="78391650"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="94601708"/>
<reference key="NSDestination" ref="78391650"/>
<string key="NSLabel">selectedValue: selection.name</string>
<string key="NSBinding">selectedValue</string>
<string key="NSKeyPath">selection.name</string>
<reference key="NSPreviousConnector" ref="530167100"/>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">651</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
@@ -1067,6 +1335,9 @@ c2Zvcm1lcjogTm9uZQ</string>
<reference ref="167479266"/>
<reference ref="207231359"/>
<reference ref="723938739"/>
<reference ref="236389337"/>
<reference ref="61795147"/>
<reference ref="94601708"/>
</array>
<reference key="parent" ref="972006081"/>
</object>
@@ -1339,6 +1610,69 @@ c2Zvcm1lcjogTm9uZQ</string>
<reference key="object" ref="911120301"/>
<reference key="parent" ref="723938739"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">635</int>
<reference key="object" ref="236389337"/>
<array class="NSMutableArray" key="children">
<reference ref="436779994"/>
</array>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">636</int>
<reference key="object" ref="436779994"/>
<array class="NSMutableArray" key="children">
<reference ref="721202863"/>
</array>
<reference key="parent" ref="236389337"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">637</int>
<reference key="object" ref="721202863"/>
<reference key="parent" ref="436779994"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">641</int>
<reference key="object" ref="61795147"/>
<array class="NSMutableArray" key="children">
<reference ref="307019822"/>
</array>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">642</int>
<reference key="object" ref="307019822"/>
<array class="NSMutableArray" key="children">
<reference ref="1047253413"/>
</array>
<reference key="parent" ref="61795147"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">643</int>
<reference key="object" ref="1047253413"/>
<reference key="parent" ref="307019822"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">646</int>
<reference key="object" ref="94601708"/>
<array class="NSMutableArray" key="children">
<reference ref="337377179"/>
</array>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">647</int>
<reference key="object" ref="337377179"/>
<array class="NSMutableArray" key="children">
<reference ref="923610304"/>
</array>
<reference key="parent" ref="94601708"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">648</int>
<reference key="object" ref="923610304"/>
<reference key="parent" ref="337377179"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -1389,12 +1723,21 @@ c2Zvcm1lcjogTm9uZQ</string>
<string key="627.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="628.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="629.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="635.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="636.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="637.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="641.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="642.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="643.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="646.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="647.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="648.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">634</int>
<int key="maxID">651</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -55,7 +55,7 @@
[textField setBezeled:YES];
[textField setCenter:CGPointMake([contentView center].x, [contentView center].y + 40.0)];
[textField setValue:CPCenterTextAlignment forThemeAttribute:@"alignment"];
[textField bind:@"value" toObject:popUpButton withKeyPath:@"selectedTag" options:nil];
[textField bind:CPValueBinding toObject:popUpButton withKeyPath:@"selectedItem.tag" options:nil];
[contentView addSubview:textField];
var button = [CPButton buttonWithTitle:@"Remove Items"],
@@ -67,13 +67,13 @@
[button setAction:@selector(removeItems:)];
[contentView addSubview:button];
[popUpButton bind:@"selectedTag" toObject:textField withKeyPath:@"value" options:nil]
[popUpButton2 bind:@"selectedTag" toObject:popUpButton withKeyPath:@"selectedTag" options:nil];
[popUpButton bind:CPSelectedTagBinding toObject:textField withKeyPath:@"value" options:nil]
[popUpButton2 bind:CPSelectedTagBinding toObject:popUpButton withKeyPath:@"selectedItem.tag" options:nil];
// Change the selected tag of the second popup doesn't reverse set it,
// see the discussion for pull request 1018 for more details about the problem.
// https://github.com/280north/cappuccino/pull/1018
[popUpButton2 _setSelectedTag:2];
[popUpButton2 selectItemWithTag:2];
[theWindow orderFront:self];
}
@@ -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;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;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;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;10E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;74E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;12E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;75E;E;D;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;38E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;76E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;73E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;77E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;42E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;78E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;79E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;80E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;38E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;61E;K;23;_CPCiLine truncated
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;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;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;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;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;1;0E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;75E;D;K;6;CP$UIDd;2;77E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;79E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;82E;D;K;6;CP$UIDd;2;83E;D;K;6;CP$UIDd;2;84E;D;K;6;CP$UIDd;2;85E;D;K;6;CP$UIDd;2;86E;D;K;6;CP$UIDd;2;87E;D;K;6;CP$UIDd;2;88E;D;K;6;CP$UIDd;2;89E;D;K;6;CP$UIDd;2;90E;D;K;6;CP$UIDd;2;91E;D;K;6;CP$UIDd;2;92E;D;K;6;CP$UIDd;2;93E;D;K;6;CP$UIDd;2;94E;D;K;6;CP$UIDd;2;95E;D;K;6;CP$UIDd;2;96E;D;K;6;CP$UIDd;2;97E;D;K;6;CP$UIDd;2;98E;D;K;6;CP$UIDd;2;99E;D;K;6;CP$UIDd;3;100E;D;K;6;CP$UIDd;3;101E;D;K;6;CP$UIDd;3;102E;D;K;6;CP$UIDd;3;103E;D;K;6;CP$UIDd;3;104E;D;K;6;CP$UIDd;3;105E;D;K;6;CP$UIDd;3;106E;D;K;6;CP$UIDd;3;107E;D;K;6;CP$UIDd;3;108E;D;K;6;CP$UIDd;3;109E;D;K;6;CP$UIDd;3;110E;D;K;6;CP$UIDd;3;111E;D;K;6;CP$UIDd;3;112E;D;K;6;CP$UIDd;3;113E;D;K;6;CP$UIDd;3;114E;D;K;6;CP$UIDd;3;115E;D;K;6;CP$UIDd;3;116E;D;K;6;CP$UIDd;3;117E;D;K;6;CP$UIDd;3;118E;D;K;6;CP$UIDd;3;119E;D;K;6;CP$UIDd;3;120E;D;K;6;CP$UIDd;3;121E;D;K;6;CP$UIDd;3;122E;D;K;6;CP$UIDd;3;123E;D;K;6;CP$UIDd;3;124E;D;K;6;CP$UIDd;3;125E;D;K;6;CP$UIDd;3;126E;D;K;6;CP$UIDd;3;127E;D;K;6;CP$UIDd;3;128E;D;K;6;CP$UIDd;3;129E;D;K;6;CP$UIDd;3;130E;D;K;6;CP$UIDd;3;131E;D;K;6;CP$UIDd;3;132E;D;K;6;CP$UIDd;3;133E;D;K;6;CP$UIDd;3;134E;D;K;6;CP$UIDd;3;135E;D;K;6;CP$UIDd;3;136E;D;K;6;CP$UIDd;3;137E;D;K;6;CP$UIDd;3;138E;D;K;6;CP$UIDd;3;139E;D;K;6;CP$UIDd;3;140E;D;K;6;CP$UIDd;3;141E;D;K;6;CP$UIDd;3;142E;D;K;6;CP$UIDd;3;143E;D;K;6;CP$UIDd;3;144E;D;K;6;CP$UIDd;3;145E;D;K;6;CP$UIDd;3;146E;D;K;6;CP$UIDd;3;147E;D;K;6;CP$UIDd;3;148E;D;K;6;CP$UIDd;3;149E;D;K;6;CP$UIDd;3;150E;D;K;6;CP$UIDd;3;151E;D;K;6;CP$UIDd;3;152E;D;K;6;CP$UIDd;3;153E;D;K;6;CP$UIDd;3;154E;D;K;6;CP$UIDd;3;155E;D;K;6;CP$UIDd;3;156E;D;K;6;CP$UIDd;3;157E;D;K;6;CP$UIDd;3;158E;D;K;6;CP$UIDd;3;159E;D;K;6;CP$UIDd;3;160E;D;K;6;CP$UIDd;3;161E;D;K;6;CP$UIDd;3;162E;D;K;6;CP$UIDd;3;163E;D;K;6;CP$UIDd;3;164E;D;K;6;CP$UIDd;3;165E;D;K;6;CP$UIDd;3;166E;D;K;6;CP$UIDd;3;167E;D;K;6;CP$UIDd;3;168E;D;K;6;CP$UIDd;3;169E;D;K;6;CP$UIDd;3;170E;D;K;6;CP$UIDd;3;171E;D;K;6;CP$UIDd;3;172E;D;K;6;CP$UIDd;3;173E;D;K;6;CP$UIDd;3;174E;D;K;6;CP$UIDd;3;175E;D;K;6;CP$UIDd;3;176E;D;K;6;CP$UIDd;3;177E;D;K;6;CP$UIDd;3;178E;D;K;6;CP$UIDd;3;179E;D;K;6;CP$UIDd;3;180E;D;K;6;CP$UIDd;3;181E;D;K;6;CP$UIDd;3;182E;D;K;6;CP$UIDd;3;183E;D;K;6;CP$UIDd;3;184E;D;K;6;CP$UIDd;3;185E;D;K;6;CP$UIDd;3;186E;D;K;6;CP$UIDd;3;187E;D;K;6;CP$UIDd;3;188E;D;K;6;CP$UIDd;3;189E;D;K;6;CP$UIDd;3;190E;D;K;6;CP$UIDd;3;191E;D;K;6;CP$UIDd;3;192E;D;K;6;CP$UIDd;3;193E;D;K;6;CP$UIDd;3;194E;D;K;6;CP$UIDd;3;195E;D;K;6;CP$UIDd;3;196E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objeLine truncated
File diff suppressed because it is too large. Load diff
+57 -1
View File
@@ -88,10 +88,23 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad
[tokenFieldD setDelegate:self];
var tokenFieldDEditable = [CPCheckBox checkBoxWithTitle:"Editable"];
[tokenFieldDEditable setFrame:CGRectMake(525, CGRectGetMinY([tokenFieldD frame]), 200, 30)];
[tokenFieldDEditable sizeToFit];
[tokenFieldDEditable setFrameOrigin:CGPointMake(525, 5 + CGRectGetMinY([tokenFieldD frame]))];
[tokenFieldDEditable bind:CPValueBinding toObject:tokenFieldD withKeyPath:@"editable" options:nil];
[contentView addSubview:tokenFieldDEditable];
var tokenFieldDMenus = [CPCheckBox checkBoxWithTitle:"Menus"];
[tokenFieldDMenus sizeToFit];
[tokenFieldDMenus setFrameOrigin:CGPointMake(CGRectGetMaxX([tokenFieldDEditable frame]) + 5, 5 + CGRectGetMinY([tokenFieldD frame]))];
[tokenFieldDMenus bind:CPValueBinding toObject:self withKeyPath:@"tokenFieldDHasMenus" options:nil];
[contentView addSubview:tokenFieldDMenus];
var tokenFieldDClose = [CPCheckBox checkBoxWithTitle:"Close Buttons"];
[tokenFieldDClose sizeToFit];
[tokenFieldDClose setFrameOrigin:CGPointMake(CGRectGetMaxX([tokenFieldDMenus frame]) + 5, 5 + CGRectGetMinY([tokenFieldD frame]))];
[tokenFieldDClose bind:CPValueBinding toObject:self withKeyPath:@"tokenFieldDHasCloseButtons" options:nil];
[contentView addSubview:tokenFieldDClose];
allPersons = [
[Person personWithFirstName:@"Luc" lastName:@"Vauvillier"],
[Person personWithFirstName:@"John" lastName:@"Doe"],
@@ -113,6 +126,37 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad
}
- (void)setTokenFieldDHasMenus:(BOOL)shouldHaveMenus
{
if (shouldHaveMenus)
{
[[tokenFieldD objectValue] enumerateObjectsUsingBlock:function(aPerson)
{
var menu = [CPMenu new];
for (var i = 0; i < 3; i++)
[menu addItem:[[CPMenuItem alloc] initWithTitle:[CPString stringWithFormat:@"%@ Item %i", aPerson, i] action:nil keyEquivalent:nil]];
aPerson.menu = menu;
}];
}
else
[[tokenFieldD objectValue] makeObjectsPerformSelector:@selector(setMenu:) withObject:nil];
}
- (BOOL)tokenFieldDHasMenus
{
return !![[[tokenFieldD objectValue] firstObject] menu];
}
- (void)setTokenFieldDHasCloseButtons:(BOOL)shouldHaveCloseButtons
{
[tokenFieldD setButtonType:shouldHaveCloseButtons ? CPTokenFieldDeleteButtonType : CPTokenFieldDisclosureButtonType];
}
- (BOOL)tokenFieldDHasCloseButtons
{
return !![tokenFieldD buttonType] === CPTokenFieldDeleteButtonType;
}
- (void)getObjectValues:(id)sender
{
alert([tokenFieldD objectValue]);
@@ -177,6 +221,16 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad
return tokens;
}
- (BOOL)tokenField:(CPTokenField)aTokenField hasMenuForRepresentedObject:(id)aRepresentedObject
{
return !!aRepresentedObject.menu;
}
- (CPMenu)tokenField:(CPTokenField)aTokenField menuForRepresentedObject:(id)aRepresentedObject
{
return aRepresentedObject.menu;
}
@end
// A sample of a custom Object
@@ -185,6 +239,8 @@ var STATES = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorad
{
CPString _firstName;
CPString _lastName;
CPMenu menu @accessors;
}
+ (id)personWithFirstName:(CPString)aFirstName lastName:(CPString)aLastName
+2
View File
@@ -4,6 +4,8 @@
<dict>
<key>CPApplicationDelegateClass</key>
<string>AppController</string>
<key>CPDefaultTheme</key>
<string>Aristo2</string>
<key>CPBundleName</key>
<string>CPTokenFieldTest</string>
<key>CPPrincipalClass</key>
+4
View File
@@ -39,6 +39,7 @@
IBOutlet TNXCodeCapp *xcc;
IBOutlet NSWindow *windowDebug;
IBOutlet NSMenuItem *menuDebug;
IBOutlet NSMenuItem *menuHistory;
IBOutlet TNErrorDataView *dataViewError;
NSImage *_iconActive;
@@ -58,6 +59,7 @@
- (void)registerDefaults;
- (void)growlWithTitle:(NSString *)aTitle message:(NSString *)aMessage;
- (void)openCenteredWindow:(NSWindow *)aWindow;
- (void)_prepareHistoryMenu;
- (IBAction)chooseFolder:(id)aSender;
- (IBAction)openErrors:(id)sender;
@@ -67,6 +69,8 @@
- (IBAction)openHelp:(id)aSender;
- (IBAction)openAbout:(id)aSender;
- (IBAction)updatePreferences:(id)aSender;
- (IBAction)switchProject:(id)aSender;
- (IBAction)clearProjectHistory:(id)aSender;
@end
+61 -4
View File
@@ -93,15 +93,17 @@ float heightForStringDrawing(NSString *myString, NSFont *myFont, float myWidth)
}
[xcc setDelegate:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(XCodeCappConversionDidStart:) name:XCCConversionStartNotification object:xcc];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(XCodeCappConversionDidStop:) name:XCCConversionStopNotification object:xcc];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(XCodeCappPopulateProject:) name:XCCDidPopulateProjectNotification object:xcc];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(XCodeCappListeningDidStart:) name:XCCListeningStartNotification object:xcc];
[helpTextView setTextContainerInset:NSSizeFromCGSize(CGSizeMake(10.0, 10.0))];
[xcc start];
[self _prepareHistoryMenu];
}
/*!
@@ -133,6 +135,7 @@ float heightForStringDrawing(NSString *myString, NSFont *myFont, float myWidth)
[appDefaults setObject:[NSNumber numberWithInt:0] forKey:@"XCCAPIMode"];
[appDefaults setObject:[NSNumber numberWithInt:1] forKey:@"XCCReactMode"];
[appDefaults setObject:[NSNumber numberWithInt:1] forKey:@"XCCReopenLastProject"];
[appDefaults setObject:[[NSArray alloc] init] forKey:@"XCCProjectHistory"];
[defaults registerDefaults:appDefaults];
}
@@ -215,6 +218,33 @@ float heightForStringDrawing(NSString *myString, NSFont *myFont, float myWidth)
clickContext:nil];
}
/*!
Prepare the history menu
*/
- (void)_prepareHistoryMenu
{
NSMenu *menu = [[NSMenu alloc] init];
NSArray *projectHistory = [[NSUserDefaults standardUserDefaults] objectForKey:@"XCCProjectHistory"];
for(int i = 0; i < [projectHistory count]; i++)
{
NSString *itemTitle = [[projectHistory objectAtIndex:i] lastPathComponent];
NSString *projectPath = [[projectHistory objectAtIndex:i] stringByStandardizingPath];
NSString *currentProjectPath = [[[xcc currentProjectURL] path] stringByStandardizingPath];
NSMenuItem *item = [menu addItemWithTitle:itemTitle action:@selector(switchProject:) keyEquivalent:@""];
[item setRepresentedObject:projectPath];
if ([currentProjectPath isEqualToString:projectPath])
[item setAction:nil];
}
[menu addItem:[NSMenuItem separatorItem]];
[menu addItemWithTitle:@"Clear history" action:@selector(clearProjectHistory:) keyEquivalent:@""];
[menuHistory setEnabled:([projectHistory count]) ? YES : NO];
[menuHistory setSubmenu:menu];
}
#pragma mark -
@@ -250,7 +280,19 @@ float heightForStringDrawing(NSString *myString, NSFont *myFont, float myWidth)
if ([openPanel runModal] != NSFileHandlingPanelOKButton)
return;
[xcc listenProjectAtPath:[NSString stringWithFormat:@"%@/", [[[openPanel URLs] objectAtIndex:0] path]]];
NSString *projectPath = [NSString stringWithFormat:@"%@/", [[[openPanel URLs] objectAtIndex:0] path]];
NSMutableArray *projectHistory = [NSMutableArray arrayWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"XCCProjectHistory"]];
if ([projectHistory containsObject:[projectPath stringByStandardizingPath]])
[projectHistory removeObject:[projectPath stringByStandardizingPath]];
[projectHistory insertObject:[projectPath stringByStandardizingPath] atIndex:0];
[[NSUserDefaults standardUserDefaults] setObject:projectHistory forKey:@"XCCProjectHistory"];
[xcc listenProjectAtPath:projectPath];
[self _prepareHistoryMenu];
}
/*!
@@ -268,6 +310,21 @@ float heightForStringDrawing(NSString *myString, NSFont *myFont, float myWidth)
[[NSUserDefaults standardUserDefaults] removeObjectForKey:@"LastOpenedPath"];
}
- (IBAction)switchProject:(id)aSender
{
NSString *newPath = [aSender representedObject];
[self stopListener:aSender];
[xcc listenProjectAtPath:newPath];
[self _prepareHistoryMenu];
}
- (IBAction)clearProjectHistory:(id)aSender
{
[[NSUserDefaults standardUserDefaults] setObject:[NSArray array] forKey:@"XCCProjectHistory"];
[self _prepareHistoryMenu];
}
/*!
Open the xCode support project in xCode
@param aSender the sender of the action
+49 -207
View File
@@ -2,13 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">12D54</string>
<string key="IBDocument.InterfaceBuilderVersion">2844</string>
<string key="IBDocument.SystemVersion">12D61</string>
<string key="IBDocument.InterfaceBuilderVersion">3084</string>
<string key="IBDocument.AppKitVersion">1187.37</string>
<string key="IBDocument.HIToolboxVersion">626.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2844</string>
<string key="NS.object.0">3084</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSButton</string>
@@ -60,7 +60,7 @@
<nil key="NSViewClass"/>
<nil key="NSUserInterfaceItemIdentifier"/>
<object class="NSView" key="NSWindowView" id="524832152">
<nil key="NSNextResponder"/>
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="135374801">
@@ -117,6 +117,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
</object>
</array>
<string key="NSFrameSize">{375, 153}</string>
<reference key="NSSuperview"/>
<reference key="NSNextKeyView" ref="135374801"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
@@ -166,6 +167,24 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
<reference key="NSOnImage" ref="451435966"/>
<reference key="NSMixedImage" ref="521607813"/>
</object>
<object class="NSMenuItem" id="602162139">
<reference key="NSMenu" ref="293792969"/>
<string key="NSTitle">Open Recent</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="451435966"/>
<reference key="NSMixedImage" ref="521607813"/>
</object>
<object class="NSMenuItem" id="109499447">
<reference key="NSMenu" ref="293792969"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="451435966"/>
<reference key="NSMixedImage" ref="521607813"/>
</object>
<object class="NSMenuItem" id="8232279">
<reference key="NSMenu" ref="293792969"/>
<string key="NSTitle">About...</string>
@@ -182,7 +201,7 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
<reference key="NSOnImage" ref="451435966"/>
<reference key="NSMixedImage" ref="521607813"/>
</object>
<object class="NSMenuItem" id="109499447">
<object class="NSMenuItem" id="329844908">
<reference key="NSMenu" ref="293792969"/>
<bool key="NSIsDisabled">YES</bool>
<bool key="NSIsSeparator">YES</bool>
@@ -228,7 +247,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{512, 249}</string>
<reference key="NSSuperview" ref="493529786"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="185808728"/>
<bool key="NSEnabled">YES</bool>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
@@ -313,7 +331,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
</array>
<string key="NSFrame">{{1, 1}, {512, 249}}</string>
<reference key="NSSuperview" ref="351336909"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="578469478"/>
<reference key="NSDocView" ref="578469478"/>
<reference key="NSBGColor" ref="254108606"/>
@@ -324,7 +341,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{413, 17}, {15, 166}}</string>
<reference key="NSSuperview" ref="351336909"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="169310253"/>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<reference key="NSTarget" ref="351336909"/>
@@ -336,7 +352,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 183}, {427, 15}}</string>
<reference key="NSSuperview" ref="351336909"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="437791480"/>
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
<int key="NSsFlags">1</int>
@@ -347,7 +362,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
</array>
<string key="NSFrame">{{-1, 35}, {514, 251}}</string>
<reference key="NSSuperview" ref="166068453"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="493529786"/>
<int key="NSsFlags">133682</int>
<reference key="NSVScroller" ref="185808728"/>
@@ -363,7 +377,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{314, 8}, {85, 19}}</string>
<reference key="NSSuperview" ref="166068453"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="873219284"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="302978101">
@@ -390,8 +403,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
<int key="NSvFlags">289</int>
<string key="NSFrame">{{407, 8}, {85, 19}}</string>
<reference key="NSSuperview" ref="166068453"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="566868790">
<int key="NSCellFlags">-2080374784</int>
@@ -411,7 +422,6 @@ YWppdGFAYXBhcmFqaXRhLmNvbQ</string>
</array>
<string key="NSFrameSize">{512, 285}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="351336909"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
@@ -860,8 +870,6 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4</string>
<int key="NSvFlags">297</int>
<string key="NSFrame">{{182, 19}, {18, 19}}</string>
<reference key="NSSuperview" ref="765897076"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="16212794">
<int key="NSCellFlags">-2080374784</int>
@@ -887,7 +895,6 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4</string>
<int key="NSvFlags">274</int>
<string key="NSFrame">{{7, 9}, {170, 18}}</string>
<reference key="NSSuperview" ref="765897076"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1003500738"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="24981968">
@@ -906,7 +913,6 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4</string>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{7, 30}, {170, 17}}</string>
<reference key="NSSuperview" ref="765897076"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="284994474"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1045170492">
@@ -930,7 +936,6 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4</string>
</array>
<string key="NSFrameSize">{209, 57}</string>
<reference key="NSSuperview"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1060533501"/>
<string key="NSClassName">TNErrorDataView</string>
</object>
@@ -1153,6 +1158,14 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4</string>
</object>
<int key="connectionID">682</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">menuHistory</string>
<reference key="source" ref="138157001"/>
<reference key="destination" ref="602162139"/>
</object>
<int key="connectionID">694</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performClose:</string>
@@ -1427,8 +1440,10 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4</string>
<reference ref="806558167"/>
<reference ref="931008714"/>
<reference ref="1053204856"/>
<reference ref="109499447"/>
<reference ref="8232279"/>
<reference ref="329844908"/>
<reference ref="109499447"/>
<reference ref="602162139"/>
</array>
<reference key="parent" ref="0"/>
</object>
@@ -1844,6 +1859,16 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4</string>
<reference key="object" ref="16212794"/>
<reference key="parent" ref="1003500738"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">691</int>
<reference key="object" ref="329844908"/>
<reference key="parent" ref="293792969"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">692</int>
<reference key="object" ref="602162139"/>
<reference key="parent" ref="293792969"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
@@ -1926,199 +1951,16 @@ d2hhdCB5b3UgYXJlIGRvaW5nLCBsZWF2ZSB0aGlzIG9uICJBdXRvIi4</string>
<string key="680.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="687.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="688.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="691.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="692.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">690</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
<object class="IBPartialClassDescription">
<string key="className">AppController</string>
<string key="superclassName">NSObject</string>
<dictionary class="NSMutableDictionary" key="actions">
<string key="chooseFolder:">id</string>
<string key="clearErrors:">id</string>
<string key="openAbout:">id</string>
<string key="openErrors:">id</string>
<string key="openHelp:">id</string>
<string key="openXCode:">id</string>
<string key="stopListener:">id</string>
<string key="updatePreferences:">id</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="actionInfosByName">
<object class="IBActionInfo" key="chooseFolder:">
<string key="name">chooseFolder:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="clearErrors:">
<string key="name">clearErrors:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openAbout:">
<string key="name">openAbout:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openErrors:">
<string key="name">openErrors:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openHelp:">
<string key="name">openHelp:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="openXCode:">
<string key="name">openXCode:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="stopListener:">
<string key="name">stopListener:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo" key="updatePreferences:">
<string key="name">updatePreferences:</string>
<string key="candidateClassName">id</string>
</object>
</dictionary>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="aboutWindow">NSPanel</string>
<string key="buttonPreferencesAPIMode">NSPopUpButton</string>
<string key="checkBoxPreferencesReactMode">NSButton</string>
<string key="dataViewError">TNErrorDataView</string>
<string key="errorsPanel">NSPanel</string>
<string key="errorsTable">NSTableView</string>
<string key="helpTextView">NSTextView</string>
<string key="helpWindow">NSWindow</string>
<string key="labelVersion">NSTextField</string>
<string key="menuDebug">NSMenuItem</string>
<string key="menuItemOpenXCode">NSMenuItem</string>
<string key="menuItemStartStop">NSMenuItem</string>
<string key="preferencesController">NSUserDefaultsController</string>
<string key="statusMenu">NSMenu</string>
<string key="windowDebug">NSWindow</string>
<string key="xcc">TNXCodeCapp</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="aboutWindow">
<string key="name">aboutWindow</string>
<string key="candidateClassName">NSPanel</string>
</object>
<object class="IBToOneOutletInfo" key="buttonPreferencesAPIMode">
<string key="name">buttonPreferencesAPIMode</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo" key="checkBoxPreferencesReactMode">
<string key="name">checkBoxPreferencesReactMode</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="dataViewError">
<string key="name">dataViewError</string>
<string key="candidateClassName">TNErrorDataView</string>
</object>
<object class="IBToOneOutletInfo" key="errorsPanel">
<string key="name">errorsPanel</string>
<string key="candidateClassName">NSPanel</string>
</object>
<object class="IBToOneOutletInfo" key="errorsTable">
<string key="name">errorsTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo" key="helpTextView">
<string key="name">helpTextView</string>
<string key="candidateClassName">NSTextView</string>
</object>
<object class="IBToOneOutletInfo" key="helpWindow">
<string key="name">helpWindow</string>
<string key="candidateClassName">NSWindow</string>
</object>
<object class="IBToOneOutletInfo" key="labelVersion">
<string key="name">labelVersion</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo" key="menuDebug">
<string key="name">menuDebug</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="menuItemOpenXCode">
<string key="name">menuItemOpenXCode</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="menuItemStartStop">
<string key="name">menuItemStartStop</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo" key="preferencesController">
<string key="name">preferencesController</string>
<string key="candidateClassName">NSUserDefaultsController</string>
</object>
<object class="IBToOneOutletInfo" key="statusMenu">
<string key="name">statusMenu</string>
<string key="candidateClassName">NSMenu</string>
</object>
<object class="IBToOneOutletInfo" key="windowDebug">
<string key="name">windowDebug</string>
<string key="candidateClassName">NSWindow</string>
</object>
<object class="IBToOneOutletInfo" key="xcc">
<string key="name">xcc</string>
<string key="candidateClassName">TNXCodeCapp</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/AppController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">TNErrorDataView</string>
<string key="superclassName">NSView</string>
<object class="NSMutableDictionary" key="actions">
<string key="NS.key.0">openFile:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">openFile:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">openFile:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="buttonOpenFile">NSButton</string>
<string key="fieldFileName">NSTextField</string>
<string key="fieldMessage">NSTextField</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="buttonOpenFile">
<string key="name">buttonOpenFile</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="fieldFileName">
<string key="name">fieldFileName</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo" key="fieldMessage">
<string key="name">fieldMessage</string>
<string key="candidateClassName">NSTextField</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/TNErrorDataView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">TNXCodeCapp</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">./Classes/TNXCodeCapp.h</string>
</object>
</object>
</array>
<int key="maxID">694</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
Binary file not shown.
File diff suppressed because it is too large. Load diff
+9 -9
View File
@@ -52,20 +52,20 @@
[self setFrame:frame];
if (borderColor)
[self setBorderColor:borderColor];
if (_boxType !== CPBoxPrimary && _boxType !== CPBoxSecondary)
{
// Primary and secondary boxes have a fixed look that can't be customised, but for a CPBoxCustom
// all of these parameters can be changed.
if (borderColor)
[self setBorderColor:borderColor];
if (fillColor)
[self setFillColor:fillColor];
if (fillColor)
[self setFillColor:fillColor];
if (cornerRadius)
[self setCornerRadius:cornerRadius];
if (borderWidth)
[self setBorderWidth:borderWidth];
if (contentMargin)
[self setContentViewMargins:contentMargin];
}
_title = [[aCoder decodeObjectForKey:@"NSTitleCell"] objectValue] || @"";
_titlePosition = [aCoder decodeObjectForKey:@"NSTitlePosition"];
+2 -2
View File
@@ -130,8 +130,8 @@ var NSButtonIsBorderedMask = 0x00800000,
// implemented:
case CPRoundedBezelStyle: // Push IB style
positionOffsetOriginY = 6;
positionOffsetOriginX = 4;
positionOffsetSizeWidth = -12;
positionOffsetOriginX = 6;
positionOffsetSizeWidth = -12
fixedHeight = YES;
break;
-3
View File
@@ -45,9 +45,6 @@
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;
}
}
+9 -4
View File
@@ -47,12 +47,17 @@
// Make sure the height is clipped to the max given by the theme
var maxSize = [[[Converter sharedConverter] themes][0] valueForAttributeWithName:@"max-size" forClass:[CPComboBox class]],
size = [self frameSize];
[self setFrameSize:CGSizeMake(size.width, MIN(size.height, maxSize.height))];
size = [self frameSize],
widthOffset = -3;
// Adjust for differences between Cocoa and Cappuccino widget framing.
_frame.origin.x += 1;
if ([[[Converter sharedConverter] themes][0] name] == @"Aristo")
{
_frame.origin.x += 1;
widthOffset = -5;
}
[self setFrameSize:CGSizeMake(size.width + widthOffset, MIN(size.height, maxSize.height))];
}
return self;
+1 -1
View File
@@ -63,7 +63,7 @@
}
// Adjust for differences between Cocoa and Cappuccino widget framing.
frame.origin.x += 4;
frame.origin.x += 6;
if ([[[Converter sharedConverter] themes][0] name] == @"Aristo2")
frame.size.height += 1;
+4 -4
View File
@@ -43,12 +43,12 @@
[self setSliderType:[cell sliderType]];
if ([self sliderType] === CPCircularSlider)
{
var frame = [self frame];
var frame = [self frame];
if ([self sliderType] === CPCircularSlider)
[self setFrameSize:CGSizeMake(frame.size.width + 4.0, frame.size.height + 2.0)];
}
else
[self setFrame:CGRectMake(frame.origin.x + 2, frame.origin.y, frame.size.width - 4, frame.size.height)];
}
return self;
+3
View File
@@ -75,6 +75,9 @@
}
CPLog.debug("NSTextField: title=\"" + [self stringValue] + "\", placeholder=" + ([cell placeholderString] == null ? "<none>" : '"' + [cell placeholderString] + '"') + ", isBordered=" + [self isBordered] + ", isBezeled=" + [self isBezeled] + ", bezelStyle=" + [self bezelStyle]);
if ([self formatter])
CPLog.debug(">> Formatter: " + [[self formatter] description]);
}
return self;