mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-23 08:38:53 +00:00
Merge main: Tests/Manual revival, functional fixes
Merges 71 commits from main. Headline content: the Tests/Manual integration test suite revived and reorganized after long disuse (renames, new applications, updated cibs), restoring a large integration validation surface. Functional fixes include replacing unload-based termination with pagehide (back/forward cache compatibility) and hardening CPTextField's input-element handling. Conflict resolutions (local versions retained): - AppKit/CPTextField.j: main's input-element logic carried, with this branch's preprocessor-removal sweep re-applied on top. Main's conditionals are re-expressed as runtime CPDOMAvailable guards; the _inputElement method-definition gate is retained. - AppKit/Platform/CPPlatform.j: the DOM platform implementation stays inlined under the PLATFORM(DOM) gate. The split layout breaks the legacy build: the include fragment is compiled standalone by the source walk and cannot resolve its superclass. Main's pagehide termination fix is ported into the inlined section; the restored AppKit/Platform/DOM/CPPlatform.j fragment is deleted. Verified: legacy build green through Foundation, AppKit and Tools; Tests/Manual suite passing.
This commit is contained in:
commit
eda11e38ba
929 files changed
+37521
-158131
No files matched your search
@@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [20.x, 21.x, 22.x, 23.x, 24.x]
|
||||
node-version: [24.x]
|
||||
# See supported Node.js release schedule at https://nodejs.org/en/about/releases/
|
||||
|
||||
steps:
|
||||
|
||||
@@ -26,6 +26,8 @@ jobs:
|
||||
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 24.x
|
||||
|
||||
- run: echo "${PWD}/dist/cappuccino/bin" >> $GITHUB_PATH
|
||||
- run: echo "${PWD}/dist/objective-j/bin" >> $GITHUB_PATH
|
||||
|
||||
@@ -26,3 +26,5 @@ node_modules
|
||||
/dist/cappuccino/package.json
|
||||
/dist/cappuccino/lib
|
||||
/dist/cappuccino/bin
|
||||
Tests/Manual/.Frameworks
|
||||
/Tests/Manual/index.html
|
||||
+67
-4
@@ -108,6 +108,26 @@ function CPTextFieldHandleBlur(anEvent, ownerRef)
|
||||
[[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode];
|
||||
}
|
||||
|
||||
function _CPTextFieldDetachInputElement(anElement)
|
||||
{
|
||||
if (!anElement || !anElement.parentNode)
|
||||
return;
|
||||
|
||||
var wasResigning = CPTextFieldInputResigning;
|
||||
CPTextFieldInputResigning = YES;
|
||||
|
||||
try
|
||||
{
|
||||
anElement.parentNode.removeChild(anElement);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
// Bereits durch einen Blur-Handler entfernt – nichts zu tun.
|
||||
}
|
||||
|
||||
CPTextFieldInputResigning = wasResigning;
|
||||
CPTextFieldInputDidBlur = NO;
|
||||
}
|
||||
|
||||
@implementation CPString (CPTextFieldAdditions)
|
||||
|
||||
@@ -661,7 +681,42 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder");
|
||||
|
||||
var element = [self _inputElement];
|
||||
element.value = _stringValue;
|
||||
_DOMElement.appendChild(element);
|
||||
|
||||
if (element.parentNode !== _DOMElement)
|
||||
{
|
||||
var previousOwner = CPTextFieldInputOwner;
|
||||
|
||||
// Otherwise Chrome will fire the blur during appendChild (NotFoundError).
|
||||
_CPTextFieldDetachInputElement(element);
|
||||
|
||||
try
|
||||
{
|
||||
_DOMElement.appendChild(element);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
// Race with the Blur-Handler: retry once and yield silently.
|
||||
_CPTextFieldDetachInputElement(element);
|
||||
|
||||
try
|
||||
{
|
||||
_DOMElement.appendChild(element);
|
||||
}
|
||||
catch (e2)
|
||||
{
|
||||
[self unsetThemeState:CPThemeStateEditing];
|
||||
[self _updatePlaceholderState];
|
||||
[self setNeedsLayout];
|
||||
return NO;
|
||||
}
|
||||
}
|
||||
|
||||
if (previousOwner && previousOwner !== self)
|
||||
{
|
||||
[previousOwner unsetThemeState:CPThemeStateEditing];
|
||||
[previousOwner setNeedsLayout];
|
||||
}
|
||||
}
|
||||
|
||||
CPTextFieldInputIsActive = YES;
|
||||
|
||||
@@ -900,8 +955,7 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder");
|
||||
[self _updatePlaceholderState];
|
||||
[self setNeedsLayout];
|
||||
|
||||
if (!CPDOMAvailable)
|
||||
return;
|
||||
if (!CPDOMAvailable) return;
|
||||
|
||||
var element = [self _inputElement];
|
||||
|
||||
@@ -914,7 +968,16 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder");
|
||||
CPTextFieldBlurHandler();
|
||||
|
||||
if (element.parentNode == _DOMElement)
|
||||
element.parentNode.removeChild(element);
|
||||
{
|
||||
try
|
||||
{
|
||||
element.parentNode.removeChild(element);
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
// Bereits durch den Blur-Handler entfernt.
|
||||
}
|
||||
}
|
||||
|
||||
// Previosly, we unflagged CPTextFieldInputDidBlur and CPTextFieldInputResigning before
|
||||
// the call to removeChild. This resulted in DOM exceptions in Chrome under certain conditions.
|
||||
|
||||
@@ -215,6 +215,8 @@ CPRulerOrientationVertical = 1;
|
||||
CPScrollView _scrollView @accessors(property=scrollView);
|
||||
CPRulerOrientation _orientation @accessors(property=orientation);
|
||||
|
||||
CPView _clientView;
|
||||
|
||||
float _ruleThickness @accessors(property=ruleThickness);
|
||||
float _reservedThicknessForMarkers;
|
||||
CPArray _markers;
|
||||
|
||||
@@ -3298,7 +3298,7 @@ var _CPCopyPlaceholder = '-';
|
||||
var currentFirstResponder = [[CPApp keyWindow] firstResponder];
|
||||
|
||||
// Can we accept richtext? Then this is our preference (fixme: shift key to force plain text paste)
|
||||
if ([currentFirstResponder isRichText])
|
||||
if ([currentFirstResponder respondsToSelector:@selector(isRichText)] && [currentFirstResponder isRichText])
|
||||
{
|
||||
var richtext = nativeClipboard.getData('text/rtf');
|
||||
|
||||
|
||||
+34
-24
@@ -35,17 +35,20 @@
|
||||
@implementation CPTreeNode : CPObject
|
||||
{
|
||||
/*
|
||||
* KVO notifications on childNodes and parentNode are not reliable during
|
||||
* internal structural moves. insertObject:inChildNodesAtIndex: and
|
||||
* replaceObjectInChildNodesAtIndex:withObject: detach a node from its
|
||||
* prior position by mutating _childNodes directly, or through
|
||||
* _removeChildNode:, bypassing the KVC proxy for that step. An observer
|
||||
* of the old parent's childNodes, or of a moved node's parentNode, can
|
||||
* miss the change entirely or see it reported as the wrong kind of
|
||||
* change. This is a deliberate trade against the cost of routing every
|
||||
* internal detach through the proxy. Do not rely on these two
|
||||
* properties for observation during a move; rely only on the state
|
||||
* after the call returns.
|
||||
* KVO notifications on parentNode are never delivered: there is no
|
||||
* setParentNode: for the swizzling machinery to intercept, so there is
|
||||
* no selector to instrument, in any code path.
|
||||
*
|
||||
* KVO notifications on childNodes are reliable for
|
||||
* insertObject:inChildNodesAtIndex:, including same-parent and
|
||||
* cross-parent moves: all detach paths for that method route through
|
||||
* the KVC accessors. replaceObjectInChildNodesAtIndex:withObject:
|
||||
* still detaches a same-parent replacement node by mutating
|
||||
* _childNodes directly, bypassing the KVC proxy for that step; an
|
||||
* observer of that node's former parent's childNodes can miss that
|
||||
* specific removal, or see it reported as the wrong kind of change.
|
||||
* Do not rely on childNodes observation during a same-parent replace;
|
||||
* rely only on the state after the call returns.
|
||||
*/
|
||||
id _representedObject @accessors(readonly, property=representedObject);
|
||||
CPTreeNode _parentNode @accessors(readonly, property=parentNode);
|
||||
@@ -110,9 +113,9 @@
|
||||
}
|
||||
|
||||
/*
|
||||
* Remove a child node directly.
|
||||
* This method bypasses the KVC proxy methods.
|
||||
* Use this method for internal structural changes to prevent KVO overhead.
|
||||
* Remove a child node by delegating to the public KVC accessor.
|
||||
* Use this method for internal structural changes across a parent
|
||||
* boundary, so an observer of this node's childNodes sees the removal.
|
||||
*/
|
||||
- (void)_removeChildNode:(CPTreeNode)aNode
|
||||
{
|
||||
@@ -132,8 +135,7 @@
|
||||
reason:"CPTreeNode parent and child relationship is inconsistent."];
|
||||
}
|
||||
|
||||
aNode._parentNode = nil;
|
||||
[_childNodes removeObjectAtIndex:index];
|
||||
[self removeObjectFromChildNodesAtIndex:index];
|
||||
}
|
||||
|
||||
- (CPIndexPath)indexPath
|
||||
@@ -227,18 +229,17 @@
|
||||
var originalIndex = [_childNodes indexOfObjectIdenticalTo:aTreeNode];
|
||||
|
||||
/*
|
||||
* Bypass KVO for this internal structural adjustment.
|
||||
* Route the detach through the KVC accessor, not direct array
|
||||
* mutation, so an observer of childNodes sees the removal.
|
||||
*/
|
||||
aTreeNode._parentNode = nil;
|
||||
[_childNodes removeObjectAtIndex:originalIndex];
|
||||
[self removeObjectFromChildNodesAtIndex:originalIndex];
|
||||
|
||||
/*
|
||||
* The removal shifts the array elements.
|
||||
* Adjust the target index to maintain the position relative to the original array.
|
||||
* This matches the Cocoa move semantics.
|
||||
* No index adjustment here. anIndex is the target position in
|
||||
* the final array, per the KVC to-many contract. The array
|
||||
* above is already one element short from the removal, so
|
||||
* inserting at anIndex against it lands the node correctly.
|
||||
*/
|
||||
if (originalIndex < anIndex)
|
||||
--anIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -308,6 +309,15 @@
|
||||
aTreeNode._parentNode = nil;
|
||||
[_childNodes removeObjectAtIndex:replacementIndex];
|
||||
|
||||
/*
|
||||
* Unlike insertObject:inChildNodesAtIndex:, anIndex here cannot be
|
||||
* treated as a plain final-array position: replace requires an
|
||||
* existing slot, it cannot append past the end. The removal above
|
||||
* already took a slot out of the array ahead of the target
|
||||
* whenever the replacement's original position was before it.
|
||||
* Shift anIndex down by one in that case, to keep it pointing at
|
||||
* the same physical slot the caller named.
|
||||
*/
|
||||
if (replacementIndex < anIndex)
|
||||
--anIndex;
|
||||
}
|
||||
|
||||
+19
-2
@@ -1476,6 +1476,24 @@ var CPViewHighDPIDrawingEnabled = YES;
|
||||
origin.y *= size.height / frameSize.height;
|
||||
}
|
||||
|
||||
var newScaleSize;
|
||||
|
||||
if (size && size.width !== 0 && size.height !== 0 && frameSize)
|
||||
newScaleSize = CGSizeMake(frameSize.width / size.width, frameSize.height / size.height);
|
||||
else
|
||||
newScaleSize = CGSizeMake(1.0, 1.0);
|
||||
|
||||
// Only update and propagate if the scale factor has actually changed
|
||||
if (!CGSizeEqualToSize(_scaleSize, newScaleSize))
|
||||
{
|
||||
[self willChangeValueForKey:@"scaleSize"];
|
||||
_scaleSize = newScaleSize;
|
||||
_isScaled = (_scaleSize.width !== 1.0 || _scaleSize.height !== 1.0);
|
||||
[self didChangeValueForKey:@"scaleSize"];
|
||||
|
||||
[self _scaleSizeUnitSquareToSize:CGSizeMake(1.0, 1.0)];
|
||||
}
|
||||
|
||||
if (_layer)
|
||||
[_layer _owningViewBoundsChanged];
|
||||
|
||||
@@ -1489,7 +1507,6 @@ var CPViewHighDPIDrawingEnabled = YES;
|
||||
[self _updateTrackingAreasWithRecursion:YES];
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
Notifies subviews that the superview changed size.
|
||||
@param aSize the size of the old superview
|
||||
@@ -2611,7 +2628,7 @@ setBoundsOrigin:
|
||||
*/
|
||||
- (void)_scaleSizeUnitSquareToSize:(CGSize)aSize
|
||||
{
|
||||
_hierarchyScaleSize = CGSizeMakeCopy([_superview _hierarchyScaleSize]);
|
||||
_hierarchyScaleSize = _superview ? CGSizeMakeCopy([_superview _hierarchyScaleSize]) : CGSizeMake(1.0, 1.0);
|
||||
|
||||
if (_isScaled)
|
||||
{
|
||||
|
||||
@@ -109,11 +109,25 @@ var screenNeedsInitialization = NO,
|
||||
return [CPApp _sendDelegateApplicationShouldTerminateMessage];
|
||||
};
|
||||
|
||||
window.onunload = function()
|
||||
var terminateApplication = function()
|
||||
{
|
||||
[self closeAllPlatformWindows];
|
||||
[CPApp terminate:nil];
|
||||
};
|
||||
|
||||
// "unload" is blocked by the permissions policy in current Chrome and prevents the
|
||||
// back/forward cache. "pagehide" fires reliably instead. If event.persisted is true the
|
||||
// page goes into the bfcache and may be restored, so the application must not terminate.
|
||||
if ("onpagehide" in window)
|
||||
{
|
||||
window.addEventListener("pagehide", function(anEvent)
|
||||
{
|
||||
if (!anEvent.persisted)
|
||||
terminateApplication();
|
||||
}, NO);
|
||||
}
|
||||
else
|
||||
window.onunload = terminateApplication;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -79,6 +79,8 @@ var hasEditableTarget = function(aDOMEvent)
|
||||
|
||||
BOOL _ignoreNativeCopyOrCutEvent;
|
||||
BOOL _ignoreNativePastePreparation;
|
||||
|
||||
JSObject _clipboardListeners;
|
||||
}
|
||||
|
||||
- (id)init
|
||||
@@ -134,37 +136,34 @@ var hasEditableTarget = function(aDOMEvent)
|
||||
{
|
||||
if (supportsNativeCopyAndPaste)
|
||||
{
|
||||
_DOMWindow.addEventListener("beforecopy", nativeBeforeClipboardEventCallback, NO);
|
||||
_DOMWindow.addEventListener("beforecut", nativeBeforeClipboardEventCallback, NO);
|
||||
_DOMWindow.addEventListener("beforepaste", nativeBeforeClipboardEventCallback, NO);
|
||||
_DOMWindow.addEventListener("copy", nativeCopyOrCutEventCallback, NO);
|
||||
_DOMWindow.addEventListener("cut", nativeCopyOrCutEventCallback, NO);
|
||||
_DOMWindow.addEventListener("paste", nativePasteEventCallback, NO);
|
||||
_clipboardListeners = [
|
||||
[_DOMWindow, "beforecopy", nativeBeforeClipboardEventCallback],
|
||||
[_DOMWindow, "beforecut", nativeBeforeClipboardEventCallback],
|
||||
[_DOMWindow, "beforepaste", nativeBeforeClipboardEventCallback],
|
||||
[_DOMWindow, "copy", nativeCopyOrCutEventCallback],
|
||||
[_DOMWindow, "cut", nativeCopyOrCutEventCallback],
|
||||
[_DOMWindow, "paste", nativePasteEventCallback]
|
||||
];
|
||||
}
|
||||
else
|
||||
{
|
||||
theDocument.addEventListener("beforepaste", pasteEventCallback, NO);
|
||||
theDocument.addEventListener("beforecopy", copyEventCallback, NO);
|
||||
theDocument.addEventListener("beforecut", copyEventCallback, NO);
|
||||
_clipboardListeners = [
|
||||
[theDocument, "beforepaste", pasteEventCallback],
|
||||
[theDocument, "beforecopy", copyEventCallback],
|
||||
[theDocument, "beforecut", copyEventCallback]
|
||||
];
|
||||
}
|
||||
|
||||
_DOMWindow.addEventListener("unload", function()
|
||||
for (var i = 0; i < _clipboardListeners.length; i++)
|
||||
_clipboardListeners[i][0].addEventListener(_clipboardListeners[i][1], _clipboardListeners[i][2], NO);
|
||||
|
||||
// "unload" is blocked by the permissions policy in current Chrome and prevents the
|
||||
// back/forward cache. "pagehide" fires reliably instead. If event.persisted is true the
|
||||
// page goes into the bfcache and may be restored, so the listeners must stay.
|
||||
_DOMWindow.addEventListener("pagehide", function(anEvent)
|
||||
{
|
||||
if (supportsNativeCopyAndPaste)
|
||||
{
|
||||
_DOMWindow.removeEventListener("beforecopy", nativeBeforeClipboardEventCallback, NO);
|
||||
_DOMWindow.removeEventListener("beforecut", nativeBeforeClipboardEventCallback, NO);
|
||||
_DOMWindow.removeEventListener("beforepaste", nativeBeforeClipboardEventCallback, NO);
|
||||
_DOMWindow.removeEventListener("copy", nativeCopyOrCutEventCallback, NO);
|
||||
_DOMWindow.removeEventListener("cut", nativeCopyOrCutEventCallback, NO);
|
||||
_DOMWindow.removeEventListener("paste", nativePasteEventCallback, NO);
|
||||
}
|
||||
else
|
||||
{
|
||||
theDocument.removeEventListener("beforepaste", pasteEventCallback, NO);
|
||||
theDocument.removeEventListener("beforecopy", copyEventCallback, NO);
|
||||
theDocument.removeEventListener("beforecut", copyEventCallback, NO);
|
||||
}
|
||||
if (!anEvent.persisted)
|
||||
[self _removeClipboardListeners];
|
||||
}, NO);
|
||||
}
|
||||
else
|
||||
@@ -175,6 +174,8 @@ var hasEditableTarget = function(aDOMEvent)
|
||||
|
||||
- (void)destroyDOMElements
|
||||
{
|
||||
[self _removeClipboardListeners];
|
||||
|
||||
var theDocument = _DOMWindow.document,
|
||||
_DOMBodyElement = theDocument.getElementById("cappuccino-body") || theDocument.body;
|
||||
|
||||
@@ -182,6 +183,17 @@ var hasEditableTarget = function(aDOMEvent)
|
||||
_DOMPasteboardElement = nil;
|
||||
}
|
||||
|
||||
- (void)_removeClipboardListeners
|
||||
{
|
||||
if (!_clipboardListeners)
|
||||
return;
|
||||
|
||||
for (var i = 0; i < _clipboardListeners.length; i++)
|
||||
_clipboardListeners[i][0].removeEventListener(_clipboardListeners[i][1], _clipboardListeners[i][2], NO);
|
||||
|
||||
_clipboardListeners = nil;
|
||||
}
|
||||
|
||||
- (void)windowMaySendKeyEvent:(CPEvent)anEvent
|
||||
{
|
||||
// Reset our opinions.
|
||||
|
||||
+19
-16
@@ -109,28 +109,31 @@ var CPDateReferenceDate = new Date(Date.UTC(2001, 0, 1, 0, 0, 0, 0));
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns a CPDate initialized with a date and time specified by the given
|
||||
string in international date format YYYY-MM-DD HH:MM:SS ±HHMM (e.g.
|
||||
2009-11-17 17:52:04 +0000).
|
||||
Returns a CPDate initialized with a date and time specified by the given
|
||||
string in international date format YYYY-MM-DD HH:MM:SS ±HHMM (e.g.
|
||||
2009-11-17 17:52:04 +0000).
|
||||
|
||||
The offset is taken verbatim from the string; the result does not depend
|
||||
on the host's local time zone or any CPTimeZone data. Callers needing an
|
||||
offset derived from an actual IANA zone (e.g. accounting for DST) are
|
||||
responsible for resolving it themselves via the browser's Intl API before
|
||||
constructing the string.
|
||||
*/
|
||||
- (id)initWithString:(CPString)description
|
||||
{
|
||||
var format = new RegExp("(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2}) ([-+])(\\d{2})(\\d{2})"),
|
||||
d = description.match(new RegExp(format));
|
||||
var format = new RegExp("(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2}) ([-+])(\\d{2})(\\d{2})"),
|
||||
d = description.match(format);
|
||||
|
||||
if (!d || d.length != 10)
|
||||
[CPException raise:CPInvalidArgumentException
|
||||
reason:"initWithString: the string must be in YYYY-MM-DD HH:MM:SS ±HHMM format"];
|
||||
if (!d || d.length != 10)
|
||||
[CPException raise:CPInvalidArgumentException
|
||||
reason:"initWithString: the string must be in YYYY-MM-DD HH:MM:SS ±HHMM format"];
|
||||
|
||||
var date = new Date(d[1], d[2] - 1, d[3]),
|
||||
timeZoneOffset = (Number(d[8]) * 60 + Number(d[9])) * (d[7] === '-' ? 1 : -1);
|
||||
var timeZoneOffsetMinutes = (Number(d[8]) * 60 + Number(d[9])) * (d[7] === '-' ? 1 : -1),
|
||||
utcMillis = Date.UTC(Number(d[1]), Number(d[2]) - 1, Number(d[3]),
|
||||
Number(d[4]), Number(d[5]), Number(d[6]));
|
||||
|
||||
date.setHours(d[4]);
|
||||
date.setMinutes(d[5]);
|
||||
date.setSeconds(d[6]);
|
||||
|
||||
self = new Date(date.getTime() + (timeZoneOffset - date.getTimezoneOffset()) * 60 * 1000);
|
||||
return self;
|
||||
self = new Date(utcMillis + timeZoneOffsetMinutes * 60 * 1000);
|
||||
return self;
|
||||
}
|
||||
|
||||
- (CPTimeInterval)timeIntervalSinceDate:(CPDate)anotherDate
|
||||
|
||||
+205
-205
@@ -46,19 +46,19 @@ CPDateFormatterBehavior10_0 = 1000;
|
||||
CPDateFormatterBehavior10_4 = 1040;
|
||||
|
||||
var defaultDateFormatterBehavior = CPDateFormatterBehavior10_4,
|
||||
relativeDateFormating,
|
||||
patternStringTokens;
|
||||
relativeDateFormatting,
|
||||
patternStringTokens;
|
||||
|
||||
var _separatorsCharacterSet = nil;
|
||||
|
||||
/*!
|
||||
@ingroup foundation
|
||||
@class CPDateFormatter
|
||||
@ingroup foundation
|
||||
@class CPDateFormatter
|
||||
|
||||
CPDateFormatter takes a CPDate value and formats it as text for
|
||||
display. It also supports the converse, taking text and interpreting it as a
|
||||
CPDate by configurable formatting rules.
|
||||
*/
|
||||
CPDateFormatter takes a CPDate value and formats it as text for
|
||||
display. It also supports the converse, taking text and interpreting it as a
|
||||
CPDate by configurable formatting rules.
|
||||
*/
|
||||
@implementation CPDateFormatter : CPFormatter
|
||||
{
|
||||
BOOL _allowNaturalLanguage @accessors(property=allowNaturalLanguage, readonly);
|
||||
@@ -83,22 +83,22 @@ var _separatorsCharacterSet = nil;
|
||||
if (self !== [CPDateFormatter class])
|
||||
return;
|
||||
|
||||
relativeDateFormating = @{
|
||||
@"fr" : [@"demain", 1, @"apr" + String.fromCharCode(233) + @"s-demain", 2, @"apr" + String.fromCharCode(233) + @"s-apr" + String.fromCharCode(233) + @"s-demain", 3, @"hier", -1, @"avant-hier", -2, @"avant-avant-hier", -3],
|
||||
@"en" : [@"tomorrow", 1, @"yesterday", -1],
|
||||
@"de" : [@"morgen", 1, @"gestern", -1, String.fromCharCode(129) + @"bermorgen", 2, @"vorgestern", -2],
|
||||
@"es" : []
|
||||
relativeDateFormatting = @{
|
||||
@"fr" : [@"demain", 1, @"apr" + String.fromCharCode(233) + @"s-demain", 2, @"apr" + String.fromCharCode(233) + @"s-apr" + String.fromCharCode(233) + @"s-demain", 3, @"hier", -1, @"avant-hier", -2, @"avant-avant-hier", -3],
|
||||
@"en" : [@"tomorrow", 1, @"yesterday", -1],
|
||||
@"de" : [@"morgen", 1, @"gestern", -1, String.fromCharCode(129) + @"bermorgen", 2, @"vorgestern", -2],
|
||||
@"es" : []
|
||||
};
|
||||
|
||||
patternStringTokens = [@"QQQ", @"qqq", @"QQQQ", @"qqqq", @"MMM", @"MMMM", @"LLL", @"LLLL", @"E", @"EE", @"EEE", @"eee", @"eeee", @"eeeee", @"a", @"z", @"zz", @"zzz", @"zzzz", @"Z", @"ZZ", @"ZZZ", @"ZZZZ", @"ZZZZZ", @"v", @"vv", @"vvv", @"vvvv", @"V", @"VV", @"VVV", @"VVVV"];
|
||||
}
|
||||
|
||||
/*! Return a string representation of the given date, dateStyle and timeStyle
|
||||
@param date the given date
|
||||
@param dateStyle the dateStyle
|
||||
@param timeStyle the timeStyle
|
||||
@return a CPString reprensenting the given date
|
||||
*/
|
||||
@param date the given date
|
||||
@param dateStyle the dateStyle
|
||||
@param timeStyle the timeStyle
|
||||
@return a CPString reprensenting the given date
|
||||
*/
|
||||
+ (CPString)localizedStringFromDate:(CPDate)date dateStyle:(CPDateFormatterStyle)dateStyle timeStyle:(CPDateFormatterStyle)timeStyle
|
||||
{
|
||||
var formatter = [[CPDateFormatter alloc] init];
|
||||
@@ -111,28 +111,29 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Not yet implemented
|
||||
Return a string representation of the given template, opts and locale
|
||||
@param template the template
|
||||
@param opts, pass 0
|
||||
@param locale the locale
|
||||
@return a CPString representing the givent template
|
||||
*/
|
||||
Return a string representation of the given template, opts and locale
|
||||
@param template the template
|
||||
@param opts, pass 0
|
||||
@param locale the locale
|
||||
@return a CPString representing the givent template
|
||||
*/
|
||||
+ (CPString)dateFormatFromTemplate:(CPString)template options:(CPUInteger)opts locale:(CPLocale)locale
|
||||
{
|
||||
// TODO : check every template from cocoa and return a good format (have fun ^^)
|
||||
// TODO : check every template from cocoa and return a good format
|
||||
return template;
|
||||
}
|
||||
|
||||
/*! Return the defaultFormatterBehavior
|
||||
@return a CPDateFormatterBehavior
|
||||
*/
|
||||
@return a CPDateFormatterBehavior
|
||||
*/
|
||||
+ (CPDateFormatterBehavior)defaultFormatterBehavior
|
||||
{
|
||||
return defaultDateFormatterBehavior;
|
||||
}
|
||||
|
||||
/*! Set the defaultFormatterBehavior
|
||||
@param behavior
|
||||
*/
|
||||
@param behavior
|
||||
*/
|
||||
+ (void)setDefaultFormatterBehavior:(CPDateFormatterBehavior)behavior
|
||||
{
|
||||
defaultDateFormatterBehavior = behavior;
|
||||
@@ -147,8 +148,8 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Init a dateFormatter
|
||||
@return a new CPDateFormatter
|
||||
*/
|
||||
@return a new CPDateFormatter
|
||||
*/
|
||||
- (id)init
|
||||
{
|
||||
if (self = [super init])
|
||||
@@ -163,10 +164,10 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Init a dateFormatter with a format and the naturalLanguage
|
||||
@param format the format
|
||||
@param flag flag representation of allowNaturalLanguage
|
||||
@return a new CPDateFormatter
|
||||
*/
|
||||
@param format the format
|
||||
@param flag flag representation of allowNaturalLanguage
|
||||
@return a new CPDateFormatter
|
||||
*/
|
||||
- (id)initWithDateFormat:(CPString)format allowNaturalLanguage:(BOOL)flag
|
||||
{
|
||||
if (self = [self init])
|
||||
@@ -175,31 +176,31 @@ var _separatorsCharacterSet = nil;
|
||||
_allowNaturalLanguage = flag;
|
||||
}
|
||||
|
||||
return self
|
||||
return self;
|
||||
}
|
||||
|
||||
/*! Private init
|
||||
*/
|
||||
*/
|
||||
- (void)_init
|
||||
{
|
||||
var AMSymbol = [CPString stringWithFormat:@"%s", @"AM"],
|
||||
PMSymbol = [CPString stringWithFormat:@"%s", @"PM"],
|
||||
weekdaySymbols = [CPArray arrayWithObjects:@"Sunday", @"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday"],
|
||||
shortWeekdaySymbols = [CPArray arrayWithObjects:@"Sun", @"Mon", @"Tue", @"Wed", @"Thu", @"Fri", @"Sat"],
|
||||
veryShortWeekdaySymbols = [CPArray arrayWithObjects:@"S", @"M", @"T", @"W", @"T", @"F", @"S"],
|
||||
standaloneWeekdaySymbols = [CPArray arrayWithObjects:@"Sunday", @"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday"],
|
||||
shortStandaloneWeekdaySymbols = [CPArray arrayWithObjects:@"Sun", @"Mon", @"Tue", @"Wed", @"Thu", @"Fri", @"Sat"],
|
||||
veryShortStandaloneWeekdaySymbols = [CPArray arrayWithObjects:@"S", @"M", @"T", @"W", @"T", @"F", @"S"],
|
||||
monthSymbols = [CPArray arrayWithObjects:@"January", @"February", @"March", @"April", @"May", @"June", @"July", @"August", @"September", @"October", @"November", @"December"],
|
||||
shortMonthSymbols = [CPArray arrayWithObjects:@"Jan", @"Feb", @"Mar", @"Apr", @"May", @"Jun", @"Jul", @"Aug", @"Sep", @"Oct", @"Nov", @"Dec"],
|
||||
veryShortMonthSymbols = [CPArray arrayWithObjects:@"J", @"F", @"M", @"A", @"M", @"J", @"J", @"A", @"S", @"O", @"N", @"D"],
|
||||
standaloneMonthSymbols = [CPArray arrayWithObjects:@"January", @"February", @"March", @"April", @"May", @"June", @"July", @"August", @"September", @"October", @"November", @"December"],
|
||||
shortStandaloneMonthSymbols = [CPArray arrayWithObjects:@"Jan", @"Feb", @"Mar", @"Apr", @"May", @"Jun", @"Jul", @"Aug", @"Sep", @"Oct", @"Nov", @"Dec"],
|
||||
veryShortStandaloneMonthSymbols = [CPArray arrayWithObjects:@"J", @"F", @"M", @"A", @"M", @"J", @"J", @"A", @"S", @"O", @"N", @"D"],
|
||||
quarterSymbols = [CPArray arrayWithObjects:@"1st quarter", @"2nd quarter", @"3rd quarter", @"4th quarter"],
|
||||
shortQuarterSymbols = [CPArray arrayWithObjects:@"Q1", @"Q2", @"Q3", @"Q4"],
|
||||
standaloneQuarterSymbols = [CPArray arrayWithObjects:@"1st quarter", @"2nd quarter", @"3rd quarter", @"4th quarter"],
|
||||
shortStandaloneQuarterSymbols = [CPArray arrayWithObjects:@"Q1", @"Q2", @"Q3", @"Q4"];
|
||||
PMSymbol = [CPString stringWithFormat:@"%s", @"PM"],
|
||||
weekdaySymbols = [CPArray arrayWithObjects:@"Sunday", @"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday"],
|
||||
shortWeekdaySymbols = [CPArray arrayWithObjects:@"Sun", @"Mon", @"Tue", @"Wed", @"Thu", @"Fri", @"Sat"],
|
||||
veryShortWeekdaySymbols = [CPArray arrayWithObjects:@"S", @"M", @"T", @"W", @"T", @"F", @"S"],
|
||||
standaloneWeekdaySymbols = [CPArray arrayWithObjects:@"Sunday", @"Monday", @"Tuesday", @"Wednesday", @"Thursday", @"Friday", @"Saturday"],
|
||||
shortStandaloneWeekdaySymbols = [CPArray arrayWithObjects:@"Sun", @"Mon", @"Tue", @"Wed", @"Thu", @"Fri", @"Sat"],
|
||||
veryShortStandaloneWeekdaySymbols = [CPArray arrayWithObjects:@"S", @"M", @"T", @"W", @"T", @"F", @"S"],
|
||||
monthSymbols = [CPArray arrayWithObjects:@"January", @"February", @"March", @"April", @"May", @"June", @"July", @"August", @"September", @"October", @"November", @"December"],
|
||||
shortMonthSymbols = [CPArray arrayWithObjects:@"Jan", @"Feb", @"Mar", @"Apr", @"May", @"Jun", @"Jul", @"Aug", @"Sep", @"Oct", @"Nov", @"Dec"],
|
||||
veryShortMonthSymbols = [CPArray arrayWithObjects:@"J", @"F", @"M", @"A", @"M", @"J", @"J", @"A", @"S", @"O", @"N", @"D"],
|
||||
standaloneMonthSymbols = [CPArray arrayWithObjects:@"January", @"February", @"March", @"April", @"May", @"June", @"July", @"August", @"September", @"October", @"November", @"December"],
|
||||
shortStandaloneMonthSymbols = [CPArray arrayWithObjects:@"Jan", @"Feb", @"Mar", @"Apr", @"May", @"Jun", @"Jul", @"Aug", @"Sep", @"Oct", @"Nov", @"Dec"],
|
||||
veryShortStandaloneMonthSymbols = [CPArray arrayWithObjects:@"J", @"F", @"M", @"A", @"M", @"J", @"J", @"A", @"S", @"O", @"N", @"D"],
|
||||
quarterSymbols = [CPArray arrayWithObjects:@"1st quarter", @"2nd quarter", @"3rd quarter", @"4th quarter"],
|
||||
shortQuarterSymbols = [CPArray arrayWithObjects:@"Q1", @"Q2", @"Q3", @"Q4"],
|
||||
standaloneQuarterSymbols = [CPArray arrayWithObjects:@"1st quarter", @"2nd quarter", @"3rd quarter", @"4th quarter"],
|
||||
shortStandaloneQuarterSymbols = [CPArray arrayWithObjects:@"Q1", @"Q2", @"Q3", @"Q4"];
|
||||
|
||||
_symbols = @{
|
||||
@"root" : @{
|
||||
@@ -235,7 +236,7 @@ var _separatorsCharacterSet = nil;
|
||||
// MARK: Setter Getter Helper
|
||||
|
||||
/*! Return symbols for the given language code
|
||||
*/
|
||||
*/
|
||||
- (CPDictionary)symbolsForLanguageCode:(CPString)languageCode
|
||||
{
|
||||
var languageSymbols = [_symbols valueForKey:languageCode];
|
||||
@@ -250,18 +251,18 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Set the symbols for the given language code
|
||||
*/
|
||||
*/
|
||||
- (void)setSymbols:(CPDictionary)symbols forLanguageCode:(CPString)languageCode
|
||||
{
|
||||
[_symbols setValue:symbols forKey:languageCode];
|
||||
}
|
||||
|
||||
/*! Return a symbol specified by the given key for the given language code
|
||||
*/
|
||||
*/
|
||||
- (id)symbolForKey:(CPString)aKey languageCode:(CPString)languageCode
|
||||
{
|
||||
var languageSymbols = [self symbolsForLanguageCode:languageCode],
|
||||
symbol = [languageSymbols valueForKey:aKey];
|
||||
symbol = [languageSymbols valueForKey:aKey];
|
||||
|
||||
if (!symbol)
|
||||
{
|
||||
@@ -273,7 +274,7 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Set the symbol specified by the given key for the given language code
|
||||
*/
|
||||
*/
|
||||
- (void)setSymbol:(CPString)aSymbol forKey:(CPString)aKey languageCode:(CPString)languageCode
|
||||
{
|
||||
var languageSymbols = [self symbolsForLanguageCode:languageCode];
|
||||
@@ -284,252 +285,252 @@ var _separatorsCharacterSet = nil;
|
||||
// MARK: Setter Getter
|
||||
|
||||
/*! Return AMSymbol
|
||||
*/
|
||||
*/
|
||||
- (CPString)AMSymbol
|
||||
{
|
||||
return [self symbolForKey:@"AMSymbol" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the AMSymbol
|
||||
*/
|
||||
*/
|
||||
- (void)setAMSymbol:(CPString)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"AMSymbol" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return a PMSymbol
|
||||
*/
|
||||
*/
|
||||
- (CPString)PMSymbol
|
||||
{
|
||||
return [self symbolForKey:@"PMSymbol" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the PMSymbol
|
||||
*/
|
||||
*/
|
||||
- (void)setPMSymbol:(CPString)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"PMSymbol" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the weekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)weekdaySymbols
|
||||
{
|
||||
return [self symbolForKey:@"weekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the weekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setWeekdaySymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"weekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return a shortWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)shortWeekdaySymbols
|
||||
{
|
||||
return [self symbolForKey:@"shortWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the shortWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setShortWeekdaySymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"shortWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return veryShortWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)veryShortWeekdaySymbols
|
||||
{
|
||||
return [self symbolForKey:@"veryShortWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the veryShortWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setVeryShortWeekdaySymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"veryShortWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the standaloneWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)standaloneWeekdaySymbols
|
||||
{
|
||||
return [self symbolForKey:@"standaloneWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the standaloneWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setStandaloneWeekdaySymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"standaloneWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the shortStandaloneWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)shortStandaloneWeekdaySymbols
|
||||
{
|
||||
return [self symbolForKey:@"shortStandaloneWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the shortStandaloneWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setShortStandaloneWeekdaySymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"shortStandaloneWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the veryShortStandaloneWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)veryShortStandaloneWeekdaySymbols
|
||||
{
|
||||
return [self symbolForKey:@"veryShortStandaloneWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the veryShortStandaloneWeekdaySymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setVeryShortStandaloneWeekdaySymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"veryShortStandaloneWeekdaySymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the monthSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)monthSymbols
|
||||
{
|
||||
return [self symbolForKey:@"monthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the monthSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setMonthSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"monthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return a shortMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)shortMonthSymbols
|
||||
{
|
||||
return [self symbolForKey:@"shortMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the shortMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setShortMonthSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"shortMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return veryShortMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)veryShortMonthSymbols
|
||||
{
|
||||
return [self symbolForKey:@"veryShortMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the veryShortMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setVeryShortMonthSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"veryShortMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return standaloneMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)standaloneMonthSymbols
|
||||
{
|
||||
return [self symbolForKey:@"standaloneMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the standaloneMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setStandaloneMonthSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"standaloneMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the shortStandaloneMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)shortStandaloneMonthSymbols
|
||||
{
|
||||
return [self symbolForKey:@"shortStandaloneMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the shortStandaloneMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setShortStandaloneMonthSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"shortStandaloneMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the veryShortStandaloneMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)veryShortStandaloneMonthSymbols
|
||||
{
|
||||
return [self symbolForKey:@"veryShortStandaloneMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the veryShortStandaloneMonthSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setVeryShortStandaloneMonthSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"veryShortStandaloneMonthSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the quarterSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)quarterSymbols
|
||||
{
|
||||
return [self symbolForKey:@"quarterSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the quarterSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setQuarterSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"quarterSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the shortQuarterSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)shortQuarterSymbols
|
||||
{
|
||||
return [self symbolForKey:@"shortQuarterSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the shortQuarterSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setShortQuarterSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"shortQuarterSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the standaloneQuarterSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)standaloneQuarterSymbols
|
||||
{
|
||||
return [self symbolForKey:@"standaloneQuarterSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the standaloneQuarterSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setStandaloneQuarterSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"standaloneQuarterSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Return the shortStandaloneQuarterSymbols
|
||||
*/
|
||||
*/
|
||||
- (CPArray)shortStandaloneQuarterSymbols
|
||||
{
|
||||
return [self symbolForKey:@"shortStandaloneQuarterSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
}
|
||||
|
||||
/*! Set the shortStandaloneQuarterSymbols
|
||||
*/
|
||||
*/
|
||||
- (void)setShortStandaloneQuarterSymbols:(CPArray)aValue
|
||||
{
|
||||
[self setSymbol:aValue forKey:@"shortStandaloneQuarterSymbols" languageCode:[_locale objectForKey:CPLocaleLanguageCode]];
|
||||
@@ -540,18 +541,18 @@ var _separatorsCharacterSet = nil;
|
||||
// MARK: StringFromDate methods
|
||||
|
||||
/*! Return a string representation of a given date.
|
||||
This method returns (if possible) a representation of the given date with the dateFormat of the CPDateFormatter, otherwise it takes the dateStyle and timeStyle
|
||||
@param aDate the given date
|
||||
@return CPString the string representation
|
||||
*/
|
||||
This method returns (if possible) a representation of the given date with the dateFormat of the CPDateFormatter, otherwise it takes the dateStyle and timeStyle
|
||||
@param aDate the given date
|
||||
@return CPString the string representation
|
||||
*/
|
||||
- (CPString)stringFromDate:(CPDate)aDate
|
||||
{
|
||||
var format,
|
||||
relativeWord,
|
||||
result;
|
||||
relativeWord,
|
||||
result;
|
||||
|
||||
if (!aDate)
|
||||
return;
|
||||
return nil;
|
||||
|
||||
aDate = [aDate copy];
|
||||
[aDate _dateWithTimeZone:_timeZone];
|
||||
@@ -611,7 +612,7 @@ var _separatorsCharacterSet = nil;
|
||||
if ([self doesRelativeDateFormatting])
|
||||
{
|
||||
var language = [_locale objectForKey:CPLocaleLanguageCode],
|
||||
relativeWords = [relativeDateFormating valueForKey:language];
|
||||
relativeWords = [relativeDateFormatting valueForKey:language];
|
||||
|
||||
for (var i = 1; i < [relativeWords count]; i = i + 2)
|
||||
{
|
||||
@@ -687,10 +688,10 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Return a string representation of the given objectValue.
|
||||
This method call the method stringFromDate if possible, otherwise it returns the description of the object
|
||||
@param anObject
|
||||
@return a string
|
||||
*/
|
||||
This method call the method stringFromDate if possible, otherwise it returns the description of the object
|
||||
@param anObject
|
||||
@return a string
|
||||
*/
|
||||
- (CPString)stringForObjectValue:(id)anObject
|
||||
{
|
||||
if ([anObject isKindOfClass:[CPDate class]])
|
||||
@@ -700,26 +701,26 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Return a string
|
||||
This method call the method stringForObjectValue
|
||||
@param anObject
|
||||
@return a string
|
||||
*/
|
||||
This method call the method stringForObjectValue
|
||||
@param anObject
|
||||
@return a string
|
||||
*/
|
||||
- (CPString)editingStringForObjectValue:(id)anObject
|
||||
{
|
||||
return [self stringForObjectValue:anObject];
|
||||
}
|
||||
|
||||
/*! Return a string representation of the given date and format
|
||||
@patam aDate
|
||||
@param aFormat
|
||||
@return a string
|
||||
*/
|
||||
@patam aDate
|
||||
@param aFormat
|
||||
@return a string
|
||||
*/
|
||||
- (CPString)_stringFromDate:(CPDate)aDate format:(CPString)aFormat
|
||||
{
|
||||
var length = [aFormat length],
|
||||
currentToken = [CPString new],
|
||||
isTextToken = NO,
|
||||
result = [CPString new];
|
||||
currentToken = [CPString new],
|
||||
isTextToken = NO,
|
||||
result = [CPString new];
|
||||
|
||||
for (var i = 0; i < length; i++)
|
||||
{
|
||||
@@ -778,18 +779,18 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Return a string representation of the given token and date
|
||||
@param aToken
|
||||
@param aDate
|
||||
@return a string
|
||||
*/
|
||||
@param aToken
|
||||
@param aDate
|
||||
@return a string
|
||||
*/
|
||||
- (CPString)_stringFromToken:(CPString)aToken date:(CPDate)aDate
|
||||
{
|
||||
if (![aToken length])
|
||||
return aToken;
|
||||
|
||||
var character = [aToken characterAtIndex:0],
|
||||
length = [aToken length],
|
||||
timeZone = _timeZone;
|
||||
length = [aToken length],
|
||||
timeZone = _timeZone;
|
||||
|
||||
switch (character)
|
||||
{
|
||||
@@ -902,13 +903,13 @@ var _separatorsCharacterSet = nil;
|
||||
d.setDate(d.getDate() + 4 - (d.getDay() || 7));
|
||||
|
||||
var yearStart = new Date(d.getFullYear(), 0, 1),
|
||||
weekOfYear = Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
|
||||
weekOfYear = Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
|
||||
|
||||
return [self _stringValueForValue:(weekOfYear + 1) length:MAX(2, length)];
|
||||
|
||||
case @"W":
|
||||
var firstDay = new Date(aDate.getFullYear(), aDate.getMonth(), 1).getDay(),
|
||||
weekOfMonth = Math.ceil((aDate.getDate() + firstDay) / 7);
|
||||
weekOfMonth = Math.ceil((aDate.getDate() + firstDay) / 7);
|
||||
|
||||
return [self _stringValueForValue:weekOfMonth length:1];
|
||||
|
||||
@@ -919,14 +920,14 @@ var _separatorsCharacterSet = nil;
|
||||
|
||||
case @"D":
|
||||
var oneJan = new Date(aDate.getFullYear(), 0, 1),
|
||||
dayOfYear = Math.ceil((aDate - oneJan) / 86400000),
|
||||
currentLength = [[CPString stringWithFormat:@"%i", dayOfYear] length];
|
||||
dayOfYear = Math.ceil((aDate - oneJan) / 86400000),
|
||||
currentLength = [[CPString stringWithFormat:@"%i", dayOfYear] length];
|
||||
|
||||
return [self _stringValueForValue:dayOfYear length:MAX(currentLength, MIN(3, length))];
|
||||
|
||||
case @"F":
|
||||
var dayOfWeek = 1,
|
||||
day = aDate.getDate();
|
||||
day = aDate.getDate();
|
||||
|
||||
if (day > 7 && day < 15)
|
||||
dayOfWeek = 2;
|
||||
@@ -1065,10 +1066,10 @@ var _separatorsCharacterSet = nil;
|
||||
|
||||
case @"Z":
|
||||
var seconds = [timeZone secondsFromGMT],
|
||||
minutes = seconds / 60,
|
||||
hours = minutes / 60,
|
||||
result,
|
||||
diffMinutes = (hours - parseInt(hours)) * 100 * 60 / 100;
|
||||
minutes = seconds / 60,
|
||||
hours = minutes / 60,
|
||||
result,
|
||||
diffMinutes = (hours - parseInt(hours)) * 100 * 60 / 100;
|
||||
|
||||
if (length <= 3)
|
||||
{
|
||||
@@ -1082,7 +1083,7 @@ var _separatorsCharacterSet = nil;
|
||||
while ([result length] < 4)
|
||||
result = @"0" + result;
|
||||
|
||||
if (seconds > 0)
|
||||
if (seconds >= 0)
|
||||
result = @"+" + result;
|
||||
else
|
||||
result = @"-" + result;
|
||||
@@ -1164,10 +1165,10 @@ var _separatorsCharacterSet = nil;
|
||||
// MARK: datefromString
|
||||
|
||||
/*! Return a date of the given string
|
||||
This method returns (if possible) a representation of the given string with the dateFormat of the CPDateFormatter, otherwise it takes the dateStyle and timeStyle
|
||||
@param aString
|
||||
@return CPDate the date
|
||||
*/
|
||||
This method returns (if possible) a representation of the given string with the dateFormat of the CPDateFormatter, otherwise it takes the dateStyle and timeStyle
|
||||
@param aString
|
||||
@return CPDate the date
|
||||
*/
|
||||
- (CPDate)dateFromString:(CPString)aString
|
||||
{
|
||||
var format;
|
||||
@@ -1259,11 +1260,11 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Returns a boolean if the given object has been changed or not depending of the given string (use of ref)
|
||||
@param anObject the given object
|
||||
@param aString
|
||||
@param anError, if it returns NO the describe error will be in anError (use of ref)
|
||||
@return aBoolean for the success or fail of the method
|
||||
*/
|
||||
@param anObject the given object
|
||||
@param aString
|
||||
@param anError, if it returns NO the describe error will be in anError (use of ref)
|
||||
@return aBoolean for the success or fail of the method
|
||||
*/
|
||||
- (BOOL)getObjectValue:(idRef)anObject forString:(CPString)aString errorDescription:(CPStringRef)anError
|
||||
{
|
||||
var value = [self dateFromString:aString];
|
||||
@@ -1281,10 +1282,10 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Return a date representation of the given string and format
|
||||
@patam aDate
|
||||
@param aFormat
|
||||
@return a string
|
||||
*/
|
||||
@patam aDate
|
||||
@param aFormat
|
||||
@return a string
|
||||
*/
|
||||
- (CPDate)_dateFromString:(CPString)aString format:(CPString)aFormat
|
||||
{
|
||||
// Interpret @"" as the date 2000-01-01 00:00:00 +0000, like in Cocoa. No idea why they picked this particular date.
|
||||
@@ -1307,10 +1308,10 @@ var _separatorsCharacterSet = nil;
|
||||
return nil;
|
||||
|
||||
var currentToken = [CPString new],
|
||||
isTextToken = NO,
|
||||
tokens = [CPArray array],
|
||||
dateComponents = [CPArray array],
|
||||
patternTokens = [CPArray array];
|
||||
isTextToken = NO,
|
||||
tokens = [CPArray array],
|
||||
dateComponents = [CPArray array],
|
||||
patternTokens = [CPArray array];
|
||||
|
||||
for (var i = 0; i < [aFormat length]; i++)
|
||||
{
|
||||
@@ -1431,19 +1432,19 @@ var _separatorsCharacterSet = nil;
|
||||
- (CPDate)_dateFromTokens:(CPArray)tokens dateComponents:(CPArray)dateComponents
|
||||
{
|
||||
var timeZoneseconds = [_timeZone secondsFromGMT],
|
||||
dateArray = [2000, 01, 01, 00, 00, 00, @"+0000"],
|
||||
isPM = NO,
|
||||
dayOfYear,
|
||||
dayIndexInWeek,
|
||||
weekOfYear,
|
||||
weekOfMonth;
|
||||
dateArray = [2000, 1, 1, 0, 0, 0],
|
||||
isPM = NO,
|
||||
dayOfYear,
|
||||
dayIndexInWeek,
|
||||
weekOfYear,
|
||||
weekOfMonth;
|
||||
|
||||
for (var i = 0; i < [tokens count]; i++)
|
||||
{
|
||||
var token = [tokens objectAtIndex:i],
|
||||
dateComponent = [dateComponents objectAtIndex:i],
|
||||
character = [token characterAtIndex:0],
|
||||
length = [token length];
|
||||
dateComponent = [dateComponents objectAtIndex:i],
|
||||
character = [token characterAtIndex:0],
|
||||
length = [token length];
|
||||
|
||||
switch (character)
|
||||
{
|
||||
@@ -1454,9 +1455,9 @@ var _separatorsCharacterSet = nil;
|
||||
|
||||
case @"y":
|
||||
var u = _twoDigitStartDate.getFullYear() % 10,
|
||||
d = parseInt(_twoDigitStartDate.getFullYear() / 10) % 10,
|
||||
c = parseInt(_twoDigitStartDate.getFullYear() / 100) % 10,
|
||||
m = parseInt(_twoDigitStartDate.getFullYear() / 1000) % 10;
|
||||
d = parseInt(_twoDigitStartDate.getFullYear() / 10) % 10,
|
||||
c = parseInt(_twoDigitStartDate.getFullYear() / 100) % 10,
|
||||
m = parseInt(_twoDigitStartDate.getFullYear() / 1000) % 10;
|
||||
|
||||
if (length == 2 && dateComponent.length == 2)
|
||||
{
|
||||
@@ -1474,9 +1475,9 @@ var _separatorsCharacterSet = nil;
|
||||
|
||||
case @"Y":
|
||||
var u = _twoDigitStartDate.getFullYear() % 10,
|
||||
d = parseInt(_twoDigitStartDate.getFullYear() / 10) % 10,
|
||||
c = parseInt(_twoDigitStartDate.getFullYear() / 100) % 10,
|
||||
m = parseInt(_twoDigitStartDate.getFullYear() / 1000) % 10;
|
||||
d = parseInt(_twoDigitStartDate.getFullYear() / 10) % 10,
|
||||
c = parseInt(_twoDigitStartDate.getFullYear() / 100) % 10,
|
||||
m = parseInt(_twoDigitStartDate.getFullYear() / 1000) % 10;
|
||||
|
||||
if (length == 2 && dateComponent.length == 2)
|
||||
{
|
||||
@@ -1790,7 +1791,7 @@ var _separatorsCharacterSet = nil;
|
||||
return nil;
|
||||
|
||||
var millisecondsInDay = parseInt(dateComponent),
|
||||
tmpDate = new Date();
|
||||
tmpDate = new Date();
|
||||
|
||||
tmpDate.setHours(0);
|
||||
tmpDate.setMinutes(0);
|
||||
@@ -1816,8 +1817,6 @@ var _separatorsCharacterSet = nil;
|
||||
if (!timeZoneseconds)
|
||||
return nil;
|
||||
|
||||
timeZoneseconds = timeZoneseconds + 60 * 60;
|
||||
|
||||
break;
|
||||
|
||||
case @"Z":
|
||||
@@ -1826,8 +1825,6 @@ var _separatorsCharacterSet = nil;
|
||||
if (!timeZoneseconds)
|
||||
return nil;
|
||||
|
||||
timeZoneseconds = timeZoneseconds + 60 * 60;
|
||||
|
||||
break;
|
||||
|
||||
case @"v":
|
||||
@@ -1842,8 +1839,6 @@ var _separatorsCharacterSet = nil;
|
||||
if (!timeZoneseconds)
|
||||
return nil;
|
||||
|
||||
timeZoneseconds = timeZoneseconds + 60 * 60;
|
||||
|
||||
break;
|
||||
|
||||
case @"V":
|
||||
@@ -1858,8 +1853,6 @@ var _separatorsCharacterSet = nil;
|
||||
if (!timeZoneseconds)
|
||||
return nil;
|
||||
|
||||
timeZoneseconds = timeZoneseconds + 60 * 60;
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1912,11 +1905,15 @@ var _separatorsCharacterSet = nil;
|
||||
if (isPM)
|
||||
dateArray[3] += 12;
|
||||
|
||||
if (isNaN(parseInt(dateArray[0])) || isNaN(parseInt(dateArray[1])) || isNaN(parseInt(dateArray[2])) || isNaN(parseInt(dateArray[3])) || isNaN(parseInt(dateArray[4])) || isNaN(parseInt(dateArray[5])) || isNaN(parseInt(dateArray[6])))
|
||||
if (isNaN(parseInt(dateArray[0])) || isNaN(parseInt(dateArray[1])) || isNaN(parseInt(dateArray[2])) || isNaN(parseInt(dateArray[3])) || isNaN(parseInt(dateArray[4])) || isNaN(parseInt(dateArray[5])))
|
||||
return nil;
|
||||
|
||||
var dateResult = [[CPDate alloc] initWithString:[CPString stringWithFormat:@"%04d-%02d-%02d %02d:%02d:%02d %s", dateArray[0], dateArray[1], dateArray[2], dateArray[3], dateArray[4], dateArray[5], dateArray[6]]];
|
||||
dateResult.setSeconds(dateResult.getSeconds() - timeZoneseconds + 60 * 60);
|
||||
var utcTimestamp = Date.UTC(dateArray[0], dateArray[1] - 1, dateArray[2], dateArray[3], dateArray[4], dateArray[5]),
|
||||
kCFAbsoluteTimeIntervalSince1970 = 978307200.0,
|
||||
interval = (utcTimestamp / 1000.0) - kCFAbsoluteTimeIntervalSince1970,
|
||||
dateResult = [CPDate dateWithTimeIntervalSinceReferenceDate:interval];
|
||||
|
||||
dateResult.setSeconds(dateResult.getSeconds() - timeZoneseconds);
|
||||
|
||||
return dateResult;
|
||||
}
|
||||
@@ -1942,29 +1939,29 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Check if we are in the american format or not. Depending on the locale
|
||||
*/
|
||||
*/
|
||||
- (BOOL)_isAmericanFormat
|
||||
{
|
||||
return [[_locale objectForKey:CPLocaleCountryCode] isEqualToString:@"US"];
|
||||
}
|
||||
|
||||
/*! Check if we are in the english format or not. Depending on the locale
|
||||
*/
|
||||
*/
|
||||
- (BOOL)_isEnglishFormat
|
||||
{
|
||||
return [[_locale objectForKey:CPLocaleLanguageCode] isEqualToString:@"en"];
|
||||
}
|
||||
|
||||
/*! Returns the number of second from a time zone (-8000 or HGP-8:35 or GMT-08:00)
|
||||
*/
|
||||
*/
|
||||
- (int)_secondsFromTimeZoneDefaultFormatString:(CPString)aTimeZoneFormatString
|
||||
{
|
||||
var format = new RegExp("\\w*([HPG-GMT])?([+-])(\\d{1,2})([:])?(\\d{2})\\w*"),
|
||||
result = aTimeZoneFormatString.match(new RegExp(format)),
|
||||
seconds = 0;
|
||||
result = aTimeZoneFormatString.match(new RegExp(format)),
|
||||
seconds = 0;
|
||||
|
||||
if (!result)
|
||||
return nil;
|
||||
return 0;
|
||||
|
||||
seconds = result[3] * 60 * 60 + result[5] * 60;
|
||||
|
||||
@@ -1975,30 +1972,30 @@ var _separatorsCharacterSet = nil;
|
||||
}
|
||||
|
||||
/*! Return the number of seconds from a timeZoneString
|
||||
*/
|
||||
*/
|
||||
- (int)_secondsFromTimeZoneString:(CPString)aTimeZoneString style:(NSTimeZoneNameStyle)aStyle
|
||||
{
|
||||
var timeZone = [CPTimeZone _timeZoneFromString:aTimeZoneString style:aStyle locale:_locale];
|
||||
|
||||
if (!timeZone)
|
||||
return nil;
|
||||
return 0;
|
||||
|
||||
return [timeZone secondsFromGMT];
|
||||
}
|
||||
|
||||
/*! This method is used to know if the given string match with the token.
|
||||
@param aString
|
||||
@param aToken
|
||||
@param anIndex the current index in the string
|
||||
@return an index who describes the position of the end of the word for the token
|
||||
*/
|
||||
@param aString
|
||||
@param aToken
|
||||
@param anIndex the current index in the string
|
||||
@return an index who describes the position of the end of the word for the token
|
||||
*/
|
||||
- (int)_lastIndexMatchedString:(CPString)aString token:(CPString)aToken index:anIndex
|
||||
{
|
||||
var character = [aToken characterAtIndex:0],
|
||||
length = [aToken length],
|
||||
targetedArray,
|
||||
format = new RegExp("\\w*([HPG-GMT])?([+-])(\\d{1,2})([:])?(\\d{2})\\w*"),
|
||||
result = aString.match(new RegExp(format));
|
||||
length = [aToken length],
|
||||
targetedArray,
|
||||
format = new RegExp("\\w*([HPG-GMT])?([+-])(\\d{1,2})([:])?(\\d{2})\\w*"),
|
||||
result = aString.match(new RegExp(format));
|
||||
|
||||
switch (character)
|
||||
{
|
||||
@@ -2129,7 +2126,7 @@ var _separatorsCharacterSet = nil;
|
||||
for (var i = 0; i < [targetedArray count]; i++)
|
||||
{
|
||||
var currentObject = [targetedArray objectAtIndex:i],
|
||||
range = [aString rangeOfString:currentObject];
|
||||
range = [aString rangeOfString:currentObject];
|
||||
|
||||
if (range.length == 0)
|
||||
continue;
|
||||
@@ -2146,12 +2143,12 @@ var _separatorsCharacterSet = nil;
|
||||
@end
|
||||
|
||||
var CPDateFormatterDateStyleKey = @"CPDateFormatterDateStyle",
|
||||
CPDateFormatterTimeStyleKey = @"CPDateFormatterTimeStyleKey",
|
||||
CPDateFormatterFormatterBehaviorKey = @"CPDateFormatterFormatterBehaviorKey",
|
||||
CPDateFormatterDoseRelativeDateFormattingKey = @"CPDateFormatterDoseRelativeDateFormattingKey",
|
||||
CPDateFormatterDateFormatKey = @"CPDateFormatterDateFormatKey",
|
||||
CPDateFormatterAllowNaturalLanguageKey = @"CPDateFormatterAllowNaturalLanguageKey",
|
||||
CPDateFormatterLocaleKey = @"CPDateFormatterLocaleKey";
|
||||
CPDateFormatterTimeStyleKey = @"CPDateFormatterTimeStyleKey",
|
||||
CPDateFormatterFormatterBehaviorKey = @"CPDateFormatterFormatterBehaviorKey",
|
||||
CPDateFormatterDoseRelativeDateFormattingKey = @"CPDateFormatterDoseRelativeDateFormattingKey",
|
||||
CPDateFormatterDateFormatKey = @"CPDateFormatterDateFormatKey",
|
||||
CPDateFormatterAllowNaturalLanguageKey = @"CPDateFormatterAllowNaturalLanguageKey",
|
||||
CPDateFormatterLocaleKey = @"CPDateFormatterLocaleKey";
|
||||
|
||||
@implementation CPDateFormatter (CPCoding)
|
||||
|
||||
@@ -2194,14 +2191,17 @@ var CPDateFormatterDateStyleKey = @"CPDateFormatterDateStyle",
|
||||
@implementation CPDate (CPTimeZone)
|
||||
|
||||
/*! Convert a date from a timeZone
|
||||
*/
|
||||
*/
|
||||
- (void)_dateWithTimeZone:(CPTimeZone)aTimeZone
|
||||
{
|
||||
if (!aTimeZone)
|
||||
return;
|
||||
|
||||
self.setSeconds(self.getSeconds() - [aTimeZone secondsFromGMTForDate:self]);
|
||||
self.setSeconds(self.getSeconds() + [aTimeZone secondsFromGMT]);
|
||||
var targetOffset = [aTimeZone secondsFromGMTForDate:self],
|
||||
localOffset = - (self.getTimezoneOffset() * 60),
|
||||
offsetDifference = targetOffset - localOffset;
|
||||
|
||||
self.setSeconds(self.getSeconds() + offsetDifference);
|
||||
}
|
||||
|
||||
@end
|
||||
Executable → Regular
+2
-2
@@ -264,13 +264,13 @@ function _CPRaiseInvalidAbstractInvocation(anObject, aSelector)
|
||||
function _CPRaiseInvalidArgumentException(anObject, aSelector, aMessage)
|
||||
{
|
||||
[CPException raise:CPInvalidArgumentException
|
||||
reason:METHOD_CALL_STRING() + aMessage];
|
||||
reason:_CPMethodCallString(anObject, aSelector) + aMessage];
|
||||
}
|
||||
|
||||
function _CPRaiseRangeException(anObject, aSelector, anIndex, aCount)
|
||||
{
|
||||
[CPException raise:CPRangeException
|
||||
reason:METHOD_CALL_STRING() + "index (" + anIndex + ") beyond bounds (" + aCount + ")"];
|
||||
reason:_CPMethodCallString(anObject, aSelector) + "index (" + anIndex + ") beyond bounds (" + aCount + ")"];
|
||||
}
|
||||
|
||||
function _CPReportLenientDeprecation(/*Class*/ aClass, /*SEL*/ oldSelector, /*SEL*/ newSelector)
|
||||
|
||||
+556
-419
File diff suppressed because it is too large.
Load diff
@@ -10,16 +10,39 @@ const utilsFile = ObjectiveJ.utils.file;
|
||||
|
||||
var subprojects = ["Objective-J", "CommonJS", "Foundation", "AppKit", "Tools"];
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// Build Orchestration
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
var isMasterBuild = process.env.CAPP_INNER_BUILD !== "1";
|
||||
|
||||
task ("build", function() {
|
||||
childProcess.execSync(["mkdir", "-p", $BUILD_DIR].map(utilsFile.enquote).join(" "), {stdio: 'inherit'});
|
||||
childProcess.execSync(['ln', '-sf', '"$PWD"/node_modules', utilsFile.enquote($BUILD_DIR)].join(" "), {stdio: 'inherit'});
|
||||
});
|
||||
|
||||
["build", "clean", "clobber"].forEach(function(aTaskName)
|
||||
task ("build", function() {
|
||||
if (isMasterBuild) {
|
||||
// Intercept top-level 'jake build' execution.
|
||||
// Spawn the complete pipeline to avoid circular dependency resolution
|
||||
// with common.jake's internal targets.
|
||||
process.env.CAPP_INNER_BUILD = "1";
|
||||
childProcess.execSync("jake CommonJS build-manual-tests-symlinks", {stdio: 'inherit'});
|
||||
} else {
|
||||
// Execute the baseline compilation step when invoked as a prerequisite
|
||||
subjake(subprojects, "build");
|
||||
}
|
||||
});
|
||||
|
||||
["clean", "clobber"].forEach(function(aTaskName)
|
||||
{
|
||||
task (aTaskName, function()
|
||||
{
|
||||
// Traverse standard framework/tool targets
|
||||
subjake(subprojects, aTaskName);
|
||||
|
||||
// Explicitly target the manual tests for wipe operations
|
||||
subjake(["Tests/Manual"], aTaskName);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -43,10 +66,32 @@ filedir ($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, ["debug", "release"], function(
|
||||
utilsFile.cp_r(path.join($BUILD_DIR, "Debug", "BlendKit"), path.join($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "BlendKit"));
|
||||
});
|
||||
|
||||
task ("CommonJS", [$BUILD_CJS_OBJECTIVE_J_DEBUG_FRAMEWORKS, $BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "debug", "release"], function() {
|
||||
task ("CommonJS", [$BUILD_CJS_OBJECTIVE_J_DEBUG_FRAMEWORKS,$BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "debug", "release"], function() {
|
||||
});
|
||||
|
||||
// Install everything in the dist directory
|
||||
task ("build-manual-tests-symlinks", function()
|
||||
{
|
||||
var fwDir = path.join("Tests", "Manual", ".Frameworks");
|
||||
fs.mkdirSync(fwDir, { recursive: true });
|
||||
|
||||
var frameworks = [
|
||||
{ src: path.join($BUILD_CJS_OBJECTIVE_J_DEBUG_FRAMEWORKS, "Objective-J"), name: "Objective-J" },
|
||||
{ src: path.join($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "Foundation"), name: "Foundation" },
|
||||
{ src: path.join($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "AppKit"), name: "AppKit" },
|
||||
{ src: path.join($BUILD_CJS_CAPPUCCINO_DEBUG_FRAMEWORKS, "BlendKit"), name: "BlendKit" }
|
||||
];
|
||||
|
||||
frameworks.forEach(function(fw) {
|
||||
var dest = path.join(fwDir, fw.name);
|
||||
utilsFile.rm_rf(dest);
|
||||
fs.symlinkSync(path.resolve(fw.src), dest, 'dir');
|
||||
});
|
||||
});
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// NPM Distribution & Legacy Artifacts
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
task ("dist", ["CommonJS"], function()
|
||||
{
|
||||
installCopy($BUILD_CJS_OBJECTIVE_J, false);
|
||||
@@ -59,8 +104,6 @@ task ("sudo-dist", ["CommonJS"], function()
|
||||
installCopy($BUILD_CJS_CAPPUCCINO, true);
|
||||
});
|
||||
|
||||
// Install everything in the dist directory (task dist) and
|
||||
// create symlinks to the 'dist' binaries in the global 'npm prefix' path
|
||||
task ("install", ["dist"], function()
|
||||
{
|
||||
installGlobal($BUILD_CJS_OBJECTIVE_J, false);
|
||||
@@ -133,7 +176,6 @@ task ("documentation-no-frame", function()
|
||||
|
||||
task ("docset", function()
|
||||
{
|
||||
// First, check if docsetutil is available. This is only required for this task.
|
||||
if (!executableExists("docsetutil")) {
|
||||
console.error("\nError: 'docsetutil' is not installed, but it's required to build the docset.".red);
|
||||
console.log("This tool is no longer bundled with Xcode, but can be installed with Homebrew:");
|
||||
@@ -141,7 +183,6 @@ task ("docset", function()
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// If the tool exists, proceed with the build.
|
||||
generateDocs(true, true);
|
||||
});
|
||||
|
||||
@@ -167,7 +208,6 @@ function generateDocs(/* boolean */ noFrame, /* boolean */ buildDocset = false)
|
||||
return;
|
||||
}
|
||||
|
||||
// --- Temporary Directory Setup ---
|
||||
const projectRoot = process.cwd();
|
||||
const tempDir = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), 'capp-docs-')));
|
||||
console.log(`Using temporary directory for build: ${tempDir}`);
|
||||
@@ -175,7 +215,6 @@ function generateDocs(/* boolean */ noFrame, /* boolean */ buildDocset = false)
|
||||
try {
|
||||
var documentationDir = path.join(projectRoot, "Tools", "Documentation");
|
||||
|
||||
// --- Pre-processing ---
|
||||
console.log("Pre-processing source files...");
|
||||
const preProcessorsDir = path.join(documentationDir, "preprocess");
|
||||
var processors = fs.readdirSync(preProcessorsDir).sort();
|
||||
@@ -185,7 +224,6 @@ function generateDocs(/* boolean */ noFrame, /* boolean */ buildDocset = false)
|
||||
childProcess.execSync(`"${processorPath}" "${projectRoot}"`, { stdio: 'inherit', cwd: tempDir });
|
||||
}
|
||||
|
||||
// --- Doxygen Execution ---
|
||||
const doxygenConfigFile = path.join(documentationDir, "Cappuccino.doxygen");
|
||||
const doxygenTempConfig = path.join(tempDir, "Cappuccino.doxygen");
|
||||
fs.copyFileSync(doxygenConfigFile, doxygenTempConfig);
|
||||
@@ -202,8 +240,6 @@ function generateDocs(/* boolean */ noFrame, /* boolean */ buildDocset = false)
|
||||
const htmlOutputDir = path.join(generatedDocsRoot, "html");
|
||||
const makefilePath = path.join(htmlOutputDir, "Makefile");
|
||||
|
||||
// --- Makefile Execution (ONLY for docset) ---
|
||||
// For a standard 'jake docs', we do NOT run make.
|
||||
if (buildDocset && fs.existsSync(makefilePath)) {
|
||||
console.log("Patching Makefile to use 'docsetutil' from PATH...");
|
||||
childProcess.execSync(`sed -i.bak 's|"\\$(XCODE_INSTALL_DIR)"/usr/bin/docsetutil|docsetutil|' "${makefilePath}"`);
|
||||
@@ -212,7 +248,6 @@ function generateDocs(/* boolean */ noFrame, /* boolean */ buildDocset = false)
|
||||
childProcess.execSync('make', { stdio: 'inherit', cwd: htmlOutputDir });
|
||||
}
|
||||
|
||||
// --- Post-processing ---
|
||||
console.log("Post-processing generated documentation...");
|
||||
const postProcessorsDir = path.join(documentationDir, "postprocess");
|
||||
processors = fs.readdirSync(postProcessorsDir).sort();
|
||||
@@ -222,14 +257,12 @@ function generateDocs(/* boolean */ noFrame, /* boolean */ buildDocset = false)
|
||||
childProcess.execSync(`"${processorPath}" "${projectRoot}" "${htmlOutputDir}"`, { stdio: 'inherit', cwd: tempDir });
|
||||
}
|
||||
|
||||
// --- Final Installation ---
|
||||
if (fs.existsSync(generatedDocsRoot)) {
|
||||
if (fs.existsSync($DOCUMENTATION_BUILD)) {
|
||||
fs.rmSync($DOCUMENTATION_BUILD, { recursive: true, force: true });
|
||||
}
|
||||
fs.renameSync(generatedDocsRoot, $DOCUMENTATION_BUILD);
|
||||
|
||||
// Manually copy the custom CSS file
|
||||
const finalHtmlPath = path.join($DOCUMENTATION_BUILD, "html");
|
||||
const customCSS = path.join(documentationDir, "doxygen.css");
|
||||
if (fs.existsSync(customCSS)) {
|
||||
@@ -245,7 +278,6 @@ function generateDocs(/* boolean */ noFrame, /* boolean */ buildDocset = false)
|
||||
console.error("An error occurred during documentation generation:", e.message);
|
||||
process.exit(1);
|
||||
} finally {
|
||||
// --- Cleanup ---
|
||||
console.log(`Cleaning up temporary directory: ${tempDir}`);
|
||||
fs.rmSync(tempDir, { recursive: true, force: true });
|
||||
}
|
||||
@@ -255,14 +287,13 @@ function generateDocs(/* boolean */ noFrame, /* boolean */ buildDocset = false)
|
||||
|
||||
task ("downloads", ["starter_download"]);
|
||||
|
||||
$STARTER_README = path.join('Tools', 'READMEs', 'STARTER-README');
|
||||
$STARTER_BOOTSTRAP = 'bootstrap.sh';
|
||||
$STARTER_README = path.join('Tools', 'READMEs', 'STARTER-README');$STARTER_BOOTSTRAP = 'bootstrap.sh';
|
||||
$STARTER_DOWNLOAD = path.join($BUILD_DIR, 'Cappuccino', 'Starter');
|
||||
$STARTER_DOWNLOAD_APPLICATION = path.join($STARTER_DOWNLOAD, 'NewApplication');
|
||||
$STARTER_DOWNLOAD_README = path.join($STARTER_DOWNLOAD, 'README');
|
||||
$STARTER_DOWNLOAD_BOOTSTRAP = path.join($STARTER_DOWNLOAD, 'bootstrap.sh');
|
||||
|
||||
task ("starter_download", [$STARTER_DOWNLOAD_APPLICATION, $STARTER_DOWNLOAD_README, $STARTER_DOWNLOAD_BOOTSTRAP, "documentation"], function()
|
||||
task ("starter_download", [$STARTER_DOWNLOAD_APPLICATION, $STARTER_DOWNLOAD_README,$STARTER_DOWNLOAD_BOOTSTRAP, "documentation"], function()
|
||||
{
|
||||
if (FILE.exists($DOCUMENTATION_BUILD))
|
||||
{
|
||||
@@ -277,16 +308,12 @@ filedir ($STARTER_DOWNLOAD_APPLICATION, ["CommonJS"], function()
|
||||
FILE.mkdirs($STARTER_DOWNLOAD);
|
||||
|
||||
if (OS.system(["capp", "gen", $STARTER_DOWNLOAD_APPLICATION, "-t", "Application", "--noconfig"]))
|
||||
// FIXME: uncomment this: we get conversion errors
|
||||
OS.exit(1); // rake abort if ($? != 0)
|
||||
//{}
|
||||
// No tools means no objective-j gem
|
||||
// FILE.rm(FILE.join($STARTER_DOWNLOAD_APPLICATION, 'Rakefile'))
|
||||
OS.exit(1);
|
||||
});
|
||||
|
||||
filedir ($STARTER_DOWNLOAD_README, [$STARTER_README], function()
|
||||
{
|
||||
utilsFile.cp($STARTER_README, $STARTER_DOWNLOAD_README);
|
||||
utilsFile.cp($STARTER_README,$STARTER_DOWNLOAD_README);
|
||||
});
|
||||
|
||||
filedir ($STARTER_DOWNLOAD_BOOTSTRAP, [$STARTER_BOOTSTRAP], function()
|
||||
@@ -302,7 +329,6 @@ task ("deploy", ["downloads", "demos"], function()
|
||||
{
|
||||
var cappuccino_output_path = path.join($BUILD_DIR, 'Cappuccino');
|
||||
|
||||
// zip the starter pack
|
||||
var starter_zip_output = path.join($BUILD_DIR, 'Cappuccino', 'Starter.zip');
|
||||
utilsFile.rm_rf(starter_zip_output);
|
||||
|
||||
@@ -363,14 +389,12 @@ task ("demos", function()
|
||||
return !demo.excluded();
|
||||
}).forEach(function(demo)
|
||||
{
|
||||
// copy frameworks into the demos
|
||||
utilsFile.cp_r(path.join($STARTER_DOWNLOAD_APPLICATION, "Frameworks"), path.join(demo.path(), "Frameworks"));
|
||||
utilsFile.rm_rf(path.join(demo.path(), "Frameworks", "Debug"));
|
||||
|
||||
var outputPath = demo.name().replace(/\s/g, "-") + ".zip";
|
||||
OS.system("cd " + OS.enquote(FILE.dirname(demo.path()))+" && zip -ry -8 " + OS.enquote(outputPath) + " " + OS.enquote(FILE.basename(demo.path())));
|
||||
|
||||
// remove the frameworks
|
||||
utilsFile.rm_rf(path.join(demo.path(), "Frameworks"));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1125,8 +1125,14 @@
|
||||
/*!
|
||||
Test the speed of set an big array when the old was an empty.
|
||||
Also test the speed when an empty array is set and the old is an big
|
||||
|
||||
Disabled: This method is a macro-benchmark lacking functional assertions.
|
||||
Absolute wall-clock timings are non-deterministic across disparate CI environments
|
||||
and pollute standard test output. Actionable performance tracking requires a
|
||||
dedicated metrics harness. Retained only for ad-hoc local profiling.
|
||||
*/
|
||||
- (void)testPerformance
|
||||
|
||||
- (void)disabled_testPerformance
|
||||
{
|
||||
[self initControllerWithContentBinding];
|
||||
|
||||
|
||||
+474
-10
@@ -1,31 +1,495 @@
|
||||
@import <AppKit/CPTreeNode.j>
|
||||
@import <Foundation/CPIndexPath.j>
|
||||
@import <Foundation/CPSortDescriptor.j>
|
||||
@import <Foundation/CPKeyedArchiver.j>
|
||||
|
||||
@implementation CPTreeNodeTest : OJTestCase
|
||||
{
|
||||
CPTreeNode treeNode;
|
||||
CPTreeNode childNode;
|
||||
CPTreeNode root;
|
||||
CPTreeNode child1;
|
||||
CPTreeNode child2;
|
||||
CPMutableArray _kvoRecordedChanges;
|
||||
}
|
||||
|
||||
- (void)setUp
|
||||
{
|
||||
// This will init the global var CPApp which are used internally in the AppKit
|
||||
[[CPApplication alloc] init];
|
||||
|
||||
treeNode = [CPTreeNode treeNodeWithRepresentedObject:nil];
|
||||
root = [CPTreeNode treeNodeWithRepresentedObject:@"root"];
|
||||
child1 = [CPTreeNode treeNodeWithRepresentedObject:@"child1"];
|
||||
child2 = [CPTreeNode treeNodeWithRepresentedObject:@"child2"];
|
||||
|
||||
childNode = [CPTreeNode treeNodeWithRepresentedObject:nil];
|
||||
[treeNode insertObject:childNode inChildNodesAtIndex:0];
|
||||
_kvoRecordedChanges = [];
|
||||
}
|
||||
|
||||
/*
|
||||
* Records each KVO notification delivered to this test instance.
|
||||
* Used by the KVO-contract tests below.
|
||||
*/
|
||||
- (void)observeValueForKeyPath:(CPString)aKeyPath ofObject:(id)anObject change:(CPDictionary)aChange context:(id)aContext
|
||||
{
|
||||
[_kvoRecordedChanges addObject:aChange];
|
||||
}
|
||||
|
||||
// 1. creation and representedObject
|
||||
- (void)testCreationAndRepresentedObject
|
||||
{
|
||||
[self assert:@"root" equals:[root representedObject]];
|
||||
[self assertTrue:([root isKindOfClass:[CPTreeNode class]])];
|
||||
}
|
||||
|
||||
// 2. root/parent relationships
|
||||
- (void)testParentRelationships
|
||||
{
|
||||
[self assert:nil equals:[root parentNode]];
|
||||
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[self assert:root equals:[child1 parentNode]];
|
||||
}
|
||||
|
||||
// 3. insertion and automatic reparenting
|
||||
- (void)testAutomaticReparenting
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[root insertObject:child2 inChildNodesAtIndex:0];
|
||||
|
||||
[self assert:2 equals:[root countOfChildNodes]];
|
||||
|
||||
// Move child1 to child2. It should be removed from root automatically.
|
||||
[child2 insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
[self assert:child2 equals:[child1 parentNode]];
|
||||
[self assert:1 equals:[root countOfChildNodes]];
|
||||
[self assert:child2 equals:[root objectInChildNodesAtIndex:0]];
|
||||
[self assert:child1 equals:[child2 objectInChildNodesAtIndex:0]];
|
||||
}
|
||||
|
||||
// 4. removal
|
||||
- (void)testRemoval
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[root removeObjectFromChildNodesAtIndex:0];
|
||||
|
||||
[self assert:nil equals:[child1 parentNode]];
|
||||
[self assert:0 equals:[root countOfChildNodes]];
|
||||
}
|
||||
|
||||
// 5. replacement
|
||||
- (void)testReplacement
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[root replaceObjectInChildNodesAtIndex:0 withObject:child2];
|
||||
|
||||
[self assert:nil equals:[child1 parentNode]];
|
||||
[self assert:root equals:[child2 parentNode]];
|
||||
[self assert:child2 equals:[root objectInChildNodesAtIndex:0]];
|
||||
}
|
||||
|
||||
// 6. moving an existing child (verifies index adjustment logic)
|
||||
- (void)testMovingExistingChild
|
||||
{
|
||||
var c3 = [CPTreeNode treeNodeWithRepresentedObject:@"child3"];
|
||||
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[root insertObject:child2 inChildNodesAtIndex:1];
|
||||
[root insertObject:c3 inChildNodesAtIndex:2];
|
||||
|
||||
// Array is [child1, child2, c3]. Move child1 (index 0) to index 2.
|
||||
[root insertObject:child1 inChildNodesAtIndex:2];
|
||||
|
||||
[self assert:child2 equals:[root objectInChildNodesAtIndex:0]];
|
||||
[self assert:c3 equals:[root objectInChildNodesAtIndex:1]];
|
||||
[self assert:child1 equals:[root objectInChildNodesAtIndex:2]];
|
||||
|
||||
// Move child1 (index 2) back to index 0.
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
[self assert:child1 equals:[root objectInChildNodesAtIndex:0]];
|
||||
[self assert:child2 equals:[root objectInChildNodesAtIndex:1]];
|
||||
[self assert:c3 equals:[root objectInChildNodesAtIndex:2]];
|
||||
}
|
||||
|
||||
// 7. rejection of cyclic relationships
|
||||
- (void)testCycleRejection
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
var e = [self assertThrows:function()
|
||||
{
|
||||
[child1 insertObject:root inChildNodesAtIndex:0];
|
||||
}];
|
||||
|
||||
[self assert:CPInvalidArgumentException equals:[e name]];
|
||||
}
|
||||
|
||||
// 8. childNodes and mutableChildNodes
|
||||
- (void)testChildNodesCopyAndMutableProxy
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
// childNodes must return a defensive copy
|
||||
var copy = [root childNodes];
|
||||
[copy removeObjectAtIndex:0];
|
||||
[self assert:1 equals:[root countOfChildNodes]];
|
||||
|
||||
// mutableChildNodes must proxy back through KVC
|
||||
var mutableProxy = [root mutableChildNodes];
|
||||
[mutableProxy addObject:child2];
|
||||
|
||||
[self assert:2 equals:[root countOfChildNodes]];
|
||||
[self assert:root equals:[child2 parentNode]];
|
||||
}
|
||||
|
||||
// 9. index paths
|
||||
- (void)testIndexPaths
|
||||
{
|
||||
[self assert:[CPIndexPath indexPathWithIndexes:[]] equals:[root indexPath]];
|
||||
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[self assert:[CPIndexPath indexPathWithIndex:0] equals:[child1 indexPath]];
|
||||
|
||||
[child1 insertObject:child2 inChildNodesAtIndex:0];
|
||||
[self assert:[CPIndexPath indexPathWithIndexes:[0, 0]] equals:[child2 indexPath]];
|
||||
}
|
||||
|
||||
// 10. descendant lookup
|
||||
- (void)testDescendantNodeAtIndexPath
|
||||
{
|
||||
var indexPath = [CPIndexPath indexPathWithIndex:0];
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[child1 insertObject:child2 inChildNodesAtIndex:0];
|
||||
|
||||
[self assert:childNode equals:[treeNode descendantNodeAtIndexPath:indexPath]];
|
||||
var path = [CPIndexPath indexPathWithIndexes:[0, 0]];
|
||||
[self assert:child2 equals:[root descendantNodeAtIndexPath:path]];
|
||||
|
||||
indexPath = [CPIndexPath indexPathWithIndex:1];
|
||||
var invalidPath = [CPIndexPath indexPathWithIndexes:[1, 0]];
|
||||
[self assert:nil equals:[root descendantNodeAtIndexPath:invalidPath]];
|
||||
}
|
||||
|
||||
[self assert:nil equals:[treeNode descendantNodeAtIndexPath:indexPath]];
|
||||
// 11. recursive sorting
|
||||
- (void)testRecursiveSorting
|
||||
{
|
||||
var nodeA = [CPTreeNode treeNodeWithRepresentedObject:@"A"];
|
||||
var nodeC = [CPTreeNode treeNodeWithRepresentedObject:@"C"];
|
||||
var nodeB = [CPTreeNode treeNodeWithRepresentedObject:@"B"];
|
||||
|
||||
[root insertObject:nodeC inChildNodesAtIndex:0];
|
||||
[root insertObject:nodeA inChildNodesAtIndex:1];
|
||||
[root insertObject:nodeB inChildNodesAtIndex:2];
|
||||
|
||||
// Add children to nodeB to verify recursion
|
||||
var childB2 = [CPTreeNode treeNodeWithRepresentedObject:@"B2"];
|
||||
var childB1 = [CPTreeNode treeNodeWithRepresentedObject:@"B1"];
|
||||
|
||||
[nodeB insertObject:childB2 inChildNodesAtIndex:0];
|
||||
[nodeB insertObject:childB1 inChildNodesAtIndex:1];
|
||||
|
||||
var sd = [[CPSortDescriptor alloc] initWithKey:@"representedObject" ascending:YES];
|
||||
|
||||
[root sortWithSortDescriptors:[sd] recursively:YES];
|
||||
|
||||
[self assert:nodeA equals:[root objectInChildNodesAtIndex:0]];
|
||||
[self assert:nodeB equals:[root objectInChildNodesAtIndex:1]];
|
||||
[self assert:nodeC equals:[root objectInChildNodesAtIndex:2]];
|
||||
|
||||
[self assert:childB1 equals:[nodeB objectInChildNodesAtIndex:0]];
|
||||
[self assert:childB2 equals:[nodeB objectInChildNodesAtIndex:1]];
|
||||
}
|
||||
|
||||
// 12. NS/Cocoa-style KVC mutation behavior (Strict validation)
|
||||
- (void)testStrictChildValidation
|
||||
{
|
||||
var e = [self assertThrows:function()
|
||||
{
|
||||
[root insertObject:[CPObject new] inChildNodesAtIndex:0];
|
||||
}];
|
||||
|
||||
[self assert:CPInvalidArgumentException equals:[e name]];
|
||||
}
|
||||
|
||||
// 13. coding/decoding and restoration of parent relationships
|
||||
- (void)testCodingAndDecoding
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[child1 insertObject:child2 inChildNodesAtIndex:0];
|
||||
|
||||
var data = [CPKeyedArchiver archivedDataWithRootObject:root];
|
||||
var decodedRoot = [CPKeyedUnarchiver unarchiveObjectWithData:data];
|
||||
|
||||
[self assert:1 equals:[decodedRoot countOfChildNodes]];
|
||||
|
||||
var decodedChild1 = [decodedRoot objectInChildNodesAtIndex:0];
|
||||
[self assert:decodedRoot equals:[decodedChild1 parentNode]];
|
||||
|
||||
var decodedChild2 = [decodedChild1 objectInChildNodesAtIndex:0];
|
||||
[self assert:decodedChild1 equals:[decodedChild2 parentNode]];
|
||||
}
|
||||
|
||||
- (void)testMutableChildNodesCountDoesNotCopy
|
||||
{
|
||||
/*
|
||||
Validates that evaluating the count of the mutable proxy does not trigger
|
||||
the underlying KVC getter (childNodes). The getter returns a defensive
|
||||
copy. Invoking it for a simple count degrades an O(1) operation to O(N)
|
||||
allocations.
|
||||
*/
|
||||
var spy = [[CPTreeNodeCountingSpy alloc] initWithRepresentedObject:@"spy"];
|
||||
|
||||
for (var i = 0; i < 50; i++)
|
||||
[spy insertObject:[CPTreeNode treeNodeWithRepresentedObject:i] inChildNodesAtIndex:i];
|
||||
|
||||
[spy setChildNodesCallCount:0];
|
||||
|
||||
[[spy mutableChildNodes] count];
|
||||
|
||||
[self assert:0 equals:[spy childNodesCallCount]
|
||||
message:"count via mutableChildNodes should not invoke the copying childNodes accessor"];
|
||||
}
|
||||
|
||||
// 14. replacing at an index with a child already present at a different index (same parent)
|
||||
- (void)testReplaceExistingChildSameParent
|
||||
{
|
||||
var c3 = [CPTreeNode treeNodeWithRepresentedObject:@"child3"];
|
||||
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[root insertObject:child2 inChildNodesAtIndex:1];
|
||||
[root insertObject:c3 inChildNodesAtIndex:2];
|
||||
|
||||
// Array is [child1, child2, c3]. Replace the object at index 2 (c3) with child1.
|
||||
[root replaceObjectInChildNodesAtIndex:2 withObject:child1];
|
||||
|
||||
[self assert:2 equals:[root countOfChildNodes]];
|
||||
[self assert:child2 equals:[root objectInChildNodesAtIndex:0]];
|
||||
[self assert:child1 equals:[root objectInChildNodesAtIndex:1]];
|
||||
[self assert:root equals:[child1 parentNode]];
|
||||
[self assert:nil equals:[c3 parentNode]];
|
||||
}
|
||||
|
||||
// 15. rejection of cyclic relationships via replacement
|
||||
- (void)testReplaceCycleRejection
|
||||
{
|
||||
var c3 = [CPTreeNode treeNodeWithRepresentedObject:@"child3"];
|
||||
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[child1 insertObject:child2 inChildNodesAtIndex:0];
|
||||
[child2 insertObject:c3 inChildNodesAtIndex:0];
|
||||
|
||||
var e = [self assertThrows:function()
|
||||
{
|
||||
[child2 replaceObjectInChildNodesAtIndex:0 withObject:root];
|
||||
}];
|
||||
|
||||
[self assert:CPInvalidArgumentException equals:[e name]];
|
||||
}
|
||||
|
||||
// 16. KVO: same-parent move reports a paired removal and insertion on childNodes
|
||||
//
|
||||
// Disabled: structurally impossible with the current accessor-call approach.
|
||||
// _CPKVOProxy coalesces nested willChange/didChange calls for the same key
|
||||
// on the same object (see _sendNotificationsForKey:changeOptions:isBefore:
|
||||
// in CPKeyValueObserving.j); the inner Removal bracket opened by
|
||||
// removeObjectFromChildNodesAtIndex: is silently discarded inside the outer
|
||||
// Insertion bracket already open on root. Fixing this requires firing a
|
||||
// single CPKeyValueChangeReplacement instead of two nested accessor calls.
|
||||
- (void)disabled_testKVONotificationsDuringSameParentMove
|
||||
{
|
||||
var c3 = [CPTreeNode treeNodeWithRepresentedObject:@"child3"];
|
||||
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[root insertObject:child2 inChildNodesAtIndex:1];
|
||||
[root insertObject:c3 inChildNodesAtIndex:2];
|
||||
|
||||
[root addObserver:self forKeyPath:@"childNodes" options:0 context:nil];
|
||||
|
||||
// Array is [child1, child2, c3]. Move child1 (index 0) to index 2.
|
||||
[root insertObject:child1 inChildNodesAtIndex:2];
|
||||
|
||||
[root removeObserver:self forKeyPath:@"childNodes"];
|
||||
|
||||
var removals = 0,
|
||||
insertions = 0,
|
||||
count = [_kvoRecordedChanges count];
|
||||
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
var kind = [[_kvoRecordedChanges objectAtIndex:i] objectForKey:CPKeyValueChangeKindKey];
|
||||
|
||||
if (kind === CPKeyValueChangeRemoval)
|
||||
removals++;
|
||||
else if (kind === CPKeyValueChangeInsertion)
|
||||
insertions++;
|
||||
}
|
||||
|
||||
[self assert:1 equals:removals
|
||||
message:"a same-parent move must report a removal at the original position"];
|
||||
[self assert:1 equals:insertions
|
||||
message:"a same-parent move must report an insertion at the target position"];
|
||||
}
|
||||
|
||||
// 17. KVO: cross-parent move reports a removal on the old parent and an insertion on the new parent
|
||||
- (void)testKVONotificationsDuringCrossParentMove
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
[root addObserver:self forKeyPath:@"childNodes" options:0 context:nil];
|
||||
[child2 addObserver:self forKeyPath:@"childNodes" options:0 context:nil];
|
||||
|
||||
// child1 currently belongs to root. Move it under child2.
|
||||
[child2 insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
[root removeObserver:self forKeyPath:@"childNodes"];
|
||||
[child2 removeObserver:self forKeyPath:@"childNodes"];
|
||||
|
||||
var removals = 0,
|
||||
insertions = 0,
|
||||
count = [_kvoRecordedChanges count];
|
||||
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
var kind = [[_kvoRecordedChanges objectAtIndex:i] objectForKey:CPKeyValueChangeKindKey];
|
||||
|
||||
if (kind === CPKeyValueChangeRemoval)
|
||||
removals++;
|
||||
else if (kind === CPKeyValueChangeInsertion)
|
||||
insertions++;
|
||||
}
|
||||
|
||||
[self assert:1 equals:removals
|
||||
message:"the old parent's childNodes must report the removal"];
|
||||
[self assert:1 equals:insertions
|
||||
message:"the new parent's childNodes must report the insertion"];
|
||||
}
|
||||
|
||||
// 18. KVO: reparenting notifies observers of parentNode
|
||||
//
|
||||
// Disabled: parentNode has no setParentNode:, so there is no selector for
|
||||
// the KVO swizzler to instrument. Not a bug to fix incrementally; requires
|
||||
// deciding whether parentNode becomes a real settable property.
|
||||
- (void)disabled_testParentNodeNotifiesOnMove
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
[child1 addObserver:self forKeyPath:@"parentNode" options:0 context:nil];
|
||||
|
||||
// child1 currently belongs to root. Move it under child2.
|
||||
[child2 insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
[child1 removeObserver:self forKeyPath:@"parentNode"];
|
||||
|
||||
[self assert:1 equals:[_kvoRecordedChanges count]
|
||||
message:"reparenting must notify observers of parentNode"];
|
||||
}
|
||||
|
||||
// 19. mutableChildNodes proxy: remove and replace
|
||||
- (void)testMutableChildNodesProxyRemoveAndReplace
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
[root insertObject:child2 inChildNodesAtIndex:1];
|
||||
|
||||
var proxy = [root mutableChildNodes];
|
||||
|
||||
[proxy removeObjectAtIndex:0];
|
||||
|
||||
[self assert:1 equals:[root countOfChildNodes]];
|
||||
[self assert:child2 equals:[root objectInChildNodesAtIndex:0]];
|
||||
[self assert:nil equals:[child1 parentNode]];
|
||||
|
||||
var c3 = [CPTreeNode treeNodeWithRepresentedObject:@"child3"];
|
||||
|
||||
[proxy replaceObjectAtIndex:0 withObject:c3];
|
||||
|
||||
[self assert:c3 equals:[root objectInChildNodesAtIndex:0]];
|
||||
[self assert:root equals:[c3 parentNode]];
|
||||
[self assert:nil equals:[child2 parentNode]];
|
||||
}
|
||||
|
||||
// 20. range validation on insertion
|
||||
- (void)testInsertOutOfBoundsRaises
|
||||
{
|
||||
var e1 = [self assertThrows:function()
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:-1];
|
||||
}];
|
||||
|
||||
[self assert:CPRangeException equals:[e1 name]];
|
||||
|
||||
var e2 = [self assertThrows:function()
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:1];
|
||||
}];
|
||||
|
||||
[self assert:CPRangeException equals:[e2 name]];
|
||||
}
|
||||
|
||||
// 21. non-recursive sort leaves descendants untouched
|
||||
- (void)testSortNonRecursive
|
||||
{
|
||||
var nodeA = [CPTreeNode treeNodeWithRepresentedObject:@"A"];
|
||||
var nodeC = [CPTreeNode treeNodeWithRepresentedObject:@"C"];
|
||||
var nodeB = [CPTreeNode treeNodeWithRepresentedObject:@"B"];
|
||||
|
||||
[root insertObject:nodeC inChildNodesAtIndex:0];
|
||||
[root insertObject:nodeA inChildNodesAtIndex:1];
|
||||
[root insertObject:nodeB inChildNodesAtIndex:2];
|
||||
|
||||
var childB2 = [CPTreeNode treeNodeWithRepresentedObject:@"B2"];
|
||||
var childB1 = [CPTreeNode treeNodeWithRepresentedObject:@"B1"];
|
||||
|
||||
[nodeB insertObject:childB2 inChildNodesAtIndex:0];
|
||||
[nodeB insertObject:childB1 inChildNodesAtIndex:1];
|
||||
|
||||
var sd = [[CPSortDescriptor alloc] initWithKey:@"representedObject" ascending:YES];
|
||||
|
||||
[root sortWithSortDescriptors:[sd] recursively:NO];
|
||||
|
||||
[self assert:nodeA equals:[root objectInChildNodesAtIndex:0]];
|
||||
[self assert:nodeB equals:[root objectInChildNodesAtIndex:1]];
|
||||
[self assert:nodeC equals:[root objectInChildNodesAtIndex:2]];
|
||||
|
||||
// Descendants of nodeB must remain in insertion order; only the top level was sorted.
|
||||
[self assert:childB2 equals:[nodeB objectInChildNodesAtIndex:0]];
|
||||
[self assert:childB1 equals:[nodeB objectInChildNodesAtIndex:1]];
|
||||
}
|
||||
|
||||
// 22. leaf status
|
||||
- (void)testIsLeaf
|
||||
{
|
||||
[self assertTrue:[root isLeaf]];
|
||||
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
[self assertFalse:[root isLeaf]];
|
||||
[self assertTrue:[child1 isLeaf]];
|
||||
}
|
||||
|
||||
// 23. descendant lookup for nil and zero-length index paths
|
||||
- (void)testDescendantNodeAtIndexPathDegenerateCases
|
||||
{
|
||||
[root insertObject:child1 inChildNodesAtIndex:0];
|
||||
|
||||
[self assert:root equals:[root descendantNodeAtIndexPath:nil]];
|
||||
[self assert:root equals:[root descendantNodeAtIndexPath:[CPIndexPath indexPathWithIndexes:[]]]];
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation CPTreeNodeCountingSpy : CPTreeNode
|
||||
{
|
||||
CPInteger _childNodesCallCount @accessors(property=childNodesCallCount);
|
||||
}
|
||||
|
||||
- (id)initWithRepresentedObject:(id)anObject
|
||||
{
|
||||
self = [super initWithRepresentedObject:anObject];
|
||||
|
||||
if (self)
|
||||
_childNodesCallCount = 0;
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
- (CPArray)childNodes
|
||||
{
|
||||
_childNodesCallCount++;
|
||||
return [super childNodes];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,63 +1,63 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15E65" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
|
||||
<dependencies>
|
||||
<deployment version="1050" identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
|
||||
<deployment version="1050" identifier="macosx" />
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117" />
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="450" id="451"/>
|
||||
<outlet property="delegate" destination="450" id="451" />
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder" />
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject" />
|
||||
<menu title="AMainMenu" systemMenu="main" id="29" userLabel="MainMenu">
|
||||
<items>
|
||||
<menuItem title="NewApplication" id="56">
|
||||
<menu key="submenu" title="NewApplication" systemMenu="apple" id="57">
|
||||
<menuItem title="CPAnimationContextTest" id="56">
|
||||
<menu key="submenu" title="CPAnimationContextTest" systemMenu="apple" id="57">
|
||||
<items>
|
||||
<menuItem title="About NewApplication" id="58">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menuItem title="About CPAnimationContextTest" id="58">
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="236">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="129" userLabel="121"/>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="129" userLabel="121" />
|
||||
<menuItem isSeparatorItem="YES" id="143">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Services" id="131">
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="130"/>
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="130" />
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="144">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Hide NewApplication" keyEquivalent="h" id="134">
|
||||
<menuItem title="Hide CPAnimationContextTest" keyEquivalent="h" id="134">
|
||||
<connections>
|
||||
<action selector="hide:" target="-1" id="367"/>
|
||||
<action selector="hide:" target="-1" id="367" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="145">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-1" id="368"/>
|
||||
<action selector="hideOtherApplications:" target="-1" id="368" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="150">
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-1" id="370"/>
|
||||
<action selector="unhideAllApplications:" target="-1" id="370" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="149">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Quit NewApplication" keyEquivalent="q" id="136" userLabel="1111">
|
||||
<menuItem title="Quit CPAnimationContextTest" keyEquivalent="q" id="136" userLabel="1111">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-3" id="449"/>
|
||||
<action selector="terminate:" target="-3" id="449" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -68,12 +68,12 @@
|
||||
<items>
|
||||
<menuItem title="New" keyEquivalent="n" id="82" userLabel="9">
|
||||
<connections>
|
||||
<action selector="newDocument:" target="-1" id="373"/>
|
||||
<action selector="newDocument:" target="-1" id="373" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open…" keyEquivalent="o" id="72">
|
||||
<connections>
|
||||
<action selector="openDocument:" target="-1" id="374"/>
|
||||
<action selector="openDocument:" target="-1" id="374" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open Recent" id="124">
|
||||
@@ -81,49 +81,49 @@
|
||||
<items>
|
||||
<menuItem title="Clear Menu" id="126">
|
||||
<connections>
|
||||
<action selector="clearRecentDocuments:" target="-1" id="127"/>
|
||||
<action selector="clearRecentDocuments:" target="-1" id="127" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="79" userLabel="7">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Close" keyEquivalent="w" id="73" userLabel="1">
|
||||
<connections>
|
||||
<action selector="performClose:" target="-1" id="193"/>
|
||||
<action selector="performClose:" target="-1" id="193" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Save" keyEquivalent="s" id="75" userLabel="3">
|
||||
<connections>
|
||||
<action selector="saveDocument:" target="-1" id="362"/>
|
||||
<action selector="saveDocument:" target="-1" id="362" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Save As…" keyEquivalent="S" id="80" userLabel="8">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="saveDocumentAs:" target="-1" id="363"/>
|
||||
<action selector="saveDocumentAs:" target="-1" id="363" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Revert to Saved" id="112" userLabel="10">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="revertDocumentToSaved:" target="-1" id="364"/>
|
||||
<action selector="revertDocumentToSaved:" target="-1" id="364" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="74" userLabel="2">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Page Setup..." keyEquivalent="P" id="77" userLabel="5">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="runPageLayout:" target="-1" id="87"/>
|
||||
<action selector="runPageLayout:" target="-1" id="87" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Print…" keyEquivalent="p" id="78" userLabel="6">
|
||||
<connections>
|
||||
<action selector="print:" target="-1" id="86"/>
|
||||
<action selector="print:" target="-1" id="86" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -134,62 +134,62 @@
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="207">
|
||||
<connections>
|
||||
<action selector="undo:" target="-1" id="223"/>
|
||||
<action selector="undo:" target="-1" id="223" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="Z" id="215">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="redo:" target="-1" id="231"/>
|
||||
<action selector="redo:" target="-1" id="231" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="206">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="199">
|
||||
<connections>
|
||||
<action selector="cut:" target="-1" id="228"/>
|
||||
<action selector="cut:" target="-1" id="228" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="197">
|
||||
<connections>
|
||||
<action selector="copy:" target="-1" id="224"/>
|
||||
<action selector="copy:" target="-1" id="224" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="203">
|
||||
<connections>
|
||||
<action selector="paste:" target="-1" id="226"/>
|
||||
<action selector="paste:" target="-1" id="226" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Delete" id="202">
|
||||
<connections>
|
||||
<action selector="delete:" target="-1" id="235"/>
|
||||
<action selector="delete:" target="-1" id="235" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="198">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="-1" id="232"/>
|
||||
<action selector="selectAll:" target="-1" id="232" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="214">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Find" id="218">
|
||||
<menu key="submenu" title="Find" id="220">
|
||||
<items>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="241"/>
|
||||
<action selector="performFindPanelAction:" target="-1" id="241" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="208"/>
|
||||
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="208" />
|
||||
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="213">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="221"/>
|
||||
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="221" />
|
||||
<menuItem title="Jump to Selection" keyEquivalent="j" id="210">
|
||||
<connections>
|
||||
<action selector="centerSelectionInVisibleArea:" target="-1" id="245"/>
|
||||
<action selector="centerSelectionInVisibleArea:" target="-1" id="245" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -200,22 +200,22 @@
|
||||
<items>
|
||||
<menuItem title="Show Spelling…" keyEquivalent=":" id="204">
|
||||
<connections>
|
||||
<action selector="showGuessPanel:" target="-1" id="230"/>
|
||||
<action selector="showGuessPanel:" target="-1" id="230" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Spelling" keyEquivalent=";" id="201">
|
||||
<connections>
|
||||
<action selector="checkSpelling:" target="-1" id="225"/>
|
||||
<action selector="checkSpelling:" target="-1" id="225" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Spelling While Typing" id="219">
|
||||
<connections>
|
||||
<action selector="toggleContinuousSpellChecking:" target="-1" id="222"/>
|
||||
<action selector="toggleContinuousSpellChecking:" target="-1" id="222" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Grammar With Spelling" id="346">
|
||||
<connections>
|
||||
<action selector="toggleGrammarChecking:" target="-1" id="347"/>
|
||||
<action selector="toggleGrammarChecking:" target="-1" id="347" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -226,18 +226,18 @@
|
||||
<items>
|
||||
<menuItem title="Smart Copy/Paste" tag="1" keyEquivalent="f" id="350">
|
||||
<connections>
|
||||
<action selector="toggleSmartInsertDelete:" target="-1" id="355"/>
|
||||
<action selector="toggleSmartInsertDelete:" target="-1" id="355" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Quotes" tag="2" keyEquivalent="g" id="351">
|
||||
<connections>
|
||||
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356"/>
|
||||
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Links" tag="3" keyEquivalent="G" id="354">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="toggleAutomaticLinkDetection:" target="-1" id="357"/>
|
||||
<action selector="toggleAutomaticLinkDetection:" target="-1" id="357" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -248,12 +248,12 @@
|
||||
<items>
|
||||
<menuItem title="Start Speaking" id="196">
|
||||
<connections>
|
||||
<action selector="startSpeaking:" target="-1" id="233"/>
|
||||
<action selector="startSpeaking:" target="-1" id="233" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Stop Speaking" id="195">
|
||||
<connections>
|
||||
<action selector="stopSpeaking:" target="-1" id="227"/>
|
||||
<action selector="stopSpeaking:" target="-1" id="227" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -263,182 +263,182 @@
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Format" id="375">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<menu key="submenu" title="Format" id="376">
|
||||
<items>
|
||||
<menuItem title="Font" id="377">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<menu key="submenu" title="Font" systemMenu="font" id="388">
|
||||
<items>
|
||||
<menuItem title="Show Fonts" keyEquivalent="t" id="389"/>
|
||||
<menuItem title="Bold" tag="2" keyEquivalent="b" id="390"/>
|
||||
<menuItem title="Italic" tag="1" keyEquivalent="i" id="391"/>
|
||||
<menuItem title="Show Fonts" keyEquivalent="t" id="389" />
|
||||
<menuItem title="Bold" tag="2" keyEquivalent="b" id="390" />
|
||||
<menuItem title="Italic" tag="1" keyEquivalent="i" id="391" />
|
||||
<menuItem title="Underline" keyEquivalent="u" id="392">
|
||||
<connections>
|
||||
<action selector="underline:" target="-1" id="432"/>
|
||||
<action selector="underline:" target="-1" id="432" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="393"/>
|
||||
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="394"/>
|
||||
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="395"/>
|
||||
<menuItem isSeparatorItem="YES" id="396"/>
|
||||
<menuItem isSeparatorItem="YES" id="393" />
|
||||
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="394" />
|
||||
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="395" />
|
||||
<menuItem isSeparatorItem="YES" id="396" />
|
||||
<menuItem title="Kern" id="397">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<menu key="submenu" title="Kern" id="415">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="416">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="useStandardKerning:" target="-1" id="438"/>
|
||||
<action selector="useStandardKerning:" target="-1" id="438" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="417">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="turnOffKerning:" target="-1" id="441"/>
|
||||
<action selector="turnOffKerning:" target="-1" id="441" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Tighten" id="418">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="tightenKerning:" target="-1" id="431"/>
|
||||
<action selector="tightenKerning:" target="-1" id="431" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Loosen" id="419">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="loosenKerning:" target="-1" id="435"/>
|
||||
<action selector="loosenKerning:" target="-1" id="435" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Ligature" id="398">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<menu key="submenu" title="Ligature" id="411">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="412">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="useStandardLigatures:" target="-1" id="439"/>
|
||||
<action selector="useStandardLigatures:" target="-1" id="439" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="413">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="turnOffLigatures:" target="-1" id="440"/>
|
||||
<action selector="turnOffLigatures:" target="-1" id="440" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use All" id="414">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="useAllLigatures:" target="-1" id="434"/>
|
||||
<action selector="useAllLigatures:" target="-1" id="434" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Baseline" id="399">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<menu key="submenu" title="Baseline" id="405">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="406">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="unscript:" target="-1" id="437"/>
|
||||
<action selector="unscript:" target="-1" id="437" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Superscript" id="407">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="superscript:" target="-1" id="430"/>
|
||||
<action selector="superscript:" target="-1" id="430" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Subscript" id="408">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="subscript:" target="-1" id="429"/>
|
||||
<action selector="subscript:" target="-1" id="429" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Raise" id="409">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="raiseBaseline:" target="-1" id="426"/>
|
||||
<action selector="raiseBaseline:" target="-1" id="426" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Lower" id="410">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="lowerBaseline:" target="-1" id="427"/>
|
||||
<action selector="lowerBaseline:" target="-1" id="427" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="400"/>
|
||||
<menuItem isSeparatorItem="YES" id="400" />
|
||||
<menuItem title="Show Colors" keyEquivalent="C" id="401">
|
||||
<connections>
|
||||
<action selector="orderFrontColorPanel:" target="-1" id="433"/>
|
||||
<action selector="orderFrontColorPanel:" target="-1" id="433" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="402"/>
|
||||
<menuItem isSeparatorItem="YES" id="402" />
|
||||
<menuItem title="Copy Style" keyEquivalent="c" id="403">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="copyFont:" target="-1" id="428"/>
|
||||
<action selector="copyFont:" target="-1" id="428" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Style" keyEquivalent="v" id="404">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="pasteFont:" target="-1" id="436"/>
|
||||
<action selector="pasteFont:" target="-1" id="436" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Text" id="378">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<menu key="submenu" title="Text" id="379">
|
||||
<items>
|
||||
<menuItem title="Align Left" keyEquivalent="{" id="380">
|
||||
<connections>
|
||||
<action selector="alignLeft:" target="-1" id="442"/>
|
||||
<action selector="alignLeft:" target="-1" id="442" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Center" keyEquivalent="|" id="381">
|
||||
<connections>
|
||||
<action selector="alignCenter:" target="-1" id="445"/>
|
||||
<action selector="alignCenter:" target="-1" id="445" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Justify" id="382">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="alignJustified:" target="-1" id="443"/>
|
||||
<action selector="alignJustified:" target="-1" id="443" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Align Right" keyEquivalent="}" id="383">
|
||||
<connections>
|
||||
<action selector="alignRight:" target="-1" id="447"/>
|
||||
<action selector="alignRight:" target="-1" id="447" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="384"/>
|
||||
<menuItem isSeparatorItem="YES" id="384" />
|
||||
<menuItem title="Show Ruler" id="385">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" />
|
||||
<connections>
|
||||
<action selector="toggleRuler:" target="-1" id="446"/>
|
||||
<action selector="toggleRuler:" target="-1" id="446" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy Ruler" keyEquivalent="c" id="386">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="copyRuler:" target="-1" id="444"/>
|
||||
<action selector="copyRuler:" target="-1" id="444" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Ruler" keyEquivalent="v" id="387">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="pasteRuler:" target="-1" id="448"/>
|
||||
<action selector="pasteRuler:" target="-1" id="448" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -451,14 +451,14 @@
|
||||
<menu key="submenu" title="View" id="296">
|
||||
<items>
|
||||
<menuItem title="Show Toolbar" keyEquivalent="t" id="297">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES" />
|
||||
<connections>
|
||||
<action selector="toggleToolbarShown:" target="-1" id="366"/>
|
||||
<action selector="toggleToolbarShown:" target="-1" id="366" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Customize Toolbar…" id="298">
|
||||
<connections>
|
||||
<action selector="runToolbarCustomizationPalette:" target="-1" id="365"/>
|
||||
<action selector="runToolbarCustomizationPalette:" target="-1" id="365" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -469,20 +469,20 @@
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="23">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="-1" id="37"/>
|
||||
<action selector="performMiniaturize:" target="-1" id="37" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="239">
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="240"/>
|
||||
<action selector="performZoom:" target="-1" id="240" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="92">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES" />
|
||||
</menuItem>
|
||||
<menuItem title="Bring All to Front" id="5">
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="-1" id="39"/>
|
||||
<action selector="arrangeInFront:" target="-1" id="39" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -491,9 +491,9 @@
|
||||
<menuItem title="Help" id="103" userLabel="1">
|
||||
<menu key="submenu" title="Help" id="106" userLabel="2">
|
||||
<items>
|
||||
<menuItem title="NewApplication Help" keyEquivalent="?" id="111">
|
||||
<menuItem title="CPAnimationContextTest Help" keyEquivalent="?" id="111">
|
||||
<connections>
|
||||
<action selector="showHelp:" target="-1" id="360"/>
|
||||
<action selector="showHelp:" target="-1" id="360" />
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
@@ -502,76 +502,76 @@
|
||||
</items>
|
||||
</menu>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="371">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="335" y="390" width="940" height="1040"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1028"/>
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" />
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES" />
|
||||
<rect key="contentRect" x="335" y="390" width="940" height="1040" />
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1680" height="1028" />
|
||||
<view key="contentView" id="372">
|
||||
<rect key="frame" x="0.0" y="0.0" width="940" height="1040"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="940" height="1040" />
|
||||
<autoresizingMask key="autoresizingMask" />
|
||||
<subviews>
|
||||
<button identifier="run" verticalHuggingPriority="750" id="462">
|
||||
<rect key="frame" x="332" y="999" width="134" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="332" y="999" width="134" height="32" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
<buttonCell key="cell" type="push" title="Start Animation" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="463">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES" />
|
||||
<font key="font" metaFont="system" />
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="test:" target="450" id="0vd-DD-jrm"/>
|
||||
<action selector="test:" target="450" id="0vd-DD-jrm" />
|
||||
</connections>
|
||||
</button>
|
||||
<customView identifier="draw" id="FJv-ci-zoT" customClass="DrawView">
|
||||
<rect key="frame" x="29" y="769" width="148" height="115"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="29" y="769" width="148" height="115" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
</customView>
|
||||
<customView identifier="layout" id="Ff1-j8-ljn" customClass="CustomLayoutView">
|
||||
<rect key="frame" x="29" y="637" width="148" height="115"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="29" y="637" width="148" height="115" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
<subviews>
|
||||
<customView identifier="vanilla" id="obD-Te-e4b" customClass="ColorView">
|
||||
<rect key="frame" x="20" y="52" width="53" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="20" y="52" width="53" height="43" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
</customView>
|
||||
<customView identifier="vanilla" id="kng-GZ-UzT" customClass="ColorView">
|
||||
<rect key="frame" x="86" y="52" width="53" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="86" y="52" width="53" height="43" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
</customView>
|
||||
<customView identifier="vanilla" id="Ofx-KZ-FgQ" customClass="ColorView">
|
||||
<rect key="frame" x="48" y="6" width="53" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="48" y="6" width="53" height="43" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
</customView>
|
||||
</subviews>
|
||||
</customView>
|
||||
<customView identifier="drawLayout" id="dLm-xl-6jP" customClass="CustomLayoutDrawView">
|
||||
<rect key="frame" x="29" y="499" width="148" height="115"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="29" y="499" width="148" height="115" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
<subviews>
|
||||
<customView identifier="vanilla" id="Zo1-nI-BE8" customClass="ColorView">
|
||||
<rect key="frame" x="12" y="61" width="53" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="12" y="61" width="53" height="43" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
</customView>
|
||||
<customView identifier="vanilla" id="Ohs-DN-x4k" customClass="ColorView">
|
||||
<rect key="frame" x="84" y="61" width="53" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="84" y="61" width="53" height="43" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
</customView>
|
||||
<customView identifier="vanilla" id="OGq-ro-Klu" customClass="ColorView">
|
||||
<rect key="frame" x="48" y="10" width="53" height="43"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<rect key="frame" x="48" y="10" width="53" height="43" />
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES" />
|
||||
</customView>
|
||||
</subviews>
|
||||
</customView>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="643" y="761"/>
|
||||
<point key="canvasLocation" x="643" y="761" />
|
||||
</window>
|
||||
<customObject id="450" customClass="AppController">
|
||||
<connections>
|
||||
<outlet property="drawView" destination="FJv-ci-zoT" id="HzW-FO-0Sa"/>
|
||||
<outlet property="layoutDrawView" destination="dLm-xl-6jP" id="6fs-7K-Eeq"/>
|
||||
<outlet property="layoutView" destination="Ff1-j8-ljn" id="ryQ-pg-Xmz"/>
|
||||
<outlet property="theWindow" destination="371" id="459"/>
|
||||
<outlet property="drawView" destination="FJv-ci-zoT" id="HzW-FO-0Sa" />
|
||||
<outlet property="layoutDrawView" destination="dLm-xl-6jP" id="6fs-7K-Eeq" />
|
||||
<outlet property="layoutView" destination="Ff1-j8-ljn" id="ryQ-pg-Xmz" />
|
||||
<outlet property="theWindow" destination="371" id="459" />
|
||||
</connections>
|
||||
</customObject>
|
||||
</objects>
|
||||
</document>
|
||||
</document>
|
||||
@@ -1,3 +1,12 @@
|
||||
/*
|
||||
Disabled: This unit suite is a legacy benchmark harness designed for side-by-side
|
||||
micro-benchmarking of JavaScript array operations and sorting implementations.
|
||||
It relies on non-deterministic random data, wall-clock timing comparisons, and
|
||||
Node.js host APIs (fs/path), while providing no deterministic functional assertions
|
||||
or performance SLAs. Retained strictly for historical context until the native
|
||||
Go and Lisette toolchain transition is fully finalized.
|
||||
*/
|
||||
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
|
||||
@@ -17,7 +26,7 @@ function shuffle(o)
|
||||
};
|
||||
|
||||
var ELEMENTS = 100,
|
||||
REPEATS = 10;
|
||||
REPEATS = 10;
|
||||
|
||||
@implementation CPArrayPerformanceTest : OJTestCase
|
||||
{
|
||||
@@ -27,111 +36,117 @@ var ELEMENTS = 100,
|
||||
- (void)setUp
|
||||
{
|
||||
descriptors = [
|
||||
[CPSortDescriptor sortDescriptorWithKey:"a" ascending:NO],
|
||||
[CPSortDescriptor sortDescriptorWithKey:"b" ascending:YES]
|
||||
];
|
||||
[CPSortDescriptor sortDescriptorWithKey:"a" ascending:NO],
|
||||
[CPSortDescriptor sortDescriptorWithKey:"b" ascending:YES]
|
||||
];
|
||||
}
|
||||
|
||||
- (void)testAlmostSortedNumericUsingMergeSort
|
||||
// Included only to ensure an active test is present and avoid 'no tests' warnings.
|
||||
- (void)testPlaceholder
|
||||
{
|
||||
[self assertTrue:YES message:"Placeholder test to maintain test runner compatibility."];
|
||||
}
|
||||
|
||||
- (void)disabled_testAlmostSortedNumericUsingMergeSort
|
||||
{
|
||||
console.log();
|
||||
CPLog.warn("\nNUMERIC ALMOST SORTED");
|
||||
var a = [self makeUnsorted],
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
[self checkAlmostSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testAlmostSortedNumericUsingNativeSort
|
||||
- (void)disabled_testAlmostSortedNumericUsingNativeSort
|
||||
{
|
||||
var a = [self makeUnsorted],
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
[self checkAlmostSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testRandomNumericUsingMergeSort
|
||||
- (void)disabled_testRandomNumericUsingMergeSort
|
||||
{
|
||||
console.log();
|
||||
CPLog.warn("\nNUMERIC RANDOM");
|
||||
var a = [self makeRandomNumeric],
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
[self checkRandomSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testRandomNumericUsingNativeSort
|
||||
- (void)disabled_testRandomNumericUsingNativeSort
|
||||
{
|
||||
var a = [self makeRandomNumeric],
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
[self checkRandomSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testRandomTextUsingMergeSort
|
||||
- (void)disabled_testRandomTextUsingMergeSort
|
||||
{
|
||||
console.log();
|
||||
CPLog.warn("\nTEXT RANDOM");
|
||||
var a = [self makeRandomText],
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
[self checkRandomSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testRandomTextUsingNativeSort
|
||||
- (void)disabled_testRandomTextUsingNativeSort
|
||||
{
|
||||
var a = [self makeRandomText],
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingDescriptors:) withObject:descriptors];
|
||||
[self checkRandomSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testAlmostSortedNumericUsingMergeSelectorSort
|
||||
- (void)disabled_testAlmostSortedNumericUsingMergeSelectorSort
|
||||
{
|
||||
console.log();
|
||||
CPLog.warn("\nNUMERIC ALMOST SORTED (SELECTOR)");
|
||||
var a = [self makeUnsorted],
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
[self checkAlmostSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testAlmostSortedNumericUsingNativeSelectorSort
|
||||
- (void)disabled_testAlmostSortedNumericUsingNativeSelectorSort
|
||||
{
|
||||
var a = [self makeUnsorted],
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
[self checkAlmostSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testRandomNumericUsingMergeSelectorSort
|
||||
- (void)disabled_testRandomNumericUsingMergeSelectorSort
|
||||
{
|
||||
console.log();
|
||||
CPLog.warn("\nNUMERIC RANDOM (SELECTOR)");
|
||||
var a = [self makeRandomNumeric],
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
[self checkRandomSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testRandomNumericUsingNativeSelectorSort
|
||||
- (void)disabled_testRandomNumericUsingNativeSelectorSort
|
||||
{
|
||||
var a = [self makeRandomNumeric],
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
[self checkRandomSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testRandomTextUsingMergeSelectorSort
|
||||
- (void)disabled_testRandomTextUsingMergeSelectorSort
|
||||
{
|
||||
console.log();
|
||||
CPLog.warn("\nTEXT RANDOM (SELECTOR)");
|
||||
var a = [self makeRandomText],
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
sorted = [self sort:a usingSortSelector:@selector(sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
[self checkRandomSorted:sorted];
|
||||
}
|
||||
|
||||
- (void)testRandomTextUsingNativeSelectorSort
|
||||
- (void)disabled_testRandomTextUsingNativeSelectorSort
|
||||
{
|
||||
var a = [self makeRandomText],
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
sorted = [self sort:a usingSortSelector:@selector(_native_sortedArrayUsingSelector:) withObject:@selector(compareAAscendingThenBDescending:)];
|
||||
[self checkRandomSorted:sorted];
|
||||
}
|
||||
|
||||
- (CPArray)sort:(CPArray)anArray usingSortSelector:(SEL)aSelector withObject:(id)anObject
|
||||
{
|
||||
var sorted,
|
||||
start = (new Date).getTime();
|
||||
start = (new Date).getTime();
|
||||
|
||||
for (var i = 0; i < REPEATS; ++i)
|
||||
sorted = [anArray performSelector:aSelector withObject:anObject];
|
||||
@@ -167,8 +182,8 @@ var ELEMENTS = 100,
|
||||
for (var i = 0; i < ELEMENTS; i++)
|
||||
{
|
||||
var s = [Sortable new],
|
||||
n1 = ROUND(RAND() * ELEMENTS),
|
||||
n2 = ROUND(RAND() * ELEMENTS);
|
||||
n1 = ROUND(RAND() * ELEMENTS),
|
||||
n2 = ROUND(RAND() * ELEMENTS);
|
||||
|
||||
[s setA:n1];
|
||||
[s setB:n2];
|
||||
@@ -181,9 +196,9 @@ var ELEMENTS = 100,
|
||||
- (CPArray)makeRandomText
|
||||
{
|
||||
var the_big_sort = fs.readFileSync(path.join(path.dirname(__filename), "the_big_sort.txt"), {encoding: 'utf-8'}),
|
||||
words = the_big_sort.split(" ", ELEMENTS),
|
||||
wordcount = words.length,
|
||||
array = [];
|
||||
words = the_big_sort.split(" ", ELEMENTS),
|
||||
wordcount = words.length,
|
||||
array = [];
|
||||
|
||||
for (var i = 0; i < wordcount - 1; i++)
|
||||
{
|
||||
@@ -227,17 +242,17 @@ var ELEMENTS = 100,
|
||||
}
|
||||
}
|
||||
|
||||
- (void)testObjectsAtIndexesSpeed
|
||||
- (void)disabled_testObjectsAtIndexesSpeed
|
||||
{
|
||||
REPEATS = 100;
|
||||
|
||||
var SIZE = 1000,
|
||||
c = SIZE,
|
||||
r = REPEATS,
|
||||
rr = r,
|
||||
location = 0,
|
||||
array = [CPArray array],
|
||||
indexes = [CPIndexSet indexSet];
|
||||
c = SIZE,
|
||||
r = REPEATS,
|
||||
rr = r,
|
||||
location = 0,
|
||||
array = [CPArray array],
|
||||
indexes = [CPIndexSet indexSet];
|
||||
|
||||
while (c--)
|
||||
array.push("" + c);
|
||||
@@ -251,8 +266,8 @@ var ELEMENTS = 100,
|
||||
}
|
||||
|
||||
var d = new Date(),
|
||||
test1,
|
||||
test2;
|
||||
test1,
|
||||
test2;
|
||||
while (r--)
|
||||
test1 = [array _previous_objectsAtIndexes:indexes];
|
||||
var dd = new Date();
|
||||
@@ -270,25 +285,25 @@ var ELEMENTS = 100,
|
||||
[self fail:"_CPJavaScriptArray -objectsAtIndexes: returns an wrong value"];
|
||||
}
|
||||
|
||||
- (void)testRemoveObjectIdenticalTo
|
||||
- (void)disabled_testRemoveObjectIdenticalTo
|
||||
{
|
||||
REPEATS = 200;
|
||||
|
||||
var SIZE = 33 * 6,
|
||||
allThings = [],
|
||||
testSources = [];
|
||||
allThings = [],
|
||||
testSources = [];
|
||||
|
||||
for (var c = 0; c < SIZE; c++)
|
||||
allThings.push("" + c);
|
||||
|
||||
var someThings = [allThings subarrayWithRange:CPMakeRange(SIZE / 3, SIZE / 3)],
|
||||
removeThings = [allThings subarrayWithRange:(CPMakeRange(0, 2 * SIZE / 3))];
|
||||
removeThings = [allThings subarrayWithRange:(CPMakeRange(0, 2 * SIZE / 3))];
|
||||
|
||||
for (var r = 0; r < REPEATS * 2; r++)
|
||||
testSources.push(shuffle(someThings));
|
||||
|
||||
var d = new Date(),
|
||||
test1;
|
||||
test1;
|
||||
for (var r = 0; r < REPEATS; r++)
|
||||
{
|
||||
test1 = testSources.pop();
|
||||
@@ -297,7 +312,7 @@ var ELEMENTS = 100,
|
||||
}
|
||||
|
||||
var dd = new Date(),
|
||||
test2;
|
||||
test2;
|
||||
for (var r = 0; r < REPEATS; r++)
|
||||
{
|
||||
test2 = testSources.pop();
|
||||
@@ -352,9 +367,9 @@ var ELEMENTS = 100,
|
||||
var count = [descriptors count];
|
||||
|
||||
self.sort(function(lhs, rhs)
|
||||
{
|
||||
{
|
||||
var i = 0,
|
||||
result = CPOrderedSame;
|
||||
result = CPOrderedSame;
|
||||
|
||||
while (i < count)
|
||||
if ((result = [descriptors[i++] compareObject:lhs withObject:rhs]) !== CPOrderedSame)
|
||||
@@ -376,7 +391,7 @@ var ELEMENTS = 100,
|
||||
- (CPArray)_native_sortUsingSelector:(SEL)aSelector
|
||||
{
|
||||
self.sort(function(lhs, rhs)
|
||||
{
|
||||
{
|
||||
return [lhs performSelector:aSelector withObject:rhs];
|
||||
});
|
||||
}
|
||||
|
||||
@@ -82,18 +82,26 @@
|
||||
- (void)test_objectAtIndex_
|
||||
{
|
||||
var arrayClass = [[self class] arrayClass],
|
||||
array = [arrayClass array];
|
||||
array = [arrayClass array],
|
||||
e;
|
||||
|
||||
[self assertThrows:function () { [array objectAtIndex:-1] }];
|
||||
[self assertThrows:function () { [array objectAtIndex:0] }];
|
||||
e = [self assertThrows:function () { [array objectAtIndex:-1] }];
|
||||
[self assert:CPRangeException equals:[e name]];
|
||||
|
||||
e = [self assertThrows:function () { [array objectAtIndex:0] }];
|
||||
[self assert:CPRangeException equals:[e name]];
|
||||
|
||||
var array = [arrayClass arrayWithObjects:0, 1, 2];
|
||||
|
||||
[self assertThrows:function () { [array objectAtIndex:-1] }];
|
||||
e = [self assertThrows:function () { [array objectAtIndex:-1] }];
|
||||
[self assert:CPRangeException equals:[e name]];
|
||||
|
||||
[self assert:[array objectAtIndex:0] same:0];
|
||||
[self assert:[array objectAtIndex:1] same:1];
|
||||
[self assert:[array objectAtIndex:2] same:2];
|
||||
[self assertThrows:function () { [array objectAtIndex:3] }];
|
||||
|
||||
e = [self assertThrows:function () { [array objectAtIndex:3] }];
|
||||
[self assert:CPRangeException equals:[e name]];
|
||||
}
|
||||
|
||||
- (void)test_objectsAtIndexes_
|
||||
@@ -104,20 +112,29 @@
|
||||
}
|
||||
|
||||
var arrayClass = [[self class] arrayClass],
|
||||
array = [arrayClass array];
|
||||
array = [arrayClass array],
|
||||
e;
|
||||
|
||||
[self assertThrows:function () { [array objectsAtIndexes:rangeIndexes(0, 1)] }];
|
||||
e = [self assertThrows:function () { [array objectsAtIndexes:rangeIndexes(0, 1)] }];
|
||||
[self assert:CPRangeException equals:[e name]];
|
||||
|
||||
var array = [arrayClass arrayWithObjects:0, 1, 2];
|
||||
|
||||
[self assert:[array objectsAtIndexes:rangeIndexes(0, 1)] equals:[0]];
|
||||
[self assert:[array objectsAtIndexes:rangeIndexes(0, 2)] equals:[0, 1]];
|
||||
[self assert:[array objectsAtIndexes:rangeIndexes(0, 3)] equals:[0, 1, 2]];
|
||||
[self assertThrows:function () { [array objectsAtIndexes:rangeIndexes(0, 4)] }];
|
||||
|
||||
e = [self assertThrows:function () { [array objectsAtIndexes:rangeIndexes(0, 4)] }];
|
||||
[self assert:CPRangeException equals:[e name]];
|
||||
|
||||
[self assert:[array objectsAtIndexes:rangeIndexes(1, 1)] equals:[1]];
|
||||
[self assert:[array objectsAtIndexes:rangeIndexes(1, 2)] equals:[1, 2]];
|
||||
[self assertThrows:function () { [array objectsAtIndexes:rangeIndexes(1, 3)] }];
|
||||
[self assertThrows:function () { [array objectsAtIndexes:rangeIndexes(3, 1)] }];
|
||||
|
||||
e = [self assertThrows:function () { [array objectsAtIndexes:rangeIndexes(1, 3)] }];
|
||||
[self assert:CPRangeException equals:[e name]];
|
||||
|
||||
e = [self assertThrows:function () { [array objectsAtIndexes:rangeIndexes(3, 1)] }];
|
||||
[self assert:CPRangeException equals:[e name]];
|
||||
}
|
||||
|
||||
- (void)test_indexOfObject_
|
||||
@@ -829,7 +846,7 @@
|
||||
- (id)objectAtIndex:(CPUInteger)anIndex
|
||||
{
|
||||
if (anIndex < 0 || anIndex >= [self count])
|
||||
throw "range error";
|
||||
[CPException raise:CPRangeException reason:"index (" + anIndex + ") beyond bounds (" + [self count] + ")"];
|
||||
|
||||
return array[anIndex];
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -578,7 +578,7 @@
|
||||
- (id)objectAtIndex:(CPUInteger)anIndex
|
||||
{
|
||||
if (anIndex < 0 || anIndex >= [self count])
|
||||
throw "range error";
|
||||
[CPException raise:CPRangeException reason:"index (" + anIndex + ") beyond bounds (" + [self count] + ")"];
|
||||
|
||||
return array[anIndex];
|
||||
}
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
/* CPTimeZoneTest.j
|
||||
* Foundation
|
||||
*
|
||||
* Created by Alexandre Wilhelm
|
||||
* Copyright 2012 <alexandre.wilhelmfr@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
* Foundation
|
||||
*
|
||||
* Created by Alexandre Wilhelm
|
||||
* Copyright 2012 <alexandre.wilhelmfr@gmail.com>
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
@import <Foundation/Foundation.j>
|
||||
@import <OJUnit/OJTestCase.j>
|
||||
@@ -66,7 +66,7 @@
|
||||
{
|
||||
var timeZone = [CPTimeZone timeZoneWithName:@"America/Los_Angeles"];
|
||||
|
||||
// The current implementation can return daylight saving time or standard time depending on the current implmentation on CPDictionary
|
||||
// The current implementation can return daylight saving time or standard time depending on the current date
|
||||
if ([timeZone abbreviation] === @"PDT") {
|
||||
[self assert:[timeZone name] equals:@"America/Los_Angeles"];
|
||||
[self assert:[timeZone abbreviation] equals:@"PDT"];
|
||||
@@ -96,8 +96,8 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
[CPTimeZone timeZoneWithName:nil];
|
||||
[self fail:"Invalid value provided for tzName"];
|
||||
[CPTimeZone timeZoneWithName:nil];
|
||||
[self fail:"Invalid value provided for tzName"];
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
@@ -109,7 +109,6 @@
|
||||
{
|
||||
var timeZone = [CPTimeZone timeZoneWithName:@"America/Los_Angeles" data:_data];
|
||||
|
||||
// The current implementation can return daylight saving time or standard time depending on the current implmentation on CPDictionary
|
||||
if ([timeZone abbreviation] === @"PDT") {
|
||||
[self assert:[timeZone name] equals:@"America/Los_Angeles"];
|
||||
[self assert:[timeZone abbreviation] equals:@"PDT"];
|
||||
@@ -140,8 +139,8 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
[CPTimeZone timeZoneWithName:nil data:_data];
|
||||
[self fail:"Invalid value provided for tzName"];
|
||||
[CPTimeZone timeZoneWithName:nil data:_data];
|
||||
[self fail:"Invalid value provided for tzName"];
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
@@ -151,30 +150,37 @@
|
||||
|
||||
- (void)testTimeZoneWithSecondsFromGMT
|
||||
{
|
||||
// timeZoneForSecondsFromGMT returns a fixed-offset zone. It does not
|
||||
// back-resolve to geographical regions (like Pacific/Honolulu).
|
||||
var timeZone = [CPTimeZone timeZoneForSecondsFromGMT:(-600 * 60)];
|
||||
[self assert:[timeZone name] equals:@"Pacific/Honolulu"];
|
||||
[self assert:[timeZone abbreviation] equals:@"HST"];
|
||||
[self assert:[timeZone name] equals:@"GMT-10:00"];
|
||||
[self assert:[timeZone abbreviation] equals:@"GMT-10:00"];
|
||||
[self assert:[timeZone secondsFromGMT] equals:(-600 * 60)];
|
||||
[self assert:[timeZone description] equals:@"Pacific/Honolulu (HST) offset -36000"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleStandard locale:_locale] equals:@"Hawaii-Aleutian Standard Time"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleShortStandard locale:_locale] equals:@"HST"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleDaylightSaving locale:_locale] equals:@"Hawaii-Aleutian Daylight Time"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleShortDaylightSaving locale:_locale] equals:@"HDT"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleGeneric locale:_locale] equals:@"Hawaii-Aleutian Standard Time"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleShortGeneric locale:_locale] equals:@"HST"];
|
||||
[self assert:[timeZone description] equals:@"GMT-10:00 (GMT-10:00) offset -36000"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleStandard locale:_locale] equals:@"GMT-10:00"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleShortStandard locale:_locale] equals:@"GMT-10:00"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleDaylightSaving locale:_locale] equals:@"GMT-10:00"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleShortDaylightSaving locale:_locale] equals:@"GMT-10:00"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleGeneric locale:_locale] equals:@"GMT-10:00"];
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleShortGeneric locale:_locale] equals:@"GMT-10:00"];
|
||||
}
|
||||
|
||||
- (void)testTimeZoneWithWrongSecondsFromGMT
|
||||
{
|
||||
// +/- 18 hours is the limit. -421 * 60 is valid and creates a fixed zone.
|
||||
var timeZone = [CPTimeZone timeZoneForSecondsFromGMT:(-421 * 60)];
|
||||
[self assert:timeZone equals:nil];
|
||||
[self assert:[timeZone name] equals:@"GMT-07:01"];
|
||||
[self assert:[timeZone secondsFromGMT] equals:(-421 * 60)];
|
||||
|
||||
// An offset strictly outside the +/- 18 hour range should return nil.
|
||||
var invalidTimeZone = [CPTimeZone timeZoneForSecondsFromGMT:(19 * 3600)];
|
||||
[self assert:invalidTimeZone equals:nil];
|
||||
}
|
||||
|
||||
- (void)testInitTimeZoneWithName
|
||||
{
|
||||
var timeZone = [[CPTimeZone alloc] initWithName:@"America/Los_Angeles"];
|
||||
|
||||
// The current implementation can return daylight saving time or standard time depending on the current implmentation on CPDictionary
|
||||
if ([timeZone abbreviation] === @"PDT") {
|
||||
[self assert:[timeZone name] equals:@"America/Los_Angeles"];
|
||||
[self assert:[timeZone abbreviation] equals:@"PDT"];
|
||||
@@ -204,8 +210,8 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
[[CPTimeZone alloc] initWithName:nil];
|
||||
[self fail:"Invalid value provided for tzName"];
|
||||
[[CPTimeZone alloc] initWithName:nil];
|
||||
[self fail:"Invalid value provided for tzName"];
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
@@ -217,7 +223,6 @@
|
||||
{
|
||||
var timeZone = [[CPTimeZone alloc] initWithName:@"America/Los_Angeles" data:_data];
|
||||
|
||||
// The current implementation can return daylight saving time or standard time depending on the current implmentation on CPDictionary
|
||||
if ([timeZone abbreviation] === @"PDT") {
|
||||
[self assert:[timeZone name] equals:@"America/Los_Angeles"];
|
||||
[self assert:[timeZone abbreviation] equals:@"PDT"];
|
||||
@@ -248,8 +253,8 @@
|
||||
{
|
||||
try
|
||||
{
|
||||
[[CPTimeZone alloc] initWithName:nil data:_data];
|
||||
[self fail:"Invalid value provided for tzName"];
|
||||
[[CPTimeZone alloc] initWithName:nil data:_data];
|
||||
[self fail:"Invalid value provided for tzName"];
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
@@ -260,12 +265,8 @@
|
||||
- (void)testAbbreviationWithDate
|
||||
{
|
||||
var timeZone = [CPTimeZone localTimeZone],
|
||||
abbreviation = [timeZone abbreviationForDate:_date];
|
||||
abbreviation = [timeZone abbreviationForDate:_date];
|
||||
|
||||
// With the new robust implementation, we can't easily predict the exact
|
||||
// abbreviation string without re-implementing the parsing logic.
|
||||
// Instead, we verify that the returned abbreviation is valid and exists
|
||||
// in the known dictionary, which is sufficient.
|
||||
[self assert:(abbreviation !== nil) equals:YES];
|
||||
var knownAbbreviations = [CPTimeZone abbreviationDictionary];
|
||||
[self assert:[knownAbbreviations containsKey:abbreviation] equals:YES];
|
||||
@@ -274,7 +275,7 @@
|
||||
- (void)testAbbreviationWithNilDate
|
||||
{
|
||||
var timeZone = [CPTimeZone localTimeZone],
|
||||
abbreviation = [timeZone abbreviationForDate:nil];
|
||||
abbreviation = [timeZone abbreviationForDate:nil];
|
||||
|
||||
[self assert:abbreviation equals:nil];
|
||||
}
|
||||
@@ -283,7 +284,7 @@
|
||||
- (void)testSecondsFromGMTForDate
|
||||
{
|
||||
var timeZone = [CPTimeZone localTimeZone],
|
||||
seconds = [timeZone secondsFromGMTForDate:_date];
|
||||
seconds = [timeZone secondsFromGMTForDate:_date];
|
||||
|
||||
[self assert:seconds equals:(_date.getTimezoneOffset() * -60)];
|
||||
}
|
||||
@@ -291,7 +292,7 @@
|
||||
- (void)testSecondsFromGMTForDateWithNilDate
|
||||
{
|
||||
var timeZone = [CPTimeZone localTimeZone],
|
||||
seconds = [timeZone secondsFromGMTForDate:nil];
|
||||
seconds = [timeZone secondsFromGMTForDate:nil];
|
||||
|
||||
[self assert:seconds equals:nil];
|
||||
}
|
||||
@@ -300,7 +301,6 @@
|
||||
{
|
||||
var timeZone = [[CPTimeZone alloc] initWithName:@"America/Los_Angeles"];
|
||||
|
||||
// The current implementation can return daylight saving time or standard time depending on the current implmentation on CPDictionary
|
||||
if ([timeZone abbreviation] === @"PDT") {
|
||||
[self assert:[timeZone secondsFromGMT] equals:(-420 * 60)];
|
||||
} else {
|
||||
@@ -312,7 +312,6 @@
|
||||
{
|
||||
var timeZone = [[CPTimeZone alloc] initWithName:@"America/Los_Angeles"];
|
||||
|
||||
// The current implementation can return daylight saving time or standard time depending on the current implmentation on CPDictionary
|
||||
if ([timeZone abbreviation] === @"PDT") {
|
||||
[self assert:[timeZone description] equals:@"America/Los_Angeles (PDT) offset -25200"];
|
||||
} else {
|
||||
@@ -334,7 +333,7 @@
|
||||
- (void)testEqualTrueToTimeZone
|
||||
{
|
||||
var timeZone1 = [[CPTimeZone alloc] initWithName:@"America/Los_Angeles"],
|
||||
timeZone2 = [[CPTimeZone alloc] initWithName:@"America/Los_Angeles"];
|
||||
timeZone2 = [[CPTimeZone alloc] initWithName:@"America/Los_Angeles"];
|
||||
|
||||
[self assert:[timeZone1 isEqualToTimeZone:timeZone2] equals:YES];
|
||||
}
|
||||
@@ -342,26 +341,21 @@
|
||||
- (void)testEqualFalseToTimeZone
|
||||
{
|
||||
var timeZone1 = [[CPTimeZone alloc] initWithName:@"America/Los_Angeles"],
|
||||
timeZone2 = [[CPTimeZone alloc] initWithName:@"Pacific/Honolulu"];
|
||||
timeZone2 = [[CPTimeZone alloc] initWithName:@"Pacific/Honolulu"];
|
||||
|
||||
[self assert:[timeZone1 isEqualToTimeZone:timeZone2] equals:NO];
|
||||
}
|
||||
|
||||
- (void)testInitWithNameRespectsDaylightSaving
|
||||
{
|
||||
// This test verifies that initWithName: correctly selects the abbreviation
|
||||
// (e.g., PST vs. PDT) based on the current date's daylight saving status.
|
||||
|
||||
// 1. Test a time zone that observes DST, like America/Los_Angeles.
|
||||
var laTimeZoneName = @"America/Los_Angeles";
|
||||
var expectedAbbreviationLA;
|
||||
|
||||
try {
|
||||
// This logic mimics the _abbreviationForNameAndDate helper function in CPTimeZone.j
|
||||
var options = { timeZone: laTimeZoneName, timeZoneName: 'long' };
|
||||
var dateString = (new Date()).toLocaleString('en-US', options);
|
||||
var longTZName = dateString.replace(/^([0]?\d|[1][0-2])\/((?:[0]?|[1-2])\d|[3][0-1])\/([2][01]|[1][6-9])\d{2}(,?\s*([0]?\d|[1][0-2])(\:[0-5]\d){1,2})*\s*([aApP][mM]{0,2})?\s*/, "");
|
||||
expectedAbbreviationLA = longTZName.split(" ").map(function(l) { return l[0]}).join("");
|
||||
var options = { timeZone: laTimeZoneName, timeZoneName: 'short' };
|
||||
var parts = new Intl.DateTimeFormat('en-US', options).formatToParts(new Date());
|
||||
var tzPart = parts.filter(function (p) { return p.type === 'timeZoneName'; })[0];
|
||||
expectedAbbreviationLA = tzPart ? tzPart.value : nil;
|
||||
} catch (e) {
|
||||
[self fail:"Could not determine expected abbreviation for America/Los_Angeles"];
|
||||
return;
|
||||
@@ -374,15 +368,71 @@
|
||||
|
||||
[self assert:[timeZoneLA abbreviation] equals:expectedAbbreviationLA];
|
||||
|
||||
// 2. Test a time zone that does not observe DST, like Pacific/Honolulu.
|
||||
var hnlTimeZoneName = @"Pacific/Honolulu";
|
||||
var timeZoneHNL = [[CPTimeZone alloc] initWithName:hnlTimeZoneName];
|
||||
|
||||
if (timeZoneHNL == nil)
|
||||
[self fail:"Time zone for Pacific/Honolulu should be created successfully."];
|
||||
|
||||
// For a non-DST zone, the abbreviation is constant.
|
||||
[self assert:[timeZoneHNL abbreviation] equals:@"HST"];
|
||||
}
|
||||
|
||||
- (void)testCorrectedOffsets
|
||||
{
|
||||
// Validate IANA name resolution for legacy abbreviations.
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"MDT"] name] equals:@"America/Denver"];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"MSK"] name] equals:@"Europe/Moscow"];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"NZDT"] name] equals:@"Pacific/Auckland"];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"NZST"] name] equals:@"Pacific/Auckland"];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"WAT"] name] equals:@"Africa/Lagos"];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"WIT"] name] equals:@"Asia/Jakarta"];
|
||||
|
||||
// Evaluate against fixed dates to prevent seasonal failures during CI runs.
|
||||
var janDate = [[CPDate alloc] initWithString:@"2026-01-15 12:00:00 +0000"];
|
||||
var julDate = [[CPDate alloc] initWithString:@"2026-07-15 12:00:00 +0000"];
|
||||
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"MDT"] secondsFromGMTForDate:julDate] equals:(-360 * 60)];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"MSK"] secondsFromGMTForDate:janDate] equals:(180 * 60)];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"NZDT"] secondsFromGMTForDate:janDate] equals:(780 * 60)];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"NZST"] secondsFromGMTForDate:julDate] equals:(720 * 60)];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"WAT"] secondsFromGMTForDate:janDate] equals:(60 * 60)];
|
||||
[self assert:[[CPTimeZone timeZoneWithAbbreviation:@"WIT"] secondsFromGMTForDate:janDate] equals:(420 * 60)];
|
||||
}
|
||||
|
||||
- (void)testMSKCorrectCurrentValue
|
||||
{
|
||||
// MSD/MSK resolve to Europe/Moscow.
|
||||
// Russia abolished DST in 2014, so there is no distinct summer offset.
|
||||
// The current permanent offset is +03:00 (10800 seconds).
|
||||
var timeZone = [CPTimeZone timeZoneWithAbbreviation:@"MSD"];
|
||||
[self assert:[timeZone secondsFromGMT] equals:(180 * 60)];
|
||||
}
|
||||
|
||||
- (void)testKnownTimeZoneNamesUsesIntlWhenAvailable
|
||||
{
|
||||
if (typeof Intl === "undefined" || typeof Intl.supportedValuesOf !== "function")
|
||||
return;
|
||||
|
||||
var names = [CPTimeZone knownTimeZoneNames];
|
||||
|
||||
[self assertTrue:([names count] > 48)
|
||||
message:"knownTimeZoneNames should use Intl.supportedValuesOf when available, not the small hardcoded fallback list"];
|
||||
[self assertTrue:[names containsObject:@"Europe/Berlin"]
|
||||
message:"a zone absent from the old hardcoded list should be present via Intl"];
|
||||
}
|
||||
|
||||
- (void)disabled_testLocalizedNameFrenchLocale
|
||||
{
|
||||
var frenchLocale = [[CPLocale alloc] initWithLocaleIdentifier:@"fr_FR"],
|
||||
timeZone = [CPTimeZone timeZoneWithAbbreviation:@"PST"];
|
||||
|
||||
[self assert:[timeZone localizedName:CPTimeZoneNameStyleStandard locale:frenchLocale] equals:@"Heure normale du Pacifique"];
|
||||
}
|
||||
|
||||
- (void)disabled_testTimeZoneForSecondsFromGMTOffsetCollisionIsAmbiguous
|
||||
{
|
||||
var timeZone = [CPTimeZone timeZoneForSecondsFromGMT:(-360 * 60)];
|
||||
[self assert:timeZone equals:nil];
|
||||
}
|
||||
|
||||
@end
|
||||
@@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Jakefile
|
||||
* ArrayController
|
||||
*
|
||||
* Created by Alexander Ljungberg on April 2, 2011.
|
||||
* Copyright 2011, WireLoad 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 ("ArrayController", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(FILE.join("Build", "ArrayController.build", configuration));
|
||||
task.setBuildPath(FILE.join("Build", configuration));
|
||||
|
||||
task.setProductName("ArrayController");
|
||||
task.setIdentifier("com.yourcompany.ArrayController");
|
||||
task.setVersion("1.0");
|
||||
task.setAuthor("WireLoad");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("ArrayController");
|
||||
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", ["ArrayController"], 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", "ArrayController", "index.html")]);
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Release", "ArrayController", "index.html")]);
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Deployment", "ArrayController"));
|
||||
OS.system(["press", "-f", FILE.join("Build", "Release", "ArrayController"), FILE.join("Build", "Deployment", "ArrayController")]);
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Desktop", "ArrayController"));
|
||||
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "ArrayController"), FILE.join("Build", "Desktop", "ArrayController", "ArrayController.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
OS.system([FILE.join("Build", "Desktop", "ArrayController", "ArrayController.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
print("----------------------------");
|
||||
print(configuration+" app built at path: "+FILE.join("Build", configuration, "ArrayController"));
|
||||
print("----------------------------");
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
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;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;53E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;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;54E;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;55E;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;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;56E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;57E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;42E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;44E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;59E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;37E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;60E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;51E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;46E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;62E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;48E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;63E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;49E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;64E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;50E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;6Line truncated
|
||||
@@ -1,941 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
|
||||
<data>
|
||||
<int key="IBDocument.SystemTarget">1050</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">3084</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>NSArrayController</string>
|
||||
<string>NSButton</string>
|
||||
<string>NSButtonCell</string>
|
||||
<string>NSCustomObject</string>
|
||||
<string>NSScrollView</string>
|
||||
<string>NSScroller</string>
|
||||
<string>NSTableHeaderView</string>
|
||||
<string>NSTableView</string>
|
||||
<string>NSTextField</string>
|
||||
<string>NSTextFieldCell</string>
|
||||
<string>NSView</string>
|
||||
<string>NSWindowTemplate</string>
|
||||
</object>
|
||||
<object class="NSArray" key="IBDocument.PluginDependencies">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.Metadata">
|
||||
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
|
||||
<integer value="1" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSCustomObject" id="1021">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1014">
|
||||
<string key="NSClassName">FirstResponder</string>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="1050">
|
||||
<string key="NSClassName">NSApplication</string>
|
||||
</object>
|
||||
<object class="NSWindowTemplate" id="972006081">
|
||||
<int key="NSWindowStyleMask">7</int>
|
||||
<int key="NSWindowBacking">2</int>
|
||||
<string key="NSWindowRect">{{335, 445}, {480, 305}}</string>
|
||||
<int key="NSWTFlags">1946157056</int>
|
||||
<string key="NSWindowTitle">Window</string>
|
||||
<string key="NSWindowClass">NSWindow</string>
|
||||
<nil key="NSViewClass"/>
|
||||
<nil key="NSUserInterfaceItemIdentifier"/>
|
||||
<object class="NSView" key="NSWindowView" id="439893737">
|
||||
<reference key="NSNextResponder"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSScrollView" id="152379243">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSClipView" id="284793823">
|
||||
<reference key="NSNextResponder" ref="152379243"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSTableView" id="971713637">
|
||||
<reference key="NSNextResponder" ref="284793823"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{443, 117}</string>
|
||||
<reference key="NSSuperview" ref="284793823"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="362059487"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<bool key="NSControlAllowsExpansionToolTips">YES</bool>
|
||||
<object class="NSTableHeaderView" key="NSHeaderView" id="1058581420">
|
||||
<reference key="NSNextResponder" ref="791373261"/>
|
||||
<int key="NSvFlags">256</int>
|
||||
<string key="NSFrameSize">{443, 17}</string>
|
||||
<reference key="NSSuperview" ref="791373261"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="284793823"/>
|
||||
<reference key="NSTableView" ref="971713637"/>
|
||||
</object>
|
||||
<object class="_NSCornerView" key="NSCornerView">
|
||||
<nil key="NSNextResponder"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 0}, {16, 17}}</string>
|
||||
</object>
|
||||
<object class="NSMutableArray" key="NSTableColumns">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<double key="NSIntercellSpacingWidth">3</double>
|
||||
<double key="NSIntercellSpacingHeight">2</double>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="894569415">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MQA</bytes>
|
||||
</object>
|
||||
<object class="NSColor" key="NSGridColor">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">gridColor</string>
|
||||
<object class="NSColor" key="NSColor">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC41AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<double key="NSRowHeight">17</double>
|
||||
<int key="NSTvFlags">-566231040</int>
|
||||
<reference key="NSDelegate"/>
|
||||
<reference key="NSDataSource"/>
|
||||
<int key="NSColumnAutoresizingStyle">5</int>
|
||||
<int key="NSDraggingSourceMaskForLocal">15</int>
|
||||
<int key="NSDraggingSourceMaskForNonLocal">0</int>
|
||||
<bool key="NSAllowsTypeSelect">YES</bool>
|
||||
<int key="NSTableViewDraggingDestinationStyle">0</int>
|
||||
<int key="NSTableViewGroupRowStyle">1</int>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 17}, {443, 117}}</string>
|
||||
<reference key="NSSuperview" ref="152379243"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="971713637"/>
|
||||
<reference key="NSDocView" ref="971713637"/>
|
||||
<object class="NSColor" key="NSBGColor" id="651906913">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlBackgroundColor</string>
|
||||
<object class="NSColor" key="NSColor" id="279320231">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
<object class="NSScroller" id="362059487">
|
||||
<reference key="NSNextResponder" ref="152379243"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
|
||||
<reference key="NSSuperview" ref="152379243"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1056492085"/>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<reference key="NSTarget" ref="152379243"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSCurValue">1</double>
|
||||
<double key="NSPercent">0.1947367936372757</double>
|
||||
</object>
|
||||
<object class="NSScroller" id="1056492085">
|
||||
<reference key="NSNextResponder" ref="152379243"/>
|
||||
<int key="NSvFlags">-2147483392</int>
|
||||
<string key="NSFrame">{{1, 119}, {223, 15}}</string>
|
||||
<reference key="NSSuperview" ref="152379243"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="351504327"/>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
<int key="NSsFlags">1</int>
|
||||
<reference key="NSTarget" ref="152379243"/>
|
||||
<string key="NSAction">_doScroller:</string>
|
||||
<double key="NSPercent">0.57142859697341919</double>
|
||||
</object>
|
||||
<object class="NSClipView" id="791373261">
|
||||
<reference key="NSNextResponder" ref="152379243"/>
|
||||
<int key="NSvFlags">2304</int>
|
||||
<object class="NSMutableArray" key="NSSubviews">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="1058581420"/>
|
||||
</object>
|
||||
<string key="NSFrame">{{1, 0}, {443, 17}}</string>
|
||||
<reference key="NSSuperview" ref="152379243"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="1058581420"/>
|
||||
<reference key="NSDocView" ref="1058581420"/>
|
||||
<reference key="NSBGColor" ref="651906913"/>
|
||||
<int key="NScvFlags">4</int>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrame">{{15, 150}, {445, 135}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="791373261"/>
|
||||
<int key="NSsFlags">133682</int>
|
||||
<reference key="NSVScroller" ref="362059487"/>
|
||||
<reference key="NSHScroller" ref="1056492085"/>
|
||||
<reference key="NSContentView" ref="284793823"/>
|
||||
<reference key="NSHeaderClipView" ref="791373261"/>
|
||||
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
|
||||
<double key="NSMinMagnification">0.25</double>
|
||||
<double key="NSMaxMagnification">4</double>
|
||||
<double key="NSMagnification">1</double>
|
||||
</object>
|
||||
<object class="NSButton" id="351504327">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{9, 110}, {40, 32}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="214480962"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="615437802">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents"/>
|
||||
<object class="NSFont" key="NSSupport" id="856882769">
|
||||
<string key="NSName">LucidaGrande</string>
|
||||
<double key="NSSize">13</double>
|
||||
<int key="NSfFlags">1044</int>
|
||||
</object>
|
||||
<reference key="NSControlView" ref="351504327"/>
|
||||
<int key="NSButtonFlags">-2033958912</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSAddTemplate</string>
|
||||
</object>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSButton" id="214480962">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{49, 110}, {41, 32}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="473445886"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="791512344">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="856882769"/>
|
||||
<reference key="NSControlView" ref="214480962"/>
|
||||
<int key="NSButtonFlags">-2033958912</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<object class="NSCustomResource" key="NSNormalImage">
|
||||
<string key="NSClassName">NSImage</string>
|
||||
<string key="NSResourceName">NSRemoveTemplate</string>
|
||||
</object>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="435057252">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{12, 77}, {155, 17}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="314396040"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="992079013">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
<int key="NSCellFlags2">71304192</int>
|
||||
<string key="NSContents">Selected Name:</string>
|
||||
<reference key="NSSupport" ref="856882769"/>
|
||||
<reference key="NSControlView" ref="435057252"/>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="617443217">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlColor</string>
|
||||
<reference key="NSColor" ref="279320231"/>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="650615687">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">controlTextColor</string>
|
||||
<object class="NSColor" key="NSColor" id="730639221">
|
||||
<int key="NSColorSpace">3</int>
|
||||
<bytes key="NSWhite">MAA</bytes>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="794763058">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{66, 47}, {101, 17}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="563826159"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="349060415">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
<int key="NSCellFlags2">71304192</int>
|
||||
<string key="NSContents">Selected Price:</string>
|
||||
<reference key="NSSupport" ref="856882769"/>
|
||||
<reference key="NSControlView" ref="794763058"/>
|
||||
<reference key="NSBackgroundColor" ref="617443217"/>
|
||||
<reference key="NSTextColor" ref="650615687"/>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="153336867">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{17, 20}, {150, 17}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="620159090"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="943890587">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
<int key="NSCellFlags2">71304192</int>
|
||||
<string key="NSContents">Sum of Selected Prices:</string>
|
||||
<reference key="NSSupport" ref="856882769"/>
|
||||
<reference key="NSControlView" ref="153336867"/>
|
||||
<reference key="NSBackgroundColor" ref="617443217"/>
|
||||
<reference key="NSTextColor" ref="650615687"/>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="620159090">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{174, 20}, {292, 17}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="203129013">
|
||||
<int key="NSCellFlags">68157504</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents">Label</string>
|
||||
<reference key="NSSupport" ref="856882769"/>
|
||||
<reference key="NSControlView" ref="620159090"/>
|
||||
<reference key="NSBackgroundColor" ref="617443217"/>
|
||||
<reference key="NSTextColor" ref="650615687"/>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="314396040">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{174, 75}, {286, 22}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="794763058"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="66689853">
|
||||
<int key="NSCellFlags">-1804599231</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="856882769"/>
|
||||
<reference key="NSControlView" ref="314396040"/>
|
||||
<bool key="NSDrawsBackground">YES</bool>
|
||||
<object class="NSColor" key="NSBackgroundColor" id="879609906">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textBackgroundColor</string>
|
||||
<reference key="NSColor" ref="894569415"/>
|
||||
</object>
|
||||
<object class="NSColor" key="NSTextColor" id="949633793">
|
||||
<int key="NSColorSpace">6</int>
|
||||
<string key="NSCatalogName">System</string>
|
||||
<string key="NSColorName">textColor</string>
|
||||
<reference key="NSColor" ref="730639221"/>
|
||||
</object>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSTextField" id="563826159">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{174, 45}, {286, 22}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="153336867"/>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSTextFieldCell" key="NSCell" id="841860402">
|
||||
<int key="NSCellFlags">-1804599231</int>
|
||||
<int key="NSCellFlags2">272630784</int>
|
||||
<string key="NSContents"/>
|
||||
<reference key="NSSupport" ref="856882769"/>
|
||||
<reference key="NSControlView" ref="563826159"/>
|
||||
<bool key="NSDrawsBackground">YES</bool>
|
||||
<reference key="NSBackgroundColor" ref="879609906"/>
|
||||
<reference key="NSTextColor" ref="949633793"/>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
<object class="NSButton" id="473445886">
|
||||
<reference key="NSNextResponder" ref="439893737"/>
|
||||
<int key="NSvFlags">268</int>
|
||||
<string key="NSFrame">{{90, 110}, {76, 32}}</string>
|
||||
<reference key="NSSuperview" ref="439893737"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="435057252"/>
|
||||
<string key="NSReuseIdentifierKey">_NS:9</string>
|
||||
<bool key="NSEnabled">YES</bool>
|
||||
<object class="NSButtonCell" key="NSCell" id="120906924">
|
||||
<int key="NSCellFlags">67108864</int>
|
||||
<int key="NSCellFlags2">134217728</int>
|
||||
<string key="NSContents">Insert</string>
|
||||
<reference key="NSSupport" ref="856882769"/>
|
||||
<string key="NSCellIdentifier">_NS:9</string>
|
||||
<reference key="NSControlView" ref="473445886"/>
|
||||
<int key="NSButtonFlags">-2038284288</int>
|
||||
<int key="NSButtonFlags2">129</int>
|
||||
<string key="NSAlternateContents"/>
|
||||
<string key="NSKeyEquivalent"/>
|
||||
<int key="NSPeriodicDelay">200</int>
|
||||
<int key="NSPeriodicInterval">25</int>
|
||||
</object>
|
||||
<bool key="NSAllowsLogicalLayoutDirection">NO</bool>
|
||||
</object>
|
||||
</object>
|
||||
<string key="NSFrameSize">{480, 305}</string>
|
||||
<reference key="NSSuperview"/>
|
||||
<reference key="NSWindow"/>
|
||||
<reference key="NSNextKeyView" ref="152379243"/>
|
||||
</object>
|
||||
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
|
||||
<string key="NSMaxSize">{10000000000000, 10000000000000}</string>
|
||||
<bool key="NSWindowIsRestorable">YES</bool>
|
||||
</object>
|
||||
<object class="NSCustomObject" id="635946545">
|
||||
<string key="NSClassName">AppController</string>
|
||||
</object>
|
||||
<object class="NSArrayController" id="939887647">
|
||||
<bool key="NSEditable">YES</bool>
|
||||
<object class="_NSManagedProxy" key="_NSManagedProxy"/>
|
||||
<bool key="NSAvoidsEmptySelection">YES</bool>
|
||||
<bool key="NSPreservesSelection">YES</bool>
|
||||
<bool key="NSSelectsInsertedObjects">YES</bool>
|
||||
<bool key="NSFilterRestrictsInsertion">YES</bool>
|
||||
<bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||
<object class="NSMutableArray" key="connectionRecords">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">delegate</string>
|
||||
<reference key="source" ref="1021"/>
|
||||
<reference key="destination" ref="635946545"/>
|
||||
</object>
|
||||
<int key="connectionID">451</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">theWindow</string>
|
||||
<reference key="source" ref="635946545"/>
|
||||
<reference key="destination" ref="972006081"/>
|
||||
</object>
|
||||
<int key="connectionID">459</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">tableView</string>
|
||||
<reference key="source" ref="635946545"/>
|
||||
<reference key="destination" ref="971713637"/>
|
||||
</object>
|
||||
<int key="connectionID">483</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">totalCountField</string>
|
||||
<reference key="source" ref="635946545"/>
|
||||
<reference key="destination" ref="620159090"/>
|
||||
</object>
|
||||
<int key="connectionID">498</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">selectedNameField</string>
|
||||
<reference key="source" ref="635946545"/>
|
||||
<reference key="destination" ref="314396040"/>
|
||||
</object>
|
||||
<int key="connectionID">507</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">selectedPriceField</string>
|
||||
<reference key="source" ref="635946545"/>
|
||||
<reference key="destination" ref="563826159"/>
|
||||
</object>
|
||||
<int key="connectionID">508</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBOutletConnection" key="connection">
|
||||
<string key="label">arrayController</string>
|
||||
<reference key="source" ref="635946545"/>
|
||||
<reference key="destination" ref="939887647"/>
|
||||
</object>
|
||||
<int key="connectionID">512</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">add:</string>
|
||||
<reference key="source" ref="939887647"/>
|
||||
<reference key="destination" ref="351504327"/>
|
||||
</object>
|
||||
<int key="connectionID">513</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">remove:</string>
|
||||
<reference key="source" ref="939887647"/>
|
||||
<reference key="destination" ref="214480962"/>
|
||||
</object>
|
||||
<int key="connectionID">514</int>
|
||||
</object>
|
||||
<object class="IBConnectionRecord">
|
||||
<object class="IBActionConnection" key="connection">
|
||||
<string key="label">insert:</string>
|
||||
<reference key="source" ref="939887647"/>
|
||||
<reference key="destination" ref="473445886"/>
|
||||
</object>
|
||||
<int key="connectionID">515</int>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||
<object class="NSArray" key="orderedObjects">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">0</int>
|
||||
<object class="NSArray" key="object" id="1049">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="children" ref="1048"/>
|
||||
<nil key="parent"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-2</int>
|
||||
<reference key="object" ref="1021"/>
|
||||
<reference key="parent" ref="1049"/>
|
||||
<string key="objectName">File's Owner</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-1</int>
|
||||
<reference key="object" ref="1014"/>
|
||||
<reference key="parent" ref="1049"/>
|
||||
<string key="objectName">First Responder</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">-3</int>
|
||||
<reference key="object" ref="1050"/>
|
||||
<reference key="parent" ref="1049"/>
|
||||
<string key="objectName">Application</string>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">371</int>
|
||||
<reference key="object" ref="972006081"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="439893737"/>
|
||||
</object>
|
||||
<reference key="parent" ref="1049"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">372</int>
|
||||
<reference key="object" ref="439893737"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="152379243"/>
|
||||
<reference ref="435057252"/>
|
||||
<reference ref="314396040"/>
|
||||
<reference ref="794763058"/>
|
||||
<reference ref="563826159"/>
|
||||
<reference ref="153336867"/>
|
||||
<reference ref="620159090"/>
|
||||
<reference ref="351504327"/>
|
||||
<reference ref="214480962"/>
|
||||
<reference ref="473445886"/>
|
||||
</object>
|
||||
<reference key="parent" ref="972006081"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">450</int>
|
||||
<reference key="object" ref="635946545"/>
|
||||
<reference key="parent" ref="1049"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">460</int>
|
||||
<reference key="object" ref="152379243"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="362059487"/>
|
||||
<reference ref="1056492085"/>
|
||||
<reference ref="971713637"/>
|
||||
<reference ref="1058581420"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">461</int>
|
||||
<reference key="object" ref="362059487"/>
|
||||
<reference key="parent" ref="152379243"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">462</int>
|
||||
<reference key="object" ref="1056492085"/>
|
||||
<reference key="parent" ref="152379243"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">463</int>
|
||||
<reference key="object" ref="971713637"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
</object>
|
||||
<reference key="parent" ref="152379243"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">464</int>
|
||||
<reference key="object" ref="1058581420"/>
|
||||
<reference key="parent" ref="152379243"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">469</int>
|
||||
<reference key="object" ref="351504327"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="615437802"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">470</int>
|
||||
<reference key="object" ref="615437802"/>
|
||||
<reference key="parent" ref="351504327"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">471</int>
|
||||
<reference key="object" ref="214480962"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="791512344"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">472</int>
|
||||
<reference key="object" ref="791512344"/>
|
||||
<reference key="parent" ref="214480962"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">484</int>
|
||||
<reference key="object" ref="435057252"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="992079013"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">485</int>
|
||||
<reference key="object" ref="992079013"/>
|
||||
<reference key="parent" ref="435057252"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">488</int>
|
||||
<reference key="object" ref="794763058"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="349060415"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">489</int>
|
||||
<reference key="object" ref="349060415"/>
|
||||
<reference key="parent" ref="794763058"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">492</int>
|
||||
<reference key="object" ref="153336867"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="943890587"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">493</int>
|
||||
<reference key="object" ref="943890587"/>
|
||||
<reference key="parent" ref="153336867"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">494</int>
|
||||
<reference key="object" ref="620159090"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="203129013"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">495</int>
|
||||
<reference key="object" ref="203129013"/>
|
||||
<reference key="parent" ref="620159090"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">499</int>
|
||||
<reference key="object" ref="314396040"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="66689853"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">500</int>
|
||||
<reference key="object" ref="66689853"/>
|
||||
<reference key="parent" ref="314396040"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">501</int>
|
||||
<reference key="object" ref="563826159"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="841860402"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">502</int>
|
||||
<reference key="object" ref="841860402"/>
|
||||
<reference key="parent" ref="563826159"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">509</int>
|
||||
<reference key="object" ref="473445886"/>
|
||||
<object class="NSMutableArray" key="children">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference ref="120906924"/>
|
||||
</object>
|
||||
<reference key="parent" ref="439893737"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">510</int>
|
||||
<reference key="object" ref="120906924"/>
|
||||
<reference key="parent" ref="473445886"/>
|
||||
</object>
|
||||
<object class="IBObjectRecord">
|
||||
<int key="objectID">511</int>
|
||||
<reference key="object" ref="939887647"/>
|
||||
<reference key="parent" ref="1049"/>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="flattenedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>-1.IBPluginDependency</string>
|
||||
<string>-2.IBPluginDependency</string>
|
||||
<string>-3.IBPluginDependency</string>
|
||||
<string>371.IBPluginDependency</string>
|
||||
<string>371.IBWindowTemplateEditedContentRect</string>
|
||||
<string>371.NSWindowTemplate.visibleAtLaunch</string>
|
||||
<string>372.IBPluginDependency</string>
|
||||
<string>450.IBPluginDependency</string>
|
||||
<string>460.IBPluginDependency</string>
|
||||
<string>461.IBPluginDependency</string>
|
||||
<string>462.IBPluginDependency</string>
|
||||
<string>463.IBPluginDependency</string>
|
||||
<string>464.IBPluginDependency</string>
|
||||
<string>469.IBPluginDependency</string>
|
||||
<string>470.IBPluginDependency</string>
|
||||
<string>471.IBPluginDependency</string>
|
||||
<string>472.IBPluginDependency</string>
|
||||
<string>484.IBPluginDependency</string>
|
||||
<string>485.IBPluginDependency</string>
|
||||
<string>488.IBPluginDependency</string>
|
||||
<string>489.IBPluginDependency</string>
|
||||
<string>492.IBPluginDependency</string>
|
||||
<string>493.IBPluginDependency</string>
|
||||
<string>494.IBPluginDependency</string>
|
||||
<string>495.IBPluginDependency</string>
|
||||
<string>499.IBPluginDependency</string>
|
||||
<string>500.IBPluginDependency</string>
|
||||
<string>501.IBPluginDependency</string>
|
||||
<string>502.IBPluginDependency</string>
|
||||
<string>509.IBPluginDependency</string>
|
||||
<string>510.IBPluginDependency</string>
|
||||
<string>511.IBPluginDependency</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>{{108, 156}, {480, 305}}</string>
|
||||
<integer value="1"/>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="unlocalizedProperties">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="1049"/>
|
||||
<reference key="dict.values" ref="1049"/>
|
||||
</object>
|
||||
<nil key="activeLocalization"/>
|
||||
<object class="NSMutableDictionary" key="localizations">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<reference key="dict.sortedKeys" ref="1049"/>
|
||||
<reference key="dict.values" ref="1049"/>
|
||||
</object>
|
||||
<nil key="sourceID"/>
|
||||
<int key="maxID">515</int>
|
||||
</object>
|
||||
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBPartialClassDescription">
|
||||
<string key="className">AppController</string>
|
||||
<string key="superclassName">NSObject</string>
|
||||
<object class="NSMutableDictionary" key="outlets">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>arrayController</string>
|
||||
<string>selectedNameField</string>
|
||||
<string>selectedPriceField</string>
|
||||
<string>tableView</string>
|
||||
<string>theWindow</string>
|
||||
<string>totalCountField</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>NSArrayController</string>
|
||||
<string>NSTextField</string>
|
||||
<string>NSTextField</string>
|
||||
<string>NSTableView</string>
|
||||
<string>NSWindow</string>
|
||||
<string>NSTextField</string>
|
||||
</object>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>arrayController</string>
|
||||
<string>selectedNameField</string>
|
||||
<string>selectedPriceField</string>
|
||||
<string>tableView</string>
|
||||
<string>theWindow</string>
|
||||
<string>totalCountField</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">arrayController</string>
|
||||
<string key="candidateClassName">NSArrayController</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">selectedNameField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">selectedPriceField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">tableView</string>
|
||||
<string key="candidateClassName">NSTableView</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">theWindow</string>
|
||||
<string key="candidateClassName">NSWindow</string>
|
||||
</object>
|
||||
<object class="IBToOneOutletInfo">
|
||||
<string key="name">totalCountField</string>
|
||||
<string key="candidateClassName">NSTextField</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||
<string key="majorKey">IBProjectSource</string>
|
||||
<string key="minorKey">./Classes/AppController.h</string>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<int key="IBDocument.localizationMode">0</int>
|
||||
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.macosx</string>
|
||||
<integer value="1050" key="NS.object.0"/>
|
||||
</object>
|
||||
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||
<integer value="3000" key="NS.object.0"/>
|
||||
</object>
|
||||
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<object class="NSArray" key="dict.sortedKeys">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>NSAddTemplate</string>
|
||||
<string>NSRemoveTemplate</string>
|
||||
</object>
|
||||
<object class="NSArray" key="dict.values">
|
||||
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||
<string>{8, 8}</string>
|
||||
<string>{8, 8}</string>
|
||||
</object>
|
||||
</object>
|
||||
</data>
|
||||
</archive>
|
||||
@@ -6,19 +6,19 @@
|
||||
* Copyright 2012, Your Company All rights reserved.
|
||||
*/
|
||||
|
||||
var ENV = require("system").env,
|
||||
FILE = require("file"),
|
||||
JAKE = require("jake"),
|
||||
var ENV = process.env,
|
||||
cp = require("child_process"),
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
task = JAKE.task,
|
||||
FileList = JAKE.FileList,
|
||||
app = require("cappuccino/jake").app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug",
|
||||
OS = require("os");
|
||||
app = CAPPUCCINO.Jake.applicationtask.app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug";
|
||||
|
||||
app ("ArrayControllerInitialSelectionTest", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(FILE.join("Build", "ArrayControllerInitialSelectionTest.build", configuration));
|
||||
task.setBuildPath(FILE.join("Build", configuration));
|
||||
task.setBuildIntermediatesPath(path.join("Build", "ArrayControllerInitialSelectionTest.build", configuration));
|
||||
task.setBuildPath(path.join("Build", configuration));
|
||||
|
||||
task.setProductName("ArrayControllerInitialSelectionTest");
|
||||
task.setIdentifier("com.yourcompany.ArrayControllerInitialSelectionTest");
|
||||
@@ -26,7 +26,7 @@ app ("ArrayControllerInitialSelectionTest", function(task)
|
||||
task.setAuthor("Your Company");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("ArrayControllerInitialSelectionTest");
|
||||
task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**")));
|
||||
task.setSources((new FileList("**/*.j")).exclude(path.join("Build", "**")));
|
||||
task.setResources(new FileList("Resources/**"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
@@ -58,36 +58,36 @@ task ("release", function()
|
||||
|
||||
task ("run", ["debug"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Debug", "ArrayControllerInitialSelectionTest", "index.html")]);
|
||||
cp.execSync(["open", path.join("Build", "Debug", "ArrayControllerInitialSelectionTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Release", "ArrayControllerInitialSelectionTest", "index.html")]);
|
||||
cp.execSync(["open", path.join("Build", "Release", "ArrayControllerInitialSelectionTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Deployment", "ArrayControllerInitialSelectionTest"));
|
||||
OS.system(["press", "-f", FILE.join("Build", "Release", "ArrayControllerInitialSelectionTest"), FILE.join("Build", "Deployment", "ArrayControllerInitialSelectionTest")]);
|
||||
fs.mkdirSync(path.join("Build", "Deployment", "ArrayControllerInitialSelectionTest"), { recursive: true });
|
||||
cp.execSync(["press", "-f", path.join("Build", "Release", "ArrayControllerInitialSelectionTest"), path.join("Build", "Deployment", "ArrayControllerInitialSelectionTest")].join(" "), { stdio: "inherit" });
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Desktop", "ArrayControllerInitialSelectionTest"));
|
||||
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "ArrayControllerInitialSelectionTest"), FILE.join("Build", "Desktop", "ArrayControllerInitialSelectionTest", "ArrayControllerInitialSelectionTest.app"));
|
||||
fs.mkdirSync(path.join("Build", "Desktop", "ArrayControllerInitialSelectionTest"), { recursive: true });
|
||||
require("@objj/nativehost").buildNativeHost(path.join("Build", "Release", "ArrayControllerInitialSelectionTest"), path.join("Build", "Desktop", "ArrayControllerInitialSelectionTest", "ArrayControllerInitialSelectionTest.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
OS.system([FILE.join("Build", "Desktop", "ArrayControllerInitialSelectionTest", "ArrayControllerInitialSelectionTest.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||
cp.execSync([path.join("Build", "Desktop", "ArrayControllerInitialSelectionTest", "ArrayControllerInitialSelectionTest.app", "Contents", "MacOS", "NativeHost"), "-i"].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
print("----------------------------");
|
||||
print(configuration+" app built at path: "+FILE.join("Build", configuration, "ArrayControllerInitialSelectionTest"));
|
||||
print("----------------------------");
|
||||
console.log("----------------------------");
|
||||
console.log(configuration+" app built at path: "+path.join("Build", configuration, "ArrayControllerInitialSelectionTest"));
|
||||
console.log("----------------------------");
|
||||
}
|
||||
@@ -6,19 +6,19 @@
|
||||
* Copyright 2012, Your Company All rights reserved.
|
||||
*/
|
||||
|
||||
var ENV = require("system").env,
|
||||
FILE = require("file"),
|
||||
JAKE = require("jake"),
|
||||
var ENV = process.env,
|
||||
cp = require("child_process"),
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
task = JAKE.task,
|
||||
FileList = JAKE.FileList,
|
||||
app = require("cappuccino/jake").app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug",
|
||||
OS = require("os");
|
||||
app = CAPPUCCINO.Jake.applicationtask.app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug";
|
||||
|
||||
app ("ArrayControllerRemovingFirstTest", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(FILE.join("Build", "ArrayControllerRemovingFirstTest.build", configuration));
|
||||
task.setBuildPath(FILE.join("Build", configuration));
|
||||
task.setBuildIntermediatesPath(path.join("Build", "ArrayControllerRemovingFirstTest.build", configuration));
|
||||
task.setBuildPath(path.join("Build", configuration));
|
||||
|
||||
task.setProductName("ArrayControllerRemovingFirstTest");
|
||||
task.setIdentifier("com.yourcompany.ArrayControllerRemovingFirstTest");
|
||||
@@ -26,7 +26,7 @@ app ("ArrayControllerRemovingFirstTest", function(task)
|
||||
task.setAuthor("Your Company");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("ArrayControllerRemovingFirstTest");
|
||||
task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**")));
|
||||
task.setSources((new FileList("**/*.j")).exclude(path.join("Build", "**")));
|
||||
task.setResources(new FileList("Resources/**"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
@@ -58,36 +58,36 @@ task ("release", function()
|
||||
|
||||
task ("run", ["debug"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Debug", "ArrayControllerRemovingFirstTest", "index.html")]);
|
||||
cp.execSync(["open", path.join("Build", "Debug", "ArrayControllerRemovingFirstTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Release", "ArrayControllerRemovingFirstTest", "index.html")]);
|
||||
cp.execSync(["open", path.join("Build", "Release", "ArrayControllerRemovingFirstTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Deployment", "ArrayControllerRemovingFirstTest"));
|
||||
OS.system(["press", "-f", FILE.join("Build", "Release", "ArrayControllerRemovingFirstTest"), FILE.join("Build", "Deployment", "ArrayControllerRemovingFirstTest")]);
|
||||
fs.mkdirSync(path.join("Build", "Deployment", "ArrayControllerRemovingFirstTest"), { recursive: true });
|
||||
cp.execSync(["press", "-f", path.join("Build", "Release", "ArrayControllerRemovingFirstTest"), path.join("Build", "Deployment", "ArrayControllerRemovingFirstTest")].join(" "), { stdio: "inherit" });
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Desktop", "ArrayControllerRemovingFirstTest"));
|
||||
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "ArrayControllerRemovingFirstTest"), FILE.join("Build", "Desktop", "ArrayControllerRemovingFirstTest", "ArrayControllerRemovingFirstTest.app"));
|
||||
fs.mkdirSync(path.join("Build", "Desktop", "ArrayControllerRemovingFirstTest"), { recursive: true });
|
||||
require("@objj/nativehost").buildNativeHost(path.join("Build", "Release", "ArrayControllerRemovingFirstTest"), path.join("Build", "Desktop", "ArrayControllerRemovingFirstTest", "ArrayControllerRemovingFirstTest.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
OS.system([FILE.join("Build", "Desktop", "ArrayControllerRemovingFirstTest", "ArrayControllerRemovingFirstTest.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||
cp.execSync([path.join("Build", "Desktop", "ArrayControllerRemovingFirstTest", "ArrayControllerRemovingFirstTest.app", "Contents", "MacOS", "NativeHost"), "-i"].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
print("----------------------------");
|
||||
print(configuration+" app built at path: "+FILE.join("Build", configuration, "ArrayControllerRemovingFirstTest"));
|
||||
print("----------------------------");
|
||||
console.log("----------------------------");
|
||||
console.log(configuration+" app built at path: "+path.join("Build", configuration, "ArrayControllerRemovingFirstTest"));
|
||||
console.log("----------------------------");
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
* Jakefile
|
||||
* ArrayControllerTest
|
||||
*
|
||||
* Created by Alexander Ljungberg on April 2, 2011.
|
||||
* Copyright 2011, WireLoad All rights reserved.
|
||||
*/
|
||||
|
||||
var ENV = process.env,
|
||||
cp = require("child_process"),
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
task = JAKE.task,
|
||||
FileList = JAKE.FileList,
|
||||
app = CAPPUCCINO.Jake.applicationtask.app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug";
|
||||
|
||||
app ("ArrayControllerTest", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(path.join("Build", "ArrayControllerTest.build", configuration));
|
||||
task.setBuildPath(path.join("Build", configuration));
|
||||
|
||||
task.setProductName("ArrayControllerTest");
|
||||
task.setIdentifier("com.yourcompany.ArrayControllerTest");
|
||||
task.setVersion("1.0");
|
||||
task.setAuthor("WireLoad");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("ArrayControllerTest");
|
||||
task.setSources((new FileList("**/*.j")).exclude(path.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", ["ArrayControllerTest"], 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()
|
||||
{
|
||||
cp.execSync(["open", path.join("Build", "Debug", "ArrayControllerTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
cp.execSync(["open", path.join("Build", "Release", "ArrayControllerTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Deployment", "ArrayControllerTest"), { recursive: true });
|
||||
cp.execSync(["press", "-f", path.join("Build", "Release", "ArrayControllerTest"), path.join("Build", "Deployment", "ArrayControllerTest")].join(" "), { stdio: "inherit" });
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Desktop", "ArrayControllerTest"), { recursive: true });
|
||||
require("@objj/nativehost").buildNativeHost(path.join("Build", "Release", "ArrayControllerTest"), path.join("Build", "Desktop", "ArrayControllerTest", "ArrayControllerTest.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
cp.execSync([path.join("Build", "Desktop", "ArrayControllerTest", "ArrayControllerTest.app", "Contents", "MacOS", "NativeHost"), "-i"].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
console.log("----------------------------");
|
||||
console.log(configuration+" app built at path: "+path.join("Build", configuration, "ArrayControllerTest"));
|
||||
console.log("----------------------------");
|
||||
}
|
||||
@@ -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;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;55E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;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;56E;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;57E;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;53E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;58E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;59E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;50E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;60E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;51E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;61E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;36E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;62E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;28E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;63E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;53E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;49E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;64E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;43E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;65E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;44E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;66E;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;52E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;55E;K;23;Line truncated
|
||||
@@ -0,0 +1,161 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="25098" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment version="1050" identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="25098"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="450" id="451"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="371">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="335" y="445" width="480" height="305"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1920" height="1050"/>
|
||||
<view key="contentView" id="372">
|
||||
<rect key="frame" x="0.0" y="0.0" width="480" height="305"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="460">
|
||||
<rect key="frame" x="15" y="150" width="445" height="135"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<clipView key="contentView" id="oWr-jb-zqy">
|
||||
<rect key="frame" x="1" y="1" width="443" height="133"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="firstColumnOnly" columnSelection="YES" autosaveColumns="NO" headerView="464" id="463">
|
||||
<rect key="frame" x="0.0" y="0.0" width="443" height="105"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<size key="intercellSpacing" width="3" height="2"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
|
||||
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
|
||||
</tableView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="462">
|
||||
<rect key="frame" x="1" y="119" width="223" height="15"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="461">
|
||||
<rect key="frame" x="224" y="17" width="15" height="102"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<tableHeaderView key="headerView" wantsLayer="YES" id="464">
|
||||
<rect key="frame" x="0.0" y="0.0" width="443" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</tableHeaderView>
|
||||
</scrollView>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="469">
|
||||
<rect key="frame" x="9" y="110" width="40" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSAddTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="470">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="add:" target="511" id="513"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="471">
|
||||
<rect key="frame" x="49" y="110" width="41" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" bezelStyle="rounded" image="NSRemoveTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="472">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="remove:" target="511" id="514"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="484">
|
||||
<rect key="frame" x="12" y="77" width="155" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Selected Name:" id="485">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="488">
|
||||
<rect key="frame" x="66" y="47" width="101" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Selected Price:" id="489">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="492">
|
||||
<rect key="frame" x="17" y="20" width="150" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Sum of Selected Prices:" id="493">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="494">
|
||||
<rect key="frame" x="174" y="20" width="292" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Label" id="495">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="499">
|
||||
<rect key="frame" x="174" y="75" width="286" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="500">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField focusRingType="none" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="501">
|
||||
<rect key="frame" x="174" y="45" width="286" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="502">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="509">
|
||||
<rect key="frame" x="90" y="110" width="76" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Insert" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="510">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="insert:" target="511" id="515"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
<point key="canvasLocation" x="140" y="142"/>
|
||||
</window>
|
||||
<customObject id="450" customClass="AppController">
|
||||
<connections>
|
||||
<outlet property="arrayController" destination="511" id="512"/>
|
||||
<outlet property="selectedNameField" destination="499" id="507"/>
|
||||
<outlet property="selectedPriceField" destination="501" id="508"/>
|
||||
<outlet property="tableView" destination="463" id="483"/>
|
||||
<outlet property="theWindow" destination="371" id="459"/>
|
||||
<outlet property="totalCountField" destination="494" id="498"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<arrayController id="511"/>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="NSAddTemplate" width="18" height="16"/>
|
||||
<image name="NSRemoveTemplate" width="18" height="4"/>
|
||||
</resources>
|
||||
</document>
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,93 +0,0 @@
|
||||
/*
|
||||
* Jakefile
|
||||
* AttachedSheet2
|
||||
*
|
||||
* Created by Saikat Chakrabarti on March 16, 2010.
|
||||
* Copyright 2010, gomockingbird.com 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 ("AttachedSheet2", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(FILE.join("Build", "AttachedSheet2.build", configuration));
|
||||
task.setBuildPath(FILE.join("Build", configuration));
|
||||
|
||||
task.setProductName("AttachedSheet2");
|
||||
task.setIdentifier("com.gomockingbird.AttachedSheet2");
|
||||
task.setVersion("1.0");
|
||||
task.setAuthor("Saikat Chakrabarti and Sheena Pakanati");
|
||||
task.setEmail("contact @nospam@ gomockingbird.com");
|
||||
task.setSummary("AttachedSheet2");
|
||||
task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**")));
|
||||
task.setResources(new FileList("Resources/*"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
|
||||
if (configuration === "Debug")
|
||||
task.setCompilerFlags("-DDEBUG -g");
|
||||
else
|
||||
task.setCompilerFlags("-O");
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
print("----------------------------")
|
||||
print(configuration+" app built at path: "+FILE.join("Build", configuration, "AttachedSheet2"));
|
||||
print("----------------------------")
|
||||
}
|
||||
|
||||
task ("default", ["AttachedSheet2"], 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", "AttachedSheet2", "index.html")]);
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Release", "AttachedSheet2", "index.html")]);
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Deployment", "AttachedSheet2"));
|
||||
OS.system(["press", "-f", FILE.join("Build", "Release", "AttachedSheet2"), FILE.join("Build", "Deployment", "AttachedSheet2")]);
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("press", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Press", "AttachedSheet2"));
|
||||
OS.system(["press", "-f", FILE.join("Build", "Release", "AttachedSheet2"), FILE.join("Build", "Press", "AttachedSheet2")]);
|
||||
});
|
||||
|
||||
task ("flatten", ["press"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Flatten", "AttachedSheet2"));
|
||||
OS.system(["flatten", "-f", "--verbose", "--split", "3", "-c", "closure-compiler", FILE.join("Build", "Press", "AttachedSheet2"), FILE.join("Build", "Flatten", "AttachedSheet2")]);
|
||||
});
|
||||
@@ -1 +0,0 @@
|
||||
280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;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;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;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.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;81ELine truncated
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1 +0,0 @@
|
||||
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;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;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;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;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;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;64E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;67E;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;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;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;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;42E;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;48E;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;52E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;72E;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;73E;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;74E;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;64E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;75E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;53E;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;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;63E;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;CLine truncated
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,304 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
B210EF7E153B0A8D005D15EE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B210EF7D153B0A8D005D15EE /* Cocoa.framework */; };
|
||||
B210EF88153B0A8D005D15EE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B210EF86153B0A8D005D15EE /* InfoPlist.strings */; };
|
||||
B210EF8A153B0A8D005D15EE /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B210EF89153B0A8D005D15EE /* main.m */; };
|
||||
B210EF8E153B0A8D005D15EE /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B210EF8C153B0A8D005D15EE /* Credits.rtf */; };
|
||||
B210EF91153B0A8D005D15EE /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B210EF90153B0A8D005D15EE /* AppDelegate.m */; };
|
||||
B2129637153B0B3000E15669 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = B2129636153B0B3000E15669 /* MainMenu.xib */; };
|
||||
B212963B153B0B4900E15669 /* Window.xib in Resources */ = {isa = PBXBuildFile; fileRef = B2129639153B0B4900E15669 /* Window.xib */; };
|
||||
B212963C153B0E6A00E15669 /* SheetWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = B2129630153B0ADF00E15669 /* SheetWindow.m */; };
|
||||
B212963D153B0E6C00E15669 /* SheetWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B2129632153B0ADF00E15669 /* SheetWindowController.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
B210EF79153B0A8D005D15EE /* TestSheet.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = TestSheet.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B210EF7D153B0A8D005D15EE /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
|
||||
B210EF80153B0A8D005D15EE /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
|
||||
B210EF81153B0A8D005D15EE /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
|
||||
B210EF82153B0A8D005D15EE /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
B210EF85153B0A8D005D15EE /* TestSheet-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TestSheet-Info.plist"; sourceTree = "<group>"; };
|
||||
B210EF87153B0A8D005D15EE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
B210EF89153B0A8D005D15EE /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
B210EF8B153B0A8D005D15EE /* TestSheet-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TestSheet-Prefix.pch"; sourceTree = "<group>"; };
|
||||
B210EF8D153B0A8D005D15EE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = "<group>"; };
|
||||
B210EF8F153B0A8D005D15EE /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
|
||||
B210EF90153B0A8D005D15EE /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
|
||||
B212962F153B0ADF00E15669 /* SheetWindow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SheetWindow.h; sourceTree = "<group>"; };
|
||||
B2129630153B0ADF00E15669 /* SheetWindow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SheetWindow.m; sourceTree = "<group>"; };
|
||||
B2129631153B0ADF00E15669 /* SheetWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SheetWindowController.h; sourceTree = "<group>"; };
|
||||
B2129632153B0ADF00E15669 /* SheetWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SheetWindowController.m; sourceTree = "<group>"; };
|
||||
B2129636153B0B3000E15669 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = ../Resources/MainMenu.xib; sourceTree = "<group>"; };
|
||||
B2129639153B0B4900E15669 /* Window.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Window.xib; path = ../Resources/Window.xib; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
B210EF76153B0A8D005D15EE /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B210EF7E153B0A8D005D15EE /* Cocoa.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
B210EF6E153B0A8D005D15EE = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B2129639153B0B4900E15669 /* Window.xib */,
|
||||
B2129636153B0B3000E15669 /* MainMenu.xib */,
|
||||
B210EF83153B0A8D005D15EE /* TestSheet */,
|
||||
B210EF7C153B0A8D005D15EE /* Frameworks */,
|
||||
B210EF7A153B0A8D005D15EE /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B210EF7A153B0A8D005D15EE /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B210EF79153B0A8D005D15EE /* TestSheet.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B210EF7C153B0A8D005D15EE /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B210EF7D153B0A8D005D15EE /* Cocoa.framework */,
|
||||
B210EF7F153B0A8D005D15EE /* Other Frameworks */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B210EF7F153B0A8D005D15EE /* Other Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B210EF80153B0A8D005D15EE /* AppKit.framework */,
|
||||
B210EF81153B0A8D005D15EE /* CoreData.framework */,
|
||||
B210EF82153B0A8D005D15EE /* Foundation.framework */,
|
||||
);
|
||||
name = "Other Frameworks";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B210EF83153B0A8D005D15EE /* TestSheet */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B210EF8F153B0A8D005D15EE /* AppDelegate.h */,
|
||||
B210EF90153B0A8D005D15EE /* AppDelegate.m */,
|
||||
B212962F153B0ADF00E15669 /* SheetWindow.h */,
|
||||
B2129630153B0ADF00E15669 /* SheetWindow.m */,
|
||||
B2129631153B0ADF00E15669 /* SheetWindowController.h */,
|
||||
B2129632153B0ADF00E15669 /* SheetWindowController.m */,
|
||||
B210EF84153B0A8D005D15EE /* Supporting Files */,
|
||||
);
|
||||
path = TestSheet;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B210EF84153B0A8D005D15EE /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
B210EF85153B0A8D005D15EE /* TestSheet-Info.plist */,
|
||||
B210EF86153B0A8D005D15EE /* InfoPlist.strings */,
|
||||
B210EF89153B0A8D005D15EE /* main.m */,
|
||||
B210EF8B153B0A8D005D15EE /* TestSheet-Prefix.pch */,
|
||||
B210EF8C153B0A8D005D15EE /* Credits.rtf */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
B210EF78153B0A8D005D15EE /* TestSheet */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = B210EF97153B0A8D005D15EE /* Build configuration list for PBXNativeTarget "TestSheet" */;
|
||||
buildPhases = (
|
||||
B210EF75153B0A8D005D15EE /* Sources */,
|
||||
B210EF76153B0A8D005D15EE /* Frameworks */,
|
||||
B210EF77153B0A8D005D15EE /* Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = TestSheet;
|
||||
productName = TestSheet;
|
||||
productReference = B210EF79153B0A8D005D15EE /* TestSheet.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
B210EF70153B0A8D005D15EE /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0430;
|
||||
};
|
||||
buildConfigurationList = B210EF73153B0A8D005D15EE /* Build configuration list for PBXProject "TestSheet" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
);
|
||||
mainGroup = B210EF6E153B0A8D005D15EE;
|
||||
productRefGroup = B210EF7A153B0A8D005D15EE /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
B210EF78153B0A8D005D15EE /* TestSheet */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
B210EF77153B0A8D005D15EE /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B210EF88153B0A8D005D15EE /* InfoPlist.strings in Resources */,
|
||||
B2129637153B0B3000E15669 /* MainMenu.xib in Resources */,
|
||||
B212963B153B0B4900E15669 /* Window.xib in Resources */,
|
||||
B210EF8E153B0A8D005D15EE /* Credits.rtf in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
B210EF75153B0A8D005D15EE /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
B210EF8A153B0A8D005D15EE /* main.m in Sources */,
|
||||
B210EF91153B0A8D005D15EE /* AppDelegate.m in Sources */,
|
||||
B212963D153B0E6C00E15669 /* SheetWindowController.m in Sources */,
|
||||
B212963C153B0E6A00E15669 /* SheetWindow.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
B210EF86153B0A8D005D15EE /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B210EF87153B0A8D005D15EE /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
B210EF8C153B0A8D005D15EE /* Credits.rtf */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
B210EF8D153B0A8D005D15EE /* en */,
|
||||
);
|
||||
name = Credits.rtf;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
B210EF95153B0A8D005D15EE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
B210EF96153B0A8D005D15EE /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
|
||||
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.7;
|
||||
SDKROOT = macosx;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
B210EF98153B0A8D005D15EE /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "TestSheet/TestSheet-Prefix.pch";
|
||||
INFOPLIST_FILE = "TestSheet/TestSheet-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
B210EF99153B0A8D005D15EE /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "TestSheet/TestSheet-Prefix.pch";
|
||||
INFOPLIST_FILE = "TestSheet/TestSheet-Info.plist";
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
B210EF73153B0A8D005D15EE /* Build configuration list for PBXProject "TestSheet" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
B210EF95153B0A8D005D15EE /* Debug */,
|
||||
B210EF96153B0A8D005D15EE /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
B210EF97153B0A8D005D15EE /* Build configuration list for PBXNativeTarget "TestSheet" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
B210EF98153B0A8D005D15EE /* Debug */,
|
||||
B210EF99153B0A8D005D15EE /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = B210EF70153B0A8D005D15EE /* Project object */;
|
||||
}
|
||||
Generated
-7
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:TestSheet.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Jakefile
|
||||
* AttachedSheet2Test
|
||||
*
|
||||
* Created by Saikat Chakrabarti on March 16, 2010.
|
||||
* Copyright 2010, gomockingbird.com All rights reserved.
|
||||
*/
|
||||
|
||||
var ENV = process.env,
|
||||
cp = require("child_process"),
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
task = JAKE.task,
|
||||
FileList = JAKE.FileList,
|
||||
app = CAPPUCCINO.Jake.applicationtask.app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug";
|
||||
|
||||
app ("AttachedSheet2Test", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(path.join("Build", "AttachedSheet2Test.build", configuration));
|
||||
task.setBuildPath(path.join("Build", configuration));
|
||||
|
||||
task.setProductName("AttachedSheet2Test");
|
||||
task.setIdentifier("com.gomockingbird.AttachedSheet2Test");
|
||||
task.setVersion("1.0");
|
||||
task.setAuthor("Saikat Chakrabarti and Sheena Pakanati");
|
||||
task.setEmail("contact @nospam@ gomockingbird.com");
|
||||
task.setSummary("AttachedSheet2Test");
|
||||
task.setSources((new FileList("**/*.j")).exclude(path.join("Build", "**")));
|
||||
task.setResources(new FileList("Resources/*"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
|
||||
if (configuration === "Debug")
|
||||
task.setCompilerFlags("-DDEBUG -g");
|
||||
else
|
||||
task.setCompilerFlags("-O");
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
console.log("----------------------------")
|
||||
console.log(configuration+" app built at path: "+path.join("Build", configuration, "AttachedSheet2Test"));
|
||||
console.log("----------------------------")
|
||||
}
|
||||
|
||||
task ("default", ["AttachedSheet2Test"], 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()
|
||||
{
|
||||
cp.execSync(["open", path.join("Build", "Debug", "AttachedSheet2Test", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
cp.execSync(["open", path.join("Build", "Release", "AttachedSheet2Test", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Deployment", "AttachedSheet2Test"), { recursive: true });
|
||||
cp.execSync(["press", "-f", path.join("Build", "Release", "AttachedSheet2Test"), path.join("Build", "Deployment", "AttachedSheet2Test")].join(" "), { stdio: "inherit" });
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("press", ["release"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Press", "AttachedSheet2Test"), { recursive: true });
|
||||
cp.execSync(["press", "-f", path.join("Build", "Release", "AttachedSheet2Test"), path.join("Build", "Press", "AttachedSheet2Test")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("flatten", ["press"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Flatten", "AttachedSheet2Test"), { recursive: true });
|
||||
cp.execSync(["flatten", "-f", "--verbose", "--split", "3", "-c", "closure-compiler", path.join("Build", "Press", "AttachedSheet2Test"), path.join("Build", "Flatten", "AttachedSheet2Test")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
File renamed without changes.
@@ -0,0 +1 @@
|
||||
280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;0E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;4E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;0E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;1;7E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;1;9E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;11E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;13E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;15E;D;K;6;CP$UIDd;2;17E;D;K;6;CP$UIDd;2;18E;D;K;6;CP$UIDd;2;19E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;22E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;24E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;28E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;42E;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;46E;D;K;6;CP$UIDd;2;47E;D;K;6;CP$UIDd;2;48E;D;K;6;CP$UIDd;2;49E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;58E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;69E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;72E;D;K;6;CP$UIDd;2;73E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;75E;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;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;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.objectsA;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;78E;D;K;6;CP$UIDd;2;80E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;81E;D;K;6;CP$UIDd;2;81ELine truncated
|
||||
@@ -0,0 +1,489 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="25098" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment version="1050" identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="25098"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="450" id="451"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
|
||||
<menu title="AMainMenu" systemMenu="main" id="29" userLabel="MainMenu">
|
||||
<items>
|
||||
<menuItem title="NewApplication" id="56" userLabel="AttachedSheet2">
|
||||
<menu key="submenu" title="NewApplication" systemMenu="apple" id="57">
|
||||
<items>
|
||||
<menuItem title="About AttachedSheet2" id="58">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-2" id="142"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="236">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Preferences…" keyEquivalent="," id="129" userLabel="121"/>
|
||||
<menuItem isSeparatorItem="YES" id="143">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Services" id="131">
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="130"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="144">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Hide AttachedSheet2" keyEquivalent="h" id="134">
|
||||
<connections>
|
||||
<action selector="hide:" target="-1" id="367"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="145">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-1" id="368"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="150">
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-1" id="370"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="149">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Quit AttachedSheet2" keyEquivalent="q" id="136" userLabel="1111">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-3" id="449"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="File" id="83">
|
||||
<menu key="submenu" title="File" id="81">
|
||||
<items>
|
||||
<menuItem title="New Window" keyEquivalent="n" id="82" userLabel="9">
|
||||
<connections>
|
||||
<action selector="newDocument:" target="-1" id="498"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="New Modal Window" keyEquivalent="N" id="488" userLabel="9">
|
||||
<connections>
|
||||
<action selector="newModalWindow:" target="-1" id="494"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="New Sheet" keyEquivalent="s" id="490" userLabel="9">
|
||||
<connections>
|
||||
<action selector="newSheet:" target="-1" id="495"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="New Modal Sheet" keyEquivalent="S" id="492" userLabel="9">
|
||||
<connections>
|
||||
<action selector="newModalSheet:" target="-1" id="497"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="79" userLabel="7">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Close" keyEquivalent="w" id="73" userLabel="1">
|
||||
<connections>
|
||||
<action selector="performClose:" target="-1" id="193"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="74" userLabel="2">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Page Setup..." keyEquivalent="P" id="77" userLabel="5">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="runPageLayout:" target="-1" id="87"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Print…" keyEquivalent="p" id="78" userLabel="6">
|
||||
<connections>
|
||||
<action selector="print:" target="-1" id="86"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" id="217">
|
||||
<menu key="submenu" title="Edit" id="205">
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="207">
|
||||
<connections>
|
||||
<action selector="undo:" target="-1" id="223"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="Z" id="215">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="redo:" target="-1" id="231"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="206">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="199">
|
||||
<connections>
|
||||
<action selector="cut:" target="-1" id="228"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="197">
|
||||
<connections>
|
||||
<action selector="copy:" target="-1" id="224"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="203">
|
||||
<connections>
|
||||
<action selector="paste:" target="-1" id="226"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Delete" id="202">
|
||||
<connections>
|
||||
<action selector="delete:" target="-1" id="235"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="198">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="-1" id="232"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="214">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Find" id="218">
|
||||
<menu key="submenu" title="Find" id="220">
|
||||
<items>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="209">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="241"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="208"/>
|
||||
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="213">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="221"/>
|
||||
<menuItem title="Jump to Selection" keyEquivalent="j" id="210">
|
||||
<connections>
|
||||
<action selector="centerSelectionInVisibleArea:" target="-1" id="245"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Spelling and Grammar" id="216">
|
||||
<menu key="submenu" title="Spelling and Grammar" id="200">
|
||||
<items>
|
||||
<menuItem title="Show Spelling…" keyEquivalent=":" id="204">
|
||||
<connections>
|
||||
<action selector="showGuessPanel:" target="-1" id="230"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Spelling" keyEquivalent=";" id="201">
|
||||
<connections>
|
||||
<action selector="checkSpelling:" target="-1" id="225"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Spelling While Typing" id="219">
|
||||
<connections>
|
||||
<action selector="toggleContinuousSpellChecking:" target="-1" id="222"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Grammar With Spelling" id="346">
|
||||
<connections>
|
||||
<action selector="toggleGrammarChecking:" target="-1" id="347"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Substitutions" id="348">
|
||||
<menu key="submenu" title="Substitutions" id="349">
|
||||
<items>
|
||||
<menuItem title="Smart Copy/Paste" tag="1" keyEquivalent="f" id="350">
|
||||
<connections>
|
||||
<action selector="toggleSmartInsertDelete:" target="-1" id="355"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Quotes" tag="2" keyEquivalent="g" id="351">
|
||||
<connections>
|
||||
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="356"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Links" tag="3" keyEquivalent="G" id="354">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticLinkDetection:" target="-1" id="357"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Speech" id="211">
|
||||
<menu key="submenu" title="Speech" id="212">
|
||||
<items>
|
||||
<menuItem title="Start Speaking" id="196">
|
||||
<connections>
|
||||
<action selector="startSpeaking:" target="-1" id="233"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Stop Speaking" id="195">
|
||||
<connections>
|
||||
<action selector="stopSpeaking:" target="-1" id="227"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Format" id="375">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Format" id="376">
|
||||
<items>
|
||||
<menuItem title="Font" id="377">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Font" systemMenu="font" id="388">
|
||||
<items>
|
||||
<menuItem title="Show Fonts" keyEquivalent="t" id="389"/>
|
||||
<menuItem title="Bold" tag="2" keyEquivalent="b" id="390"/>
|
||||
<menuItem title="Italic" tag="1" keyEquivalent="i" id="391"/>
|
||||
<menuItem title="Underline" keyEquivalent="u" id="392">
|
||||
<connections>
|
||||
<action selector="underline:" target="-1" id="432"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="393"/>
|
||||
<menuItem title="Bigger" tag="3" keyEquivalent="+" id="394"/>
|
||||
<menuItem title="Smaller" tag="4" keyEquivalent="-" id="395"/>
|
||||
<menuItem isSeparatorItem="YES" id="396"/>
|
||||
<menuItem title="Kern" id="397">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Kern" id="415">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="416">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useStandardKerning:" target="-1" id="438"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="417">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="turnOffKerning:" target="-1" id="441"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Tighten" id="418">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="tightenKerning:" target="-1" id="431"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Loosen" id="419">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="loosenKerning:" target="-1" id="435"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Ligature" id="398">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Ligature" id="411">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="412">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useStandardLigatures:" target="-1" id="439"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use None" id="413">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="turnOffLigatures:" target="-1" id="440"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use All" id="414">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="useAllLigatures:" target="-1" id="434"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Baseline" id="399">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Baseline" id="405">
|
||||
<items>
|
||||
<menuItem title="Use Default" id="406">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="unscript:" target="-1" id="437"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Superscript" id="407">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="superscript:" target="-1" id="430"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Subscript" id="408">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="subscript:" target="-1" id="429"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Raise" id="409">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="raiseBaseline:" target="-1" id="426"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Lower" id="410">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowerBaseline:" target="-1" id="427"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="400"/>
|
||||
<menuItem title="Show Colors" keyEquivalent="C" id="401">
|
||||
<connections>
|
||||
<action selector="orderFrontColorPanel:" target="-1" id="433"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="402"/>
|
||||
<menuItem title="Copy Style" keyEquivalent="c" id="403">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="copyFont:" target="-1" id="428"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Style" keyEquivalent="v" id="404">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteFont:" target="-1" id="436"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Text" id="378">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Text" id="379">
|
||||
<items>
|
||||
<menuItem title="Align Left" keyEquivalent="{" id="380">
|
||||
<connections>
|
||||
<action selector="alignLeft:" target="-1" id="442"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Center" keyEquivalent="|" id="381">
|
||||
<connections>
|
||||
<action selector="alignCenter:" target="-1" id="445"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Justify" id="382">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="alignJustified:" target="-1" id="443"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Align Right" keyEquivalent="}" id="383">
|
||||
<connections>
|
||||
<action selector="alignRight:" target="-1" id="447"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="384"/>
|
||||
<menuItem title="Show Ruler" id="385">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleRuler:" target="-1" id="446"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy Ruler" keyEquivalent="c" id="386">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="copyRuler:" target="-1" id="444"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste Ruler" keyEquivalent="v" id="387">
|
||||
<modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteRuler:" target="-1" id="448"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="View" id="295">
|
||||
<menu key="submenu" title="View" id="296">
|
||||
<items>
|
||||
<menuItem title="Show Toolbar" keyEquivalent="t" id="297">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="toggleToolbarShown:" target="-1" id="366"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Customize Toolbar…" id="298">
|
||||
<connections>
|
||||
<action selector="runToolbarCustomizationPalette:" target="-1" id="365"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="19">
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="24">
|
||||
<items>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="23">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="-1" id="37"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Zoom" id="239">
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="240"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="92">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Bring All to Front" id="5">
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="-1" id="39"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Help" id="103" userLabel="1">
|
||||
<menu key="submenu" title="Help" id="106" userLabel="2">
|
||||
<items>
|
||||
<menuItem title="NewApplication Help" keyEquivalent="?" id="111">
|
||||
<connections>
|
||||
<action selector="showHelp:" target="-1" id="360"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
<point key="canvasLocation" x="140" y="293"/>
|
||||
</menu>
|
||||
<customObject id="450" customClass="AppController"/>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -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;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;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;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;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;48E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;50E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;51E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;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;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;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;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;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;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;42E;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;48E;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;44E;D;K;6;CP$UIDd;2;52E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;53E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;54E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;55E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;56E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;57E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;59E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;60E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;61E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;62E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;63E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;64E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;65E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;66E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;67E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;68E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;70E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;71E;D;K;6;CP$UIDd;2;11E;D;K;6;CP$UIDd;2;72E;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;73E;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;74E;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;56E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;75E;E;D;K;6;$classD;K;6;CP$UIDd;2;14E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;64E;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;11E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;50E;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;CLine truncated
|
||||
@@ -0,0 +1,290 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="24506" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
|
||||
<dependencies>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="24506"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="SheetWindowController" propertyAccessControl="none">
|
||||
<connections>
|
||||
<outlet property="_altCloseButton" destination="159" id="164"/>
|
||||
<outlet property="_closableMaskButton" destination="186" id="195"/>
|
||||
<outlet property="_closeButton" destination="19" id="163"/>
|
||||
<outlet property="_miniaturizableMaskButton" destination="190" id="196"/>
|
||||
<outlet property="_orderOutAfterCheckbox" destination="166" id="168"/>
|
||||
<outlet property="_otherCloseButton" destination="161" id="165"/>
|
||||
<outlet property="_resizableMaskButton" destination="192" id="197"/>
|
||||
<outlet property="_shadeContentView" destination="201" id="206"/>
|
||||
<outlet property="_shadeParentWindow" destination="220" id="223"/>
|
||||
<outlet property="_shadeWindowView" destination="199" id="205"/>
|
||||
<outlet property="_textField" destination="9" id="246"/>
|
||||
<outlet property="_titledMaskButton" destination="184" id="194"/>
|
||||
<outlet property="_tokenField" destination="224" id="243"/>
|
||||
<outlet property="_windowTypeMatrix" destination="169" id="180"/>
|
||||
<outlet property="window" destination="3" id="132"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application"/>
|
||||
<window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="3">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<windowPositionMask key="initialPositionMask" leftStrut="YES" bottomStrut="YES"/>
|
||||
<rect key="contentRect" x="71" y="767" width="468" height="458"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="878"/>
|
||||
<view key="contentView" id="4">
|
||||
<rect key="frame" x="0.0" y="0.0" width="468" height="458"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<slider verticalHuggingPriority="750" id="6">
|
||||
<rect key="frame" x="59" y="56" width="96" height="21"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<sliderCell key="cell" continuous="YES" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="31">
|
||||
<font key="font" size="12" name="Helvetica"/>
|
||||
</sliderCell>
|
||||
<connections>
|
||||
<action selector="takeDoubleValueFrom:" target="9" id="33"/>
|
||||
</connections>
|
||||
</slider>
|
||||
<textField verticalHuggingPriority="750" id="9">
|
||||
<rect key="frame" x="166" y="55" width="96" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="CPTextField" drawsBackground="YES" id="30">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" id="19">
|
||||
<rect key="frame" x="381" y="13" width="80" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Close" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="20">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
DQ
|
||||
</string>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" id="17">
|
||||
<rect key="frame" x="14" y="378" width="150" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Modal Window" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="22">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="newModalWindow:" target="-2" id="137"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" id="16">
|
||||
<rect key="frame" x="14" y="346" width="150" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Sheet" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="23">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="newSheet:" target="-2" id="138"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" id="14">
|
||||
<rect key="frame" x="14" y="410" width="150" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Window" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="25">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="newWindow:" target="-2" id="139"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" id="11">
|
||||
<rect key="frame" x="14" y="314" width="150" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Modal Sheet" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="28">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="newModalSheet:" target="-2" id="136"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" id="145">
|
||||
<rect key="frame" x="14" y="282" width="150" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Alert Sheet" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="146">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="newAlertSheet:" target="-2" id="198"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" id="159">
|
||||
<rect key="frame" x="234" y="13" width="147" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Close Parent Too" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="160">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button verticalHuggingPriority="750" id="161">
|
||||
<rect key="frame" x="14" y="13" width="122" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Chain Sheets" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="162">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button id="166">
|
||||
<rect key="frame" x="18" y="190" width="329" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="orderOut: after endSheet:" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="167">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button id="199">
|
||||
<rect key="frame" x="18" y="134" width="329" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Shade Window View of Non-CIB Windows" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="200">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button id="201">
|
||||
<rect key="frame" x="18" y="114" width="329" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Shade Content View of Non-CIB Window" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="202">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button id="220">
|
||||
<rect key="frame" x="18" y="94" width="329" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="Shade Parent Window on windowWillBeginSheet:" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="221">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button id="184">
|
||||
<rect key="frame" x="193" y="281" width="174" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="CPTitledWindowMask" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="185">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button id="186">
|
||||
<rect key="frame" x="193" y="261" width="174" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="CPClosableWindowMask" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="187">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<matrix verticalHuggingPriority="750" allowsEmptySelection="NO" id="169">
|
||||
<rect key="frame" x="193" y="302" width="261" height="136"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="cellSize" width="261" height="21"/>
|
||||
<size key="intercellSpacing" width="4" height="2"/>
|
||||
<buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" inset="2" id="170">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<cells>
|
||||
<column>
|
||||
<buttonCell type="radio" title="CIB Window" imagePosition="left" alignment="left" state="on" tag="1" inset="2" id="171">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<buttonCell type="radio" title="CPHUDBackgroundWindowMask" imagePosition="left" alignment="left" tag="2" inset="2" id="172">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<buttonCell type="radio" title="CPBorderlessWindowMask" imagePosition="left" alignment="left" tag="3" inset="2" id="173">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<buttonCell type="radio" title="CPTexturedBackgroundWindowMask" imagePosition="left" alignment="left" tag="4" inset="2" id="179">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<buttonCell type="radio" title="CPDocModalWindowMask" imagePosition="left" alignment="left" tag="5" inset="2" id="181">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<buttonCell type="radio" title="CIB HUD Window" imagePosition="left" alignment="left" tag="-1" inset="2" id="227">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</column>
|
||||
</cells>
|
||||
</matrix>
|
||||
<button id="190">
|
||||
<rect key="frame" x="192" y="241" width="210" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="CPMiniaturizableWindowMask" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="191">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<button id="192">
|
||||
<rect key="frame" x="192" y="221" width="180" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="CPResizableWindowMask" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="193">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" id="203">
|
||||
<rect key="frame" x="30" y="158" width="368" height="26"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" sendsActionOnEndEditing="YES" id="204">
|
||||
<font key="font" metaFont="system" size="10"/>
|
||||
<string key="title">It is not specified if endSheet: or orderOut: on sheet should be called first. However, cannot call orderOut: after endSheet: when chaining.</string>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<tokenField verticalHuggingPriority="750" id="224">
|
||||
<rect key="frame" x="275" y="55" width="96" height="22"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<tokenFieldCell key="cell" selectable="YES" editable="YES" borderStyle="bezel" alignment="left" placeholderString="CPTokenField" drawsBackground="YES" allowsEditingTextAttributes="YES" id="225">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
</tokenFieldCell>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="-2" id="226"/>
|
||||
</connections>
|
||||
</tokenField>
|
||||
<button verticalHuggingPriority="750" id="229">
|
||||
<rect key="frame" x="14" y="249" width="150" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Popover" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="230">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="newPopover:" target="-2" id="232"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="initialFirstResponder" destination="224" id="245"/>
|
||||
</connections>
|
||||
</window>
|
||||
<button id="188">
|
||||
<rect key="frame" x="0.0" y="0.0" width="174" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="check" title="CPTitledWindowMask" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="189">
|
||||
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
</buttonCell>
|
||||
</button>
|
||||
</objects>
|
||||
</document>
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -6,19 +6,19 @@
|
||||
* Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||
*/
|
||||
|
||||
var ENV = require("system").env,
|
||||
FILE = require("file"),
|
||||
JAKE = require("jake"),
|
||||
var ENV = process.env,
|
||||
cp = require("child_process"),
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
task = JAKE.task,
|
||||
FileList = JAKE.FileList,
|
||||
app = require("cappuccino/jake").app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug",
|
||||
OS = require("os");
|
||||
app = CAPPUCCINO.Jake.applicationtask.app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug";
|
||||
|
||||
app ("BindingContentArrayTest", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(FILE.join("Build", "BindingContentArrayTest.build", configuration));
|
||||
task.setBuildPath(FILE.join("Build", configuration));
|
||||
task.setBuildIntermediatesPath(path.join("Build", "BindingContentArrayTest.build", configuration));
|
||||
task.setBuildPath(path.join("Build", configuration));
|
||||
|
||||
task.setProductName("BindingContentArrayTest");
|
||||
task.setIdentifier("com.aparajita.BindingContentArrayTest");
|
||||
@@ -26,7 +26,7 @@ app ("BindingContentArrayTest", function(task)
|
||||
task.setAuthor("Victory-Heart Productions");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("BindingContentArrayTest");
|
||||
task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**")));
|
||||
task.setSources((new FileList("**/*.j")).exclude(path.join("Build", "**")));
|
||||
task.setResources(new FileList("Resources/**"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
@@ -58,36 +58,36 @@ task ("release", function()
|
||||
|
||||
task ("run", ["debug"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Debug", "BindingContentArrayTest", "index.html")]);
|
||||
cp.execSync(["open", path.join("Build", "Debug", "BindingContentArrayTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Release", "BindingContentArrayTest", "index.html")]);
|
||||
cp.execSync(["open", path.join("Build", "Release", "BindingContentArrayTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Deployment", "BindingContentArrayTest"));
|
||||
OS.system(["press", "-f", FILE.join("Build", "Release", "BindingContentArrayTest"), FILE.join("Build", "Deployment", "BindingContentArrayTest")]);
|
||||
fs.mkdirSync(path.join("Build", "Deployment", "BindingContentArrayTest"), { recursive: true });
|
||||
cp.execSync(["press", "-f", path.join("Build", "Release", "BindingContentArrayTest"), path.join("Build", "Deployment", "BindingContentArrayTest")].join(" "), { stdio: "inherit" });
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Desktop", "BindingContentArrayTest"));
|
||||
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "BindingContentArrayTest"), FILE.join("Build", "Desktop", "BindingContentArrayTest", "BindingContentArrayTest.app"));
|
||||
fs.mkdirSync(path.join("Build", "Desktop", "BindingContentArrayTest"), { recursive: true });
|
||||
require("@objj/nativehost").buildNativeHost(path.join("Build", "Release", "BindingContentArrayTest"), path.join("Build", "Desktop", "BindingContentArrayTest", "BindingContentArrayTest.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
OS.system([FILE.join("Build", "Desktop", "BindingContentArrayTest", "BindingContentArrayTest.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||
cp.execSync([path.join("Build", "Desktop", "BindingContentArrayTest", "BindingContentArrayTest.app", "Contents", "MacOS", "NativeHost"), "-i"].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
print("----------------------------");
|
||||
print(configuration+" app built at path: "+FILE.join("Build", configuration, "BindingContentArrayTest"));
|
||||
print("----------------------------");
|
||||
console.log("----------------------------");
|
||||
console.log(configuration+" app built at path: "+path.join("Build", configuration, "BindingContentArrayTest"));
|
||||
console.log("----------------------------");
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,93 +0,0 @@
|
||||
/*
|
||||
* Jakefile
|
||||
* cgcanvascontext
|
||||
*
|
||||
* Created by You on February 19, 2013.
|
||||
* Copyright 2013, 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 ("cgcanvascontext", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(FILE.join("Build", "cgcanvascontext.build", configuration));
|
||||
task.setBuildPath(FILE.join("Build", configuration));
|
||||
|
||||
task.setProductName("cgcanvascontext");
|
||||
task.setIdentifier("com.yourcompany.cgcanvascontext");
|
||||
task.setVersion("1.0");
|
||||
task.setAuthor("Your Company");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("cgcanvascontext");
|
||||
task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**")));
|
||||
task.setResources(new FileList("Resources/**"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
|
||||
if (configuration === "Debug")
|
||||
task.setCompilerFlags("-DDEBUG -g");
|
||||
else
|
||||
task.setCompilerFlags("-O");
|
||||
});
|
||||
|
||||
task ("default", ["cgcanvascontext"], 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", "cgcanvascontext", "index.html")]);
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Release", "cgcanvascontext", "index.html")]);
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Deployment", "cgcanvascontext"));
|
||||
OS.system(["press", "-f", FILE.join("Build", "Release", "cgcanvascontext"), FILE.join("Build", "Deployment", "cgcanvascontext")]);
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Desktop", "cgcanvascontext"));
|
||||
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "cgcanvascontext"), FILE.join("Build", "Desktop", "cgcanvascontext", "cgcanvascontext.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
OS.system([FILE.join("Build", "Desktop", "cgcanvascontext", "cgcanvascontext.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
print("----------------------------");
|
||||
print(configuration+" app built at path: "+FILE.join("Build", configuration, "cgcanvascontext"));
|
||||
print("----------------------------");
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Jakefile
|
||||
* CGCanvasContextTest
|
||||
*
|
||||
* Created by You on February 19, 2013.
|
||||
* Copyright 2013, Your Company All rights reserved.
|
||||
*/
|
||||
|
||||
var ENV = process.env,
|
||||
cp = require("child_process"),
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
task = JAKE.task,
|
||||
FileList = JAKE.FileList,
|
||||
app = CAPPUCCINO.Jake.applicationtask.app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug";
|
||||
|
||||
app ("CGCanvasContextTest", function(task)
|
||||
{
|
||||
task.setBuildIntermediatesPath(path.join("Build", "CGCanvasContextTest.build", configuration));
|
||||
task.setBuildPath(path.join("Build", configuration));
|
||||
|
||||
task.setProductName("CGCanvasContextTest");
|
||||
task.setIdentifier("com.yourcompany.CGCanvasContextTest");
|
||||
task.setVersion("1.0");
|
||||
task.setAuthor("Your Company");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("CGCanvasContextTest");
|
||||
task.setSources((new FileList("**/*.j")).exclude(path.join("Build", "**")));
|
||||
task.setResources(new FileList("Resources/**"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
|
||||
if (configuration === "Debug")
|
||||
task.setCompilerFlags("-DDEBUG -g");
|
||||
else
|
||||
task.setCompilerFlags("-O");
|
||||
});
|
||||
|
||||
task ("default", ["CGCanvasContextTest"], 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()
|
||||
{
|
||||
cp.execSync(["open", path.join("Build", "Debug", "CGCanvasContextTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
cp.execSync(["open", path.join("Build", "Release", "CGCanvasContextTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Deployment", "CGCanvasContextTest"), { recursive: true });
|
||||
cp.execSync(["press", "-f", path.join("Build", "Release", "CGCanvasContextTest"), path.join("Build", "Deployment", "CGCanvasContextTest")].join(" "), { stdio: "inherit" });
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Desktop", "CGCanvasContextTest"), { recursive: true });
|
||||
require("@objj/nativehost").buildNativeHost(path.join("Build", "Release", "CGCanvasContextTest"), path.join("Build", "Desktop", "CGCanvasContextTest", "CGCanvasContextTest.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
cp.execSync([path.join("Build", "Desktop", "CGCanvasContextTest", "CGCanvasContextTest.app", "Contents", "MacOS", "NativeHost"), "-i"].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
console.log("----------------------------");
|
||||
console.log(configuration+" app built at path: "+path.join("Build", configuration, "CGCanvasContextTest"));
|
||||
console.log("----------------------------");
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -1,98 +0,0 @@
|
||||
/*
|
||||
* Jakefile
|
||||
* CGPath
|
||||
*
|
||||
* Created by You on May 23, 2013.
|
||||
* Copyright 2013, 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 ("CGPath", function(task)
|
||||
{
|
||||
ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks";
|
||||
|
||||
if (configuration === "Debug")
|
||||
ENV["OBJJ_INCLUDE_PATHS"] = FILE.join(ENV["OBJJ_INCLUDE_PATHS"], configuration);
|
||||
|
||||
task.setBuildIntermediatesPath(FILE.join("Build", "CGPath.build", configuration));
|
||||
task.setBuildPath(FILE.join("Build", configuration));
|
||||
|
||||
task.setProductName("CGPath");
|
||||
task.setIdentifier("com.yourcompany.CGPath");
|
||||
task.setVersion("1.0");
|
||||
task.setAuthor("Your Company");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("CGPath");
|
||||
task.setSources(new FileList("**/*.j").exclude(FILE.join("Build", "**")).exclude(FILE.join("Frameworks", "Source", "**")));
|
||||
task.setResources(new FileList("Resources/**"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
|
||||
if (configuration === "Debug")
|
||||
task.setCompilerFlags("-DDEBUG -g");
|
||||
else
|
||||
task.setCompilerFlags("-O");
|
||||
});
|
||||
|
||||
task ("default", ["CGPath"], 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", "CGPath", "index.html")]);
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
OS.system(["open", FILE.join("Build", "Release", "CGPath", "index.html")]);
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Deployment", "CGPath"));
|
||||
OS.system(["press", "-f", FILE.join("Build", "Release", "CGPath"), FILE.join("Build", "Deployment", "CGPath")]);
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
FILE.mkdirs(FILE.join("Build", "Desktop", "CGPath"));
|
||||
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CGPath"), FILE.join("Build", "Desktop", "CGPath", "CGPath.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
OS.system([FILE.join("Build", "Desktop", "CGPath", "CGPath.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
print("----------------------------");
|
||||
print(configuration+" app built at path: "+FILE.join("Build", configuration, "CGPath"));
|
||||
print("----------------------------");
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* Jakefile
|
||||
* CGPathTest
|
||||
*
|
||||
* Created by You on May 23, 2013.
|
||||
* Copyright 2013, Your Company All rights reserved.
|
||||
*/
|
||||
|
||||
var ENV = process.env,
|
||||
cp = require("child_process"),
|
||||
fs = require("fs"),
|
||||
path = require("path"),
|
||||
task = JAKE.task,
|
||||
FileList = JAKE.FileList,
|
||||
app = CAPPUCCINO.Jake.applicationtask.app,
|
||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug";
|
||||
|
||||
app ("CGPathTest", function(task)
|
||||
{
|
||||
ENV["OBJJ_INCLUDE_PATHS"] = "Frameworks";
|
||||
|
||||
if (configuration === "Debug")
|
||||
ENV["OBJJ_INCLUDE_PATHS"] = path.join(ENV["OBJJ_INCLUDE_PATHS"], configuration);
|
||||
|
||||
task.setBuildIntermediatesPath(path.join("Build", "CGPathTest.build", configuration));
|
||||
task.setBuildPath(path.join("Build", configuration));
|
||||
|
||||
task.setProductName("CGPathTest");
|
||||
task.setIdentifier("com.yourcompany.CGPathTest");
|
||||
task.setVersion("1.0");
|
||||
task.setAuthor("Your Company");
|
||||
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||
task.setSummary("CGPathTest");
|
||||
task.setSources(new FileList("**/*.j").exclude(path.join("Build", "**")).exclude(path.join("Frameworks", "Source", "**")));
|
||||
task.setResources(new FileList("Resources/**"));
|
||||
task.setIndexFilePath("index.html");
|
||||
task.setInfoPlistPath("Info.plist");
|
||||
|
||||
if (configuration === "Debug")
|
||||
task.setCompilerFlags("-DDEBUG -g");
|
||||
else
|
||||
task.setCompilerFlags("-O");
|
||||
});
|
||||
|
||||
task ("default", ["CGPathTest"], 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()
|
||||
{
|
||||
cp.execSync(["open", path.join("Build", "Debug", "CGPathTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("run-release", ["release"], function()
|
||||
{
|
||||
cp.execSync(["open", path.join("Build", "Release", "CGPathTest", "index.html")].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
task ("deploy", ["release"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Deployment", "CGPathTest"), { recursive: true });
|
||||
cp.execSync(["press", "-f", path.join("Build", "Release", "CGPathTest"), path.join("Build", "Deployment", "CGPathTest")].join(" "), { stdio: "inherit" });
|
||||
printResults("Deployment")
|
||||
});
|
||||
|
||||
task ("desktop", ["release"], function()
|
||||
{
|
||||
fs.mkdirSync(path.join("Build", "Desktop", "CGPathTest"), { recursive: true });
|
||||
require("@objj/nativehost").buildNativeHost(path.join("Build", "Release", "CGPathTest"), path.join("Build", "Desktop", "CGPathTest", "CGPathTest.app"));
|
||||
printResults("Desktop")
|
||||
});
|
||||
|
||||
task ("run-desktop", ["desktop"], function()
|
||||
{
|
||||
cp.execSync([path.join("Build", "Desktop", "CGPathTest", "CGPathTest.app", "Contents", "MacOS", "NativeHost"), "-i"].join(" "), { stdio: "inherit" });
|
||||
});
|
||||
|
||||
function printResults(configuration)
|
||||
{
|
||||
console.log("----------------------------");
|
||||
console.log(configuration+" app built at path: "+path.join("Build", configuration, "CGPathTest"));
|
||||
console.log("----------------------------");
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Loaded 100 of 929 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user