mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-09-10 20:57:11 +00:00
Compare commits
82
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c232680600 | ||
|
|
bd25b6fb48 | ||
|
|
834d878a4d | ||
|
|
4cb5ccbc3a | ||
|
|
929cd78bae | ||
|
|
f5961b9e06 | ||
|
|
7fb17e9f41 | ||
|
|
dd70bdc698 | ||
|
|
59d619d190 | ||
|
|
dd160d6bed | ||
|
|
ae5a2c4164 | ||
|
|
a939bed8e0 | ||
|
|
c686a4384b | ||
|
|
6bb2dd2a16 | ||
|
|
2ec574173a | ||
|
|
743feb5360 | ||
|
|
bc4dc041e5 | ||
|
|
8c8d1ae3d3 | ||
|
|
a9781016be | ||
|
|
4be0bb3a30 | ||
|
|
a74267e937 | ||
|
|
6dea853ef3 | ||
|
|
94df530580 | ||
|
|
d038c50531 | ||
|
|
83546d58db | ||
|
|
8de587d4fc | ||
|
|
bd9a6ea150 | ||
|
|
fe69142567 | ||
|
|
5f85f7bef1 | ||
|
|
397e314cc9 | ||
|
|
c87d96676c | ||
|
|
13d4e36d39 | ||
|
|
a5c06c8f27 | ||
|
|
76bdbb660e | ||
|
|
a7929e6c1e | ||
|
|
b3cbc7e362 | ||
|
|
d6b3efaae8 | ||
|
|
33345f65ce | ||
|
|
3fe5ec5d6d | ||
|
|
142b982577 | ||
|
|
147c65b962 | ||
|
|
89dbccd74e | ||
|
|
a4647f2b82 | ||
|
|
94336ebcbb | ||
|
|
5dfa43ce5f | ||
|
|
ff7774976e | ||
|
|
a435e54a67 | ||
|
|
852597f11d | ||
|
|
806fea9222 | ||
|
|
972bb4100f | ||
|
|
6a6b83635f | ||
|
|
d8f202fc1f | ||
|
|
2322743252 | ||
|
|
8b3f9c5557 | ||
|
|
b573daf59b | ||
|
|
4f8fa778d5 | ||
|
|
30d5a7f7a2 | ||
|
|
b01a4436b6 | ||
|
|
9ad8f75a08 | ||
|
|
2bf9afa97a | ||
|
|
9e892d4eea | ||
|
|
d2407d1c2a | ||
|
|
17dc96ad2f | ||
|
|
b3a427ba18 | ||
|
|
4cdefcc2c7 | ||
|
|
b7c0dcf050 | ||
|
|
fe9573e5b8 | ||
|
|
9fcf0258e0 | ||
|
|
e22faa0d79 | ||
|
|
175b204bb6 | ||
|
|
b126b2946d | ||
|
|
fec200c835 | ||
|
|
ea0a47a845 | ||
|
|
835d89774a | ||
|
|
f0a2a91837 | ||
|
|
8614bab724 | ||
|
|
9c181cc9c9 | ||
|
|
a0a7b126ab | ||
|
|
78ddc2db70 | ||
|
|
e80cbc89b2 | ||
|
|
c0f5ed1f87 | ||
|
|
51a8975f0a |
@@ -9,3 +9,4 @@ WebSite
|
|||||||
*.xcodeproj/*.perspectivev3
|
*.xcodeproj/*.perspectivev3
|
||||||
xcuserdata/
|
xcuserdata/
|
||||||
!*.xcodeproj/project.pbxproj
|
!*.xcodeproj/project.pbxproj
|
||||||
|
target
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
@import "CPCibControlConnector.j"
|
@import "CPCibControlConnector.j"
|
||||||
@import "CPCibLoading.j"
|
@import "CPCibLoading.j"
|
||||||
@import "CPCibOutletConnector.j"
|
@import "CPCibOutletConnector.j"
|
||||||
|
@import "CPCibRuntimeAttributesConnector.j"
|
||||||
@import "CPClipView.j"
|
@import "CPClipView.j"
|
||||||
@import "CPCollectionView.j"
|
@import "CPCollectionView.j"
|
||||||
@import "CPCollectionViewItem.j"
|
@import "CPCollectionViewItem.j"
|
||||||
|
|||||||
+47
-16
@@ -107,7 +107,7 @@ CPRunContinuesResponse = -1002;
|
|||||||
|
|
||||||
CPPanel _aboutPanel;
|
CPPanel _aboutPanel;
|
||||||
|
|
||||||
CPThemeBlend _themeBlend @accessors(property=themeBlend);
|
CPArray _themeBlends @accessors(property=themeBlends);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -141,6 +141,8 @@ CPRunContinuesResponse = -1002;
|
|||||||
_windows = [];
|
_windows = [];
|
||||||
|
|
||||||
[_windows addObject:nil];
|
[_windows addObject:nil];
|
||||||
|
|
||||||
|
_themeBlends = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
@@ -338,7 +340,7 @@ CPRunContinuesResponse = -1002;
|
|||||||
Copyright - Human readable copyright information.
|
Copyright - Human readable copyright information.
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
If you choose not the include any of the above keys, they will default
|
If you choose not the include any of the above keys, they will default
|
||||||
to the following respective keys in your info.plist file.
|
to the following respective keys in your info.plist file.
|
||||||
|
|
||||||
<pre>
|
<pre>
|
||||||
@@ -1003,7 +1005,7 @@ CPRunContinuesResponse = -1002;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Sets the arguments of your application.
|
Sets the arguments of your application.
|
||||||
That is, set the slash seperated values of an array as the window location hash.
|
That is, set the slash seperated values of an array as the window location hash.
|
||||||
|
|
||||||
For example if you pass an array:
|
For example if you pass an array:
|
||||||
@@ -1156,6 +1158,16 @@ CPRunContinuesResponse = -1002;
|
|||||||
userInfo:nil];
|
userInfo:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (CPThemeBlend)themeBlend
|
||||||
|
{
|
||||||
|
return (_themeBlends.length > 0 ? _themeBlends[0] : nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setThemeBlend:(CPThemeBlend)aThemeBlend
|
||||||
|
{
|
||||||
|
_themeBlends[0] = aThemeBlend;
|
||||||
|
}
|
||||||
|
|
||||||
+ (CPString)defaultThemeName
|
+ (CPString)defaultThemeName
|
||||||
{
|
{
|
||||||
return ([[CPBundle mainBundle] objectForInfoDictionaryKey:"CPDefaultTheme"] || @"Aristo");
|
return ([[CPBundle mainBundle] objectForInfoDictionaryKey:"CPDefaultTheme"] || @"Aristo");
|
||||||
@@ -1218,15 +1230,14 @@ function CPApplicationMain(args, namedArgs)
|
|||||||
[_CPAppBootstrapper performActions];
|
[_CPAppBootstrapper performActions];
|
||||||
}
|
}
|
||||||
|
|
||||||
var _CPAppBootstrapperActions = nil;
|
var _CPAppBootstrapperActions = nil,
|
||||||
|
_CPAppThemeURLsToLoad = [];
|
||||||
|
|
||||||
@implementation _CPAppBootstrapper : CPObject
|
@implementation _CPAppBootstrapper : CPObject
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (CPArray)actions
|
+ (CPArray)actions
|
||||||
{
|
{
|
||||||
return [@selector(bootstrapPlatform), @selector(loadDefaultTheme), @selector(loadMainCibFile)];
|
return [@selector(bootstrapPlatform), @selector(loadThemes), @selector(loadMainCibFile)];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (void)performActions
|
+ (void)performActions
|
||||||
@@ -1250,17 +1261,30 @@ var _CPAppBootstrapperActions = nil;
|
|||||||
return [CPPlatform bootstrap];
|
return [CPPlatform bootstrap];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (BOOL)loadDefaultTheme
|
+ (BOOL)loadThemes
|
||||||
{
|
{
|
||||||
var defaultThemeName = [CPApplication defaultThemeName],
|
_CPAppThemeURLsToLoad.push([CPApplication defaultThemeName]);
|
||||||
themeURL = nil;
|
|
||||||
|
|
||||||
if (defaultThemeName === @"Aristo")
|
var auxiliaryThemes = ([[CPBundle mainBundle] objectForInfoDictionaryKey:@"CPAuxiliaryThemes"] || []);
|
||||||
themeURL = [[CPBundle bundleForClass:[CPApplication class]] pathForResource:defaultThemeName + @".blend"];
|
|
||||||
|
_CPAppThemeURLsToLoad = _CPAppThemeURLsToLoad.concat(auxiliaryThemes);
|
||||||
|
|
||||||
|
[self loadNextTheme];
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (BOOL)loadNextTheme
|
||||||
|
{
|
||||||
|
var themeName = _CPAppThemeURLsToLoad.shift();
|
||||||
|
|
||||||
|
if (themeName === @"Aristo")
|
||||||
|
themeURL = [[CPBundle bundleForClass:[CPApplication class]] pathForResource:themeName + @".blend"];
|
||||||
else
|
else
|
||||||
themeURL = [[CPBundle mainBundle] pathForResource:defaultThemeName + @".blend"];
|
themeURL = [[CPBundle mainBundle] pathForResource:themeName + @".blend"];
|
||||||
|
|
||||||
var blend = [[CPThemeBlend alloc] initWithContentsOfURL:themeURL];
|
var blend = [[CPThemeBlend alloc] initWithContentsOfURL:themeURL];
|
||||||
|
|
||||||
[blend loadWithDelegate:self];
|
[blend loadWithDelegate:self];
|
||||||
|
|
||||||
return YES;
|
return YES;
|
||||||
@@ -1268,10 +1292,17 @@ var _CPAppBootstrapperActions = nil;
|
|||||||
|
|
||||||
+ (void)blendDidFinishLoading:(CPThemeBlend)aThemeBlend
|
+ (void)blendDidFinishLoading:(CPThemeBlend)aThemeBlend
|
||||||
{
|
{
|
||||||
[[CPApplication sharedApplication] setThemeBlend:aThemeBlend];
|
var themeBlends = [CPApp themeBlends];
|
||||||
[CPTheme setDefaultTheme:[CPTheme themeNamed:[CPApplication defaultThemeName]]];
|
|
||||||
|
|
||||||
[self performActions];
|
[themeBlends addObject:aThemeBlend];
|
||||||
|
|
||||||
|
if ([themeBlends count] === 1)
|
||||||
|
[CPTheme setDefaultTheme:[CPTheme themeNamed:[CPApplication defaultThemeName]]];
|
||||||
|
|
||||||
|
if (_CPAppThemeURLsToLoad.length === 0)
|
||||||
|
[self performActions];
|
||||||
|
else
|
||||||
|
[self loadNextTheme];
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (BOOL)loadMainCibFile
|
+ (BOOL)loadMainCibFile
|
||||||
|
|||||||
+99
-6
@@ -27,6 +27,7 @@
|
|||||||
@import "CPCompatibility.j"
|
@import "CPCompatibility.j"
|
||||||
@import "CPImage.j"
|
@import "CPImage.j"
|
||||||
|
|
||||||
|
/// @cond IGNORE
|
||||||
|
|
||||||
var _redComponent = 0,
|
var _redComponent = 0,
|
||||||
_greenComponent = 1,
|
_greenComponent = 1,
|
||||||
@@ -54,6 +55,66 @@ var cachedBlackColor,
|
|||||||
cachedShadowColor,
|
cachedShadowColor,
|
||||||
cachedClearColor;
|
cachedClearColor;
|
||||||
|
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Orientation to use with \c CPColorPattern for vertical patterns.
|
||||||
|
*/
|
||||||
|
CPColorPatternIsVertical = YES,
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Orientation to use with \c CPColorPattern for horizontal patterns.
|
||||||
|
*/
|
||||||
|
CPColorPatternIsHorizontal = NO;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
To create a simple color with a pattern image:
|
||||||
|
|
||||||
|
<code>CPColorWithImages(name, width, height{, bundle})</code>
|
||||||
|
|
||||||
|
To create a color with a three part pattern image:
|
||||||
|
|
||||||
|
<code>CPColorWithImages(slices{, orientation})</code>
|
||||||
|
|
||||||
|
where slices is an array of three [name, width, height{, bundle}] arrays,
|
||||||
|
and orientation is \c CPColorPatternIsVertical or \ref CPColorPatternIsHorizontal.
|
||||||
|
If orientatation is not passed, it defaults to \ref CPColorPatternIsHorizontal.
|
||||||
|
|
||||||
|
To create a color with a nine part pattern image:
|
||||||
|
|
||||||
|
<code>CPColorWithImages(slices);</code>
|
||||||
|
|
||||||
|
where slices is an array of nine [name, width, height{, bundle}] arrays.
|
||||||
|
*/
|
||||||
|
function CPColorWithImages()
|
||||||
|
{
|
||||||
|
if (arguments.length < 3)
|
||||||
|
{
|
||||||
|
var slices = arguments[0],
|
||||||
|
imageSlices = [];
|
||||||
|
|
||||||
|
for (var i = 0; i < slices.length; ++i)
|
||||||
|
{
|
||||||
|
var slice = slices[i];
|
||||||
|
|
||||||
|
imageSlices.push(slice ? CPImageInBundle(slice[0], CGSizeMake(slice[1], slice[2]), slice[3]) : nil);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (imageSlices.length === 3)
|
||||||
|
return [CPColor colorWithPatternImage:[[CPThreePartImage alloc] initWithImageSlices:imageSlices isVertical:arguments[1] || CPColorPatternIsHorizontal]];
|
||||||
|
else
|
||||||
|
return [CPColor colorWithPatternImage:[[CPNinePartImage alloc] initWithImageSlices:imageSlices]];
|
||||||
|
}
|
||||||
|
else if (arguments.length === 3 || arguments.length === 4)
|
||||||
|
{
|
||||||
|
return [CPColor colorWithPatternImage:CPImageInBundle(arguments[0], CGSizeMake(arguments[1], arguments[2]), arguments[3])];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@ingroup appkit
|
@ingroup appkit
|
||||||
|
|
||||||
@@ -633,7 +694,36 @@ url("data:image/png;base64,BASE64ENCODEDDATA") // if there is a pattern image
|
|||||||
|
|
||||||
- (CPString)description
|
- (CPString)description
|
||||||
{
|
{
|
||||||
return [super description]+" "+[self cssString];
|
var description = [super description],
|
||||||
|
patternImage = [self patternImage];
|
||||||
|
|
||||||
|
if (!patternImage)
|
||||||
|
return description + " " + [self cssString];
|
||||||
|
|
||||||
|
description += " {\n";
|
||||||
|
|
||||||
|
if ([patternImage isThreePartImage] || [patternImage isNinePartImage])
|
||||||
|
{
|
||||||
|
var slices = [patternImage imageSlices];
|
||||||
|
|
||||||
|
if ([patternImage isThreePartImage])
|
||||||
|
description += " orientation: " + ([patternImage isVertical] ? "vertical" : "horizontal") + ",\n";
|
||||||
|
|
||||||
|
description += " patternImage (" + slices.length + " part): [\n";
|
||||||
|
|
||||||
|
for (var i = 0; i < slices.length; ++i)
|
||||||
|
{
|
||||||
|
var imgDescription = [slices[i] description];
|
||||||
|
|
||||||
|
description += imgDescription.replace(/^/mg, " ") + ",\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
description = description.substr(0, description.length - 2) + "\n ]\n}";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
description += [patternImage description].replace(/^/mg, " ") + "\n}";
|
||||||
|
|
||||||
|
return description;
|
||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@@ -678,8 +768,10 @@ url("data:image/png;base64,BASE64ENCODEDDATA") // if there is a pattern image
|
|||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
/// @cond IGNORE
|
||||||
var CPColorComponentsKey = @"CPColorComponentsKey",
|
var CPColorComponentsKey = @"CPColorComponentsKey",
|
||||||
CPColorPatternImageKey = @"CPColorPatternImageKey";
|
CPColorPatternImageKey = @"CPColorPatternImageKey";
|
||||||
|
/// @endcond
|
||||||
|
|
||||||
@implementation CPColor (CPCoding)
|
@implementation CPColor (CPCoding)
|
||||||
|
|
||||||
@@ -710,13 +802,12 @@ var CPColorComponentsKey = @"CPColorComponentsKey",
|
|||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
||||||
|
/// @cond IGNORE
|
||||||
var hexCharacters = "0123456789ABCDEF";
|
var hexCharacters = "0123456789ABCDEF";
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
Used for the CPColor \c +colorWithHexString: implementation
|
Used for the CPColor +colorWithHexString: implementation.
|
||||||
@ignore
|
Returns an array of rgb components.
|
||||||
@class CPColor
|
|
||||||
@return an array of rgb components
|
|
||||||
*/
|
*/
|
||||||
var hexToRGB = function(hex)
|
var hexToRGB = function(hex)
|
||||||
{
|
{
|
||||||
@@ -754,3 +845,5 @@ var byteToHex = function(n)
|
|||||||
return hexCharacters.charAt((n - n % 16) / 16) +
|
return hexCharacters.charAt((n - n % 16) / 16) +
|
||||||
hexCharacters.charAt(n % 16);
|
hexCharacters.charAt(n % 16);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// @endcond
|
||||||
|
|||||||
+17
-19
@@ -571,29 +571,28 @@ var _CPEventPeriodicEventPeriod = 0,
|
|||||||
if (_modifierFlags & (CPCommandKeyMask | CPControlKeyMask))
|
if (_modifierFlags & (CPCommandKeyMask | CPControlKeyMask))
|
||||||
return YES;
|
return YES;
|
||||||
|
|
||||||
|
// Cocoa does not consider space, backspace, or escape a key equivalent
|
||||||
|
// if the first responder is a text field (presumably a subclass of NSText).
|
||||||
|
var firstResponderIsText = [[_window firstResponder] isKindOfClass:[CPTextField class]];
|
||||||
|
|
||||||
for (var i = 0; i < characterCount; i++)
|
for (var i = 0; i < characterCount; i++)
|
||||||
{
|
{
|
||||||
switch (_characters.charAt(i))
|
var c = _characters.charAt(i);
|
||||||
|
|
||||||
|
if ((c >= CPUpArrowFunctionKey && c <= CPModeSwitchFunctionKey) ||
|
||||||
|
c === CPEnterCharacter ||
|
||||||
|
c === CPNewlineCharacter ||
|
||||||
|
c === CPCarriageReturnCharacter ||
|
||||||
|
c === CPEscapeFunctionKey ||
|
||||||
|
(!firstResponderIsText &&
|
||||||
|
(c === CPSpaceFunctionKey ||
|
||||||
|
c === CPDeleteCharacter ||
|
||||||
|
c === CPBackspaceCharacter)))
|
||||||
{
|
{
|
||||||
case CPBackspaceCharacter:
|
return YES;
|
||||||
case CPDeleteCharacter:
|
|
||||||
case CPDeleteFunctionKey:
|
|
||||||
case CPTabCharacter:
|
|
||||||
case CPCarriageReturnCharacter:
|
|
||||||
case CPNewlineCharacter:
|
|
||||||
case CPSpaceFunctionKey:
|
|
||||||
case CPEscapeFunctionKey:
|
|
||||||
case CPPageUpFunctionKey:
|
|
||||||
case CPPageDownFunctionKey:
|
|
||||||
case CPLeftArrowFunctionKey:
|
|
||||||
case CPUpArrowFunctionKey:
|
|
||||||
case CPRightArrowFunctionKey:
|
|
||||||
case CPDownArrowFunctionKey:
|
|
||||||
case CPEndFunctionKey:
|
|
||||||
case CPHomeFunctionKey:
|
|
||||||
return YES;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: More cases?
|
// FIXME: More cases?
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
@@ -651,4 +650,3 @@ function _CPEventFromNativeMouseEvent(aNativeEvent, anEventType, aPoint, modifie
|
|||||||
|
|
||||||
return aNativeEvent;
|
return aNativeEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+20
-1
@@ -44,7 +44,8 @@ CPImageNameColorPanel = @"CPImageNameColorPanel";
|
|||||||
CPImageNameColorPanelHighlighted = @"CPImageNameColorPanelHighlighted";
|
CPImageNameColorPanelHighlighted = @"CPImageNameColorPanelHighlighted";
|
||||||
|
|
||||||
var imagesForNames = { },
|
var imagesForNames = { },
|
||||||
AppKitImageForNames = { };
|
AppKitImageForNames = { },
|
||||||
|
ImageDescriptionFormat = "%s {\n filename: \"%s\",\n size: { width:%f, height:%f }\n}";
|
||||||
|
|
||||||
AppKitImageForNames[CPImageNameColorPanel] = CGSizeMake(26.0, 29.0);
|
AppKitImageForNames[CPImageNameColorPanel] = CGSizeMake(26.0, 29.0);
|
||||||
AppKitImageForNames[CPImageNameColorPanelHighlighted] = CGSizeMake(26.0, 29.0);
|
AppKitImageForNames[CPImageNameColorPanelHighlighted] = CGSizeMake(26.0, 29.0);
|
||||||
@@ -324,6 +325,24 @@ function CPAppKitImage(aFilename, aSize)
|
|||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (CPString)description
|
||||||
|
{
|
||||||
|
var filename = [self filename],
|
||||||
|
size = [self size];
|
||||||
|
|
||||||
|
if (filename.indexOf("data:") === 0)
|
||||||
|
{
|
||||||
|
var index = filename.indexOf(",");
|
||||||
|
|
||||||
|
if (index > 0)
|
||||||
|
filename = [CPString stringWithFormat:@"%s,%s...%s", filename.substr(0, index), filename.substr(index + 1, 10), filename.substr(filename.length - 10)];
|
||||||
|
else
|
||||||
|
filename = "data:<unknown type>";
|
||||||
|
}
|
||||||
|
|
||||||
|
return [CPString stringWithFormat:ImageDescriptionFormat, [super description], filename, size.width, size.height];
|
||||||
|
}
|
||||||
|
|
||||||
/* @ignore */
|
/* @ignore */
|
||||||
- (void)_derefFromImage
|
- (void)_derefFromImage
|
||||||
{
|
{
|
||||||
|
|||||||
+10
-10
@@ -332,18 +332,18 @@ CPTableColumnUserResizingMask = 1 << 1;
|
|||||||
individual cell that is shown. As a result, changes made after calling this method won't be reflected.
|
individual cell that is shown. As a result, changes made after calling this method won't be reflected.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@code
|
@code
|
||||||
[tableColumn setDataView:someView]; // snapshot taken
|
[tableColumn setDataView:someView]; // snapshot taken
|
||||||
[[tableColumn dataView] setSomething:x]; //won't work
|
[[tableColumn dataView] setSomething:x]; //won't work
|
||||||
@endcode
|
@endcode
|
||||||
|
|
||||||
This doesn't work because the snapshot is taken before the new property is applied. Instead, do:
|
This doesn't work because the snapshot is taken before the new property is applied. Instead, do:
|
||||||
@code
|
@code
|
||||||
[someView setSomething:x];
|
[someView setSomething:x];
|
||||||
[tableColumn setDataView:someView];
|
[tableColumn setDataView:someView];
|
||||||
@endcode
|
@endcode
|
||||||
|
|
||||||
@note you should implement CPKeyedArchiving otherwise you might see unexpected results.
|
@note You should implement CPKeyedArchiving otherwise you might see unexpected results.
|
||||||
This is done by adding the following methods to your class:
|
This is done by adding the following methods to your class:
|
||||||
@endnote
|
@endnote
|
||||||
|
|
||||||
@@ -380,7 +380,7 @@ CPTableColumnUserResizingMask = 1 << 1;
|
|||||||
}
|
}
|
||||||
@endcode
|
@endcode
|
||||||
|
|
||||||
@section Themeing
|
@section Theming
|
||||||
|
|
||||||
When you set a dataview and it is added to the tableview the theme state will be set to \c CPThemeStateTableDataView
|
When you set a dataview and it is added to the tableview the theme state will be set to \c CPThemeStateTableDataView
|
||||||
When the dataview becomes selected the theme state will be set to \c CPThemeStateSelectedDataView.
|
When the dataview becomes selected the theme state will be set to \c CPThemeStateSelectedDataView.
|
||||||
|
|||||||
@@ -323,6 +323,7 @@ CPTableViewFirstColumnOnlyAutoresizingStyle = 5;
|
|||||||
{
|
{
|
||||||
_tableViewFlags = 0;
|
_tableViewFlags = 0;
|
||||||
_lastSelectedRow = -1;
|
_lastSelectedRow = -1;
|
||||||
|
_clickedRow = -1;
|
||||||
|
|
||||||
_selectedColumnIndexes = [CPIndexSet indexSet];
|
_selectedColumnIndexes = [CPIndexSet indexSet];
|
||||||
_selectedRowIndexes = [CPIndexSet indexSet];
|
_selectedRowIndexes = [CPIndexSet indexSet];
|
||||||
|
|||||||
@@ -704,9 +704,6 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder");
|
|||||||
|
|
||||||
- (void)keyDown:(CPEvent)anEvent
|
- (void)keyDown:(CPEvent)anEvent
|
||||||
{
|
{
|
||||||
if ([anEvent _couldBeKeyEquivalent] && [self performKeyEquivalent:anEvent])
|
|
||||||
return;
|
|
||||||
|
|
||||||
// CPTextField uses an HTML input element to take the input so we need to
|
// CPTextField uses an HTML input element to take the input so we need to
|
||||||
// propagate the dom event so the element is updated. This has to be done
|
// propagate the dom event so the element is updated. This has to be done
|
||||||
// before interpretKeyEvents: though so individual commands have a chance
|
// before interpretKeyEvents: though so individual commands have a chance
|
||||||
|
|||||||
+57
-9
@@ -25,9 +25,10 @@
|
|||||||
@import <Foundation/CPKeyedUnarchiver.j>
|
@import <Foundation/CPKeyedUnarchiver.j>
|
||||||
|
|
||||||
|
|
||||||
var CPThemesByName = { },
|
var CPThemesByName = { },
|
||||||
CPThemeDefaultTheme = nil,
|
CPThemeNamesByInheritance = [],
|
||||||
CPThemeDefaultHudTheme = nil;
|
CPThemeDefaultTheme = nil,
|
||||||
|
CPThemeDefaultHudTheme = nil;
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -76,6 +77,52 @@ var CPThemesByName = { },
|
|||||||
return CPThemesByName[aName];
|
return CPThemesByName[aName];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns an array of names of all loaded themes, in the order they were loaded.
|
||||||
|
*/
|
||||||
|
+ (CPArray)allThemeNames
|
||||||
|
{
|
||||||
|
return [CPThemeNamesByInheritance copy];
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
Returns the closest matching theme for a given view or view class.
|
||||||
|
The matching proceeds as follows:
|
||||||
|
|
||||||
|
- The default theme class name for the class is retrieved.
|
||||||
|
- Starting with the last loaded theme and proceeding towards the default theme,
|
||||||
|
each theme is checked to see if it defines that theme class.
|
||||||
|
- If the theme defines the class name, that theme is returned.
|
||||||
|
- If no themes match, the default theme is returned.
|
||||||
|
|
||||||
|
@param aViewOrClass The view or view class to match with a theme
|
||||||
|
@return The first matching theme
|
||||||
|
*/
|
||||||
|
+ (CPTheme)themeForView:(id)aViewOrClass
|
||||||
|
{
|
||||||
|
var themeClass = nil;
|
||||||
|
|
||||||
|
if (class_isMetaClass(aViewOrClass.isa))
|
||||||
|
themeClass = [aViewOrClass defaultThemeClass];
|
||||||
|
else
|
||||||
|
themeClass = [aViewOrClass themeClass];
|
||||||
|
|
||||||
|
if (themeClass)
|
||||||
|
{
|
||||||
|
var count = CPThemeNamesByInheritance.length;
|
||||||
|
|
||||||
|
while (count--)
|
||||||
|
{
|
||||||
|
var theme = CPThemesByName[CPThemeNamesByInheritance[count]];
|
||||||
|
|
||||||
|
if ([theme._attributes containsKey:themeClass])
|
||||||
|
return theme;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return CPThemeDefaultTheme;
|
||||||
|
}
|
||||||
|
|
||||||
- (id)initWithName:(CPString)aName
|
- (id)initWithName:(CPString)aName
|
||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
@@ -86,6 +133,9 @@ var CPThemesByName = { },
|
|||||||
_attributes = [CPDictionary dictionary];
|
_attributes = [CPDictionary dictionary];
|
||||||
|
|
||||||
CPThemesByName[_name] = self;
|
CPThemesByName[_name] = self;
|
||||||
|
|
||||||
|
if (![CPThemeNamesByInheritance containsObject:_name])
|
||||||
|
CPThemeNamesByInheritance.push(_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
@@ -299,6 +349,9 @@ var CPThemeNameKey = @"CPThemeNameKey",
|
|||||||
_attributes = [aCoder decodeObjectForKey:CPThemeAttributesKey];
|
_attributes = [aCoder decodeObjectForKey:CPThemeAttributesKey];
|
||||||
|
|
||||||
CPThemesByName[_name] = self;
|
CPThemesByName[_name] = self;
|
||||||
|
|
||||||
|
if (![CPThemeNamesByInheritance containsObject:_name])
|
||||||
|
CPThemeNamesByInheritance.push(_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
@@ -466,12 +519,7 @@ CPThemeStateCircular = CPThemeState("circular");
|
|||||||
|
|
||||||
- (void)setValue:(id)aValue
|
- (void)setValue:(id)aValue
|
||||||
{
|
{
|
||||||
_cache = {};
|
[self setValue:aValue forState:CPThemeStateNormal];
|
||||||
|
|
||||||
if (aValue === undefined || aValue === nil)
|
|
||||||
_values = [CPDictionary dictionary];
|
|
||||||
else
|
|
||||||
_values = [CPDictionary dictionaryWithObject:aValue forKey:String(CPThemeStateNormal)];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setValue:(id)aValue forState:(CPThemeState)aState
|
- (void)setValue:(id)aValue forState:(CPThemeState)aState
|
||||||
|
|||||||
+2
-2
@@ -295,7 +295,7 @@ var CPViewFlags = { },
|
|||||||
_DOMImageSizes = [];
|
_DOMImageSizes = [];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_theme = [CPTheme defaultTheme];
|
_theme = [CPTheme themeForView:self];
|
||||||
_themeState = CPThemeStateNormal;
|
_themeState = CPThemeStateNormal;
|
||||||
|
|
||||||
[self setupViewFlags];
|
[self setupViewFlags];
|
||||||
@@ -2695,7 +2695,7 @@ var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask",
|
|||||||
|
|
||||||
[self setupViewFlags];
|
[self setupViewFlags];
|
||||||
|
|
||||||
_theme = [CPTheme defaultTheme];
|
_theme = [CPTheme themeForView:self];
|
||||||
_themeClass = [aCoder decodeObjectForKey:CPViewThemeClassKey];
|
_themeClass = [aCoder decodeObjectForKey:CPViewThemeClassKey];
|
||||||
_themeState = CPThemeState([aCoder decodeIntForKey:CPViewThemeStateKey]);
|
_themeState = CPThemeState([aCoder decodeIntForKey:CPViewThemeStateKey]);
|
||||||
_themeAttributes = {};
|
_themeAttributes = {};
|
||||||
|
|||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* CPCibRuntimeAttributesConnector.j
|
||||||
|
* AppKit
|
||||||
|
*
|
||||||
|
* Created by Aparajita Fishman.
|
||||||
|
* Copyright 2011, 280 North, Inc.
|
||||||
|
*
|
||||||
|
* 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 "CPCibConnector.j"
|
||||||
|
|
||||||
|
var CPCibRuntimeAttributesConnectorObjectKey = @"CPCibRuntimeAttributesConnectorObjectKey",
|
||||||
|
CPCibRuntimeAttributesConnectorKeyPathsKey = @"CPCibRuntimeAttributesConnectorKeyPathsKey",
|
||||||
|
CPCibRuntimeAttributesConnectorValuesKey = @"CPCibRuntimeAttributesConnectorValuesKey";
|
||||||
|
|
||||||
|
@implementation CPCibRuntimeAttributesConnector : CPCibConnector
|
||||||
|
{
|
||||||
|
id _keyPaths;
|
||||||
|
id _values;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id)initWithCoder:(CPCoder)aCoder
|
||||||
|
{
|
||||||
|
if (self = [super initWithCoder:aCoder])
|
||||||
|
{
|
||||||
|
_source = [aCoder decodeObjectForKey:CPCibRuntimeAttributesConnectorObjectKey];
|
||||||
|
_keyPaths = [aCoder decodeObjectForKey:CPCibRuntimeAttributesConnectorKeyPathsKey];
|
||||||
|
_values = [aCoder decodeObjectForKey:CPCibRuntimeAttributesConnectorValuesKey];
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)encodeWithCoder:(CPCoder)aCoder
|
||||||
|
{
|
||||||
|
[super encodeWithCoder:aCoder];
|
||||||
|
|
||||||
|
[aCoder encodeObject:_source forKey:CPCibRuntimeAttributesConnectorObjectKey];
|
||||||
|
[aCoder encodeObject:_keyPaths forKey:CPCibRuntimeAttributesConnectorKeyPathsKey];
|
||||||
|
[aCoder encodeObject:_values forKey:CPCibRuntimeAttributesConnectorValuesKey];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)establishConnection
|
||||||
|
{
|
||||||
|
var count = [_keyPaths count];
|
||||||
|
|
||||||
|
while (count--)
|
||||||
|
[_source setValue:_values[count] forKeyPath:_keyPaths[count]];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -61,14 +61,14 @@ var _CPCibClassSwapperClassNameKey = @"_CPCibClassSwapperClassNameKey",
|
|||||||
|
|
||||||
if (!object)
|
if (!object)
|
||||||
{
|
{
|
||||||
CPLog.error("Unable to find class " + theClassName + " in cib file.");
|
CPLog.error("Unable to find class " + theClassName + " referenced in cib file.");
|
||||||
|
|
||||||
object = [self allocObjectWithCoder:aCoder className:[aCoder decodeObjectForKey:_CPCibClassSwapperOriginalClassNameKey]];
|
object = [self allocObjectWithCoder:aCoder className:[aCoder decodeObjectForKey:_CPCibClassSwapperOriginalClassNameKey]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!object)
|
if (!object)
|
||||||
[CPException raise:CPInvalidArgumentException reason:@"Unable to find class " + theClassName + " in cib file."];
|
[CPException raise:CPInvalidArgumentException reason:@"Unable to find class " + theClassName + " referenced in cib file."];
|
||||||
|
|
||||||
return object;
|
return object;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey",
|
|||||||
return [[self alloc] initWithClassName:@"CPImage" resourceName:aResourceName properties:[CPDictionary dictionaryWithObject:aSize forKey:@"size"]];
|
return [[self alloc] initWithClassName:@"CPImage" resourceName:aResourceName properties:[CPDictionary dictionaryWithObject:aSize forKey:@"size"]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ (id)imageResourceWithName:(CPString)aResourceName size:(CGSize)aSize bundleClass:(CPString)aBundleClass
|
||||||
|
{
|
||||||
|
return [[self alloc] initWithClassName:@"CPImage" resourceName:aResourceName properties:[CPDictionary dictionaryWithObjects:[aSize, aBundleClass] forKeys:[@"size", @"bundleClass"]]];
|
||||||
|
}
|
||||||
|
|
||||||
- (id)initWithClassName:(CPString)aClassName resourceName:(CPString)aResourceName properties:(CPDictionary)properties
|
- (id)initWithClassName:(CPString)aClassName resourceName:(CPString)aResourceName properties:(CPDictionary)properties
|
||||||
{
|
{
|
||||||
self = [super init];
|
self = [super init];
|
||||||
@@ -89,7 +94,18 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey",
|
|||||||
else if (_resourceName == "CPRemoveTemplate")
|
else if (_resourceName == "CPRemoveTemplate")
|
||||||
return [[CPImage alloc] initWithContentsOfFile:[[CPBundle bundleForClass:[CPButtonBar class]] pathForResource:@"minus_button.png"] size:CGSizeMake(11, 4)];
|
return [[CPImage alloc] initWithContentsOfFile:[[CPBundle bundleForClass:[CPButtonBar class]] pathForResource:@"minus_button.png"] size:CGSizeMake(11, 4)];
|
||||||
|
|
||||||
return [[CPImage alloc] initWithContentsOfFile:[[aCoder bundle] pathForResource:_resourceName] size:_properties.valueForKey(@"size")];
|
var bundleClass = _properties.valueForKey(@"bundleClass"),
|
||||||
|
bundle = nil;
|
||||||
|
|
||||||
|
if (bundleClass)
|
||||||
|
{
|
||||||
|
bundleClass = CPClassFromString(bundleClass);
|
||||||
|
|
||||||
|
if (bundleClass)
|
||||||
|
bundle = [CPBundle bundleForClass:bundleClass];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [[CPImage alloc] initWithContentsOfFile:[(bundle || [aCoder bundle]) pathForResource:_resourceName] size:_properties.valueForKey(@"size")];
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
|||||||
@@ -29,6 +29,7 @@
|
|||||||
@import "CPCibControlConnector.j"
|
@import "CPCibControlConnector.j"
|
||||||
@import "CPCibOutletConnector.j"
|
@import "CPCibOutletConnector.j"
|
||||||
@import "CPCibBindingConnector.j"
|
@import "CPCibBindingConnector.j"
|
||||||
|
@import "CPCibRuntimeAttributesConnector.j"
|
||||||
|
|
||||||
|
|
||||||
@implementation _CPCibObjectData : CPObject
|
@implementation _CPCibObjectData : CPObject
|
||||||
@@ -257,11 +258,29 @@ var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey
|
|||||||
_replacementObjects[[_fileOwner UID]] = anOwner;
|
_replacementObjects[[_fileOwner UID]] = anOwner;
|
||||||
|
|
||||||
var index = 0,
|
var index = 0,
|
||||||
count = _connections.length;
|
count = _connections.length,
|
||||||
|
runtimeAttributeConnectors = [],
|
||||||
|
connection = nil;
|
||||||
|
|
||||||
for (; index < count; ++index)
|
for (; index < count; ++index)
|
||||||
{
|
{
|
||||||
var connection = _connections[index];
|
connection = _connections[index];
|
||||||
|
|
||||||
|
if ([connection isKindOfClass:[CPCibRuntimeAttributesConnector class]])
|
||||||
|
// Defer runtime attribute connections until after all other connections are made
|
||||||
|
runtimeAttributeConnectors.push(connection);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
[connection replaceObjects:_replacementObjects];
|
||||||
|
[connection establishConnection];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
count = runtimeAttributeConnectors.length;
|
||||||
|
|
||||||
|
for (index = 0; index < count; ++index)
|
||||||
|
{
|
||||||
|
connection = runtimeAttributeConnectors[index];
|
||||||
|
|
||||||
[connection replaceObjects:_replacementObjects];
|
[connection replaceObjects:_replacementObjects];
|
||||||
[connection establishConnection];
|
[connection establishConnection];
|
||||||
|
|||||||
@@ -810,8 +810,8 @@ var themedButtonValues = nil,
|
|||||||
[@"bezel-color", bezelDisabledColor, CPThemeStateBezeled | CPThemeStateDisabled],
|
[@"bezel-color", bezelDisabledColor, CPThemeStateBezeled | CPThemeStateDisabled],
|
||||||
[@"font", [CPFont systemFontOfSize:12.0], CPThemeStateBezeled],
|
[@"font", [CPFont systemFontOfSize:12.0], CPThemeStateBezeled],
|
||||||
|
|
||||||
[@"content-inset", CGInsetMake(8.0, 7.0, 5.0, 8.0), CPThemeStateBezeled],
|
[@"content-inset", CGInsetMake(7.0, 7.0, 6.0, 8.0), CPThemeStateBezeled],
|
||||||
[@"content-inset", CGInsetMake(7.0, 7.0, 5.0, 8.0), CPThemeStateBezeled | CPThemeStateEditing],
|
[@"content-inset", CGInsetMake(6.0, 7.0, 6.0, 8.0), CPThemeStateBezeled | CPThemeStateEditing],
|
||||||
[@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), CPThemeStateBezeled],
|
[@"bezel-inset", CGInsetMake(3.0, 4.0, 3.0, 4.0), CPThemeStateBezeled],
|
||||||
[@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBezeled | CPThemeStateEditing],
|
[@"bezel-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateBezeled | CPThemeStateEditing],
|
||||||
|
|
||||||
|
|||||||
@@ -288,6 +288,28 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0,
|
|||||||
return _textShadowOffset;
|
return _textShadowOffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (CGRect)textFrame
|
||||||
|
{
|
||||||
|
[self layoutIfNeeded];
|
||||||
|
|
||||||
|
var textFrame = CGRectMakeZero();
|
||||||
|
|
||||||
|
if (_DOMTextElement)
|
||||||
|
{
|
||||||
|
var textStyle = _DOMTextElement.style;
|
||||||
|
|
||||||
|
textFrame.origin.y = parseInt(textStyle.top.substr(0, textStyle.top.length - 2), 10),
|
||||||
|
textFrame.origin.x = parseInt(textStyle.left.substr(0, textStyle.left.length - 2), 10),
|
||||||
|
textFrame.size.width = parseInt(textStyle.width.substr(0, textStyle.width.length - 2), 10),
|
||||||
|
textFrame.size.height = parseInt(textStyle.height.substr(0, textStyle.height.length - 2), 10);
|
||||||
|
|
||||||
|
textFrame.size.width += _textShadowOffset.width;
|
||||||
|
textFrame.size.height += _textShadowOffset.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
return textFrame;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)setImage:(CPImage)anImage
|
- (void)setImage:(CPImage)anImage
|
||||||
{
|
{
|
||||||
if (_image == anImage)
|
if (_image == anImage)
|
||||||
|
|||||||
@@ -0,0 +1,54 @@
|
|||||||
|
require File.join(File.dirname(__FILE__), "repositories.rb")
|
||||||
|
require File.join(File.dirname(__FILE__), "dependencies.rb")
|
||||||
|
|
||||||
|
# Keep this structure to allow the build system to update version numbers.
|
||||||
|
VERSION_NUMBER = "1.0.0.005"
|
||||||
|
|
||||||
|
|
||||||
|
# Shorten expressions
|
||||||
|
def jars(*args)
|
||||||
|
args.collect {|arg| project(arg).package(:jar)}
|
||||||
|
end
|
||||||
|
|
||||||
|
desc "Cappuccino Distribution"
|
||||||
|
define "cappuccino" do
|
||||||
|
project.version = VERSION_NUMBER
|
||||||
|
project.group = "com.intalio.cloud.cappuccino"
|
||||||
|
|
||||||
|
file(_("target/patch")).enhance do
|
||||||
|
mkdir_p "target/patch"
|
||||||
|
end
|
||||||
|
|
||||||
|
file(_("target/Frameworks")).enhance do
|
||||||
|
mkdir_p "target/Frameworks/Debug"
|
||||||
|
system <<-BASH
|
||||||
|
export BUILD_PATH="target/Build"
|
||||||
|
jake debug release
|
||||||
|
BASH
|
||||||
|
|
||||||
|
cp_r "target/Build/Release/AppKit", "target/Frameworks/"
|
||||||
|
cp_r "target/Build/Release/Foundation", "target/Frameworks/"
|
||||||
|
cp_r "target/Build/Release/Objective-J", "target/Frameworks/"
|
||||||
|
cp_r "target/Build/Debug/AppKit", "target/Frameworks/Debug/"
|
||||||
|
cp_r "target/Build/Debug/Foundation", "target/Frameworks/Debug/"
|
||||||
|
cp_r "target/Build/Debug/Objective-J", "target/Frameworks/Debug/"
|
||||||
|
end
|
||||||
|
|
||||||
|
# file(_("target/Build")).enhance do
|
||||||
|
# end
|
||||||
|
read_m = ::Buildr::Packaging::Java::Manifest.parse(File.read(_("META-INF/MANIFEST.MF"))).main
|
||||||
|
read_m["Copyright"]="Intalio, Inc 2011"
|
||||||
|
read_m["Bundle-Version"]=VERSION_NUMBER.gsub(/SNAPSHOT/, "#{Time.now.to_i}")
|
||||||
|
read_m.delete("Jetty-WarFragmentFolderPath")
|
||||||
|
read_m.delete("Jetty-WarPatchFragmentFolderPath")
|
||||||
|
package(:jar).with :manifest => read_m
|
||||||
|
#package(:jar).include _("target/patch"), :as => "patch"
|
||||||
|
package(:jar).include _("target/Frameworks"), :as => "META-INF/resources/Frameworks"
|
||||||
|
|
||||||
|
#do not include those: they are at best not read harmful.
|
||||||
|
#package(:bundle).include _("build.properties"), :as => "build.properties"
|
||||||
|
#package(:bundle).meta_inf << file('META-INF/web-fragment.xml')
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
@@ -428,7 +428,9 @@ var avgOperator,
|
|||||||
maxOperator,
|
maxOperator,
|
||||||
minOperator,
|
minOperator,
|
||||||
countOperator,
|
countOperator,
|
||||||
sumOperator;
|
sumOperator,
|
||||||
|
distinctUnionOfObjectsOperator,
|
||||||
|
unionOfObjectsOperator;
|
||||||
|
|
||||||
kvoOperators["avg"] = function avgOperator(self, _cmd, param)
|
kvoOperators["avg"] = function avgOperator(self, _cmd, param)
|
||||||
{
|
{
|
||||||
@@ -495,6 +497,18 @@ kvoOperators["sum"] = function sumOperator(self, _cmd, param)
|
|||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
kvoOperators["distinctUnionOfObjects"] = function distinctUnionOfObjectsOperator(self, _cmd, param)
|
||||||
|
{
|
||||||
|
var objects = [self valueForKeyPath:param];
|
||||||
|
|
||||||
|
return [[CPSet setWithArray:objects] allObjects];
|
||||||
|
}
|
||||||
|
|
||||||
|
kvoOperators["unionOfObjects"] = function unionOfObjectsOperator(self, _cmd, param)
|
||||||
|
{
|
||||||
|
return [self valueForKeyPath:param];
|
||||||
|
}
|
||||||
|
|
||||||
@implementation CPArray (KeyValueObserving)
|
@implementation CPArray (KeyValueObserving)
|
||||||
|
|
||||||
- (void)addObserver:(id)anObserver toObjectsAtIndexes:(CPIndexSet)indexes forKeyPath:(CPString)aKeyPath options:(unsigned)options context:(id)context
|
- (void)addObserver:(id)anObserver toObjectsAtIndexes:(CPIndexSet)indexes forKeyPath:(CPString)aKeyPath options:(unsigned)options context:(id)context
|
||||||
|
|||||||
@@ -201,11 +201,10 @@ var _CPKeyedArchiverStringClass = Nil,
|
|||||||
|
|
||||||
for (; i < _objects.length; ++i)
|
for (; i < _objects.length; ++i)
|
||||||
{
|
{
|
||||||
var object = _objects[i],
|
var object = _objects[i];
|
||||||
theClass = [object classForKeyedArchiver];
|
|
||||||
|
|
||||||
// Do whatever with the class, yo.
|
// Do whatever with the class, yo.
|
||||||
// We call willEncodeObject previously.
|
// We called willEncodeObject previously.
|
||||||
|
|
||||||
_plistObject = _plistObjects[[_UIDs objectForKey:[object UID]]];
|
_plistObject = _plistObjects[[_UIDs objectForKey:[object UID]]];
|
||||||
[object encodeWithCoder:self];
|
[object encodeWithCoder:self];
|
||||||
|
|||||||
@@ -438,14 +438,18 @@ var CPComparisonPredicateModifier,
|
|||||||
reg = new RegExp(rhs.escapeForRegExp(),commut);
|
reg = new RegExp(rhs.escapeForRegExp(),commut);
|
||||||
return reg.test(lhs);
|
return reg.test(lhs);
|
||||||
|
|
||||||
case CPBeginsWithPredicateOperatorType: var range = CPMakeRange(0,[rhs length]);
|
case CPBeginsWithPredicateOperatorType: var range = CPMakeRange(0, MIN([lhs length], [rhs length]));
|
||||||
if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch;
|
if (_options & CPCaseInsensitivePredicateOption)
|
||||||
if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch;
|
string_compare_options |= CPCaseInsensitiveSearch;
|
||||||
|
if (_options & CPDiacriticInsensitivePredicateOption)
|
||||||
|
string_compare_options |= CPDiacriticInsensitiveSearch;
|
||||||
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
|
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
|
||||||
|
|
||||||
case CPEndsWithPredicateOperatorType: var range = CPMakeRange([lhs length] - [rhs length],[rhs length]);
|
case CPEndsWithPredicateOperatorType: var range = CPMakeRange(MAX([lhs length] - [rhs length], 0), MIN([lhs length], [rhs length]));
|
||||||
if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch;
|
if (_options & CPCaseInsensitivePredicateOption)
|
||||||
if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch;
|
string_compare_options |= CPCaseInsensitiveSearch;
|
||||||
|
if (_options & CPDiacriticInsensitivePredicateOption)
|
||||||
|
string_compare_options |= CPDiacriticInsensitiveSearch;
|
||||||
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
|
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
|
||||||
|
|
||||||
case CPCustomSelectorPredicateOperatorType: return [lhs performSelector:_customSelector withObject:rhs];
|
case CPCustomSelectorPredicateOperatorType: return [lhs performSelector:_customSelector withObject:rhs];
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
source "http://rubygems.org"
|
||||||
|
|
||||||
|
gem "atoulme-Antwrap", "0.7.1" # -java
|
||||||
|
gem "bouncy-castle-java", "1.5.0146.1"
|
||||||
|
gem "builder", "2.1.2"
|
||||||
|
gem "buildr", "1.4.5" # -java
|
||||||
|
gem "buildr4osgi", "0.9.6"
|
||||||
|
gem "bundler", "1.0.0.rc.5"
|
||||||
|
gem "diff-lcs", "1.1.2"
|
||||||
|
gem "highline", "1.5.1"
|
||||||
|
gem "hoe", "2.3.3"
|
||||||
|
gem "jruby-openssl", "0.7.4"
|
||||||
|
gem "json_pure", "1.4.3"
|
||||||
|
gem "manifest", "0.0.8"
|
||||||
|
gem "minitar", "0.5.3"
|
||||||
|
gem "net-sftp", "2.0.4"
|
||||||
|
gem "net-ssh", "2.0.23" # 2.1.4
|
||||||
|
gem "rake", "0.8.7" # 0.9.1
|
||||||
|
gem "rspec", "2.1.0"
|
||||||
|
gem "rspec-core", "2.1.0"
|
||||||
|
gem "rspec-expectations", "2.1.0"
|
||||||
|
gem "rspec-mocks", "2.1.0"
|
||||||
|
gem "rubyforge", "2.0.3"
|
||||||
|
gem "rubyzip", "0.9.4"
|
||||||
|
gem "xml-simple", "1.0.12"
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
GEM
|
||||||
|
remote: http://rubygems.org/
|
||||||
|
specs:
|
||||||
|
atoulme-Antwrap (0.7.1-java)
|
||||||
|
bouncy-castle-java (1.5.0146.1)
|
||||||
|
builder (2.1.2)
|
||||||
|
buildr (1.4.5-java)
|
||||||
|
atoulme-Antwrap (= 0.7.1)
|
||||||
|
builder (= 2.1.2)
|
||||||
|
diff-lcs (= 1.1.2)
|
||||||
|
highline (= 1.5.1)
|
||||||
|
hoe (= 2.3.3)
|
||||||
|
jruby-openssl (>= 0.7)
|
||||||
|
json_pure (= 1.4.3)
|
||||||
|
minitar (= 0.5.3)
|
||||||
|
net-sftp (= 2.0.4)
|
||||||
|
net-ssh (= 2.0.23)
|
||||||
|
rake (= 0.8.7)
|
||||||
|
rspec (= 2.1.0)
|
||||||
|
rspec-core (= 2.1.0)
|
||||||
|
rspec-expectations (= 2.1.0)
|
||||||
|
rspec-mocks (= 2.1.0)
|
||||||
|
rubyforge (= 2.0.3)
|
||||||
|
rubyzip (= 0.9.4)
|
||||||
|
xml-simple (= 1.0.12)
|
||||||
|
buildr4osgi (0.9.6)
|
||||||
|
manifest (= 0.0.8)
|
||||||
|
diff-lcs (1.1.2)
|
||||||
|
highline (1.5.1)
|
||||||
|
hoe (2.3.3)
|
||||||
|
rake (>= 0.8.7)
|
||||||
|
rubyforge (>= 1.0.4)
|
||||||
|
jruby-openssl (0.7.4)
|
||||||
|
bouncy-castle-java
|
||||||
|
json_pure (1.4.3)
|
||||||
|
manifest (0.0.8)
|
||||||
|
minitar (0.5.3)
|
||||||
|
net-sftp (2.0.4)
|
||||||
|
net-ssh (>= 2.0.9)
|
||||||
|
net-ssh (2.0.23)
|
||||||
|
rake (0.8.7)
|
||||||
|
rspec (2.1.0)
|
||||||
|
rspec-core (~> 2.1.0)
|
||||||
|
rspec-expectations (~> 2.1.0)
|
||||||
|
rspec-mocks (~> 2.1.0)
|
||||||
|
rspec-core (2.1.0)
|
||||||
|
rspec-expectations (2.1.0)
|
||||||
|
diff-lcs (~> 1.1.2)
|
||||||
|
rspec-mocks (2.1.0)
|
||||||
|
rubyforge (2.0.3)
|
||||||
|
json_pure (>= 1.1.7)
|
||||||
|
rubyzip (0.9.4)
|
||||||
|
xml-simple (1.0.12)
|
||||||
|
|
||||||
|
PLATFORMS
|
||||||
|
java
|
||||||
|
|
||||||
|
DEPENDENCIES
|
||||||
|
atoulme-Antwrap (= 0.7.1)
|
||||||
|
bouncy-castle-java (= 1.5.0146.1)
|
||||||
|
builder (= 2.1.2)
|
||||||
|
buildr (= 1.4.5)
|
||||||
|
buildr4osgi (= 0.9.6)
|
||||||
|
bundler (= 1.0.0.rc.5)
|
||||||
|
diff-lcs (= 1.1.2)
|
||||||
|
highline (= 1.5.1)
|
||||||
|
hoe (= 2.3.3)
|
||||||
|
jruby-openssl (= 0.7.4)
|
||||||
|
json_pure (= 1.4.3)
|
||||||
|
manifest (= 0.0.8)
|
||||||
|
minitar (= 0.5.3)
|
||||||
|
net-sftp (= 2.0.4)
|
||||||
|
net-ssh (= 2.0.23)
|
||||||
|
rake (= 0.8.7)
|
||||||
|
rspec (= 2.1.0)
|
||||||
|
rspec-core (= 2.1.0)
|
||||||
|
rspec-expectations (= 2.1.0)
|
||||||
|
rspec-mocks (= 2.1.0)
|
||||||
|
rubyforge (= 2.0.3)
|
||||||
|
rubyzip (= 0.9.4)
|
||||||
|
xml-simple (= 1.0.12)
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Manifest-Version: 1.0
|
||||||
|
Bundle-ManifestVersion: 2
|
||||||
|
Bundle-Name: cappuccinofrag
|
||||||
|
Bundle-SymbolicName: com.intalio.cloud.cappuccino
|
||||||
|
Fragment-Host: com.intalio.cloud.carbon
|
||||||
|
Jetty-WarPatchFragmentFolderPath: /
|
||||||
|
Bundle-Version: 1.0.0.qualifier
|
||||||
|
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
|
||||||
|
Eclipse-BundleShape: dir
|
||||||
@@ -189,6 +189,28 @@
|
|||||||
[self assertTrue:[pred evaluateWithObject:dict] message:"'"+ [pred description] + "' should be true"];
|
[self assertTrue:[pred evaluateWithObject:dict] message:"'"+ [pred description] + "' should be true"];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)testBeginsWithEndsWithPredicate
|
||||||
|
{
|
||||||
|
// This always worked
|
||||||
|
var data = ["To", "Tom", "Tomb", "Tomboy"],
|
||||||
|
pred = [CPPredicate predicateWithFormat:@"SELF beginsWith 'To'"],
|
||||||
|
result = [data filteredArrayUsingPredicate:pred];
|
||||||
|
|
||||||
|
[self assertTrue:result.length === 4 message:"'" + [pred description] + "' should return [\"To\", \"Tom\", \"Tomb\", \"Tomboy\"]"];
|
||||||
|
|
||||||
|
// Make sure beginsWith comparison string longer than source strings works
|
||||||
|
pred = [CPPredicate predicateWithFormat:@"SELF beginsWith 'Tomb'"];
|
||||||
|
result = [data filteredArrayUsingPredicate:pred];
|
||||||
|
|
||||||
|
[self assertTrue:[result isEqual:["Tomb", "Tomboy"]] message:"'" + [pred description] + "' should return [\"Tomb\", \"Tomboy\"]"];
|
||||||
|
|
||||||
|
// Make sure endsWith comparison string longer than source strings works
|
||||||
|
pred = [CPPredicate predicateWithFormat:@"SELF endsWith 'boy'"];
|
||||||
|
result = [data filteredArrayUsingPredicate:pred];
|
||||||
|
|
||||||
|
[self assertTrue:[result isEqual:["Tomboy"]] message:"'" + [pred description] + "' should return [\"Tomboy\"]"];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)testNilComparisons
|
- (void)testNilComparisons
|
||||||
{
|
{
|
||||||
// Custom Selector Predicate
|
// Custom Selector Predicate
|
||||||
|
|||||||
@@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* AppController.j
|
||||||
|
* test
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 19, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import <Foundation/CPObject.j>
|
||||||
|
|
||||||
|
function formatter(aString, aLevel, aTitle)
|
||||||
|
{
|
||||||
|
return aString;
|
||||||
|
}
|
||||||
|
|
||||||
|
@implementation AppController : CPObject
|
||||||
|
{
|
||||||
|
CPWindow theWindow; //this "outlet" is connected automatically by the Cib
|
||||||
|
CPView simpleColor;
|
||||||
|
CPView patternColor;
|
||||||
|
CPView threePartColor;
|
||||||
|
CPView ninePartColor;
|
||||||
|
CPImage imageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||||
|
{
|
||||||
|
// This is called when the application is done loading.
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)awakeFromCib
|
||||||
|
{
|
||||||
|
CPLogRegister(CPLogConsole, null, formatter);
|
||||||
|
|
||||||
|
// In this case, we want the window from Cib to become our full browser window
|
||||||
|
[theWindow setFullPlatformWindow:YES];
|
||||||
|
|
||||||
|
var color = [CPColor colorWithHexString:@"88B3FF"];
|
||||||
|
CPLog([color description]);
|
||||||
|
|
||||||
|
[simpleColor setBackgroundColor:color];
|
||||||
|
|
||||||
|
color = CPColorWithImages("wheel_button.png", 32, 32, [CPBundle bundleForClass:[CPView class]]);
|
||||||
|
CPLog([color description]);
|
||||||
|
|
||||||
|
[patternColor setBackgroundColor:color];
|
||||||
|
|
||||||
|
var bundle = [CPBundle bundleForClass:[CPView class]];
|
||||||
|
|
||||||
|
color = CPColorWithImages([
|
||||||
|
["Aristo.blend/Resources/button-bezel-left.png", 4, 24, bundle],
|
||||||
|
["Aristo.blend/Resources/button-bezel-center.png", 1, 24, bundle],
|
||||||
|
["Aristo.blend/Resources/button-bezel-right.png", 4, 24, bundle]
|
||||||
|
]);
|
||||||
|
CPLog([color description]);
|
||||||
|
|
||||||
|
[threePartColor setBackgroundColor:color];
|
||||||
|
|
||||||
|
color = CPColorWithImages([
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-0.png", 7, 7, bundle],
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-1.png", 1, 7, bundle],
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-2.png", 7, 7, bundle],
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-3.png", 7, 1, bundle],
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-4.png", 1, 1, bundle],
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-5.png", 7, 1, bundle],
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-6.png", 7, 7, bundle],
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-7.png", 1, 7, bundle],
|
||||||
|
["Aristo.blend/Resources/textfield-bezel-square-focused-8.png", 7, 7, bundle],
|
||||||
|
]);
|
||||||
|
CPLog([color description]);
|
||||||
|
|
||||||
|
[ninePartColor setBackgroundColor:color];
|
||||||
|
|
||||||
|
var image = CPImageInBundle("add1-32.png", CGSizeMake(32, 32));
|
||||||
|
|
||||||
|
CPLog([image description]);
|
||||||
|
[imageView setImage:image];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Main cib file base name</key>
|
||||||
|
<string>MainMenu.cib</string>
|
||||||
|
<key>CPBundleName</key>
|
||||||
|
<string>CPColor-CPImage-description</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
* Jakefile
|
||||||
|
* test
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 19, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions 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 ("test", function(task)
|
||||||
|
{
|
||||||
|
task.setBuildIntermediatesPath(FILE.join("Build", "test.build", configuration));
|
||||||
|
task.setBuildPath(FILE.join("Build", configuration));
|
||||||
|
|
||||||
|
task.setProductName("test");
|
||||||
|
task.setIdentifier("com.aparajita.test");
|
||||||
|
task.setVersion("1.0");
|
||||||
|
task.setAuthor("Victory-Heart Productions");
|
||||||
|
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||||
|
task.setSummary("test");
|
||||||
|
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", ["test"], 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", "test", "index.html")]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("run-release", ["release"], function()
|
||||||
|
{
|
||||||
|
OS.system(["open", FILE.join("Build", "Release", "test", "index.html")]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("deploy", ["release"], function()
|
||||||
|
{
|
||||||
|
FILE.mkdirs(FILE.join("Build", "Deployment", "test"));
|
||||||
|
OS.system(["press", "-f", FILE.join("Build", "Release", "test"), FILE.join("Build", "Deployment", "test")]);
|
||||||
|
printResults("Deployment")
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("desktop", ["release"], function()
|
||||||
|
{
|
||||||
|
FILE.mkdirs(FILE.join("Build", "Desktop", "test"));
|
||||||
|
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "test"), FILE.join("Build", "Desktop", "test", "test.app"));
|
||||||
|
printResults("Desktop")
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("run-desktop", ["desktop"], function()
|
||||||
|
{
|
||||||
|
OS.system([FILE.join("Build", "Desktop", "test", "test.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
function printResults(configuration)
|
||||||
|
{
|
||||||
|
print("----------------------------");
|
||||||
|
print(configuration+" app built at path: "+FILE.join("Build", configuration, "test"));
|
||||||
|
print("----------------------------");
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,654 @@
|
|||||||
|
<?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">10J869</string>
|
||||||
|
<string key="IBDocument.InterfaceBuilderVersion">804</string>
|
||||||
|
<string key="IBDocument.AppKitVersion">1038.35</string>
|
||||||
|
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="NS.object.0">804</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<integer value="372"/>
|
||||||
|
</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, 370}, {389, 380}}</string>
|
||||||
|
<int key="NSWTFlags">1946157056</int>
|
||||||
|
<string key="NSWindowTitle">Window</string>
|
||||||
|
<string key="NSWindowClass">NSWindow</string>
|
||||||
|
<nil key="NSViewClass"/>
|
||||||
|
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
<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="NSCustomView" id="1066696903">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{151, 297}, {159, 36}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<string key="NSClassName">NSView</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="385245898">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{47, 307}, {82, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="12386750">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">Simple color</string>
|
||||||
|
<object class="NSFont" key="NSSupport" id="710279137">
|
||||||
|
<string key="NSName">LucidaGrande</string>
|
||||||
|
<double key="NSSize">13</double>
|
||||||
|
<int key="NSfFlags">1044</int>
|
||||||
|
</object>
|
||||||
|
<reference key="NSControlView" ref="385245898"/>
|
||||||
|
<object class="NSColor" key="NSBackgroundColor" id="616930867">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSColor" key="NSTextColor" id="968014435">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlTextColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MAA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomView" id="605260233">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{151, 243}, {159, 36}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<string key="NSClassName">NSView</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="179895693">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{47, 253}, {85, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="222300836">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">Pattern color</string>
|
||||||
|
<reference key="NSSupport" ref="710279137"/>
|
||||||
|
<reference key="NSControlView" ref="179895693"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="616930867"/>
|
||||||
|
<reference key="NSTextColor" ref="968014435"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomView" id="688674788">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{151, 186}, {159, 36}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<string key="NSClassName">NSView</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="63869060">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{47, 196}, {85, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="828490958">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">3-part color</string>
|
||||||
|
<reference key="NSSupport" ref="710279137"/>
|
||||||
|
<reference key="NSControlView" ref="63869060"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="616930867"/>
|
||||||
|
<reference key="NSTextColor" ref="968014435"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomView" id="100716157">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{151, 130}, {159, 36}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<string key="NSClassName">NSView</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="488609560">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{47, 140}, {85, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="548167261">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">9-part color</string>
|
||||||
|
<reference key="NSSupport" ref="710279137"/>
|
||||||
|
<reference key="NSControlView" ref="488609560"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="616930867"/>
|
||||||
|
<reference key="NSTextColor" ref="968014435"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="696346150">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{47, 84}, {85, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="30856995">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">Image</string>
|
||||||
|
<reference key="NSSupport" ref="710279137"/>
|
||||||
|
<reference key="NSControlView" ref="696346150"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="616930867"/>
|
||||||
|
<reference key="NSTextColor" ref="968014435"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSImageView" id="276994718">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<object class="NSMutableSet" key="NSDragTypes">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSArray" key="set.sortedObjects">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>Apple PDF pasteboard type</string>
|
||||||
|
<string>Apple PICT pasteboard type</string>
|
||||||
|
<string>Apple PNG pasteboard type</string>
|
||||||
|
<string>NSFilenamesPboardType</string>
|
||||||
|
<string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
|
||||||
|
<string>NeXT TIFF v4.0 pasteboard type</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="NSFrame">{{148, 68}, {48, 48}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSImageCell" key="NSCell" id="334634827">
|
||||||
|
<int key="NSCellFlags">130560</int>
|
||||||
|
<int key="NSCellFlags2">33554432</int>
|
||||||
|
<int key="NSAlign">0</int>
|
||||||
|
<int key="NSScale">2</int>
|
||||||
|
<int key="NSStyle">0</int>
|
||||||
|
<bool key="NSAnimates">NO</bool>
|
||||||
|
</object>
|
||||||
|
<bool key="NSEditable">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="NSFrameSize">{389, 380}</string>
|
||||||
|
<reference key="NSSuperview"/>
|
||||||
|
</object>
|
||||||
|
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
|
||||||
|
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="635946545">
|
||||||
|
<string key="NSClassName">AppController</string>
|
||||||
|
</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">ninePartColor</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="100716157"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">480</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">threePartColor</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="688674788"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">481</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">patternColor</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="605260233"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">482</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">simpleColor</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="1066696903"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">483</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">imageView</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="276994718"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">490</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="0">
|
||||||
|
<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="0"/>
|
||||||
|
<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="0"/>
|
||||||
|
<string key="objectName">First Responder</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-3</int>
|
||||||
|
<reference key="object" ref="1050"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<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="0"/>
|
||||||
|
</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="385245898"/>
|
||||||
|
<reference ref="1066696903"/>
|
||||||
|
<reference ref="605260233"/>
|
||||||
|
<reference ref="179895693"/>
|
||||||
|
<reference ref="688674788"/>
|
||||||
|
<reference ref="63869060"/>
|
||||||
|
<reference ref="100716157"/>
|
||||||
|
<reference ref="488609560"/>
|
||||||
|
<reference ref="696346150"/>
|
||||||
|
<reference ref="276994718"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="972006081"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">450</int>
|
||||||
|
<reference key="object" ref="635946545"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">468</int>
|
||||||
|
<reference key="object" ref="1066696903"/>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">469</int>
|
||||||
|
<reference key="object" ref="385245898"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="12386750"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">470</int>
|
||||||
|
<reference key="object" ref="12386750"/>
|
||||||
|
<reference key="parent" ref="385245898"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">471</int>
|
||||||
|
<reference key="object" ref="605260233"/>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">472</int>
|
||||||
|
<reference key="object" ref="179895693"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="222300836"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">473</int>
|
||||||
|
<reference key="object" ref="222300836"/>
|
||||||
|
<reference key="parent" ref="179895693"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">474</int>
|
||||||
|
<reference key="object" ref="688674788"/>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">475</int>
|
||||||
|
<reference key="object" ref="63869060"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="828490958"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">476</int>
|
||||||
|
<reference key="object" ref="828490958"/>
|
||||||
|
<reference key="parent" ref="63869060"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">477</int>
|
||||||
|
<reference key="object" ref="100716157"/>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">478</int>
|
||||||
|
<reference key="object" ref="488609560"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="548167261"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">479</int>
|
||||||
|
<reference key="object" ref="548167261"/>
|
||||||
|
<reference key="parent" ref="488609560"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">485</int>
|
||||||
|
<reference key="object" ref="696346150"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="30856995"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">486</int>
|
||||||
|
<reference key="object" ref="30856995"/>
|
||||||
|
<reference key="parent" ref="696346150"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">487</int>
|
||||||
|
<reference key="object" ref="276994718"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="334634827"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">488</int>
|
||||||
|
<reference key="object" ref="334634827"/>
|
||||||
|
<reference key="parent" ref="276994718"/>
|
||||||
|
</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>-3.IBPluginDependency</string>
|
||||||
|
<string>371.IBEditorWindowLastContentRect</string>
|
||||||
|
<string>371.IBPluginDependency</string>
|
||||||
|
<string>371.IBViewEditorWindowController.showingBoundsRectangles</string>
|
||||||
|
<string>371.IBViewEditorWindowController.showingLayoutRectangles</string>
|
||||||
|
<string>371.IBWindowTemplateEditedContentRect</string>
|
||||||
|
<string>371.NSWindowTemplate.visibleAtLaunch</string>
|
||||||
|
<string>371.editorWindowContentRectSynchronizationRect</string>
|
||||||
|
<string>372.IBPluginDependency</string>
|
||||||
|
<string>468.IBPluginDependency</string>
|
||||||
|
<string>468.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>469.IBPluginDependency</string>
|
||||||
|
<string>469.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>470.IBPluginDependency</string>
|
||||||
|
<string>471.IBPluginDependency</string>
|
||||||
|
<string>471.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>472.IBPluginDependency</string>
|
||||||
|
<string>472.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>473.IBPluginDependency</string>
|
||||||
|
<string>474.IBPluginDependency</string>
|
||||||
|
<string>474.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>475.IBPluginDependency</string>
|
||||||
|
<string>475.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>476.IBPluginDependency</string>
|
||||||
|
<string>477.IBPluginDependency</string>
|
||||||
|
<string>477.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>478.IBPluginDependency</string>
|
||||||
|
<string>478.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>479.IBPluginDependency</string>
|
||||||
|
<string>485.IBPluginDependency</string>
|
||||||
|
<string>485.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>486.IBPluginDependency</string>
|
||||||
|
<string>487.IBPluginDependency</string>
|
||||||
|
<string>488.IBPluginDependency</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{432, 718}, {389, 380}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<boolean value="YES"/>
|
||||||
|
<boolean value="YES"/>
|
||||||
|
<string>{{432, 718}, {389, 380}}</string>
|
||||||
|
<integer value="1"/>
|
||||||
|
<string>{{33, 99}, {480, 360}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">AUMXAABDm4AAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCPAAAw6gAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">AUMXAABDgIAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCPAAAw40AAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">AUMXAABDSAAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCPAAAw2EAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">AUMXAABDAgAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCPAAAwxsAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCUAAAwxYAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<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="0"/>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<nil key="activeLocalization"/>
|
||||||
|
<object class="NSMutableDictionary" key="localizations">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference key="dict.sortedKeys" ref="0"/>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<nil key="sourceID"/>
|
||||||
|
<int key="maxID">490</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>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<string key="NS.key.0">theWindow</string>
|
||||||
|
<string key="NS.object.0">NSWindow</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
|
<string key="NS.key.0">theWindow</string>
|
||||||
|
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||||
|
<string key="name">theWindow</string>
|
||||||
|
<string key="candidateClassName">NSWindow</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBProjectSource</string>
|
||||||
|
<string key="minorKey">./Classes/AppController.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">AppController</string>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSArray" key="dict.sortedKeys">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>imageView</string>
|
||||||
|
<string>ninePartColor</string>
|
||||||
|
<string>patternColor</string>
|
||||||
|
<string>simpleColor</string>
|
||||||
|
<string>threePartColor</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</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>imageView</string>
|
||||||
|
<string>ninePartColor</string>
|
||||||
|
<string>patternColor</string>
|
||||||
|
<string>simpleColor</string>
|
||||||
|
<string>threePartColor</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">imageView</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">ninePartColor</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">patternColor</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">simpleColor</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">threePartColor</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</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>
|
||||||
|
<nil key="IBDocument.LastKnownRelativeProjectPath"/>
|
||||||
|
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||||
|
</data>
|
||||||
|
</archive>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,103 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<!--
|
||||||
|
index-debug.html
|
||||||
|
test
|
||||||
|
|
||||||
|
Created by aparajita on May 19, 2011.
|
||||||
|
Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="Resources/icon.png" />
|
||||||
|
<link rel="apple-touch-startup-image" href="Resources/default.png" />
|
||||||
|
|
||||||
|
<title>CPColor-CPImage-description</title>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
OBJJ_MAIN_FILE = "main.j";
|
||||||
|
OBJJ_INCLUDE_PATHS = ["Frameworks/Debug", "Frameworks", "SomethingElse"];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="Frameworks/Debug/Objective-J/Objective-J.js" charset="UTF-8"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
objj_msgSend_reset();
|
||||||
|
|
||||||
|
// DEBUG OPTIONS:
|
||||||
|
|
||||||
|
// Uncomment to enable printing of backtraces on exceptions:
|
||||||
|
//objj_msgSend_decorate(objj_backtrace_decorator);
|
||||||
|
|
||||||
|
// Uncomment to supress exceptions that take place inside a message
|
||||||
|
//objj_msgSend_decorate(objj_supress_exceptions_decorator)
|
||||||
|
|
||||||
|
// Uncomment to enable runtime type checking:
|
||||||
|
//objj_msgSend_decorate(objj_typecheck_decorator);
|
||||||
|
|
||||||
|
// Uncomment (along with both above) to print backtraces on type check errors:
|
||||||
|
//objj_typecheck_prints_backtrace = true;
|
||||||
|
|
||||||
|
// Uncomment to disable the default logger (CPLogConsole if window.console exists, CPLogPopup otherwise):
|
||||||
|
//CPLogUnregister(CPLogDefault);
|
||||||
|
|
||||||
|
// Uncomment to enable a specific logger:
|
||||||
|
//CPLogRegister(CPLogConsole);
|
||||||
|
//CPLogRegister(CPLogPopup);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body{margin:0; padding:0;}
|
||||||
|
#container {position: absolute; top:50%; left:50%;}
|
||||||
|
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
|
||||||
|
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
|
||||||
|
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
#container { position: relative; top: 50%; }
|
||||||
|
#content { position: relative;}
|
||||||
|
</STYLE>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="">
|
||||||
|
<div id="cappuccino-body">
|
||||||
|
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write("<div id='container'><p id='content'>" +
|
||||||
|
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
|
||||||
|
"Loading test...</p></div>");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<div id="container">
|
||||||
|
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
|
||||||
|
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
|
||||||
|
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
|
||||||
|
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
|
||||||
|
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
|
||||||
|
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<!--
|
||||||
|
index.html
|
||||||
|
test
|
||||||
|
|
||||||
|
Created by aparajita on May 19, 2011.
|
||||||
|
Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="Resources/icon.png" />
|
||||||
|
<link rel="apple-touch-startup-image" href="Resources/default.png" />
|
||||||
|
|
||||||
|
<title>CPColor-CPImage-description</title>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
OBJJ_MAIN_FILE = "main.j";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="Frameworks/Objective-J/Objective-J.js" charset="UTF-8"></script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body{margin:0; padding:0;}
|
||||||
|
#container {position: absolute; top:50%; left:50%;}
|
||||||
|
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
|
||||||
|
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
|
||||||
|
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
#container { position: relative; top: 50%; }
|
||||||
|
#content { position: relative;}
|
||||||
|
</STYLE>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="">
|
||||||
|
<div id="cappuccino-body">
|
||||||
|
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write("<div id='container'><p id='content'>" +
|
||||||
|
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
|
||||||
|
"Loading test...</p></div>");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<div id="container">
|
||||||
|
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
|
||||||
|
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
|
||||||
|
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
|
||||||
|
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
|
||||||
|
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
|
||||||
|
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* AppController.j
|
||||||
|
* test
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 19, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import <Foundation/Foundation.j>
|
||||||
|
@import <AppKit/AppKit.j>
|
||||||
|
|
||||||
|
@import "AppController.j"
|
||||||
|
|
||||||
|
|
||||||
|
function main(args, namedArgs)
|
||||||
|
{
|
||||||
|
CPApplicationMain(args, namedArgs);
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
* AppController.j
|
||||||
|
* RuntimeAttributesTest
|
||||||
|
*
|
||||||
|
* Created by Aparajita Fishman on March 26, 2011.
|
||||||
|
* Copyright 2009, 280 North, Inc. All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import <Foundation/CPObject.j>
|
||||||
|
|
||||||
|
|
||||||
|
@implementation AppController : CPObject
|
||||||
|
{
|
||||||
|
CPWindow theWindow; //this "outlet" is connected automatically by the Cib
|
||||||
|
CPView firstResponder;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||||
|
{
|
||||||
|
// This is called when the application is done loading.
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)awakeFromCib
|
||||||
|
{
|
||||||
|
// This is called when the cib is done loading.
|
||||||
|
// You can implement this method on any object instantiated from a Cib.
|
||||||
|
// It's a useful hook for setting up current UI values, and other things.
|
||||||
|
|
||||||
|
// In this case, we want the window from Cib to become our full browser window
|
||||||
|
//[theWindow setFullPlatformWindow:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setInitialResponder:(CPInteger)tag
|
||||||
|
{
|
||||||
|
[theWindow setInitialFirstResponder:[[theWindow contentView] viewWithTag:tag]];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setValue:(id)value forUndefinedKey:(CPString)key
|
||||||
|
{
|
||||||
|
console.log("setValue:" + value + " forKey:" + key);
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Main cib file base name</key>
|
||||||
|
<string>MainMenu.cib</string>
|
||||||
|
<key>CPBundleName</key>
|
||||||
|
<string>RuntimeAttributesTest</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
* Jakefile
|
||||||
|
* test
|
||||||
|
*
|
||||||
|
* Created by aparajita on March 26, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions 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 ("test", function(task)
|
||||||
|
{
|
||||||
|
task.setBuildIntermediatesPath(FILE.join("Build", "test.build", configuration));
|
||||||
|
task.setBuildPath(FILE.join("Build", configuration));
|
||||||
|
|
||||||
|
task.setProductName("test");
|
||||||
|
task.setIdentifier("com.aparajitaworld.test");
|
||||||
|
task.setVersion("1.0");
|
||||||
|
task.setAuthor("Victory-Heart Productions");
|
||||||
|
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||||
|
task.setSummary("test");
|
||||||
|
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", ["test"], 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", "test", "index.html")]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("run-release", ["release"], function()
|
||||||
|
{
|
||||||
|
OS.system(["open", FILE.join("Build", "Release", "test", "index.html")]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("deploy", ["release"], function()
|
||||||
|
{
|
||||||
|
FILE.mkdirs(FILE.join("Build", "Deployment", "test"));
|
||||||
|
OS.system(["press", "-f", FILE.join("Build", "Release", "test"), FILE.join("Build", "Deployment", "test")]);
|
||||||
|
printResults("Deployment")
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("desktop", ["release"], function()
|
||||||
|
{
|
||||||
|
FILE.mkdirs(FILE.join("Build", "Desktop", "test"));
|
||||||
|
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "test"), FILE.join("Build", "Desktop", "test", "test.app"));
|
||||||
|
printResults("Desktop")
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("run-desktop", ["desktop"], function()
|
||||||
|
{
|
||||||
|
OS.system([FILE.join("Build", "Desktop", "test", "test.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
function printResults(configuration)
|
||||||
|
{
|
||||||
|
print("----------------------------");
|
||||||
|
print(configuration+" app built at path: "+FILE.join("Build", configuration, "test"));
|
||||||
|
print("----------------------------");
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,609 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
|
||||||
|
<data>
|
||||||
|
<int key="IBDocument.SystemTarget">1060</int>
|
||||||
|
<string key="IBDocument.SystemVersion">10J869</string>
|
||||||
|
<string key="IBDocument.InterfaceBuilderVersion">804</string>
|
||||||
|
<string key="IBDocument.AppKitVersion">1038.35</string>
|
||||||
|
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="NS.object.0">804</string>
|
||||||
|
</object>
|
||||||
|
<array class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
|
<integer value="24"/>
|
||||||
|
</array>
|
||||||
|
<array key="IBDocument.PluginDependencies">
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
</array>
|
||||||
|
<dictionary class="NSMutableDictionary" key="IBDocument.Metadata"/>
|
||||||
|
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
|
||||||
|
<object class="NSCustomObject" id="1001">
|
||||||
|
<string key="NSClassName">NSObject</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="1003">
|
||||||
|
<string key="NSClassName">FirstResponder</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="1004">
|
||||||
|
<string key="NSClassName">NSApplication</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="673890665">
|
||||||
|
<string key="NSClassName">AppController</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSWindowTemplate" id="917316023">
|
||||||
|
<int key="NSWindowStyleMask">15</int>
|
||||||
|
<int key="NSWindowBacking">2</int>
|
||||||
|
<string key="NSWindowRect">{{162, 992}, {548, 314}}</string>
|
||||||
|
<int key="NSWTFlags">611844096</int>
|
||||||
|
<string key="NSWindowTitle">RuntimeAttributes Test</string>
|
||||||
|
<string key="NSWindowClass">NSWindow</string>
|
||||||
|
<nil key="NSViewClass"/>
|
||||||
|
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
<object class="NSView" key="NSWindowView" id="412280178">
|
||||||
|
<reference key="NSNextResponder"/>
|
||||||
|
<int key="NSvFlags">256</int>
|
||||||
|
<array class="NSMutableArray" key="NSSubviews">
|
||||||
|
<object class="NSButton" id="332976459">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{37, 187}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="941203667">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">button</string>
|
||||||
|
<object class="NSFont" key="NSSupport" id="28800349">
|
||||||
|
<string key="NSName">LucidaGrande</string>
|
||||||
|
<double key="NSSize">13</double>
|
||||||
|
<int key="NSfFlags">1044</int>
|
||||||
|
</object>
|
||||||
|
<reference key="NSControlView" ref="332976459"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="361072273">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{37, 148}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="431597734">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">disabled</string>
|
||||||
|
<reference key="NSSupport" ref="28800349"/>
|
||||||
|
<reference key="NSControlView" ref="361072273"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="920139093">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{37, 99}, {118, 22}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<int key="NSTag">1</int>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="224672534">
|
||||||
|
<int key="NSCellFlags">-1804468671</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents"/>
|
||||||
|
<reference key="NSSupport" ref="28800349"/>
|
||||||
|
<reference key="NSControlView" ref="920139093"/>
|
||||||
|
<bool key="NSDrawsBackground">YES</bool>
|
||||||
|
<object class="NSColor" key="NSBackgroundColor" id="339930237">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">textBackgroundColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MQA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSColor" key="NSTextColor" id="702864141">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">textColor</string>
|
||||||
|
<object class="NSColor" key="NSColor" id="369941818">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MAA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="138511613">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{37, 53}, {118, 22}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<int key="NSTag">2</int>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="515815898">
|
||||||
|
<int key="NSCellFlags">-1804468671</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents"/>
|
||||||
|
<reference key="NSSupport" ref="28800349"/>
|
||||||
|
<reference key="NSControlView" ref="138511613"/>
|
||||||
|
<bool key="NSDrawsBackground">YES</bool>
|
||||||
|
<reference key="NSBackgroundColor" ref="339930237"/>
|
||||||
|
<reference key="NSTextColor" ref="702864141"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="957450672">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{179, 194}, {166, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="536930828">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">This button's title was set</string>
|
||||||
|
<reference key="NSSupport" ref="28800349"/>
|
||||||
|
<reference key="NSControlView" ref="957450672"/>
|
||||||
|
<object class="NSColor" key="NSBackgroundColor" id="893262643">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSColor" key="NSTextColor" id="1038132650">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlTextColor</string>
|
||||||
|
<reference key="NSColor" ref="369941818"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="529909268">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{34, 249}, {389, 45}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="1030502695">
|
||||||
|
<int key="NSCellFlags">67239424</int>
|
||||||
|
<int key="NSCellFlags2">272629760</int>
|
||||||
|
<string key="NSContents">See the User Defined Runtime Attributes for each view below and for the AppController to see the effect.</string>
|
||||||
|
<reference key="NSSupport" ref="28800349"/>
|
||||||
|
<reference key="NSControlView" ref="529909268"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="893262643"/>
|
||||||
|
<reference key="NSTextColor" ref="1038132650"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="1027602674">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{179, 156}, {166, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="861810273">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">This button was disabled</string>
|
||||||
|
<reference key="NSSupport" ref="28800349"/>
|
||||||
|
<reference key="NSControlView" ref="1027602674"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="893262643"/>
|
||||||
|
<reference key="NSTextColor" ref="1038132650"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="440736310">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{179, 101}, {255, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="464063783">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">This ordinarily would be first responder</string>
|
||||||
|
<reference key="NSSupport" ref="28800349"/>
|
||||||
|
<reference key="NSControlView" ref="440736310"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="893262643"/>
|
||||||
|
<reference key="NSTextColor" ref="1038132650"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="646490210">
|
||||||
|
<reference key="NSNextResponder" ref="412280178"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{179, 22}, {352, 51}}</string>
|
||||||
|
<reference key="NSSuperview" ref="412280178"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="393618729">
|
||||||
|
<int key="NSCellFlags">67239424</int>
|
||||||
|
<int key="NSCellFlags2">272629760</int>
|
||||||
|
<string type="base64-UTF8" key="NSContents">VGhpcyB3YXMgc2V0IHRvIGJlIGZpcnN0IHJlc3BvbmRlciBieSB0aGUKQXBwQ29udHJvbGxlciAtc2V0
|
||||||
|
SW5pdGlhbEZpcnN0UmVzcG9uZGVyIG1ldGhvZA</string>
|
||||||
|
<reference key="NSSupport" ref="28800349"/>
|
||||||
|
<reference key="NSControlView" ref="646490210"/>
|
||||||
|
<reference key="NSBackgroundColor" ref="893262643"/>
|
||||||
|
<reference key="NSTextColor" ref="1038132650"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
<string key="NSFrameSize">{548, 314}</string>
|
||||||
|
<reference key="NSSuperview"/>
|
||||||
|
</object>
|
||||||
|
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
|
||||||
|
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
<object class="IBObjectContainer" key="IBDocument.Objects">
|
||||||
|
<array class="NSMutableArray" key="connectionRecords">
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">delegate</string>
|
||||||
|
<reference key="source" ref="1001"/>
|
||||||
|
<reference key="destination" ref="673890665"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">10</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">theWindow</string>
|
||||||
|
<reference key="source" ref="673890665"/>
|
||||||
|
<reference key="destination" ref="917316023"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">25</int>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
<object class="IBMutableOrderedSet" key="objectRecords">
|
||||||
|
<array key="orderedObjects">
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">0</int>
|
||||||
|
<array key="object" id="0"/>
|
||||||
|
<reference key="children" ref="1000"/>
|
||||||
|
<nil key="parent"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-2</int>
|
||||||
|
<reference key="object" ref="1001"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">File's Owner</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-1</int>
|
||||||
|
<reference key="object" ref="1003"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">First Responder</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-3</int>
|
||||||
|
<reference key="object" ref="1004"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">Application</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">9</int>
|
||||||
|
<reference key="object" ref="673890665"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<string key="objectName">App Controller</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">23</int>
|
||||||
|
<reference key="object" ref="917316023"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="412280178"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">24</int>
|
||||||
|
<reference key="object" ref="412280178"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="332976459"/>
|
||||||
|
<reference ref="361072273"/>
|
||||||
|
<reference ref="920139093"/>
|
||||||
|
<reference ref="138511613"/>
|
||||||
|
<reference ref="1027602674"/>
|
||||||
|
<reference ref="440736310"/>
|
||||||
|
<reference ref="646490210"/>
|
||||||
|
<reference ref="957450672"/>
|
||||||
|
<reference ref="529909268"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="917316023"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">26</int>
|
||||||
|
<reference key="object" ref="332976459"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="941203667"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">27</int>
|
||||||
|
<reference key="object" ref="941203667"/>
|
||||||
|
<reference key="parent" ref="332976459"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">32</int>
|
||||||
|
<reference key="object" ref="920139093"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="224672534"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">33</int>
|
||||||
|
<reference key="object" ref="224672534"/>
|
||||||
|
<reference key="parent" ref="920139093"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">34</int>
|
||||||
|
<reference key="object" ref="138511613"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="515815898"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">35</int>
|
||||||
|
<reference key="object" ref="515815898"/>
|
||||||
|
<reference key="parent" ref="138511613"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">36</int>
|
||||||
|
<reference key="object" ref="361072273"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="431597734"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">37</int>
|
||||||
|
<reference key="object" ref="431597734"/>
|
||||||
|
<reference key="parent" ref="361072273"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">39</int>
|
||||||
|
<reference key="object" ref="957450672"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="536930828"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">40</int>
|
||||||
|
<reference key="object" ref="536930828"/>
|
||||||
|
<reference key="parent" ref="957450672"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">41</int>
|
||||||
|
<reference key="object" ref="1027602674"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="861810273"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">42</int>
|
||||||
|
<reference key="object" ref="861810273"/>
|
||||||
|
<reference key="parent" ref="1027602674"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">43</int>
|
||||||
|
<reference key="object" ref="440736310"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="464063783"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">44</int>
|
||||||
|
<reference key="object" ref="464063783"/>
|
||||||
|
<reference key="parent" ref="440736310"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">45</int>
|
||||||
|
<reference key="object" ref="646490210"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="393618729"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">46</int>
|
||||||
|
<reference key="object" ref="393618729"/>
|
||||||
|
<reference key="parent" ref="646490210"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">47</int>
|
||||||
|
<reference key="object" ref="529909268"/>
|
||||||
|
<array class="NSMutableArray" key="children">
|
||||||
|
<reference ref="1030502695"/>
|
||||||
|
</array>
|
||||||
|
<reference key="parent" ref="412280178"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">48</int>
|
||||||
|
<reference key="object" ref="1030502695"/>
|
||||||
|
<reference key="parent" ref="529909268"/>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
</object>
|
||||||
|
<dictionary class="NSMutableDictionary" key="flattenedProperties">
|
||||||
|
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="23.IBEditorWindowLastContentRect">{{719, 660}, {548, 314}}</string>
|
||||||
|
<string key="23.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="23.IBWindowTemplateEditedContentRect">{{719, 660}, {548, 314}}</string>
|
||||||
|
<boolean value="YES" key="23.NSWindowTemplate.visibleAtLaunch"/>
|
||||||
|
<string key="24.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSMutableDictionary" key="26.IBAttributePlaceholdersKey">
|
||||||
|
<string key="NS.key.0">IBUserDefinedRuntimeAttributesPlaceholderName</string>
|
||||||
|
<object class="IBUserDefinedRuntimeAttributesPlaceholder" key="NS.object.0">
|
||||||
|
<string key="name">IBUserDefinedRuntimeAttributesPlaceholderName</string>
|
||||||
|
<reference key="object" ref="332976459"/>
|
||||||
|
<array key="userDefinedRuntimeAttributes">
|
||||||
|
<object class="IBUserDefinedRuntimeAttribute">
|
||||||
|
<string key="typeIdentifier">com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.boolean</string>
|
||||||
|
<string key="keyPath">hidden</string>
|
||||||
|
<boolean value="NO" key="value"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBUserDefinedRuntimeAttribute">
|
||||||
|
<string key="typeIdentifier">com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.string</string>
|
||||||
|
<string key="keyPath">title</string>
|
||||||
|
<string key="value">Hello!</string>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="26.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="26.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCDAAAw3IAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="27.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="32.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="32.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCFAAAwsgAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="33.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="34.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="34.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCDAAAwtIAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="35.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSMutableDictionary" key="36.IBAttributePlaceholdersKey">
|
||||||
|
<string key="NS.key.0">IBUserDefinedRuntimeAttributesPlaceholderName</string>
|
||||||
|
<object class="IBUserDefinedRuntimeAttributesPlaceholder" key="NS.object.0">
|
||||||
|
<string key="name">IBUserDefinedRuntimeAttributesPlaceholderName</string>
|
||||||
|
<reference key="object" ref="361072273"/>
|
||||||
|
<array key="userDefinedRuntimeAttributes">
|
||||||
|
<object class="IBUserDefinedRuntimeAttribute">
|
||||||
|
<string key="typeIdentifier">com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.boolean</string>
|
||||||
|
<string key="keyPath">enabled</string>
|
||||||
|
<boolean value="NO" key="value"/>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="36.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="36.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCDAAAw0sAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="37.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="39.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="39.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDMwAAwzwAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="40.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="41.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="41.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDMQAAw0oAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="42.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="43.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="43.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDMQAAwxQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="44.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="45.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="45.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDMQAAws4AAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="46.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="47.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform" key="47.IBViewBoundsToFrameTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCCAAAw5MAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string key="48.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSMutableDictionary" key="9.IBAttributePlaceholdersKey">
|
||||||
|
<string key="NS.key.0">IBUserDefinedRuntimeAttributesPlaceholderName</string>
|
||||||
|
<object class="IBUserDefinedRuntimeAttributesPlaceholder" key="NS.object.0">
|
||||||
|
<string key="name">IBUserDefinedRuntimeAttributesPlaceholderName</string>
|
||||||
|
<reference key="object" ref="673890665"/>
|
||||||
|
<array key="userDefinedRuntimeAttributes">
|
||||||
|
<object class="IBUserDefinedRuntimeAttribute">
|
||||||
|
<string key="typeIdentifier">com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.number</string>
|
||||||
|
<string key="keyPath">initialResponder</string>
|
||||||
|
<real value="2" key="value"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBUserDefinedRuntimeAttribute">
|
||||||
|
<string key="typeIdentifier">com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.string</string>
|
||||||
|
<string key="keyPath">localized</string>
|
||||||
|
<string key="value">foo</string>
|
||||||
|
<bool key="localized">YES</bool>
|
||||||
|
</object>
|
||||||
|
<object class="IBUserDefinedRuntimeAttribute">
|
||||||
|
<string key="typeIdentifier">com.apple.InterfaceBuilder.userDefinedRuntimeAttributeType.nil</string>
|
||||||
|
<string key="keyPath">null</string>
|
||||||
|
<nil key="value"/>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="9.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
</dictionary>
|
||||||
|
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
|
||||||
|
<nil key="activeLocalization"/>
|
||||||
|
<dictionary class="NSMutableDictionary" key="localizations"/>
|
||||||
|
<nil key="sourceID"/>
|
||||||
|
<int key="maxID">48</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriber" key="IBDocument.Classes">
|
||||||
|
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">AppController</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<string key="NS.key.0">theWindow</string>
|
||||||
|
<string key="NS.object.0">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
|
<string key="NS.key.0">theWindow</string>
|
||||||
|
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||||
|
<string key="name">theWindow</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">NSObject</string>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<string key="NS.key.0">delegate</string>
|
||||||
|
<string key="NS.object.0">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
|
<string key="NS.key.0">delegate</string>
|
||||||
|
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||||
|
<string key="name">delegate</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</array>
|
||||||
|
</object>
|
||||||
|
<int key="IBDocument.localizationMode">0</int>
|
||||||
|
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
|
||||||
|
<integer value="3200" key="NS.object.0"/>
|
||||||
|
</object>
|
||||||
|
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
|
||||||
|
<nil key="IBDocument.LastKnownRelativeProjectPath"/>
|
||||||
|
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||||
|
</data>
|
||||||
|
</archive>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,103 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<!--
|
||||||
|
index-debug.html
|
||||||
|
test
|
||||||
|
|
||||||
|
Created by aparajita on March 26, 2011.
|
||||||
|
Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="Resources/icon.png" />
|
||||||
|
<link rel="apple-touch-startup-image" href="Resources/default.png" />
|
||||||
|
|
||||||
|
<title>RuntimeAttributesTest</title>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
OBJJ_MAIN_FILE = "main.j";
|
||||||
|
OBJJ_INCLUDE_PATHS = ["Frameworks/Debug", "Frameworks", "SomethingElse"];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="Frameworks/Debug/Objective-J/Objective-J.js" charset="UTF-8"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
objj_msgSend_reset();
|
||||||
|
|
||||||
|
// DEBUG OPTIONS:
|
||||||
|
|
||||||
|
// Uncomment to enable printing of backtraces on exceptions:
|
||||||
|
//objj_msgSend_decorate(objj_backtrace_decorator);
|
||||||
|
|
||||||
|
// Uncomment to supress exceptions that take place inside a message
|
||||||
|
//objj_msgSend_decorate(objj_supress_exceptions_decorator)
|
||||||
|
|
||||||
|
// Uncomment to enable runtime type checking:
|
||||||
|
//objj_msgSend_decorate(objj_typecheck_decorator);
|
||||||
|
|
||||||
|
// Uncomment (along with both above) to print backtraces on type check errors:
|
||||||
|
//objj_typecheck_prints_backtrace = true;
|
||||||
|
|
||||||
|
// Uncomment to disable the default logger (CPLogConsole if window.console exists, CPLogPopup otherwise):
|
||||||
|
//CPLogUnregister(CPLogDefault);
|
||||||
|
|
||||||
|
// Uncomment to enable a specific logger:
|
||||||
|
//CPLogRegister(CPLogConsole);
|
||||||
|
//CPLogRegister(CPLogPopup);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body{margin:0; padding:0;}
|
||||||
|
#container {position: absolute; top:50%; left:50%;}
|
||||||
|
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
|
||||||
|
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
|
||||||
|
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
#container { position: relative; top: 50%; }
|
||||||
|
#content { position: relative;}
|
||||||
|
</STYLE>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="">
|
||||||
|
<div id="cappuccino-body">
|
||||||
|
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write("<div id='container'><p id='content'>" +
|
||||||
|
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
|
||||||
|
"Loading test...</p></div>");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<div id="container">
|
||||||
|
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
|
||||||
|
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
|
||||||
|
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
|
||||||
|
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
|
||||||
|
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
|
||||||
|
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<!--
|
||||||
|
index.html
|
||||||
|
test
|
||||||
|
|
||||||
|
Created by aparajita on March 26, 2011.
|
||||||
|
Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="Resources/icon.png" />
|
||||||
|
<link rel="apple-touch-startup-image" href="Resources/default.png" />
|
||||||
|
|
||||||
|
<title>RuntimeAttributesTest</title>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
OBJJ_MAIN_FILE = "main.j";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="Frameworks/Objective-J/Objective-J.js" charset="UTF-8"></script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body{margin:0; padding:0;}
|
||||||
|
#container {position: absolute; top:50%; left:50%;}
|
||||||
|
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
|
||||||
|
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
|
||||||
|
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
#container { position: relative; top: 50%; }
|
||||||
|
#content { position: relative;}
|
||||||
|
</STYLE>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="">
|
||||||
|
<div id="cappuccino-body">
|
||||||
|
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write("<div id='container'><p id='content'>" +
|
||||||
|
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
|
||||||
|
"Loading test...</p></div>");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<div id="container">
|
||||||
|
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
|
||||||
|
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
|
||||||
|
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
|
||||||
|
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
|
||||||
|
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
|
||||||
|
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* AppController.j
|
||||||
|
* test
|
||||||
|
*
|
||||||
|
* Created by aparajita on March 26, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import <Foundation/Foundation.j>
|
||||||
|
@import <AppKit/AppKit.j>
|
||||||
|
|
||||||
|
@import "AppController.j"
|
||||||
|
|
||||||
|
|
||||||
|
function main(args, namedArgs)
|
||||||
|
{
|
||||||
|
CPApplicationMain(args, namedArgs);
|
||||||
|
}
|
||||||
@@ -0,0 +1,145 @@
|
|||||||
|
/*
|
||||||
|
* AppController.j
|
||||||
|
* performKeyEquivalentTest
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 22, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import <Foundation/CPObject.j>
|
||||||
|
@import <AppKit/CPEvent.j>
|
||||||
|
|
||||||
|
|
||||||
|
var usesNewCode = YES;
|
||||||
|
|
||||||
|
@implementation AppController : CPObject
|
||||||
|
{
|
||||||
|
CPWindow theWindow;
|
||||||
|
CPWindow theOtherWindow;
|
||||||
|
CPCheckBox useNewCode;
|
||||||
|
CPTextField textField;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||||
|
{
|
||||||
|
// This is called when the application is done loading.
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)awakeFromCib
|
||||||
|
{
|
||||||
|
// This is called when the cib is done loading.
|
||||||
|
// You can implement this method on any object instantiated from a Cib.
|
||||||
|
// It's a useful hook for setting up current UI values, and other things.
|
||||||
|
|
||||||
|
[theOtherWindow orderFront:nil];
|
||||||
|
[theWindow setInitialFirstResponder:textField];
|
||||||
|
[theWindow makeKeyAndOrderFront:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setUsesNewCode:(id)sender
|
||||||
|
{
|
||||||
|
usesNewCode = [sender state] === CPOnState;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MyTextField : CPTextField
|
||||||
|
|
||||||
|
- (void)keyDown:(CPEvent)anEvent
|
||||||
|
{
|
||||||
|
CPLog("keyDown:%s", [self description]);
|
||||||
|
|
||||||
|
if (!usesNewCode)
|
||||||
|
{
|
||||||
|
if ([anEvent _couldBeKeyEquivalent] && [self performKeyEquivalent:anEvent])
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// CPTextField uses an HTML input element to take the input so we need to
|
||||||
|
// propagate the dom event so the element is updated. This has to be done
|
||||||
|
// before interpretKeyEvents: though so individual commands have a chance
|
||||||
|
// to override this (escape to clear the text in a search field for example).
|
||||||
|
[[[self window] platformWindow] _propagateCurrentDOMEvent:YES];
|
||||||
|
|
||||||
|
[self interpretKeyEvents:[anEvent]];
|
||||||
|
|
||||||
|
[[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)performKeyEquivalent:(CPEvent)anEvent
|
||||||
|
{
|
||||||
|
CPLog("performKeyEquivalent:%s", [self description]);
|
||||||
|
|
||||||
|
return [super performKeyEquivalent:anEvent];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation CPEvent (test)
|
||||||
|
|
||||||
|
- (BOOL)_couldBeKeyEquivalent
|
||||||
|
{
|
||||||
|
if (_type !== CPKeyDown)
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
var characterCount = _characters.length;
|
||||||
|
|
||||||
|
if (!characterCount)
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
if (_modifierFlags & (CPCommandKeyMask | CPControlKeyMask))
|
||||||
|
return YES;
|
||||||
|
|
||||||
|
// Cocoa does not consider space, backspace, or escape a key equivalent
|
||||||
|
// if the first responder is a text field (presumably a subclass of NSText).
|
||||||
|
var firstResponderIsText = [[_window firstResponder] isKindOfClass:[CPTextField class]];
|
||||||
|
|
||||||
|
for (var i = 0; i < characterCount; i++)
|
||||||
|
{
|
||||||
|
if (usesNewCode)
|
||||||
|
{
|
||||||
|
var c = _characters.charAt(i);
|
||||||
|
|
||||||
|
if ((c >= CPUpArrowFunctionKey && c <= CPModeSwitchFunctionKey) ||
|
||||||
|
c === CPEnterCharacter ||
|
||||||
|
c === CPNewlineCharacter ||
|
||||||
|
c === CPCarriageReturnCharacter ||
|
||||||
|
(!firstResponderIsText &&
|
||||||
|
(c === CPSpaceFunctionKey ||
|
||||||
|
c === CPDeleteCharacter ||
|
||||||
|
c === CPBackspaceCharacter ||
|
||||||
|
c === CPEscapeFunctionKey)))
|
||||||
|
{
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch (_characters.charAt(i))
|
||||||
|
{
|
||||||
|
case CPBackspaceCharacter:
|
||||||
|
case CPDeleteCharacter:
|
||||||
|
case CPDeleteFunctionKey:
|
||||||
|
case CPTabCharacter:
|
||||||
|
case CPCarriageReturnCharacter:
|
||||||
|
case CPNewlineCharacter:
|
||||||
|
case CPSpaceFunctionKey:
|
||||||
|
case CPEscapeFunctionKey:
|
||||||
|
case CPPageUpFunctionKey:
|
||||||
|
case CPPageDownFunctionKey:
|
||||||
|
case CPLeftArrowFunctionKey:
|
||||||
|
case CPUpArrowFunctionKey:
|
||||||
|
case CPRightArrowFunctionKey:
|
||||||
|
case CPDownArrowFunctionKey:
|
||||||
|
case CPEndFunctionKey:
|
||||||
|
case CPHomeFunctionKey:
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FIXME: More cases?
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Main cib file base name</key>
|
||||||
|
<string>MainMenu.cib</string>
|
||||||
|
<key>CPBundleName</key>
|
||||||
|
<string>performKeyEquivalentTest</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
* Jakefile
|
||||||
|
* performKeyEquivalentTest
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 22, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions 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 ("performKeyEquivalentTest", function(task)
|
||||||
|
{
|
||||||
|
task.setBuildIntermediatesPath(FILE.join("Build", "performKeyEquivalentTest.build", configuration));
|
||||||
|
task.setBuildPath(FILE.join("Build", configuration));
|
||||||
|
|
||||||
|
task.setProductName("performKeyEquivalentTest");
|
||||||
|
task.setIdentifier("com.aparajita.performKeyEquivalentTest");
|
||||||
|
task.setVersion("1.0");
|
||||||
|
task.setAuthor("Victory-Heart Productions");
|
||||||
|
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||||
|
task.setSummary("performKeyEquivalentTest");
|
||||||
|
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", ["performKeyEquivalentTest"], 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", "performKeyEquivalentTest", "index.html")]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("run-release", ["release"], function()
|
||||||
|
{
|
||||||
|
OS.system(["open", FILE.join("Build", "Release", "performKeyEquivalentTest", "index.html")]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("deploy", ["release"], function()
|
||||||
|
{
|
||||||
|
FILE.mkdirs(FILE.join("Build", "Deployment", "performKeyEquivalentTest"));
|
||||||
|
OS.system(["press", "-f", FILE.join("Build", "Release", "performKeyEquivalentTest"), FILE.join("Build", "Deployment", "performKeyEquivalentTest")]);
|
||||||
|
printResults("Deployment")
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("desktop", ["release"], function()
|
||||||
|
{
|
||||||
|
FILE.mkdirs(FILE.join("Build", "Desktop", "performKeyEquivalentTest"));
|
||||||
|
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "performKeyEquivalentTest"), FILE.join("Build", "Desktop", "performKeyEquivalentTest", "performKeyEquivalentTest.app"));
|
||||||
|
printResults("Desktop")
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("run-desktop", ["desktop"], function()
|
||||||
|
{
|
||||||
|
OS.system([FILE.join("Build", "Desktop", "performKeyEquivalentTest", "performKeyEquivalentTest.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
function printResults(configuration)
|
||||||
|
{
|
||||||
|
print("----------------------------");
|
||||||
|
print(configuration+" app built at path: "+FILE.join("Build", configuration, "performKeyEquivalentTest"));
|
||||||
|
print("----------------------------");
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,862 @@
|
|||||||
|
<?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">10J869</string>
|
||||||
|
<string key="IBDocument.InterfaceBuilderVersion">804</string>
|
||||||
|
<string key="IBDocument.AppKitVersion">1038.35</string>
|
||||||
|
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="NS.object.0">804</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<integer value="371"/>
|
||||||
|
<integer value="475"/>
|
||||||
|
</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">{{100, 1000}, {480, 360}}</string>
|
||||||
|
<int key="NSWTFlags">1946157056</int>
|
||||||
|
<string key="NSWindowTitle">Text + Buttons</string>
|
||||||
|
<string key="NSWindowClass">NSWindow</string>
|
||||||
|
<nil key="NSViewClass"/>
|
||||||
|
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
<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="NSTextField" id="160623561">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{189, 290}, {96, 22}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="46991665">
|
||||||
|
<int key="NSCellFlags">-1804468671</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents"/>
|
||||||
|
<object class="NSFont" key="NSSupport" id="455972270">
|
||||||
|
<string key="NSName">LucidaGrande</string>
|
||||||
|
<double key="NSSize">13</double>
|
||||||
|
<int key="NSfFlags">1044</int>
|
||||||
|
</object>
|
||||||
|
<reference key="NSControlView" ref="160623561"/>
|
||||||
|
<bool key="NSDrawsBackground">YES</bool>
|
||||||
|
<object class="NSColor" key="NSBackgroundColor" id="465635440">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">textBackgroundColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MQA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSColor" key="NSTextColor" id="403720344">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">textColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MAA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSTextField" id="215024340">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{189, 237}, {96, 22}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="894772288">
|
||||||
|
<int key="NSCellFlags">-1804468671</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents"/>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="215024340"/>
|
||||||
|
<bool key="NSDrawsBackground">YES</bool>
|
||||||
|
<reference key="NSBackgroundColor" ref="465635440"/>
|
||||||
|
<reference key="NSTextColor" ref="403720344"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="962787846">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{187, 178}, {109, 18}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="679700256">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">0</int>
|
||||||
|
<string key="NSContents">Use new code</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="962787846"/>
|
||||||
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
|
<int key="NSButtonFlags2">2</int>
|
||||||
|
<object class="NSCustomResource" key="NSNormalImage">
|
||||||
|
<string key="NSClassName">NSImage</string>
|
||||||
|
<string key="NSResourceName">NSSwitch</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSButtonImageSource" key="NSAlternateImage">
|
||||||
|
<string key="NSImageName">NSSwitch</string>
|
||||||
|
</object>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">200</int>
|
||||||
|
<int key="NSPeriodicInterval">25</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="995743194">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{106, 99}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="599889457">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Escape</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="995743194"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="610457973">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{258, 99}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="432442054">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Backspace</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="610457973"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"></string>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="905278565">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{106, 58}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="527208717">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Space</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="905278565"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string type="base64-UTF8" key="NSKeyEquivalent">IA</string>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="106930791">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{258, 58}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="165714669">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Down arrow</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="106930791"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"></string>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="NSFrameSize">{480, 360}</string>
|
||||||
|
<reference key="NSSuperview"/>
|
||||||
|
</object>
|
||||||
|
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
|
||||||
|
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="635946545">
|
||||||
|
<string key="NSClassName">AppController</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSWindowTemplate" id="264185350">
|
||||||
|
<int key="NSWindowStyleMask">7</int>
|
||||||
|
<int key="NSWindowBacking">2</int>
|
||||||
|
<string key="NSWindowRect">{{700, 1000}, {480, 360}}</string>
|
||||||
|
<int key="NSWTFlags">1946157056</int>
|
||||||
|
<string key="NSWindowTitle">Buttons</string>
|
||||||
|
<string key="NSWindowClass">NSWindow</string>
|
||||||
|
<nil key="NSViewClass"/>
|
||||||
|
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
<object class="NSView" key="NSWindowView" id="841164116">
|
||||||
|
<reference key="NSNextResponder"/>
|
||||||
|
<int key="NSvFlags">256</int>
|
||||||
|
<object class="NSMutableArray" key="NSSubviews">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSButton" id="1039086975">
|
||||||
|
<reference key="NSNextResponder" ref="841164116"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{106, 99}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="841164116"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="536067330">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Escape</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="1039086975"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="949576017">
|
||||||
|
<reference key="NSNextResponder" ref="841164116"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{258, 99}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="841164116"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="1006898495">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Backspace</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="949576017"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"></string>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="928640245">
|
||||||
|
<reference key="NSNextResponder" ref="841164116"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{106, 58}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="841164116"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="246606737">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Space</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="928640245"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string type="base64-UTF8" key="NSKeyEquivalent">IA</string>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="37863177">
|
||||||
|
<reference key="NSNextResponder" ref="841164116"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{258, 58}, {118, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="841164116"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="160250892">
|
||||||
|
<int key="NSCellFlags">-2080244224</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Down arrow</string>
|
||||||
|
<reference key="NSSupport" ref="455972270"/>
|
||||||
|
<reference key="NSControlView" ref="37863177"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"></string>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="NSFrameSize">{480, 360}</string>
|
||||||
|
<reference key="NSSuperview"/>
|
||||||
|
</object>
|
||||||
|
<string key="NSScreenRect">{{0, 0}, {2560, 1418}}</string>
|
||||||
|
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
</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">useNewCode</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="962787846"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">465</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBActionConnection" key="connection">
|
||||||
|
<string key="label">setUsesNewCode:</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="962787846"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">466</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">theOtherWindow</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="264185350"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">492</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">textField</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="160623561"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">493</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="0">
|
||||||
|
<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="0"/>
|
||||||
|
<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="0"/>
|
||||||
|
<string key="objectName">First Responder</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-3</int>
|
||||||
|
<reference key="object" ref="1050"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<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="0"/>
|
||||||
|
</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="160623561"/>
|
||||||
|
<reference ref="215024340"/>
|
||||||
|
<reference ref="962787846"/>
|
||||||
|
<reference ref="995743194"/>
|
||||||
|
<reference ref="610457973"/>
|
||||||
|
<reference ref="905278565"/>
|
||||||
|
<reference ref="106930791"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="972006081"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">450</int>
|
||||||
|
<reference key="object" ref="635946545"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">456</int>
|
||||||
|
<reference key="object" ref="160623561"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="46991665"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">457</int>
|
||||||
|
<reference key="object" ref="46991665"/>
|
||||||
|
<reference key="parent" ref="160623561"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">460</int>
|
||||||
|
<reference key="object" ref="215024340"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="894772288"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">461</int>
|
||||||
|
<reference key="object" ref="894772288"/>
|
||||||
|
<reference key="parent" ref="215024340"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">462</int>
|
||||||
|
<reference key="object" ref="962787846"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="679700256"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">463</int>
|
||||||
|
<reference key="object" ref="679700256"/>
|
||||||
|
<reference key="parent" ref="962787846"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">467</int>
|
||||||
|
<reference key="object" ref="995743194"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="599889457"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">468</int>
|
||||||
|
<reference key="object" ref="599889457"/>
|
||||||
|
<reference key="parent" ref="995743194"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">469</int>
|
||||||
|
<reference key="object" ref="610457973"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="432442054"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">470</int>
|
||||||
|
<reference key="object" ref="432442054"/>
|
||||||
|
<reference key="parent" ref="610457973"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">471</int>
|
||||||
|
<reference key="object" ref="905278565"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="527208717"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">472</int>
|
||||||
|
<reference key="object" ref="106930791"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="165714669"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">473</int>
|
||||||
|
<reference key="object" ref="165714669"/>
|
||||||
|
<reference key="parent" ref="106930791"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">474</int>
|
||||||
|
<reference key="object" ref="527208717"/>
|
||||||
|
<reference key="parent" ref="905278565"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">475</int>
|
||||||
|
<reference key="object" ref="264185350"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="841164116"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">476</int>
|
||||||
|
<reference key="object" ref="841164116"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="37863177"/>
|
||||||
|
<reference ref="928640245"/>
|
||||||
|
<reference ref="949576017"/>
|
||||||
|
<reference ref="1039086975"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="264185350"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">477</int>
|
||||||
|
<reference key="object" ref="37863177"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="160250892"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="841164116"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">478</int>
|
||||||
|
<reference key="object" ref="928640245"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="246606737"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="841164116"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">479</int>
|
||||||
|
<reference key="object" ref="949576017"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="1006898495"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="841164116"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">480</int>
|
||||||
|
<reference key="object" ref="1039086975"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="536067330"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="841164116"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">487</int>
|
||||||
|
<reference key="object" ref="536067330"/>
|
||||||
|
<reference key="parent" ref="1039086975"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">488</int>
|
||||||
|
<reference key="object" ref="1006898495"/>
|
||||||
|
<reference key="parent" ref="949576017"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">489</int>
|
||||||
|
<reference key="object" ref="246606737"/>
|
||||||
|
<reference key="parent" ref="928640245"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">490</int>
|
||||||
|
<reference key="object" ref="160250892"/>
|
||||||
|
<reference key="parent" ref="37863177"/>
|
||||||
|
</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>-3.IBPluginDependency</string>
|
||||||
|
<string>371.IBEditorWindowLastContentRect</string>
|
||||||
|
<string>371.IBPluginDependency</string>
|
||||||
|
<string>371.IBWindowTemplateEditedContentRect</string>
|
||||||
|
<string>371.NSWindowTemplate.visibleAtLaunch</string>
|
||||||
|
<string>371.editorWindowContentRectSynchronizationRect</string>
|
||||||
|
<string>372.IBPluginDependency</string>
|
||||||
|
<string>456.CustomClassName</string>
|
||||||
|
<string>456.IBPluginDependency</string>
|
||||||
|
<string>456.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>457.IBPluginDependency</string>
|
||||||
|
<string>460.CustomClassName</string>
|
||||||
|
<string>460.IBPluginDependency</string>
|
||||||
|
<string>460.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>461.IBPluginDependency</string>
|
||||||
|
<string>462.IBPluginDependency</string>
|
||||||
|
<string>462.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>463.IBPluginDependency</string>
|
||||||
|
<string>467.IBPluginDependency</string>
|
||||||
|
<string>467.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>468.IBPluginDependency</string>
|
||||||
|
<string>469.IBPluginDependency</string>
|
||||||
|
<string>469.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>470.IBPluginDependency</string>
|
||||||
|
<string>471.IBPluginDependency</string>
|
||||||
|
<string>471.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>472.IBPluginDependency</string>
|
||||||
|
<string>472.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>473.IBPluginDependency</string>
|
||||||
|
<string>474.IBPluginDependency</string>
|
||||||
|
<string>475.IBEditorWindowLastContentRect</string>
|
||||||
|
<string>475.IBPluginDependency</string>
|
||||||
|
<string>475.IBWindowTemplateEditedContentRect</string>
|
||||||
|
<string>475.NSWindowTemplate.visibleAtLaunch</string>
|
||||||
|
<string>475.editorWindowContentRectSynchronizationRect</string>
|
||||||
|
<string>476.IBPluginDependency</string>
|
||||||
|
<string>477.IBPluginDependency</string>
|
||||||
|
<string>477.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>478.IBPluginDependency</string>
|
||||||
|
<string>478.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>479.IBPluginDependency</string>
|
||||||
|
<string>479.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>480.IBPluginDependency</string>
|
||||||
|
<string>480.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>487.IBPluginDependency</string>
|
||||||
|
<string>488.IBPluginDependency</string>
|
||||||
|
<string>489.IBPluginDependency</string>
|
||||||
|
<string>490.IBPluginDependency</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{438, 784}, {480, 360}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{438, 784}, {480, 360}}</string>
|
||||||
|
<boolean value="NO"/>
|
||||||
|
<string>{{33, 99}, {480, 360}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>MyTextField</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDQAAAw4IAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>MyTextField</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDQAAAw08AAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDPgAAwxAAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABC1AAAwvQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDgQAAwvQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABC1AAAwvQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDgQAAwvQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{940, 784}, {480, 360}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{940, 784}, {480, 360}}</string>
|
||||||
|
<boolean value="NO"/>
|
||||||
|
<string>{{33, 99}, {480, 360}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDgQAAwvQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABC1AAAwvQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDgQAAwvQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABC1AAAwvQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<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="0"/>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<nil key="activeLocalization"/>
|
||||||
|
<object class="NSMutableDictionary" key="localizations">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference key="dict.sortedKeys" ref="0"/>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<nil key="sourceID"/>
|
||||||
|
<int key="maxID">493</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>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<string key="NS.key.0">theWindow</string>
|
||||||
|
<string key="NS.object.0">NSWindow</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
|
<string key="NS.key.0">theWindow</string>
|
||||||
|
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||||
|
<string key="name">theWindow</string>
|
||||||
|
<string key="candidateClassName">NSWindow</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBProjectSource</string>
|
||||||
|
<string key="minorKey">./Classes/AppController.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">AppController</string>
|
||||||
|
<object class="NSMutableDictionary" key="actions">
|
||||||
|
<string key="NS.key.0">setUsesNewCode:</string>
|
||||||
|
<string key="NS.object.0">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||||
|
<string key="NS.key.0">setUsesNewCode:</string>
|
||||||
|
<object class="IBActionInfo" key="NS.object.0">
|
||||||
|
<string key="name">setUsesNewCode:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSArray" key="dict.sortedKeys">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>textField</string>
|
||||||
|
<string>theOtherWindow</string>
|
||||||
|
<string>useNewCode</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>id</string>
|
||||||
|
<string>NSWindow</string>
|
||||||
|
<string>id</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>textField</string>
|
||||||
|
<string>theOtherWindow</string>
|
||||||
|
<string>useNewCode</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">textField</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">theOtherWindow</string>
|
||||||
|
<string key="candidateClassName">NSWindow</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">useNewCode</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">MyTextField</string>
|
||||||
|
<string key="superclassName">NSTextField</string>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</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>
|
||||||
|
<nil key="IBDocument.LastKnownRelativeProjectPath"/>
|
||||||
|
<int key="IBDocument.defaultPropertyAccessControl">3</int>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
|
||||||
|
<string key="NS.key.0">NSSwitch</string>
|
||||||
|
<string key="NS.object.0">{15, 15}</string>
|
||||||
|
</object>
|
||||||
|
</data>
|
||||||
|
</archive>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,103 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<!--
|
||||||
|
index-debug.html
|
||||||
|
performKeyEquivalentTest
|
||||||
|
|
||||||
|
Created by aparajita on May 22, 2011.
|
||||||
|
Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="Resources/icon.png" />
|
||||||
|
<link rel="apple-touch-startup-image" href="Resources/default.png" />
|
||||||
|
|
||||||
|
<title>performKeyEquivalentTest</title>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
OBJJ_MAIN_FILE = "main.j";
|
||||||
|
OBJJ_INCLUDE_PATHS = ["Frameworks/Debug", "Frameworks", "SomethingElse"];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="Frameworks/Debug/Objective-J/Objective-J.js" charset="UTF-8"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
objj_msgSend_reset();
|
||||||
|
|
||||||
|
// DEBUG OPTIONS:
|
||||||
|
|
||||||
|
// Uncomment to enable printing of backtraces on exceptions:
|
||||||
|
//objj_msgSend_decorate(objj_backtrace_decorator);
|
||||||
|
|
||||||
|
// Uncomment to supress exceptions that take place inside a message
|
||||||
|
//objj_msgSend_decorate(objj_supress_exceptions_decorator)
|
||||||
|
|
||||||
|
// Uncomment to enable runtime type checking:
|
||||||
|
//objj_msgSend_decorate(objj_typecheck_decorator);
|
||||||
|
|
||||||
|
// Uncomment (along with both above) to print backtraces on type check errors:
|
||||||
|
//objj_typecheck_prints_backtrace = true;
|
||||||
|
|
||||||
|
// Uncomment to disable the default logger (CPLogConsole if window.console exists, CPLogPopup otherwise):
|
||||||
|
//CPLogUnregister(CPLogDefault);
|
||||||
|
|
||||||
|
// Uncomment to enable a specific logger:
|
||||||
|
//CPLogRegister(CPLogConsole);
|
||||||
|
//CPLogRegister(CPLogPopup);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body{margin:0; padding:0;}
|
||||||
|
#container {position: absolute; top:50%; left:50%;}
|
||||||
|
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
|
||||||
|
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
|
||||||
|
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
#container { position: relative; top: 50%; }
|
||||||
|
#content { position: relative;}
|
||||||
|
</STYLE>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="">
|
||||||
|
<div id="cappuccino-body">
|
||||||
|
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write("<div id='container'><p id='content'>" +
|
||||||
|
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
|
||||||
|
"Loading performKeyEquivalentTest...</p></div>");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<div id="container">
|
||||||
|
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
|
||||||
|
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
|
||||||
|
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
|
||||||
|
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
|
||||||
|
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
|
||||||
|
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<!--
|
||||||
|
index.html
|
||||||
|
performKeyEquivalentTest
|
||||||
|
|
||||||
|
Created by aparajita on May 22, 2011.
|
||||||
|
Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="Resources/icon.png" />
|
||||||
|
<link rel="apple-touch-startup-image" href="Resources/default.png" />
|
||||||
|
|
||||||
|
<title>performKeyEquivalentTest</title>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
OBJJ_MAIN_FILE = "main.j";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="Frameworks/Objective-J/Objective-J.js" charset="UTF-8"></script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body{margin:0; padding:0;}
|
||||||
|
#container {position: absolute; top:50%; left:50%;}
|
||||||
|
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
|
||||||
|
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
|
||||||
|
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
#container { position: relative; top: 50%; }
|
||||||
|
#content { position: relative;}
|
||||||
|
</STYLE>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="">
|
||||||
|
<div id="cappuccino-body">
|
||||||
|
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write("<div id='container'><p id='content'>" +
|
||||||
|
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
|
||||||
|
"Loading performKeyEquivalentTest...</p></div>");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<div id="container">
|
||||||
|
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
|
||||||
|
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
|
||||||
|
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
|
||||||
|
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
|
||||||
|
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
|
||||||
|
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* AppController.j
|
||||||
|
* performKeyEquivalentTest
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 22, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import <Foundation/Foundation.j>
|
||||||
|
@import <AppKit/AppKit.j>
|
||||||
|
|
||||||
|
@import "AppController.j"
|
||||||
|
|
||||||
|
var formatter = function(aString, aTitle, aLevel)
|
||||||
|
{
|
||||||
|
return aString;
|
||||||
|
};
|
||||||
|
|
||||||
|
function main(args, namedArgs)
|
||||||
|
{
|
||||||
|
CPLogRegister(CPLogConsole, nil, formatter);
|
||||||
|
CPApplicationMain(args, namedArgs);
|
||||||
|
}
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
/*
|
||||||
|
* AppController.j
|
||||||
|
* predicateWithFormat
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 25, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import <Foundation/CPObject.j>
|
||||||
|
|
||||||
|
var usesNewCode = NO;
|
||||||
|
|
||||||
|
@implementation AppController : CPObject
|
||||||
|
{
|
||||||
|
CPWindow theWindow;
|
||||||
|
CPPopUpButton dataMenu;
|
||||||
|
CPPopUpButton comparisonMenu;
|
||||||
|
CPPopUpButton nameMenu;
|
||||||
|
CPTextField resultsField;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)applicationDidFinishLaunching:(CPNotification)aNotification
|
||||||
|
{
|
||||||
|
useNewCode = usesNewCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)awakeFromCib
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)useNewCode
|
||||||
|
{
|
||||||
|
return usesNewCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setUseNewCode:(BOOL)flag
|
||||||
|
{
|
||||||
|
usesNewCode = flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)search:(id)sender
|
||||||
|
{
|
||||||
|
var results = @"";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var format = [CPString stringWithFormat:@"SELF %@ %%@", [comparisonMenu titleOfSelectedItem]],
|
||||||
|
predicate = [CPPredicate predicateWithFormat:format, [nameMenu titleOfSelectedItem]],
|
||||||
|
data = [[dataMenu titleOfSelectedItem]],
|
||||||
|
searchResults = [data filteredArrayUsingPredicate:predicate],
|
||||||
|
|
||||||
|
results = searchResults.join("\n");
|
||||||
|
[resultsField setTextColor:[CPColor blackColor]];
|
||||||
|
}
|
||||||
|
catch (ex)
|
||||||
|
{
|
||||||
|
results = [ex reason];
|
||||||
|
[resultsField setTextColor:[CPColor redColor]];
|
||||||
|
}
|
||||||
|
|
||||||
|
[resultsField setStringValue:@"Result: " + results];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
var CPComparisonPredicateModifier,
|
||||||
|
CPPredicateOperatorType;
|
||||||
|
|
||||||
|
@implementation CPComparisonPredicate (test)
|
||||||
|
|
||||||
|
- (BOOL)_evaluateValue:lhs rightValue:rhs
|
||||||
|
{
|
||||||
|
var leftIsNil = (lhs == nil || [lhs isEqual:[CPNull null]]),
|
||||||
|
rightIsNil = (rhs == nil || [rhs isEqual:[CPNull null]]);
|
||||||
|
|
||||||
|
if ((leftIsNil || rightIsNil) && _type != CPCustomSelectorPredicateOperatorType)
|
||||||
|
return (leftIsNil == rightIsNil &&
|
||||||
|
(_type == CPEqualToPredicateOperatorType ||
|
||||||
|
_type == CPLessThanOrEqualToPredicateOperatorType ||
|
||||||
|
_type == CPGreaterThanOrEqualToPredicateOperatorType));
|
||||||
|
|
||||||
|
var string_compare_options = 0;
|
||||||
|
|
||||||
|
// left and right should be casted first [CAST()] following 10.5 rules.
|
||||||
|
switch (_type)
|
||||||
|
{
|
||||||
|
case CPLessThanPredicateOperatorType: return ([lhs compare:rhs] == CPOrderedAscending);
|
||||||
|
case CPLessThanOrEqualToPredicateOperatorType: return ([lhs compare:rhs] != CPOrderedDescending);
|
||||||
|
case CPGreaterThanPredicateOperatorType: return ([lhs compare:rhs] == CPOrderedDescending);
|
||||||
|
case CPGreaterThanOrEqualToPredicateOperatorType: return ([lhs compare:rhs] != CPOrderedAscending);
|
||||||
|
case CPEqualToPredicateOperatorType: return [lhs isEqual:rhs];
|
||||||
|
case CPNotEqualToPredicateOperatorType: return (![lhs isEqual:rhs]);
|
||||||
|
|
||||||
|
case CPMatchesPredicateOperatorType: var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g";
|
||||||
|
if (_options & CPDiacriticInsensitivePredicateOption)
|
||||||
|
{
|
||||||
|
lhs = lhs.stripDiacritics();
|
||||||
|
rhs = rhs.stripDiacritics();
|
||||||
|
}
|
||||||
|
return (new RegExp(rhs,commut)).test(lhs);
|
||||||
|
|
||||||
|
case CPLikePredicateOperatorType: if (_options & CPDiacriticInsensitivePredicateOption)
|
||||||
|
{
|
||||||
|
lhs = lhs.stripDiacritics();
|
||||||
|
rhs = rhs.stripDiacritics();
|
||||||
|
}
|
||||||
|
var commut = (_options & CPCaseInsensitivePredicateOption) ? "gi":"g",
|
||||||
|
reg = new RegExp(rhs.escapeForRegExp(),commut);
|
||||||
|
return reg.test(lhs);
|
||||||
|
|
||||||
|
case CPBeginsWithPredicateOperatorType: var range = usesNewCode ? CPMakeRange(0, MIN([lhs length], [rhs length])) : CPMakeRange(0,[rhs length]);
|
||||||
|
if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch;
|
||||||
|
if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch;
|
||||||
|
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
|
||||||
|
|
||||||
|
case CPEndsWithPredicateOperatorType: var range = usesNewCode ? CPMakeRange(MAX([lhs length] - [rhs length], 0), MIN([lhs length], [rhs length])) : CPMakeRange([lhs length] - [rhs length],[rhs length]);
|
||||||
|
if (_options & CPCaseInsensitivePredicateOption) string_compare_options |= CPCaseInsensitiveSearch;
|
||||||
|
if (_options & CPDiacriticInsensitivePredicateOption) string_compare_options |= CPDiacriticInsensitiveSearch;
|
||||||
|
return ([lhs compare:rhs options:string_compare_options range:range] == CPOrderedSame);
|
||||||
|
|
||||||
|
case CPCustomSelectorPredicateOperatorType: return [lhs performSelector:_customSelector withObject:rhs];
|
||||||
|
|
||||||
|
case CPInPredicateOperatorType: var a = lhs; // swap
|
||||||
|
lhs = rhs;
|
||||||
|
rhs = a;
|
||||||
|
case CPContainsPredicateOperatorType: if (![lhs isKindOfClass:[CPString class]])
|
||||||
|
{
|
||||||
|
if (![lhs respondsToSelector: @selector(objectEnumerator)])
|
||||||
|
[CPException raise:CPInvalidArgumentException reason:@"The left/right hand side for a CONTAINS/IN operator must be a collection or a string"];
|
||||||
|
|
||||||
|
return [lhs containsObject:rhs];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_options & CPCaseInsensitivePredicateOption)
|
||||||
|
string_compare_options |= CPCaseInsensitiveSearch;
|
||||||
|
if (_options & CPDiacriticInsensitivePredicateOption)
|
||||||
|
string_compare_options |= CPDiacriticInsensitiveSearch;
|
||||||
|
|
||||||
|
return ([lhs rangeOfString:rhs options:string_compare_options].location != CPNotFound);
|
||||||
|
|
||||||
|
case CPBetweenPredicateOperatorType: if ([rhs count] < 2)
|
||||||
|
[CPException raise:CPInvalidArgumentException reason:@"The right hand side for a BETWEEN operator must contain 2 objects"];
|
||||||
|
|
||||||
|
return ([lhs compare:rhs[0]] == CPOrderedDescending && [lhs compare:rhs[1]] == CPOrderedAscending);
|
||||||
|
|
||||||
|
default: return NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Main cib file base name</key>
|
||||||
|
<string>MainMenu.cib</string>
|
||||||
|
<key>CPBundleName</key>
|
||||||
|
<string>test</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
/*
|
||||||
|
* Jakefile
|
||||||
|
* test
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 25, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions 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 ("test", function(task)
|
||||||
|
{
|
||||||
|
task.setBuildIntermediatesPath(FILE.join("Build", "test.build", configuration));
|
||||||
|
task.setBuildPath(FILE.join("Build", configuration));
|
||||||
|
|
||||||
|
task.setProductName("test");
|
||||||
|
task.setIdentifier("com.aparajita.test");
|
||||||
|
task.setVersion("1.0");
|
||||||
|
task.setAuthor("Victory-Heart Productions");
|
||||||
|
task.setEmail("feedback @nospam@ yourcompany.com");
|
||||||
|
task.setSummary("test");
|
||||||
|
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", ["test"], 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", "test", "index.html")]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("run-release", ["release"], function()
|
||||||
|
{
|
||||||
|
OS.system(["open", FILE.join("Build", "Release", "test", "index.html")]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("deploy", ["release"], function()
|
||||||
|
{
|
||||||
|
FILE.mkdirs(FILE.join("Build", "Deployment", "test"));
|
||||||
|
OS.system(["press", "-f", FILE.join("Build", "Release", "test"), FILE.join("Build", "Deployment", "test")]);
|
||||||
|
printResults("Deployment")
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("desktop", ["release"], function()
|
||||||
|
{
|
||||||
|
FILE.mkdirs(FILE.join("Build", "Desktop", "test"));
|
||||||
|
require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "test"), FILE.join("Build", "Desktop", "test", "test.app"));
|
||||||
|
printResults("Desktop")
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("run-desktop", ["desktop"], function()
|
||||||
|
{
|
||||||
|
OS.system([FILE.join("Build", "Desktop", "test", "test.app", "Contents", "MacOS", "NativeHost"), "-i"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
function printResults(configuration)
|
||||||
|
{
|
||||||
|
print("----------------------------");
|
||||||
|
print(configuration+" app built at path: "+FILE.join("Build", configuration, "test"));
|
||||||
|
print("----------------------------");
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,927 @@
|
|||||||
|
<?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">10J869</string>
|
||||||
|
<string key="IBDocument.InterfaceBuilderVersion">804</string>
|
||||||
|
<string key="IBDocument.AppKitVersion">1038.35</string>
|
||||||
|
<string key="IBDocument.HIToolboxVersion">461.00</string>
|
||||||
|
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
|
||||||
|
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string key="NS.object.0">804</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<integer value="372"/>
|
||||||
|
</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, 571}, {571, 179}}</string>
|
||||||
|
<int key="NSWTFlags">1946157056</int>
|
||||||
|
<string key="NSWindowTitle">Window</string>
|
||||||
|
<string key="NSWindowClass">NSWindow</string>
|
||||||
|
<nil key="NSViewClass"/>
|
||||||
|
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
<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="NSTextField" id="306506021">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{38, 34}, {321, 17}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSTextFieldCell" key="NSCell" id="786364694">
|
||||||
|
<int key="NSCellFlags">68288064</int>
|
||||||
|
<int key="NSCellFlags2">272630784</int>
|
||||||
|
<string key="NSContents">Result:</string>
|
||||||
|
<object class="NSFont" key="NSSupport" id="180276567">
|
||||||
|
<string key="NSName">LucidaGrande</string>
|
||||||
|
<double key="NSSize">13</double>
|
||||||
|
<int key="NSfFlags">1044</int>
|
||||||
|
</object>
|
||||||
|
<reference key="NSControlView" ref="306506021"/>
|
||||||
|
<object class="NSColor" key="NSBackgroundColor">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSColor" key="NSTextColor">
|
||||||
|
<int key="NSColorSpace">6</int>
|
||||||
|
<string key="NSCatalogName">System</string>
|
||||||
|
<string key="NSColorName">controlTextColor</string>
|
||||||
|
<object class="NSColor" key="NSColor">
|
||||||
|
<int key="NSColorSpace">3</int>
|
||||||
|
<bytes key="NSWhite">MAA</bytes>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSPopUpButton" id="831737273">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{302, 127}, {100, 26}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSPopUpButtonCell" key="NSCell" id="502372116">
|
||||||
|
<int key="NSCellFlags">-2076049856</int>
|
||||||
|
<int key="NSCellFlags2">2048</int>
|
||||||
|
<reference key="NSSupport" ref="180276567"/>
|
||||||
|
<reference key="NSControlView" ref="831737273"/>
|
||||||
|
<int key="NSButtonFlags">109199615</int>
|
||||||
|
<int key="NSButtonFlags2">129</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
<object class="NSMenuItem" key="NSMenuItem" id="396781444">
|
||||||
|
<reference key="NSMenu" ref="438705379"/>
|
||||||
|
<string key="NSTitle">To</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<int key="NSState">1</int>
|
||||||
|
<object class="NSCustomResource" key="NSOnImage" id="102193233">
|
||||||
|
<string key="NSClassName">NSImage</string>
|
||||||
|
<string key="NSResourceName">NSMenuCheckmark</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomResource" key="NSMixedImage" id="364966873">
|
||||||
|
<string key="NSClassName">NSImage</string>
|
||||||
|
<string key="NSResourceName">NSMenuMixedState</string>
|
||||||
|
</object>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="502372116"/>
|
||||||
|
</object>
|
||||||
|
<bool key="NSMenuItemRespectAlignment">YES</bool>
|
||||||
|
<object class="NSMenu" key="NSMenu" id="438705379">
|
||||||
|
<string key="NSTitle">OtherViews</string>
|
||||||
|
<object class="NSMutableArray" key="NSMenuItems">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="396781444"/>
|
||||||
|
<object class="NSMenuItem" id="435766921">
|
||||||
|
<reference key="NSMenu" ref="438705379"/>
|
||||||
|
<string key="NSTitle">om</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="502372116"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSMenuItem" id="422515943">
|
||||||
|
<reference key="NSMenu" ref="438705379"/>
|
||||||
|
<string key="NSTitle">Tomb</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="502372116"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSMenuItem" id="1055002259">
|
||||||
|
<reference key="NSMenu" ref="438705379"/>
|
||||||
|
<string key="NSTitle">boy</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="502372116"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<reference key="NSMenuFont" ref="180276567"/>
|
||||||
|
</object>
|
||||||
|
<int key="NSPreferredEdge">1</int>
|
||||||
|
<bool key="NSUsesItemFromMenu">YES</bool>
|
||||||
|
<bool key="NSAltersState">YES</bool>
|
||||||
|
<int key="NSArrowPosition">2</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSPopUpButton" id="226492283">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{153, 127}, {129, 26}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSPopUpButtonCell" key="NSCell" id="485690623">
|
||||||
|
<int key="NSCellFlags">-2076049856</int>
|
||||||
|
<int key="NSCellFlags2">2048</int>
|
||||||
|
<reference key="NSSupport" ref="180276567"/>
|
||||||
|
<reference key="NSControlView" ref="226492283"/>
|
||||||
|
<int key="NSButtonFlags">109199615</int>
|
||||||
|
<int key="NSButtonFlags2">129</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
<object class="NSMenuItem" key="NSMenuItem" id="241755795">
|
||||||
|
<reference key="NSMenu" ref="671309887"/>
|
||||||
|
<string key="NSTitle">beginsWith</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<int key="NSState">1</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="485690623"/>
|
||||||
|
</object>
|
||||||
|
<bool key="NSMenuItemRespectAlignment">YES</bool>
|
||||||
|
<object class="NSMenu" key="NSMenu" id="671309887">
|
||||||
|
<string key="NSTitle">OtherViews</string>
|
||||||
|
<object class="NSMutableArray" key="NSMenuItems">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="241755795"/>
|
||||||
|
<object class="NSMenuItem" id="573953194">
|
||||||
|
<reference key="NSMenu" ref="671309887"/>
|
||||||
|
<string key="NSTitle">endsWith</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="485690623"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<reference key="NSMenuFont" ref="180276567"/>
|
||||||
|
</object>
|
||||||
|
<int key="NSPreferredEdge">1</int>
|
||||||
|
<bool key="NSUsesItemFromMenu">YES</bool>
|
||||||
|
<bool key="NSAltersState">YES</bool>
|
||||||
|
<int key="NSArrowPosition">2</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="986079495">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{424, 128}, {77, 25}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="820767418">
|
||||||
|
<int key="NSCellFlags">67239424</int>
|
||||||
|
<int key="NSCellFlags2">134217728</int>
|
||||||
|
<string key="NSContents">Search</string>
|
||||||
|
<reference key="NSSupport" ref="180276567"/>
|
||||||
|
<reference key="NSControlView" ref="986079495"/>
|
||||||
|
<int key="NSButtonFlags">-2038152961</int>
|
||||||
|
<int key="NSButtonFlags2">163</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSPopUpButton" id="148001902">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{32, 127}, {100, 26}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSPopUpButtonCell" key="NSCell" id="884253365">
|
||||||
|
<int key="NSCellFlags">-2076049856</int>
|
||||||
|
<int key="NSCellFlags2">2048</int>
|
||||||
|
<reference key="NSSupport" ref="180276567"/>
|
||||||
|
<reference key="NSControlView" ref="148001902"/>
|
||||||
|
<int key="NSButtonFlags">109199615</int>
|
||||||
|
<int key="NSButtonFlags2">129</int>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">400</int>
|
||||||
|
<int key="NSPeriodicInterval">75</int>
|
||||||
|
<object class="NSMenuItem" key="NSMenuItem" id="17817692">
|
||||||
|
<reference key="NSMenu" ref="15076045"/>
|
||||||
|
<string key="NSTitle">To</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<int key="NSState">1</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="884253365"/>
|
||||||
|
</object>
|
||||||
|
<bool key="NSMenuItemRespectAlignment">YES</bool>
|
||||||
|
<object class="NSMenu" key="NSMenu" id="15076045">
|
||||||
|
<string key="NSTitle">OtherViews</string>
|
||||||
|
<object class="NSMutableArray" key="NSMenuItems">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="17817692"/>
|
||||||
|
<object class="NSMenuItem" id="232326310">
|
||||||
|
<reference key="NSMenu" ref="15076045"/>
|
||||||
|
<string key="NSTitle">Tom</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="884253365"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSMenuItem" id="874646600">
|
||||||
|
<reference key="NSMenu" ref="15076045"/>
|
||||||
|
<string key="NSTitle">Tomb</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="884253365"/>
|
||||||
|
</object>
|
||||||
|
<object class="NSMenuItem" id="358035610">
|
||||||
|
<reference key="NSMenu" ref="15076045"/>
|
||||||
|
<string key="NSTitle">Tomboy</string>
|
||||||
|
<string key="NSKeyEquiv"/>
|
||||||
|
<int key="NSKeyEquivModMask">1048576</int>
|
||||||
|
<int key="NSMnemonicLoc">2147483647</int>
|
||||||
|
<reference key="NSOnImage" ref="102193233"/>
|
||||||
|
<reference key="NSMixedImage" ref="364966873"/>
|
||||||
|
<string key="NSAction">_popUpItemAction:</string>
|
||||||
|
<reference key="NSTarget" ref="884253365"/>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<reference key="NSMenuFont" ref="180276567"/>
|
||||||
|
</object>
|
||||||
|
<int key="NSPreferredEdge">1</int>
|
||||||
|
<bool key="NSUsesItemFromMenu">YES</bool>
|
||||||
|
<bool key="NSAltersState">YES</bool>
|
||||||
|
<int key="NSArrowPosition">2</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSButton" id="979095863">
|
||||||
|
<reference key="NSNextResponder" ref="439893737"/>
|
||||||
|
<int key="NSvFlags">268</int>
|
||||||
|
<string key="NSFrame">{{39, 87}, {109, 18}}</string>
|
||||||
|
<reference key="NSSuperview" ref="439893737"/>
|
||||||
|
<bool key="NSEnabled">YES</bool>
|
||||||
|
<object class="NSButtonCell" key="NSCell" id="847409339">
|
||||||
|
<int key="NSCellFlags">67239424</int>
|
||||||
|
<int key="NSCellFlags2">0</int>
|
||||||
|
<string key="NSContents">Use new code</string>
|
||||||
|
<reference key="NSSupport" ref="180276567"/>
|
||||||
|
<reference key="NSControlView" ref="979095863"/>
|
||||||
|
<int key="NSButtonFlags">1211912703</int>
|
||||||
|
<int key="NSButtonFlags2">2</int>
|
||||||
|
<object class="NSCustomResource" key="NSNormalImage">
|
||||||
|
<string key="NSClassName">NSImage</string>
|
||||||
|
<string key="NSResourceName">NSSwitch</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSButtonImageSource" key="NSAlternateImage">
|
||||||
|
<string key="NSImageName">NSSwitch</string>
|
||||||
|
</object>
|
||||||
|
<string key="NSAlternateContents"/>
|
||||||
|
<string key="NSKeyEquivalent"/>
|
||||||
|
<int key="NSPeriodicDelay">200</int>
|
||||||
|
<int key="NSPeriodicInterval">25</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<string key="NSFrameSize">{571, 179}</string>
|
||||||
|
<reference key="NSSuperview"/>
|
||||||
|
</object>
|
||||||
|
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
|
||||||
|
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSCustomObject" id="635946545">
|
||||||
|
<string key="NSClassName">AppController</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSObjectController" id="680044224">
|
||||||
|
<object class="NSMutableArray" key="NSDeclaredKeys">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>useNewCode</string>
|
||||||
|
</object>
|
||||||
|
<bool key="NSEditable">YES</bool>
|
||||||
|
<object class="_NSManagedProxy" key="_NSManagedProxy"/>
|
||||||
|
</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">resultsField</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="306506021"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">474</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">nameMenu</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="831737273"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">475</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBActionConnection" key="connection">
|
||||||
|
<string key="label">search:</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="986079495"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">476</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">477</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">comparisonMenu</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="226492283"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">484</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">dataMenu</string>
|
||||||
|
<reference key="source" ref="635946545"/>
|
||||||
|
<reference key="destination" ref="148001902"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">498</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBOutletConnection" key="connection">
|
||||||
|
<string key="label">content</string>
|
||||||
|
<reference key="source" ref="680044224"/>
|
||||||
|
<reference key="destination" ref="635946545"/>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">503</int>
|
||||||
|
</object>
|
||||||
|
<object class="IBConnectionRecord">
|
||||||
|
<object class="IBBindingConnection" key="connection">
|
||||||
|
<string key="label">value: selection.useNewCode</string>
|
||||||
|
<reference key="source" ref="979095863"/>
|
||||||
|
<reference key="destination" ref="680044224"/>
|
||||||
|
<object class="NSNibBindingConnector" key="connector">
|
||||||
|
<reference key="NSSource" ref="979095863"/>
|
||||||
|
<reference key="NSDestination" ref="680044224"/>
|
||||||
|
<string key="NSLabel">value: selection.useNewCode</string>
|
||||||
|
<string key="NSBinding">value</string>
|
||||||
|
<string key="NSKeyPath">selection.useNewCode</string>
|
||||||
|
<int key="NSNibBindingConnectorVersion">2</int>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<int key="connectionID">505</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="0">
|
||||||
|
<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="0"/>
|
||||||
|
<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="0"/>
|
||||||
|
<string key="objectName">First Responder</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">-3</int>
|
||||||
|
<reference key="object" ref="1050"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
<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="0"/>
|
||||||
|
</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="986079495"/>
|
||||||
|
<reference ref="226492283"/>
|
||||||
|
<reference ref="831737273"/>
|
||||||
|
<reference ref="148001902"/>
|
||||||
|
<reference ref="979095863"/>
|
||||||
|
<reference ref="306506021"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="972006081"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">450</int>
|
||||||
|
<reference key="object" ref="635946545"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">464</int>
|
||||||
|
<reference key="object" ref="831737273"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="502372116"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">465</int>
|
||||||
|
<reference key="object" ref="502372116"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="438705379"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="831737273"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">466</int>
|
||||||
|
<reference key="object" ref="438705379"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="396781444"/>
|
||||||
|
<reference ref="435766921"/>
|
||||||
|
<reference ref="422515943"/>
|
||||||
|
<reference ref="1055002259"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="502372116"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">467</int>
|
||||||
|
<reference key="object" ref="396781444"/>
|
||||||
|
<reference key="parent" ref="438705379"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">468</int>
|
||||||
|
<reference key="object" ref="435766921"/>
|
||||||
|
<reference key="parent" ref="438705379"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">469</int>
|
||||||
|
<reference key="object" ref="422515943"/>
|
||||||
|
<reference key="parent" ref="438705379"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">470</int>
|
||||||
|
<reference key="object" ref="986079495"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="820767418"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">471</int>
|
||||||
|
<reference key="object" ref="820767418"/>
|
||||||
|
<reference key="parent" ref="986079495"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">472</int>
|
||||||
|
<reference key="object" ref="306506021"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="786364694"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">473</int>
|
||||||
|
<reference key="object" ref="786364694"/>
|
||||||
|
<reference key="parent" ref="306506021"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">478</int>
|
||||||
|
<reference key="object" ref="226492283"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="485690623"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">479</int>
|
||||||
|
<reference key="object" ref="485690623"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="671309887"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="226492283"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">480</int>
|
||||||
|
<reference key="object" ref="671309887"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="573953194"/>
|
||||||
|
<reference ref="241755795"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="485690623"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">482</int>
|
||||||
|
<reference key="object" ref="573953194"/>
|
||||||
|
<reference key="parent" ref="671309887"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">483</int>
|
||||||
|
<reference key="object" ref="241755795"/>
|
||||||
|
<reference key="parent" ref="671309887"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">485</int>
|
||||||
|
<reference key="object" ref="1055002259"/>
|
||||||
|
<reference key="parent" ref="438705379"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">491</int>
|
||||||
|
<reference key="object" ref="148001902"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="884253365"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">492</int>
|
||||||
|
<reference key="object" ref="884253365"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="15076045"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="148001902"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">493</int>
|
||||||
|
<reference key="object" ref="15076045"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="358035610"/>
|
||||||
|
<reference ref="874646600"/>
|
||||||
|
<reference ref="232326310"/>
|
||||||
|
<reference ref="17817692"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="884253365"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">494</int>
|
||||||
|
<reference key="object" ref="358035610"/>
|
||||||
|
<reference key="parent" ref="15076045"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">495</int>
|
||||||
|
<reference key="object" ref="874646600"/>
|
||||||
|
<reference key="parent" ref="15076045"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">496</int>
|
||||||
|
<reference key="object" ref="232326310"/>
|
||||||
|
<reference key="parent" ref="15076045"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">497</int>
|
||||||
|
<reference key="object" ref="17817692"/>
|
||||||
|
<reference key="parent" ref="15076045"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">499</int>
|
||||||
|
<reference key="object" ref="979095863"/>
|
||||||
|
<object class="NSMutableArray" key="children">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference ref="847409339"/>
|
||||||
|
</object>
|
||||||
|
<reference key="parent" ref="439893737"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">500</int>
|
||||||
|
<reference key="object" ref="847409339"/>
|
||||||
|
<reference key="parent" ref="979095863"/>
|
||||||
|
</object>
|
||||||
|
<object class="IBObjectRecord">
|
||||||
|
<int key="objectID">502</int>
|
||||||
|
<reference key="object" ref="680044224"/>
|
||||||
|
<reference key="parent" ref="0"/>
|
||||||
|
</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>-3.IBPluginDependency</string>
|
||||||
|
<string>371.IBEditorWindowLastContentRect</string>
|
||||||
|
<string>371.IBPluginDependency</string>
|
||||||
|
<string>371.IBWindowTemplateEditedContentRect</string>
|
||||||
|
<string>371.NSWindowTemplate.visibleAtLaunch</string>
|
||||||
|
<string>371.editorWindowContentRectSynchronizationRect</string>
|
||||||
|
<string>372.IBPluginDependency</string>
|
||||||
|
<string>464.IBPluginDependency</string>
|
||||||
|
<string>464.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>465.IBPluginDependency</string>
|
||||||
|
<string>466.IBEditorWindowLastContentRect</string>
|
||||||
|
<string>466.IBPluginDependency</string>
|
||||||
|
<string>467.IBPluginDependency</string>
|
||||||
|
<string>468.IBPluginDependency</string>
|
||||||
|
<string>469.IBPluginDependency</string>
|
||||||
|
<string>470.IBPluginDependency</string>
|
||||||
|
<string>471.IBPluginDependency</string>
|
||||||
|
<string>472.IBPluginDependency</string>
|
||||||
|
<string>472.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>473.IBPluginDependency</string>
|
||||||
|
<string>478.IBPluginDependency</string>
|
||||||
|
<string>478.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>479.IBPluginDependency</string>
|
||||||
|
<string>480.IBEditorWindowLastContentRect</string>
|
||||||
|
<string>480.IBPluginDependency</string>
|
||||||
|
<string>482.IBPluginDependency</string>
|
||||||
|
<string>483.IBPluginDependency</string>
|
||||||
|
<string>485.IBPluginDependency</string>
|
||||||
|
<string>491.IBPluginDependency</string>
|
||||||
|
<string>491.IBViewBoundsToFrameTransform</string>
|
||||||
|
<string>492.IBPluginDependency</string>
|
||||||
|
<string>493.IBEditorWindowLastContentRect</string>
|
||||||
|
<string>493.IBPluginDependency</string>
|
||||||
|
<string>494.IBPluginDependency</string>
|
||||||
|
<string>495.IBPluginDependency</string>
|
||||||
|
<string>496.IBPluginDependency</string>
|
||||||
|
<string>497.IBPluginDependency</string>
|
||||||
|
<string>499.IBPluginDependency</string>
|
||||||
|
<string>500.IBPluginDependency</string>
|
||||||
|
<string>502.IBPluginDependency</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{441, 973}, {571, 179}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{441, 973}, {571, 179}}</string>
|
||||||
|
<integer value="1"/>
|
||||||
|
<string>{{33, 99}, {480, 360}}</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDlwAAwzQAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{732, 1043}, {122, 83}}</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 class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCAAAAwiwAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<object class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABDAgAAwzIAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{560, 1083}, {142, 43}}</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 class="NSAffineTransform">
|
||||||
|
<bytes key="NSTransformStruct">P4AAAL+AAABCLAAAwzEAAA</bytes>
|
||||||
|
</object>
|
||||||
|
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
|
||||||
|
<string>{{462, 1043}, {122, 83}}</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="0"/>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<nil key="activeLocalization"/>
|
||||||
|
<object class="NSMutableDictionary" key="localizations">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<reference key="dict.sortedKeys" ref="0"/>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<nil key="sourceID"/>
|
||||||
|
<int key="maxID">505</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>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<string key="NS.key.0">theWindow</string>
|
||||||
|
<string key="NS.object.0">NSWindow</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
|
||||||
|
<string key="NS.key.0">theWindow</string>
|
||||||
|
<object class="IBToOneOutletInfo" key="NS.object.0">
|
||||||
|
<string key="name">theWindow</string>
|
||||||
|
<string key="candidateClassName">NSWindow</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBProjectSource</string>
|
||||||
|
<string key="minorKey">./Classes/AppController.h</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBPartialClassDescription">
|
||||||
|
<string key="className">AppController</string>
|
||||||
|
<string key="superclassName">NSObject</string>
|
||||||
|
<object class="NSMutableDictionary" key="actions">
|
||||||
|
<string key="NS.key.0">search:</string>
|
||||||
|
<string key="NS.object.0">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="actionInfosByName">
|
||||||
|
<string key="NS.key.0">search:</string>
|
||||||
|
<object class="IBActionInfo" key="NS.object.0">
|
||||||
|
<string key="name">search:</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableDictionary" key="outlets">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="NSArray" key="dict.sortedKeys">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>comparisonMenu</string>
|
||||||
|
<string>dataMenu</string>
|
||||||
|
<string>nameMenu</string>
|
||||||
|
<string>resultsField</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</string>
|
||||||
|
<string>id</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>comparisonMenu</string>
|
||||||
|
<string>dataMenu</string>
|
||||||
|
<string>nameMenu</string>
|
||||||
|
<string>resultsField</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">comparisonMenu</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">dataMenu</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">nameMenu</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
<object class="IBToOneOutletInfo">
|
||||||
|
<string key="name">resultsField</string>
|
||||||
|
<string key="candidateClassName">id</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
<object class="IBClassDescriptionSource" key="sourceIdentifier">
|
||||||
|
<string key="majorKey">IBUserSource</string>
|
||||||
|
<string key="minorKey"/>
|
||||||
|
</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>
|
||||||
|
<nil key="IBDocument.LastKnownRelativeProjectPath"/>
|
||||||
|
<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>NSMenuCheckmark</string>
|
||||||
|
<string>NSMenuMixedState</string>
|
||||||
|
<string>NSSwitch</string>
|
||||||
|
</object>
|
||||||
|
<object class="NSMutableArray" key="dict.values">
|
||||||
|
<bool key="EncodedWithXMLCoder">YES</bool>
|
||||||
|
<string>{9, 8}</string>
|
||||||
|
<string>{7, 2}</string>
|
||||||
|
<string>{15, 15}</string>
|
||||||
|
</object>
|
||||||
|
</object>
|
||||||
|
</data>
|
||||||
|
</archive>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
@@ -0,0 +1,103 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<!--
|
||||||
|
index-debug.html
|
||||||
|
test
|
||||||
|
|
||||||
|
Created by aparajita on May 25, 2011.
|
||||||
|
Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="Resources/icon.png" />
|
||||||
|
<link rel="apple-touch-startup-image" href="Resources/default.png" />
|
||||||
|
|
||||||
|
<title>test</title>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
OBJJ_MAIN_FILE = "main.j";
|
||||||
|
OBJJ_INCLUDE_PATHS = ["Frameworks/Debug", "Frameworks", "SomethingElse"];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="Frameworks/Debug/Objective-J/Objective-J.js" charset="UTF-8"></script>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
objj_msgSend_reset();
|
||||||
|
|
||||||
|
// DEBUG OPTIONS:
|
||||||
|
|
||||||
|
// Uncomment to enable printing of backtraces on exceptions:
|
||||||
|
//objj_msgSend_decorate(objj_backtrace_decorator);
|
||||||
|
|
||||||
|
// Uncomment to supress exceptions that take place inside a message
|
||||||
|
//objj_msgSend_decorate(objj_supress_exceptions_decorator)
|
||||||
|
|
||||||
|
// Uncomment to enable runtime type checking:
|
||||||
|
//objj_msgSend_decorate(objj_typecheck_decorator);
|
||||||
|
|
||||||
|
// Uncomment (along with both above) to print backtraces on type check errors:
|
||||||
|
//objj_typecheck_prints_backtrace = true;
|
||||||
|
|
||||||
|
// Uncomment to disable the default logger (CPLogConsole if window.console exists, CPLogPopup otherwise):
|
||||||
|
//CPLogUnregister(CPLogDefault);
|
||||||
|
|
||||||
|
// Uncomment to enable a specific logger:
|
||||||
|
//CPLogRegister(CPLogConsole);
|
||||||
|
//CPLogRegister(CPLogPopup);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body{margin:0; padding:0;}
|
||||||
|
#container {position: absolute; top:50%; left:50%;}
|
||||||
|
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
|
||||||
|
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
|
||||||
|
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
#container { position: relative; top: 50%; }
|
||||||
|
#content { position: relative;}
|
||||||
|
</STYLE>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="">
|
||||||
|
<div id="cappuccino-body">
|
||||||
|
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write("<div id='container'><p id='content'>" +
|
||||||
|
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
|
||||||
|
"Loading test...</p></div>");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<div id="container">
|
||||||
|
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
|
||||||
|
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
|
||||||
|
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
|
||||||
|
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
|
||||||
|
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
|
||||||
|
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<!DOCTYPE html
|
||||||
|
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<!--
|
||||||
|
index.html
|
||||||
|
test
|
||||||
|
|
||||||
|
Created by aparajita on May 25, 2011.
|
||||||
|
Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
-->
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|
||||||
|
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
|
||||||
|
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
|
||||||
|
|
||||||
|
<link rel="apple-touch-icon" href="Resources/icon.png" />
|
||||||
|
<link rel="apple-touch-startup-image" href="Resources/default.png" />
|
||||||
|
|
||||||
|
<title>test</title>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
OBJJ_MAIN_FILE = "main.j";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script type="text/javascript" src="Frameworks/Objective-J/Objective-J.js" charset="UTF-8"></script>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body{margin:0; padding:0;}
|
||||||
|
#container {position: absolute; top:50%; left:50%;}
|
||||||
|
#content {width:800px; text-align:center; margin-left: -400px; height:50px; margin-top:-25px; line-height: 50px;}
|
||||||
|
#content {font-family: "Helvetica", "Arial", sans-serif; font-size: 18px; color: black; text-shadow: 0px 1px 0px white; }
|
||||||
|
#loadgraphic {margin-right: 0.2em; margin-bottom:-2px;}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<STYLE type="text/css">
|
||||||
|
#container { position: relative; top: 50%; }
|
||||||
|
#content { position: relative;}
|
||||||
|
</STYLE>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="">
|
||||||
|
<div id="cappuccino-body">
|
||||||
|
<div id="loadingcontainer" style="background-color: #eeeeee; overflow:hidden; width:100%; height:100%; position: absolute; top: 0; left: 0;">
|
||||||
|
<script type="text/javascript">
|
||||||
|
document.write("<div id='container'><p id='content'>" +
|
||||||
|
"<img id='loadgraphic' width='16' height='16' src='Resources/spinner.gif' /> " +
|
||||||
|
"Loading test...</p></div>");
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<noscript>
|
||||||
|
<div id="container">
|
||||||
|
<div style="width: 440px; padding: 10px 25px 20px 25px; font-family: sans-serif; background-color: #ffffff; position: relative; left: -245px; top: -120px; text-align: center; -moz-border-radius: 20px; -webkit-border-radius: 20px; color: #555555">
|
||||||
|
<p style="line-height: 1.4em;">JavaScript is required for this site to work correctly but is either disabled or not supported by your browser.</p>
|
||||||
|
<p style="font-size:120%; padding:10px;"><a href="http://cappuccino.org/noscript">Show me how to enable JavaScript</a></p>
|
||||||
|
<p style="font-size:80%;">You may want to upgrade to a newer browser while you're at it:</p>
|
||||||
|
<ul style="margin:0;padding:0; text-align: center; font-size:80%;" >
|
||||||
|
<li style="display: inline;"><a href="http://www.apple.com/safari/download/">Safari</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.mozilla.com/en-US/firefox/">Firefox</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.google.com/chrome/">Chrome</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.opera.com/download/">Opera</a></li>
|
||||||
|
<li style="display: inline;"><a href="http://www.microsoft.com/windows/downloads/ie/getitnow.mspx">Internet Explorer</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</noscript>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* AppController.j
|
||||||
|
* test
|
||||||
|
*
|
||||||
|
* Created by aparajita on May 25, 2011.
|
||||||
|
* Copyright 2011, Victory-Heart Productions All rights reserved.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@import <Foundation/Foundation.j>
|
||||||
|
@import <AppKit/AppKit.j>
|
||||||
|
|
||||||
|
@import "AppController.j"
|
||||||
|
|
||||||
|
|
||||||
|
function main(args, namedArgs)
|
||||||
|
{
|
||||||
|
CPApplicationMain(args, namedArgs);
|
||||||
|
}
|
||||||
@@ -1280,7 +1280,7 @@ MAN_LINKS = NO
|
|||||||
# generate an XML file that captures the structure of
|
# generate an XML file that captures the structure of
|
||||||
# the code including all documentation.
|
# the code including all documentation.
|
||||||
|
|
||||||
GENERATE_XML = YES
|
GENERATE_XML = NO
|
||||||
|
|
||||||
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
|
# The XML_OUTPUT tag is used to specify where the XML pages will be put.
|
||||||
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
# If a relative path is entered the value of OUTPUT_DIRECTORY will be
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ div.contents hr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
td.indexkey {
|
td.indexkey {
|
||||||
font-family: Consolas, "Lucida Console";
|
font-family: Consolas, Menlo, "Lucida Console";
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee;
|
||||||
padding: .25em 0 .25em .5em;
|
padding: .25em 0 .25em .5em;
|
||||||
}
|
}
|
||||||
@@ -275,7 +275,7 @@ table tr.indexkey:first-child td {
|
|||||||
}
|
}
|
||||||
|
|
||||||
td.indexvalue {
|
td.indexvalue {
|
||||||
font-family: Consolas, "Lucida Console";
|
font-family: Consolas, Menlo, "Lucida Console";
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee;
|
||||||
padding: .25em 0 .25em .5em;
|
padding: .25em 0 .25em .5em;
|
||||||
}
|
}
|
||||||
@@ -285,7 +285,7 @@ table tr.memlist > td {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tr.memlist td {
|
tr.memlist td {
|
||||||
font-family: Consolas, "Lucida Console";
|
font-family: Consolas, Menlo, "Lucida Console";
|
||||||
padding: .25em 0;
|
padding: .25em 0;
|
||||||
border-bottom: 1px solid #eee;
|
border-bottom: 1px solid #eee;
|
||||||
}
|
}
|
||||||
@@ -425,7 +425,7 @@ hr.footer {
|
|||||||
/* @group Member Descriptions */
|
/* @group Member Descriptions */
|
||||||
|
|
||||||
table.memberdecls {
|
table.memberdecls {
|
||||||
font-family: Consolas, "Lucida Console";
|
font-family: Consolas, Menlo, "Lucida Console";
|
||||||
border-spacing: 0px;
|
border-spacing: 0px;
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
margin: 0 !important;
|
margin: 0 !important;
|
||||||
@@ -485,7 +485,7 @@ table.memberdecls {
|
|||||||
|
|
||||||
.memname {
|
.memname {
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
font: bold 105% Consolas, "Lucida Console";
|
font: bold 105% Consolas, Menlo, "Lucida Console";
|
||||||
margin: .25em 0 .1em .25em;
|
margin: .25em 0 .1em .25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -495,7 +495,7 @@ table.memberdecls {
|
|||||||
padding: 6px 15px;
|
padding: 6px 15px;
|
||||||
color: #253554;
|
color: #253554;
|
||||||
background-color: #f7f7f7;
|
background-color: #f7f7f7;
|
||||||
font-family: Consolas, "Lucida Console";
|
font-family: Consolas, Menlo, "Lucida Console";
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -526,7 +526,7 @@ table.memberdecls {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.memdoc dl dd td em {
|
.memdoc dl dd td em {
|
||||||
font-family: Consolas, "Lucida Console";
|
font-family: Consolas, Menlo, "Lucida Console";
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,28 +3,188 @@
|
|||||||
* __project.name__
|
* __project.name__
|
||||||
*
|
*
|
||||||
* Created by __user.name__ on __project.date__.
|
* Created by __user.name__ on __project.date__.
|
||||||
* Copyright __project.year__, __organization.name__ All rights reserved.
|
*
|
||||||
|
* Copyright __project.year__, __organization.name__. All rights reserved.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var ENV = require("system").env,
|
//===========================================================
|
||||||
|
// DO NOT REMOVE
|
||||||
|
//===========================================================
|
||||||
|
|
||||||
|
var SYS = require("system"),
|
||||||
|
ENV = SYS.env,
|
||||||
FILE = require("file"),
|
FILE = require("file"),
|
||||||
task = require("jake").task,
|
OS = require("os");
|
||||||
FileList = require("jake").FileList,
|
|
||||||
|
|
||||||
|
//===========================================================
|
||||||
|
// USER CONFIGURABLE VARIABLES
|
||||||
|
//===========================================================
|
||||||
|
|
||||||
|
/*
|
||||||
|
The directory in which the project will be built. By default
|
||||||
|
it is built in a "Build" directory within the project directory.
|
||||||
|
To use your $CAPP_BUILD directory, change the declaration to:
|
||||||
|
|
||||||
|
var buildDir = ENV["CAPP_BUILD"];
|
||||||
|
*/
|
||||||
|
var buildDir = "Build";
|
||||||
|
|
||||||
|
|
||||||
|
//===========================================================
|
||||||
|
// AUTOMATICALLY GENERATED
|
||||||
|
//
|
||||||
|
// Do not edit! (unless you know what you are doing)
|
||||||
|
//===========================================================
|
||||||
|
|
||||||
|
var stream = require("narwhal/term").stream,
|
||||||
|
JAKE = require("jake"),
|
||||||
|
task = JAKE.task,
|
||||||
|
FileList = JAKE.FileList,
|
||||||
|
CLEAN = require("jake/clean").CLEAN,
|
||||||
|
CLOBBER = require("jake/clean").CLOBBER,
|
||||||
blend = require("cappuccino/jake").blend,
|
blend = require("cappuccino/jake").blend,
|
||||||
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug";
|
configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug",
|
||||||
|
productName = "__project.nameasidentifier__",
|
||||||
|
debugBlendKitPath = FILE.join("Frameworks", "Debug", "BlendKit"),
|
||||||
|
releaseBlendKitPath = FILE.join("Frameworks", "BlendKit"),
|
||||||
|
buildPath = FILE.canonical(FILE.join(buildDir, productName + ".build"));
|
||||||
|
|
||||||
|
blend (productName + ".blend", function(themeBlendTask)
|
||||||
blend ("__project.nameasidentifier__.blend", function(__project.nameasidentifier__Task)
|
|
||||||
{
|
{
|
||||||
__project.nameasidentifier__Task.setBuildIntermediatesPath(FILE.join("Build", "__project.nameasidentifier__.build", configuration))
|
themeBlendTask.setBuildIntermediatesPath(FILE.join(buildPath, configuration))
|
||||||
__project.nameasidentifier__Task.setBuildPath(FILE.join("Build", configuration));
|
themeBlendTask.setBuildPath(FILE.join(buildDir, configuration));
|
||||||
|
|
||||||
__project.nameasidentifier__Task.setThemeDescriptors(new FileList("ThemeDescriptors.j"));
|
themeBlendTask.setThemeDescriptors(new FileList("ThemeDescriptors.j"));
|
||||||
__project.nameasidentifier__Task.setIdentifier("com.280n.__project.identifier__");
|
themeBlendTask.setIdentifier("__project.identifier__");
|
||||||
__project.nameasidentifier__Task.setResources(new FileList("Resources/*"));
|
themeBlendTask.setResources(new FileList("Resources/*"));
|
||||||
});
|
});
|
||||||
|
|
||||||
task ("default", ["__project.nameasidentifier__.blend"]);
|
task ("debug", function()
|
||||||
|
{
|
||||||
|
ENV["CONFIGURATION"] = "Debug";
|
||||||
|
JAKE.subjake(["."], "build", ENV);
|
||||||
|
|
||||||
task ("build", ["default"]);
|
symlinkBlendKit(debugBlendKitPath);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("release", function()
|
||||||
|
{
|
||||||
|
ENV["CONFIGURATION"] = "Release";
|
||||||
|
JAKE.subjake(["."], "build", ENV);
|
||||||
|
|
||||||
|
symlinkBlendKit(releaseBlendKitPath);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("default", ["release"]);
|
||||||
|
|
||||||
|
task ("build", [productName + ".blend"]);
|
||||||
|
|
||||||
|
task ("all", ["debug", "release"]);
|
||||||
|
|
||||||
|
task ("test", ["debug"], function()
|
||||||
|
{
|
||||||
|
OS.system(["open", "index-debug.html"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
task ("test-release", ["release"], function()
|
||||||
|
{
|
||||||
|
OS.system(["open", "index.html"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
CLEAN.include(buildPath);
|
||||||
|
CLOBBER.include(FILE.join(buildDir, "Debug"))
|
||||||
|
.include(FILE.join(buildDir, "Release"));
|
||||||
|
|
||||||
|
task ("help", function()
|
||||||
|
{
|
||||||
|
var app = JAKE.application().name();
|
||||||
|
|
||||||
|
colorPrint("--------------------------------------------------------------------------", "bold+green");
|
||||||
|
colorPrint("__project.name__ - Theme Blend", "bold+green");
|
||||||
|
colorPrint("--------------------------------------------------------------------------", "bold+green");
|
||||||
|
|
||||||
|
describeTask(app, "debug", "Builds a debug version at " + FILE.join(buildDir, "Debug", productName));
|
||||||
|
describeTask(app, "release", "Builds a release version at " + FILE.join(buildDir, "Release", productName));
|
||||||
|
describeTask(app, "all", "Builds a debug and release version");
|
||||||
|
describeTask(app, "test", "Builds a debug version, symlinks to the installed BlendKit framework,\nand opens the theme showcase in the default browser");
|
||||||
|
describeTask(app, "test-release", "Builds a release version, symlinks to the installed BlendKit framework,\nand opens the theme showcase in the default browser");
|
||||||
|
describeTask(app, "clean", "Removes the intermediate build files");
|
||||||
|
describeTask(app, "clobber", "Removes the intermediate build files and the built theme");
|
||||||
|
|
||||||
|
colorPrint("--------------------------------------------------------------------------", "bold+green");
|
||||||
|
});
|
||||||
|
|
||||||
|
var describeTask = function(application, task, description)
|
||||||
|
{
|
||||||
|
colorPrint("\n" + application + " " + task, "violet");
|
||||||
|
description.split("\n").forEach(function(line)
|
||||||
|
{
|
||||||
|
print(" " + line);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
var symlinkBlendKit = function(destinationPath)
|
||||||
|
{
|
||||||
|
if (FILE.exists(destinationPath))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var blendKitPath = null,
|
||||||
|
path = FILE.join(SYS.prefix, "packages", "cappuccino", "Frameworks", "BlendKit");
|
||||||
|
|
||||||
|
if (FILE.isDirectory(path))
|
||||||
|
blendKitPath = path;
|
||||||
|
|
||||||
|
if (!blendKitPath)
|
||||||
|
{
|
||||||
|
cappBuild = ENV["CAPP_BUILD"];
|
||||||
|
|
||||||
|
if (cappBuild)
|
||||||
|
{
|
||||||
|
var buildTypes = ["Release", "Debug"];
|
||||||
|
|
||||||
|
for (var i = 0; i < buildTypes.length; ++i)
|
||||||
|
{
|
||||||
|
var path = FILE.join(cappBuild, buildTypes[i], "BlendKit");
|
||||||
|
|
||||||
|
if (FILE.isDirectory(path))
|
||||||
|
{
|
||||||
|
blendKitPath = path;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (blendKitPath)
|
||||||
|
FILE.symlink(blendKitPath, destinationPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
function colorPrint(message, color)
|
||||||
|
{
|
||||||
|
var matches = color.match(/(bold(?: |\+))?(.+)/);
|
||||||
|
|
||||||
|
if (!matches)
|
||||||
|
return;
|
||||||
|
|
||||||
|
message = "\0" + matches[2] + "(" + message + "\0)";
|
||||||
|
|
||||||
|
if (matches[1])
|
||||||
|
message = "\0bold(" + message + "\0)";
|
||||||
|
|
||||||
|
stream.print(message);
|
||||||
|
}
|
||||||
|
|||||||
@@ -3,15 +3,13 @@
|
|||||||
* __project.name__
|
* __project.name__
|
||||||
*
|
*
|
||||||
* Created by __user.name__ on __project.date__.
|
* Created by __user.name__ on __project.date__.
|
||||||
* Copyright __project.year__, __organization.name__ All rights reserved.
|
* Copyright __project.year__, __organization.name__. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@import <BlendKit/BKThemeDescriptor.j>
|
@import <BlendKit/BKThemeDescriptor.j>
|
||||||
|
|
||||||
|
|
||||||
@implementation __project.nameasidentifier__ThemeDescriptor : BKThemeDescriptor
|
@implementation __project.nameasidentifier__ThemeDescriptor : BKThemeDescriptor
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (CPString)themeName
|
+ (CPString)themeName
|
||||||
{
|
{
|
||||||
@@ -21,7 +19,7 @@
|
|||||||
+ (CPButton)themedButton
|
+ (CPButton)themedButton
|
||||||
{
|
{
|
||||||
var button = [[CPButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)];
|
var button = [[CPButton alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 20.0)];
|
||||||
|
|
||||||
[button setValue:[CPColor blueColor] forThemeAttribute:@"bezel-color"];
|
[button setValue:[CPColor blueColor] forThemeAttribute:@"bezel-color"];
|
||||||
[button setValue:[CPColor greenColor] forThemeAttribute:@"bezel-color" inState:CPThemeStateHighlighted];
|
[button setValue:[CPColor greenColor] forThemeAttribute:@"bezel-color" inState:CPThemeStateHighlighted];
|
||||||
|
|
||||||
@@ -29,7 +27,7 @@
|
|||||||
[button setValue:[CPColor yellowColor] forThemeAttribute:@"text-color" inState:CPThemeStateHighlighted];
|
[button setValue:[CPColor yellowColor] forThemeAttribute:@"text-color" inState:CPThemeStateHighlighted];
|
||||||
|
|
||||||
[button setTitle:@"Yikes!"];
|
[button setTitle:@"Yikes!"];
|
||||||
|
|
||||||
return button;
|
return button;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
__project.name__
|
__project.name__
|
||||||
|
|
||||||
Created by __user.name__ on __project.date__.
|
Created by __user.name__ on __project.date__.
|
||||||
Copyright __project.year__, __organization.name__ All rights reserved.
|
Copyright __project.year__, __organization.name__. All rights reserved.
|
||||||
-->
|
-->
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
__project.name__
|
__project.name__
|
||||||
|
|
||||||
Created by __user.name__ on __project.date__.
|
Created by __user.name__ on __project.date__.
|
||||||
Copyright __project.year__, __organization.name__ All rights reserved.
|
Copyright __project.year__, __organization.name__. All rights reserved.
|
||||||
-->
|
-->
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7, chrome=1" />
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* main.j
|
* main.j
|
||||||
* __Product__
|
* __project.name__
|
||||||
*
|
*
|
||||||
* Created by __Me__ on __Date__.
|
* Created by __user.name__ on __project.date__.
|
||||||
* Copyright 2008 __MyCompanyName__. All rights reserved.
|
* Copyright __project.year__, __organization.name__. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@import <Foundation/Foundation.j>
|
@import <Foundation/Foundation.j>
|
||||||
|
|||||||
@@ -40,18 +40,16 @@ ConverterConversionException = @"ConverterConversionException";
|
|||||||
|
|
||||||
@implementation Converter : CPObject
|
@implementation Converter : CPObject
|
||||||
{
|
{
|
||||||
CPString inputPath @accessors(readonly);
|
CPString inputPath @accessors(readonly);
|
||||||
CPString outputPath @accessors;
|
CPString outputPath @accessors;
|
||||||
CPString resourcesPath @accessors;
|
CPString resourcesPath @accessors;
|
||||||
NibFormat format @accessors(readonly);
|
NibFormat format @accessors(readonly);
|
||||||
CPArray themes @accessors(readonly);
|
CPArray themes @accessors(readonly);
|
||||||
|
CPArray userNSClasses @accessors;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (Converter)sharedConverter
|
+ (Converter)sharedConverter
|
||||||
{
|
{
|
||||||
if (!SharedConverter)
|
|
||||||
SharedConverter = [[Converter alloc] init];
|
|
||||||
|
|
||||||
return SharedConverter;
|
return SharedConverter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -61,6 +59,7 @@ ConverterConversionException = @"ConverterConversionException";
|
|||||||
|
|
||||||
if (self)
|
if (self)
|
||||||
{
|
{
|
||||||
|
SharedConverter = self;
|
||||||
inputPath = aPath;
|
inputPath = aPath;
|
||||||
format = nibFormat;
|
format = nibFormat;
|
||||||
themes = themeList;
|
themes = themeList;
|
||||||
|
|||||||
@@ -1,3 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* NSClassSwapper.j
|
||||||
|
* nib2cib
|
||||||
|
*
|
||||||
|
* Created by Francisco Tolmasky
|
||||||
|
* Copyright 2009, 280 North, Inc.
|
||||||
|
*
|
||||||
|
* 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 "Converter.j"
|
||||||
|
|
||||||
var NSClassSwapperClassNames = {},
|
var NSClassSwapperClassNames = {},
|
||||||
NSClassSwapperOriginalClassNames = {};
|
NSClassSwapperOriginalClassNames = {};
|
||||||
@@ -16,15 +39,38 @@ var _CPCibClassSwapperClassNameKey = @"_CPCibClassSwapperClassNameKey",
|
|||||||
|
|
||||||
if (!swapperClass)
|
if (!swapperClass)
|
||||||
{
|
{
|
||||||
var originalClass = objj_lookUpClass(anOriginalClassName);
|
// If this is a userland NS class, call its KVC methods directly
|
||||||
|
var nsClass = nil;
|
||||||
|
|
||||||
|
if ([[[Converter sharedConverter] userNSClasses] containsObject:aClassName])
|
||||||
|
nsClass = objj_lookUpClass("NS_" + aClassName);
|
||||||
|
|
||||||
|
var originalClass = nsClass || objj_lookUpClass(anOriginalClassName);
|
||||||
|
|
||||||
swapperClass = objj_allocateClassPair(originalClass, swapperClassName);
|
swapperClass = objj_allocateClassPair(originalClass, swapperClassName);
|
||||||
|
|
||||||
objj_registerClassPair(swapperClass);
|
objj_registerClassPair(swapperClass);
|
||||||
|
|
||||||
|
/*
|
||||||
|
When calling userland KVC methods, they should think that the class is
|
||||||
|
the NS class (not the swapper class) so that they are in their userland space,
|
||||||
|
not in AppKit space. For example, this ensures that bundleForClass:[self class] will work correctly.
|
||||||
|
We can accomplish this safely by changing the class of self temporarily and sending directly
|
||||||
|
to self instead of to super. This swizzle is safe because NSClassSwapper and _CPCibClassSwapper
|
||||||
|
do not add any ivars.
|
||||||
|
*/
|
||||||
|
|
||||||
class_addMethod(swapperClass, @selector(initWithCoder:), function(self, _cmd, aCoder)
|
class_addMethod(swapperClass, @selector(initWithCoder:), function(self, _cmd, aCoder)
|
||||||
{
|
{
|
||||||
self = objj_msgSendSuper({super_class:originalClass, receiver:self}, _cmd, aCoder);
|
if (nsClass)
|
||||||
|
{
|
||||||
|
// Switch to userland temporarily
|
||||||
|
self.isa = nsClass;
|
||||||
|
self = objj_msgSend(self, _cmd, aCoder);
|
||||||
|
self.isa = swapperClass;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
self = objj_msgSendSuper({super_class:originalClass, receiver:self}, _cmd, aCoder);
|
||||||
|
|
||||||
if (self)
|
if (self)
|
||||||
{
|
{
|
||||||
@@ -44,9 +90,26 @@ var _CPCibClassSwapperClassNameKey = @"_CPCibClassSwapperClassNameKey",
|
|||||||
|
|
||||||
class_addMethod(swapperClass, @selector(encodeWithCoder:), function(self, _cmd, aCoder)
|
class_addMethod(swapperClass, @selector(encodeWithCoder:), function(self, _cmd, aCoder)
|
||||||
{
|
{
|
||||||
objj_msgSendSuper({super_class:originalClass, receiver:self}, _cmd, aCoder);
|
if (nsClass)
|
||||||
|
{
|
||||||
|
// Switch to userland temporarily
|
||||||
|
self.isa = nsClass;
|
||||||
|
objj_msgSend(self, _cmd, aCoder);
|
||||||
|
self.isa = swapperClass;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
objj_msgSendSuper({super_class:originalClass, receiver:self}, _cmd, aCoder);
|
||||||
|
|
||||||
|
// If this is a custom NS class, lookup its archiver class so that
|
||||||
|
// the correct class is swapped during unarchiving.
|
||||||
|
if (nsClass)
|
||||||
|
{
|
||||||
|
var classForArchiver = objj_msgSend(nsClass, "classForKeyedArchiver");
|
||||||
|
|
||||||
|
if (classForArchiver)
|
||||||
|
aClassName = [classForArchiver className];
|
||||||
|
}
|
||||||
|
|
||||||
// FIXME: map class name as well?
|
|
||||||
[aCoder encodeObject:aClassName forKey:_CPCibClassSwapperClassNameKey];
|
[aCoder encodeObject:aClassName forKey:_CPCibClassSwapperClassNameKey];
|
||||||
[aCoder encodeObject:CP_NSMapClassName(anOriginalClassName) forKey:_CPCibClassSwapperOriginalClassNameKey];
|
[aCoder encodeObject:CP_NSMapClassName(anOriginalClassName) forKey:_CPCibClassSwapperOriginalClassNameKey];
|
||||||
}, "");
|
}, "");
|
||||||
|
|||||||
@@ -24,4 +24,5 @@
|
|||||||
@import "NSExpression.j"
|
@import "NSExpression.j"
|
||||||
@import "NSDictionary.j"
|
@import "NSDictionary.j"
|
||||||
@import "NSMutableString.j"
|
@import "NSMutableString.j"
|
||||||
|
@import "NSNull.j"
|
||||||
@import "NSSet.j"
|
@import "NSSet.j"
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
@import <AppKit/CPCibConnector.j>
|
@import <AppKit/CPCibConnector.j>
|
||||||
@import <AppKit/CPCibControlConnector.j>
|
@import <AppKit/CPCibControlConnector.j>
|
||||||
@import <AppKit/CPCibOutletConnector.j>
|
@import <AppKit/CPCibOutletConnector.j>
|
||||||
|
@import <AppKit/CPCibRuntimeAttributesConnector.j>
|
||||||
|
|
||||||
NIB_CONNECTION_EQUIVALENCY_TABLE = {};
|
NIB_CONNECTION_EQUIVALENCY_TABLE = {};
|
||||||
|
|
||||||
@@ -53,7 +54,8 @@ NIB_CONNECTION_EQUIVALENCY_TABLE = {};
|
|||||||
_destination = NIB_CONNECTION_EQUIVALENCY_TABLE[destinationUID];
|
_destination = NIB_CONNECTION_EQUIVALENCY_TABLE[destinationUID];
|
||||||
}
|
}
|
||||||
|
|
||||||
CPLog.debug(@"NSNibConnector: connection: " + [_source description] + " " + [_destination description] + " " + _label);
|
if (_source && _destination)
|
||||||
|
CPLog.debug(@"NSNibConnector: connection: " + [_source description] + " " + [_destination description] + " " + _label);
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
@@ -167,3 +169,47 @@ var NSTransformers = [CPSet setWithObjects:
|
|||||||
}
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@implementation CPCibRuntimeAttributesConnector (NSCoding)
|
||||||
|
|
||||||
|
- (id)NS_initWithCoder:(CPCoder)aCoder
|
||||||
|
{
|
||||||
|
self = [super NS_initWithCoder:aCoder];
|
||||||
|
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
_source = [aCoder decodeObjectForKey:@"NSObject"];
|
||||||
|
_keyPaths = [aCoder decodeObjectForKey:@"NSKeyPaths"];
|
||||||
|
_values = [aCoder decodeObjectForKey:@"NSValues"];
|
||||||
|
|
||||||
|
var count = [_keyPaths count];
|
||||||
|
|
||||||
|
CPLog.debug(@"NSNibConnector: runtime attributes connector: " + [_source description]);
|
||||||
|
|
||||||
|
while (count--)
|
||||||
|
{
|
||||||
|
var value = _values[count],
|
||||||
|
type = typeof(value) === "boolean" ? "BOOL" : [value className];
|
||||||
|
|
||||||
|
CPLog.debug(@" %s (%s): %s", _keyPaths[count], type, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation NSIBUserDefinedRuntimeAttributesConnector : CPCibRuntimeAttributesConnector
|
||||||
|
|
||||||
|
- (id)initWithCoder:(CPCoder)aCoder
|
||||||
|
{
|
||||||
|
return [self NS_initWithCoder:aCoder];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (Class)classForKeyedArchiver
|
||||||
|
{
|
||||||
|
return [CPCibRuntimeAttributesConnector class];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* NSNull.j
|
||||||
|
* nib2cib
|
||||||
|
*
|
||||||
|
* Created by Aparajita Fishman.
|
||||||
|
* Copyright 2011, 280 North, Inc.
|
||||||
|
*
|
||||||
|
* 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/CPNull.j>
|
||||||
|
|
||||||
|
@implementation NSNull : CPNull
|
||||||
|
|
||||||
|
- (id)initWithCoder:(CPCoder)aCoder
|
||||||
|
{
|
||||||
|
return [CPNull null];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (Class)classForKeyedArchiver
|
||||||
|
{
|
||||||
|
return [CPNull class];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
@@ -68,6 +68,7 @@ var NSViewAutoresizingMask = 0x3F,
|
|||||||
_isHidden = vFlags & NSViewHiddenMask;
|
_isHidden = vFlags & NSViewHiddenMask;
|
||||||
_opacity = 1.0;//[aCoder decodeIntForKey:CPViewOpacityKey];
|
_opacity = 1.0;//[aCoder decodeIntForKey:CPViewOpacityKey];
|
||||||
|
|
||||||
|
_themeClass = [self themeClass];
|
||||||
_themeAttributes = {};
|
_themeAttributes = {};
|
||||||
_themeState = CPThemeStateNormal;
|
_themeState = CPThemeStateNormal;
|
||||||
[self _loadThemeAttributes];
|
[self _loadThemeAttributes];
|
||||||
|
|||||||
@@ -0,0 +1,952 @@
|
|||||||
|
/*
|
||||||
|
* Nib2Cib.j
|
||||||
|
* nib2cib
|
||||||
|
*
|
||||||
|
* Created by Francisco Tolmasky and Aparajita Fishman.
|
||||||
|
* Copyright 2008, 280 North, Inc.
|
||||||
|
*
|
||||||
|
* 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 <AppKit/AppKit.j>
|
||||||
|
@import <BlendKit/BlendKit.j>
|
||||||
|
|
||||||
|
@import "NSFoundation.j"
|
||||||
|
@import "NSAppKit.j"
|
||||||
|
|
||||||
|
@import "Nib2CibKeyedUnarchiver.j"
|
||||||
|
@import "Converter.j"
|
||||||
|
|
||||||
|
var FILE = require("file"),
|
||||||
|
OS = require("os"),
|
||||||
|
SYS = require("system"),
|
||||||
|
FileList = require("jake").FileList,
|
||||||
|
stream = require("narwhal/term").stream,
|
||||||
|
StaticResource = require("objective-j").StaticResource,
|
||||||
|
|
||||||
|
DefaultTheme = "Aristo",
|
||||||
|
BuildTypes = ["Debug", "Release"],
|
||||||
|
DefaultFile = "MainMenu",
|
||||||
|
AllowedStoredOptionsRe = new RegExp("^(defaultTheme|auxThemes|verbosity|quiet|frameworks|format)$");
|
||||||
|
ArgsRe = /"[^\"]+"|'[^\']+'|\S+/g;
|
||||||
|
|
||||||
|
|
||||||
|
@implementation Nib2Cib : CPObject
|
||||||
|
{
|
||||||
|
CPArray commandLineArgs;
|
||||||
|
JSObject parser;
|
||||||
|
JSObject nibInfo;
|
||||||
|
CPString appDirectory;
|
||||||
|
CPString resourcesDirectory;
|
||||||
|
CPDictionary infoPlist;
|
||||||
|
CPArray userNSClasses;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id)initWithArgs:(CPArray)theArgs
|
||||||
|
{
|
||||||
|
self = [super init];
|
||||||
|
|
||||||
|
if (self)
|
||||||
|
{
|
||||||
|
commandLineArgs = theArgs;
|
||||||
|
parser = new (require("narwhal/args").Parser)();
|
||||||
|
nibInfo = {};
|
||||||
|
appDirectory = @"";
|
||||||
|
resourcesDirectory = @"";
|
||||||
|
infoPlist = [CPDictionary dictionary];
|
||||||
|
userNSClasses = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)run
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var options = [self parseOptionsFromArgs:commandLineArgs];
|
||||||
|
|
||||||
|
[self setLogLevel:options.quiet ? -1 : options.verbosity];
|
||||||
|
|
||||||
|
if (options.watch)
|
||||||
|
[self watchWithOptions:options];
|
||||||
|
else
|
||||||
|
[self convertWithOptions:options inputFile:nil];
|
||||||
|
}
|
||||||
|
catch (anException)
|
||||||
|
{
|
||||||
|
CPLog.fatal([self exceptionReason:anException]);
|
||||||
|
OS.exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)convertWithOptions:(JSObject)options inputFile:(CPString)inputFile
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
inputFile = inputFile || [self getInputFile:options.args];
|
||||||
|
|
||||||
|
[self getAppAndResourceDirectoriesFromInputFile:inputFile options:options];
|
||||||
|
|
||||||
|
if (options.readStoredOptions)
|
||||||
|
{
|
||||||
|
options = [self mergeOptionsWithStoredOptions:options inputFile:inputFile];
|
||||||
|
[self setLogLevel:options.quiet ? -1 : options.verbosity];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!options.quiet && options.verbosity > 0)
|
||||||
|
[self printVersion];
|
||||||
|
|
||||||
|
var outputFile = [self getOutputFileFromInputFile:inputFile args:options.args],
|
||||||
|
configInfo = [self readConfigFile:options.configFile || @"" inputFile:inputFile];
|
||||||
|
|
||||||
|
infoPlist = configInfo.plist;
|
||||||
|
|
||||||
|
if (infoPlist)
|
||||||
|
{
|
||||||
|
var systemFontFace = [infoPlist valueForKey:@"CPSystemFontFace"];
|
||||||
|
|
||||||
|
if (systemFontFace)
|
||||||
|
[CPFont setSystemFontFace:systemFontFace];
|
||||||
|
|
||||||
|
var systemFontSize = [infoPlist valueForKey:@"CPSystemFontSize"];
|
||||||
|
|
||||||
|
if (systemFontSize)
|
||||||
|
[CPFont setSystemFontSize:parseFloat(systemFontSize, 10)];
|
||||||
|
}
|
||||||
|
|
||||||
|
var themeList = [self getThemeList:options],
|
||||||
|
themes = [self loadThemesFromList:themeList];
|
||||||
|
|
||||||
|
CPLog.info("\n-------------------------------------------------------------");
|
||||||
|
CPLog.info("Input : " + inputFile);
|
||||||
|
CPLog.info("Output : " + outputFile);
|
||||||
|
CPLog.info("Format : " + ["Auto", "Mac", "iPhone"][options.format]);
|
||||||
|
CPLog.info("Application : " + appDirectory);
|
||||||
|
CPLog.info("Resources : " + resourcesDirectory);
|
||||||
|
CPLog.info("Frameworks : " + (options.frameworks || ""));
|
||||||
|
CPLog.info("Default theme : " + themeList[0]);
|
||||||
|
CPLog.info("Aux themes : " + themeList.slice(1).join(", "));
|
||||||
|
CPLog.info("Config file : " + (configInfo.path || ""));
|
||||||
|
CPLog.info("System Font : " + [CPFont systemFontSize] + "px " + [CPFont systemFontFace]);
|
||||||
|
CPLog.info("-------------------------------------------------------------\n");
|
||||||
|
|
||||||
|
var converter = [[Converter alloc] initWithInputPath:inputFile
|
||||||
|
format:options.format
|
||||||
|
themes:themes];
|
||||||
|
|
||||||
|
[converter setOutputPath:outputFile];
|
||||||
|
[converter setResourcesPath:resourcesDirectory];
|
||||||
|
|
||||||
|
var loadFrameworksCallback = function()
|
||||||
|
{
|
||||||
|
[self loadNSClassesFromBundle:[CPBundle mainBundle]];
|
||||||
|
[converter setUserNSClasses:userNSClasses];
|
||||||
|
[converter convert];
|
||||||
|
};
|
||||||
|
|
||||||
|
[self loadFrameworks:options.frameworks verbosity:options.verbosity callback:loadFrameworksCallback];
|
||||||
|
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
catch (anException)
|
||||||
|
{
|
||||||
|
CPLog.fatal([self exceptionReason:anException]);
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)watchWithOptions:(JSObject)options
|
||||||
|
{
|
||||||
|
var verbosity = options.quiet ? -1 : options.verbosity,
|
||||||
|
watchDir = options.args[0];
|
||||||
|
|
||||||
|
if (!watchDir)
|
||||||
|
watchDir = FILE.canonical(FILE.isDirectory("Resources") ? "Resources" : ".");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
watchDir = FILE.canonical(watchDir);
|
||||||
|
|
||||||
|
if (FILE.basename(watchDir) !== "Resources")
|
||||||
|
{
|
||||||
|
var path = FILE.join(watchDir, "Resources");
|
||||||
|
|
||||||
|
if (FILE.isDirectory(path))
|
||||||
|
watchDir = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!FILE.isDirectory(watchDir))
|
||||||
|
[self failWithMessage:@"Cannot find the directory: " + watchDir];
|
||||||
|
|
||||||
|
// Turn on info messages
|
||||||
|
[self setLogLevel:1];
|
||||||
|
|
||||||
|
var nibs = new FileList(FILE.join(watchDir, "*.[nx]ib")).items(),
|
||||||
|
count = nibs.length;
|
||||||
|
|
||||||
|
// First time through only IB files with no corresponding cib
|
||||||
|
// or a cib with an earlier or equal mtime are converted.
|
||||||
|
while (count--)
|
||||||
|
{
|
||||||
|
var nib = nibs[count],
|
||||||
|
cib = nib.substr(0, nib.length - 4) + ".cib";
|
||||||
|
|
||||||
|
if (FILE.exists(cib) && (FILE.mtime(nib) - FILE.mtime(cib)) <= 0)
|
||||||
|
nibInfo[nib] = FILE.mtime(nib);
|
||||||
|
}
|
||||||
|
|
||||||
|
CPLog.info("Watching: " + CPLogColorize(watchDir, "debug"));
|
||||||
|
CPLog.info("Press Control-C to stop...");
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
var modifiedNibs = [self getModifiedNibsInDirectory:watchDir];
|
||||||
|
|
||||||
|
for (var i = 0; i < modifiedNibs.length; ++i)
|
||||||
|
{
|
||||||
|
var action = modifiedNibs[i][0],
|
||||||
|
nib = modifiedNibs[i][1],
|
||||||
|
label = action === "add" ? "Added" : "Modified",
|
||||||
|
level = action === "add" ? "info" : "debug";
|
||||||
|
|
||||||
|
CPLog.info(">> %s: %s", CPLogColorize(label, level), nib);
|
||||||
|
|
||||||
|
// Don't convert an add if there is an existing cib with a later mtime
|
||||||
|
if (action === "add")
|
||||||
|
{
|
||||||
|
var cib = nib.substr(0, nib.length - 4) + ".cib";
|
||||||
|
|
||||||
|
if (FILE.exists(cib) && (FILE.mtime(nib) - FILE.mtime(cib)) < 0)
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Let the converter log however the user configured it
|
||||||
|
[self setLogLevel:verbosity];
|
||||||
|
|
||||||
|
var success = [self convertWithOptions:options inputFile:nib];
|
||||||
|
|
||||||
|
[self setLogLevel:1];
|
||||||
|
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
if (verbosity > 0)
|
||||||
|
stream.print();
|
||||||
|
else
|
||||||
|
CPLog.warn("Conversion successful");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OS.sleep(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (JSObject)parseOptionsFromArgs:(CPArray)theArgs
|
||||||
|
{
|
||||||
|
parser.usage("[--watch DIRECTORY] [INPUT_FILE [OUTPUT_FILE]]");
|
||||||
|
|
||||||
|
parser.option("--watch", "watch")
|
||||||
|
.set(true)
|
||||||
|
.help("Ask nib2cib to watch a directory for changes");
|
||||||
|
|
||||||
|
parser.option("-R", "resourcesDir")
|
||||||
|
.set()
|
||||||
|
.displayName("directory")
|
||||||
|
.help("Set the Resources directory, usually unnecessary as it is inferred from the input path");
|
||||||
|
|
||||||
|
parser.option("--default-theme", "defaultTheme")
|
||||||
|
.set()
|
||||||
|
.displayName("name")
|
||||||
|
.help("Specify a custom default theme which is not set in your Info.plist");
|
||||||
|
|
||||||
|
parser.option("-t", "--theme", "auxThemes")
|
||||||
|
.push()
|
||||||
|
.displayName("name")
|
||||||
|
.help("An additional theme loaded dynamically by your application");
|
||||||
|
|
||||||
|
parser.option("--config", "configFile")
|
||||||
|
.set()
|
||||||
|
.displayName("path")
|
||||||
|
.help("A path to an Info.plist file from which the system font and/or size can be retrieved");
|
||||||
|
|
||||||
|
parser.option("-v", "--verbose", "verbosity")
|
||||||
|
.inc()
|
||||||
|
.help("Increase verbosity level");
|
||||||
|
|
||||||
|
parser.option("-q", "--quiet", "quiet")
|
||||||
|
.set(true)
|
||||||
|
.help("No output");
|
||||||
|
|
||||||
|
parser.option("-F", "--framework", "frameworks")
|
||||||
|
.push()
|
||||||
|
.help("Add a framework to load");
|
||||||
|
|
||||||
|
parser.option("--no-stored-options", "readStoredOptions")
|
||||||
|
.set(false)
|
||||||
|
.def(true)
|
||||||
|
.help("Do not read stored options");
|
||||||
|
|
||||||
|
parser.option("--mac", "format")
|
||||||
|
.set(NibFormatMac)
|
||||||
|
.def(NibFormatUndetermined)
|
||||||
|
.help("Set format to Mac");
|
||||||
|
|
||||||
|
parser.option("--version", "showVersion")
|
||||||
|
.action(function() { [self printVersionAndExit]; })
|
||||||
|
.help("Show the version of nib2cib and quit");
|
||||||
|
|
||||||
|
parser.helpful();
|
||||||
|
|
||||||
|
var options = parser.parse(theArgs, null, null, true);
|
||||||
|
|
||||||
|
if (options.args.length > 2)
|
||||||
|
{
|
||||||
|
parser.printUsage(options);
|
||||||
|
OS.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return options;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (JSObject)mergeOptionsWithStoredOptions:(JSObject)options inputFile:(CPString)inputFile
|
||||||
|
{
|
||||||
|
// We have to clone options
|
||||||
|
var userOptions = [self readStoredOptionsAtPath:FILE.join(SYS.env["HOME"], ".nib2cibconfig")],
|
||||||
|
appOptions = [self readStoredOptionsAtPath:FILE.join(appDirectory, "nib2cib.conf")],
|
||||||
|
filename = FILE.basename(inputFile, FILE.extension(inputFile)) + ".conf",
|
||||||
|
fileOptions = [self readStoredOptionsAtPath:FILE.join(FILE.dirname(inputFile), filename)];
|
||||||
|
|
||||||
|
// At this point we have an array of args without the initial command in args[0],
|
||||||
|
// add the command and parse the options.
|
||||||
|
userOptions = [self parseOptionsFromArgs:[options.command].concat(userOptions)];
|
||||||
|
appOptions = [self parseOptionsFromArgs:[options.command].concat(appOptions)];
|
||||||
|
fileOptions = [self parseOptionsFromArgs:[options.command].concat(fileOptions)];
|
||||||
|
|
||||||
|
// The increasing order of precedence is: user -> app -> file -> command line
|
||||||
|
var mergedOptions = userOptions;
|
||||||
|
|
||||||
|
[self mergeOptions:appOptions with:mergedOptions];
|
||||||
|
[self mergeOptions:fileOptions with:mergedOptions];
|
||||||
|
[self mergeOptions:options with:mergedOptions];
|
||||||
|
mergedOptions.args = options.args;
|
||||||
|
|
||||||
|
return mergedOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPArray)readStoredOptionsAtPath:(CPString)path
|
||||||
|
{
|
||||||
|
path = FILE.canonical(path);
|
||||||
|
|
||||||
|
if (!FILE.isReadable(path))
|
||||||
|
return [];
|
||||||
|
|
||||||
|
var file = FILE.open(path, "r"),
|
||||||
|
line = file.readLine(),
|
||||||
|
matches = line.match(ArgsRe) || [];
|
||||||
|
|
||||||
|
file.close();
|
||||||
|
CPLog.debug("Reading stored options: " + path);
|
||||||
|
|
||||||
|
if (matches)
|
||||||
|
{
|
||||||
|
for (var i = 0; i < matches.length; ++i)
|
||||||
|
{
|
||||||
|
var str = matches[i];
|
||||||
|
|
||||||
|
if ((str.charAt(0) === '"' && str.substr(-1) === '"') || (str.charAt(0) === "'" && str.substr(-1) === "'"))
|
||||||
|
matches[i] = str.substr(1, str.length - 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return matches;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)printOptions:options
|
||||||
|
{
|
||||||
|
for (option in options)
|
||||||
|
{
|
||||||
|
var value = options[option];
|
||||||
|
|
||||||
|
if (value)
|
||||||
|
{
|
||||||
|
var show = value.length !== undefined ? value.length > 0 : !!value;
|
||||||
|
|
||||||
|
if (show)
|
||||||
|
print(option + ": " + value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Merges properties in sourceOptions into targetOptions, overriding properties in targetOptions
|
||||||
|
- (void)mergeOptions:(JSObject)sourceOptions with:(JSObject)targetOptions
|
||||||
|
{
|
||||||
|
for (option in sourceOptions)
|
||||||
|
{
|
||||||
|
// Make sure only a supported option is given
|
||||||
|
if (!AllowedStoredOptionsRe.test(option))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (sourceOptions.hasOwnProperty(option))
|
||||||
|
{
|
||||||
|
var value = sourceOptions[option];
|
||||||
|
|
||||||
|
if (value)
|
||||||
|
{
|
||||||
|
var copy = value.length !== undefined ? value.length > 0 : !!value;
|
||||||
|
|
||||||
|
if (copy)
|
||||||
|
targetOptions[option] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setLogLevel:(int)level
|
||||||
|
{
|
||||||
|
CPLogUnregister(CPLogPrint);
|
||||||
|
|
||||||
|
if (level === 0)
|
||||||
|
CPLogRegister(CPLogPrint, "warn", logFormatter);
|
||||||
|
else if (level === 1)
|
||||||
|
CPLogRegister(CPLogPrint, "info", logFormatter);
|
||||||
|
else if (level > 1)
|
||||||
|
CPLogRegister(CPLogPrint, null, logFormatter);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPString)getInputFile:(CPArray)theArgs
|
||||||
|
{
|
||||||
|
var inputFile = theArgs[0] || DefaultFile,
|
||||||
|
path = "";
|
||||||
|
|
||||||
|
if (!/^.+\.[nx]ib$/.test(inputFile))
|
||||||
|
{
|
||||||
|
if (path = [self findInputFile:inputFile extension:@".xib"])
|
||||||
|
inputFile = path;
|
||||||
|
else if (path = [self findInputFile:inputFile extension:@".nib"])
|
||||||
|
inputFile = path;
|
||||||
|
else
|
||||||
|
[self failWithMessage:@"Cannot find the input file (.xib or .nib): " + FILE.canonical(inputFile)];
|
||||||
|
}
|
||||||
|
else if (path = [self findInputFile:inputFile extension:nil])
|
||||||
|
inputFile = path;
|
||||||
|
else
|
||||||
|
[self failWithMessage:@"Could not read the input file: " + FILE.canonical(inputFile)];
|
||||||
|
|
||||||
|
return FILE.canonical(inputFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)findInputFile:(CPString)inputFile extension:(CPString)extension
|
||||||
|
{
|
||||||
|
var path = inputFile;
|
||||||
|
|
||||||
|
if (extension)
|
||||||
|
path += extension;
|
||||||
|
|
||||||
|
if (FILE.isReadable(path))
|
||||||
|
return path;
|
||||||
|
|
||||||
|
if (FILE.basename(FILE.dirname(inputFile)) !== "Resources" && FILE.isDirectory("Resources"))
|
||||||
|
{
|
||||||
|
path = FILE.resolve(path, FILE.join("Resources", FILE.basename(path)));
|
||||||
|
|
||||||
|
if (FILE.isReadable(path))
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)getAppAndResourceDirectoriesFromInputFile:(CPString)inputFile options:(JSObject)options
|
||||||
|
{
|
||||||
|
appDirectory = resourcesDirectory = "";
|
||||||
|
|
||||||
|
if (options.resourcesDir)
|
||||||
|
{
|
||||||
|
var path = FILE.canonical(options.resourcesDir);
|
||||||
|
|
||||||
|
if (!FILE.isDirectory(path))
|
||||||
|
[self failWithMessage:@"Cannot read resources at: " + path];
|
||||||
|
|
||||||
|
resourcesDirectory = path;
|
||||||
|
}
|
||||||
|
|
||||||
|
var parentDir = FILE.dirname(inputFile);
|
||||||
|
|
||||||
|
if (FILE.basename(parentDir) === "Resources")
|
||||||
|
{
|
||||||
|
appDirectory = FILE.dirname(parentDir);
|
||||||
|
resourcesDirectory = resourcesDirectory || parentDir;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
appDirectory = parentDir;
|
||||||
|
|
||||||
|
if (!resourcesDirectory)
|
||||||
|
{
|
||||||
|
var path = FILE.join(appDirectory, "Resources");
|
||||||
|
|
||||||
|
if (FILE.isDirectory(path))
|
||||||
|
resourcesDirectory = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPString)getOutputFileFromInputFile:(CPString)inputFile args:(CPArray)theArgs
|
||||||
|
{
|
||||||
|
var outputFile = null;
|
||||||
|
|
||||||
|
if (theArgs.length > 1)
|
||||||
|
{
|
||||||
|
outputFile = theArgs[1];
|
||||||
|
|
||||||
|
if (!/^.+\.cib$/.test(outputFile))
|
||||||
|
outputFile += ".cib";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
outputFile = FILE.join(FILE.dirname(inputFile), FILE.basename(inputFile, FILE.extension(inputFile))) + ".cib";
|
||||||
|
|
||||||
|
outputFile = FILE.canonical(outputFile);
|
||||||
|
|
||||||
|
if (!FILE.isWritable(FILE.dirname(outputFile)))
|
||||||
|
[self failWithMessage:@"Cannot write the output file at: " + outputFile];
|
||||||
|
|
||||||
|
return outputFile;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)loadFrameworks:(CPArray)frameworks verbosity:(int)verbosity callback:(JSObject)aCallback
|
||||||
|
{
|
||||||
|
if (!frameworks || frameworks.length === 0)
|
||||||
|
return aCallback();
|
||||||
|
|
||||||
|
var returnPath = function(path) { return path; };
|
||||||
|
|
||||||
|
frameworks.forEach(function(aFramework)
|
||||||
|
{
|
||||||
|
[self setLogLevel:verbosity];
|
||||||
|
|
||||||
|
var frameworkPath = nil;
|
||||||
|
|
||||||
|
// If it is just a name with no path components, try to locate it
|
||||||
|
if (aFramework.indexOf("/") === -1)
|
||||||
|
{
|
||||||
|
frameworkPath = [self findInCappBuild:aFramework isDirectory:YES callback:returnPath];
|
||||||
|
|
||||||
|
if (!frameworkPath)
|
||||||
|
frameworkPath = [self findInFrameworks:FILE.join(appDirectory, "Frameworks")
|
||||||
|
path:aFramework
|
||||||
|
isDirectory:YES
|
||||||
|
callback:returnPath];
|
||||||
|
|
||||||
|
if (!frameworkPath)
|
||||||
|
frameworkPath = [self findInInstalledFrameworks:aFramework isDirectory:YES callback:returnPath];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
frameworkPath = FILE.canonical(aFramework);
|
||||||
|
|
||||||
|
if (!frameworkPath)
|
||||||
|
[self failWithMessage:@"Cannot find the framework \"" + aFramework + "\""];
|
||||||
|
|
||||||
|
CPLog.debug("Loading framework: " + frameworkPath);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// CPBundle is a bit loquacious with logging, we will defer
|
||||||
|
// logging its exceptions till later.
|
||||||
|
[self setLogLevel:-1];
|
||||||
|
|
||||||
|
var frameworkBundle = [[CPBundle alloc] initWithPath:frameworkPath];
|
||||||
|
|
||||||
|
[frameworkBundle loadWithDelegate:nil];
|
||||||
|
[self setLogLevel:verbosity];
|
||||||
|
|
||||||
|
[self loadNSClassesFromBundle:frameworkBundle];
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
[self setLogLevel:verbosity];
|
||||||
|
}
|
||||||
|
|
||||||
|
require("browser/timeout").serviceTimeouts();
|
||||||
|
});
|
||||||
|
|
||||||
|
aCallback();
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)loadNSClassesFromBundle:(CPBundle)aBundle
|
||||||
|
{
|
||||||
|
// See if the framework defines NS classes
|
||||||
|
var nsClasses = [aBundle objectForInfoDictionaryKey:@"IBClasses"] || [],
|
||||||
|
bundlePath = [aBundle bundlePath];
|
||||||
|
|
||||||
|
for (var i = 0; i < nsClasses.length; ++i)
|
||||||
|
{
|
||||||
|
if (userNSClasses.indexOf(nsClasses[i]) >= 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var path = FILE.join(bundlePath, "NS_" + nsClasses[i] + ".j");
|
||||||
|
|
||||||
|
objj_importFile(path, YES);
|
||||||
|
CPLog.debug("Imported NS class: %s", path);
|
||||||
|
|
||||||
|
userNSClasses.push(nsClasses[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPArray)getThemeList:(JSObject)options
|
||||||
|
{
|
||||||
|
var defaultTheme = options.defaultTheme;
|
||||||
|
|
||||||
|
if (!defaultTheme)
|
||||||
|
defaultTheme = [infoPlist valueForKey:@"CPDefaultTheme"];
|
||||||
|
|
||||||
|
if (!defaultTheme)
|
||||||
|
defaultTheme = [self getAppKitDefaultThemeName];
|
||||||
|
|
||||||
|
var themes = [CPSet setWithObject:defaultTheme];
|
||||||
|
|
||||||
|
if (options.auxThemes)
|
||||||
|
[themes addObjectsFromArray:options.auxThemes];
|
||||||
|
|
||||||
|
var auxThemes = infoPlist.valueForKey("CPAuxiliaryThemes");
|
||||||
|
|
||||||
|
if (auxThemes)
|
||||||
|
[themes addObjectsFromArray:auxThemes];
|
||||||
|
|
||||||
|
// Now remove the default theme, get the list as an array, and insert the default at the beginning
|
||||||
|
[themes removeObject:defaultTheme];
|
||||||
|
|
||||||
|
var allThemes = [themes allObjects];
|
||||||
|
|
||||||
|
[allThemes insertObject:defaultTheme atIndex:0];
|
||||||
|
|
||||||
|
return allThemes;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns undefined if $CAPP_BUILD is not defined, false if path cannot be found in $CAPP_BUILD
|
||||||
|
- (id)findInCappBuild:(CPString)path isDirectory:(BOOL)isDirectory callback:(JSObject)callback
|
||||||
|
{
|
||||||
|
var cappBuild = SYS.env["CAPP_BUILD"];
|
||||||
|
|
||||||
|
if (!cappBuild)
|
||||||
|
return undefined;
|
||||||
|
|
||||||
|
cappBuild = FILE.canonical(cappBuild);
|
||||||
|
|
||||||
|
if (FILE.isDirectory(cappBuild))
|
||||||
|
{
|
||||||
|
var result = null;
|
||||||
|
|
||||||
|
for (var i = 0; i < BuildTypes.length && !result; ++i)
|
||||||
|
{
|
||||||
|
var findPath = FILE.join(cappBuild, BuildTypes[i], path);
|
||||||
|
|
||||||
|
if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath)))
|
||||||
|
result = callback(findPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id)findInInstalledFrameworks:(CPString)path isDirectory:(BOOL)isDirectory callback:(JSObject)callback
|
||||||
|
{
|
||||||
|
// NOTE: It's safe to use '/' directly in the path, we're guaranteed to be on a Mac
|
||||||
|
return [self findInFrameworks:FILE.canonical(FILE.join(SYS.prefix, "packages/cappuccino/Frameworks"))
|
||||||
|
path:path
|
||||||
|
isDirectory:isDirectory
|
||||||
|
callback:callback];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (id)findInFrameworks:(CPString)frameworksPath path:(CPString)path isDirectory:(BOOL)isDirectory callback:(JSObject)callback
|
||||||
|
{
|
||||||
|
var result = null,
|
||||||
|
findPath = FILE.join(frameworksPath, "Debug", path);
|
||||||
|
|
||||||
|
if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath)))
|
||||||
|
result = callback(findPath);
|
||||||
|
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
findPath = FILE.join(frameworksPath, path);
|
||||||
|
|
||||||
|
if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath)))
|
||||||
|
result = callback(findPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPString)getAppKitDefaultThemeName
|
||||||
|
{
|
||||||
|
var callback = function(path) { return [self themeNameFromPropertyList:path]; },
|
||||||
|
themeName = [self findInCappBuild:@"AppKit/Info.plist" isDirectory:NO callback:callback];
|
||||||
|
|
||||||
|
if (!themeName)
|
||||||
|
themeName = [self findInInstalledFrameworks:@"AppKit/Info.plist" isDirectory:NO callback:callback];
|
||||||
|
|
||||||
|
return themeName || DefaultTheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPString)themeNameFromPropertyList:(CPString)path
|
||||||
|
{
|
||||||
|
if (!FILE.isReadable(path))
|
||||||
|
return nil;
|
||||||
|
|
||||||
|
var themeName = nil,
|
||||||
|
plist = CFPropertyList.readPropertyListFromFile(path);
|
||||||
|
|
||||||
|
if (plist)
|
||||||
|
themeName = plist.valueForKey("CPDefaultTheme");
|
||||||
|
|
||||||
|
return themeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPArray)loadThemesFromList:(CPArray)themeList
|
||||||
|
{
|
||||||
|
var themes = [];
|
||||||
|
|
||||||
|
for (var i = 0; i < themeList.length; ++i)
|
||||||
|
themes.push([self loadThemeNamed:themeList[i] directory:resourcesDirectory]);
|
||||||
|
|
||||||
|
return themes;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPTheme)loadThemeNamed:(CPString)themeName directory:(CPString)themeDir
|
||||||
|
{
|
||||||
|
if (/^.+\.blend$/.test(themeName))
|
||||||
|
themeName = themeName.substr(0, themeName.length - ".blend".length);
|
||||||
|
|
||||||
|
var blendName = themeName + ".blend",
|
||||||
|
themePath = "";
|
||||||
|
|
||||||
|
if (themeDir)
|
||||||
|
{
|
||||||
|
themePath = FILE.join(FILE.canonical(themeDir), blendName);
|
||||||
|
|
||||||
|
if (!FILE.isDirectory(themePath))
|
||||||
|
themePath = themeDir = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!themeDir)
|
||||||
|
{
|
||||||
|
var returnPath = function(path) { return path; };
|
||||||
|
|
||||||
|
themePath = [self findInCappBuild:blendName isDirectory:YES callback:returnPath];
|
||||||
|
|
||||||
|
if (!themePath)
|
||||||
|
themePath = [self findInInstalledFrameworks:@"AppKit/Resources/" + blendName isDirectory:YES callback:returnPath];
|
||||||
|
|
||||||
|
// Last resort, try the cwd
|
||||||
|
if (!themePath)
|
||||||
|
{
|
||||||
|
var path = FILE.canonical(blendName);
|
||||||
|
|
||||||
|
if (FILE.isDirectory(path))
|
||||||
|
themePath = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!themePath)
|
||||||
|
[self failWithMessage:@"Cannot find the theme \"" + themeName + "\""];
|
||||||
|
|
||||||
|
return [self readThemeWithName:themeName atPath:themePath];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPTheme)readThemeWithName:(CPString)name atPath:(CPString)path
|
||||||
|
{
|
||||||
|
var themeBundle = new CFBundle(path);
|
||||||
|
|
||||||
|
// By default when we try to load the bundle it will use the CommonJS environment,
|
||||||
|
// but we want the Browser environment. So we override mostEligibleEnvironment().
|
||||||
|
themeBundle.mostEligibleEnvironment = function() { return "Browser"; }
|
||||||
|
themeBundle.load();
|
||||||
|
|
||||||
|
var keyedThemes = themeBundle.valueForInfoDictionaryKey("CPKeyedThemes");
|
||||||
|
|
||||||
|
if (!keyedThemes)
|
||||||
|
[self failWithMessage:@"Could not find the keyed themes in the theme: " + path];
|
||||||
|
|
||||||
|
var index = keyedThemes.indexOf(name + ".keyedtheme");
|
||||||
|
|
||||||
|
if (index < 0)
|
||||||
|
[self failWithMessage:@"Could not find the main theme data (" + name + ".keyedtheme" + ") in the theme: " + path];
|
||||||
|
|
||||||
|
// Load the keyed theme data, making sure to resolve it
|
||||||
|
var resourcePath = themeBundle.pathForResource(keyedThemes[index]),
|
||||||
|
themeData = new CFMutableData();
|
||||||
|
|
||||||
|
themeData.setRawString(StaticResource.resourceAtURL(new CFURL(resourcePath), true).contents());
|
||||||
|
|
||||||
|
var theme = [CPKeyedUnarchiver unarchiveObjectWithData:themeData];
|
||||||
|
|
||||||
|
if (!theme)
|
||||||
|
[self failWithMessage:@"Could not unarchive the theme at: " + path];
|
||||||
|
|
||||||
|
CPLog.debug("Loaded theme: " + path);
|
||||||
|
return theme;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (JSObject)readConfigFile:(CPString)configFile inputFile:(CPString)inputFile
|
||||||
|
{
|
||||||
|
var configPath = null,
|
||||||
|
path;
|
||||||
|
|
||||||
|
// First see if the user passed a config file path
|
||||||
|
if (configFile)
|
||||||
|
{
|
||||||
|
path = FILE.canonical(configFile);
|
||||||
|
|
||||||
|
if (!FILE.isReadable(path))
|
||||||
|
[self failWithMessage:@"Cannot find the config file: " + path];
|
||||||
|
|
||||||
|
configPath = path;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
path = FILE.join(appDirectory, "Info.plist");
|
||||||
|
|
||||||
|
if (FILE.isReadable(path))
|
||||||
|
configPath = path;
|
||||||
|
}
|
||||||
|
|
||||||
|
var plist = null;
|
||||||
|
|
||||||
|
if (configPath)
|
||||||
|
{
|
||||||
|
var plist = FILE.read(configPath);
|
||||||
|
|
||||||
|
if (!plist)
|
||||||
|
[self failWithMessage:@"Could not read the Info.plist at: " + configPath];
|
||||||
|
|
||||||
|
plist = CFPropertyList.propertyListFromString(plist);
|
||||||
|
|
||||||
|
if (!plist)
|
||||||
|
[self failWithMessage:@"Could not parse the Info.plist at: " + configPath];
|
||||||
|
}
|
||||||
|
|
||||||
|
return {path: configPath, plist: plist};
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPArray)getModifiedNibsInDirectory:(CPString)path
|
||||||
|
{
|
||||||
|
var nibs = new FileList(FILE.join(path, "*.[nx]ib")).items(),
|
||||||
|
count = nibs.length,
|
||||||
|
newNibInfo = {},
|
||||||
|
modifiedNibs = [];
|
||||||
|
|
||||||
|
while (count--)
|
||||||
|
{
|
||||||
|
var nib = nibs[count];
|
||||||
|
|
||||||
|
newNibInfo[nib] = FILE.mtime(nib);
|
||||||
|
|
||||||
|
if (!nibInfo.hasOwnProperty(nib))
|
||||||
|
modifiedNibs.push(["add", nib]);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (newNibInfo[nib] - nibInfo[nib] !== 0)
|
||||||
|
modifiedNibs.push(["mod", nib]);
|
||||||
|
|
||||||
|
// Remove matching nibs so that we leave
|
||||||
|
// deleted nibs in nibInfo.
|
||||||
|
delete nibInfo[nib];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var nib in nibInfo)
|
||||||
|
if (nibInfo.hasOwnProperty(nib))
|
||||||
|
CPLog.info(">> %s: %s", CPLogColorize("Deleted", "warn"), nib);
|
||||||
|
|
||||||
|
nibInfo = newNibInfo;
|
||||||
|
|
||||||
|
return modifiedNibs;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)printVersionAndExit
|
||||||
|
{
|
||||||
|
[self printVersion];
|
||||||
|
OS.exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)printVersion
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
There are two usual possibilities for the location of the nib2cib binary.
|
||||||
|
If we are executing the installed narwhal binary, the location is:
|
||||||
|
<narwhal>/packages/cappuccino/bin/nib2cib
|
||||||
|
If we are executing the built binary, the location is:
|
||||||
|
<CAPP_BUILD>/Debug|Release/CommonJS/cappuccino/bin/nib2cib
|
||||||
|
|
||||||
|
Base on these paths we can locate nib2cib's Info.plist.
|
||||||
|
*/
|
||||||
|
var path = FILE.dirname(FILE.dirname(FILE.canonical(SYS.args[0]))),
|
||||||
|
version = null;
|
||||||
|
|
||||||
|
if (FILE.basename(path) === "narwhal")
|
||||||
|
path = FILE.join(path, "packages", "cappuccino");
|
||||||
|
|
||||||
|
path = FILE.join(path, "lib", "nib2cib", "Info.plist");
|
||||||
|
|
||||||
|
if (FILE.isReadable(path))
|
||||||
|
{
|
||||||
|
var plist = FILE.read(path);
|
||||||
|
|
||||||
|
if (!plist)
|
||||||
|
return;
|
||||||
|
|
||||||
|
plist = CFPropertyList.propertyListFromString(plist);
|
||||||
|
|
||||||
|
if (!plist)
|
||||||
|
return;
|
||||||
|
|
||||||
|
version = plist.valueForKey("CPBundleVersion");
|
||||||
|
|
||||||
|
if (version)
|
||||||
|
stream.print("nib2cib v" + version);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!version)
|
||||||
|
stream.print("<No version info available>");
|
||||||
|
}
|
||||||
|
|
||||||
|
- (CPString)exceptionReason:(JSObject)exception
|
||||||
|
{
|
||||||
|
if (typeof(exception) === "string")
|
||||||
|
return exception;
|
||||||
|
else if (exception.isa && [exception respondsToSelector:@selector(reason)])
|
||||||
|
return [exception reason];
|
||||||
|
else
|
||||||
|
return @"An unknown error occurred";
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)failWithMessage:(CPString)message
|
||||||
|
{
|
||||||
|
[CPException raise:ConverterConversionException reason:message];
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
function logFormatter(aString, aLevel, aTitle)
|
||||||
|
{
|
||||||
|
if (aLevel === "info")
|
||||||
|
return aString;
|
||||||
|
else
|
||||||
|
return CPLogColorize(aString, aLevel);
|
||||||
|
}
|
||||||
+3
-720
@@ -20,728 +20,11 @@
|
|||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@import <Foundation/Foundation.j>
|
@import "Nib2Cib.j"
|
||||||
@import <AppKit/AppKit.j>
|
|
||||||
@import <BlendKit/BlendKit.j>
|
|
||||||
|
|
||||||
@import "NSFoundation.j"
|
|
||||||
@import "NSAppKit.j"
|
|
||||||
|
|
||||||
@import "Nib2CibKeyedUnarchiver.j"
|
|
||||||
@import "Converter.j"
|
|
||||||
|
|
||||||
var FILE = require("file"),
|
|
||||||
OS = require("os"),
|
|
||||||
SYS = require("system"),
|
|
||||||
FileList = require("jake").FileList,
|
|
||||||
stream = require("narwhal/term").stream,
|
|
||||||
StaticResource = require("objective-j").StaticResource,
|
|
||||||
|
|
||||||
DefaultTheme = "Aristo",
|
|
||||||
BuildTypes = ["Debug", "Release"],
|
|
||||||
DefaultFile = "MainMenu";
|
|
||||||
|
|
||||||
var parser = new (require("narwhal/args").Parser)(),
|
|
||||||
nibInfo = {},
|
|
||||||
appDirectory = "",
|
|
||||||
resourcesDirectory = "";
|
|
||||||
|
|
||||||
|
|
||||||
function main(args)
|
function main(args)
|
||||||
{
|
{
|
||||||
try
|
var nib2cib = [[Nib2Cib alloc] initWithArgs:args];
|
||||||
{
|
|
||||||
var options = parseOptions(args);
|
|
||||||
|
|
||||||
if (options.watch)
|
[nib2cib run];
|
||||||
watch(options);
|
|
||||||
else
|
|
||||||
convert(options);
|
|
||||||
}
|
|
||||||
catch (anException)
|
|
||||||
{
|
|
||||||
CPLog.fatal(exceptionReason(anException));
|
|
||||||
OS.exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function convert(options, inputFile)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
inputFile = inputFile || getInputFile(options.args);
|
|
||||||
|
|
||||||
getAppAndResourceDirectoriesFromInputFile(inputFile, options);
|
|
||||||
|
|
||||||
var outputFile = getOutputFile(inputFile, options.args),
|
|
||||||
configInfo = readConfigFile(options.configFile || "", inputFile),
|
|
||||||
defaultTheme = null;
|
|
||||||
|
|
||||||
if (configInfo.plist)
|
|
||||||
{
|
|
||||||
var systemFontFace = configInfo.plist.valueForKey("CPSystemFontFace");
|
|
||||||
|
|
||||||
if (systemFontFace)
|
|
||||||
[CPFont setSystemFontFace:systemFontFace];
|
|
||||||
|
|
||||||
var systemFontSize = configInfo.plist.valueForKey("CPSystemFontSize");
|
|
||||||
|
|
||||||
if (systemFontSize)
|
|
||||||
[CPFont setSystemFontSize:parseFloat(systemFontSize, 10)];
|
|
||||||
|
|
||||||
if (!options.defaultTheme)
|
|
||||||
defaultTheme = configInfo.plist.valueForKey("CPDefaultTheme");
|
|
||||||
}
|
|
||||||
|
|
||||||
var themeList = getThemeList(defaultTheme || options.defaultTheme, options),
|
|
||||||
themes = loadThemes(themeList);
|
|
||||||
|
|
||||||
CPLog.info("\n-------------------------------------------------------------");
|
|
||||||
CPLog.info("Input : " + inputFile);
|
|
||||||
CPLog.info("Output : " + outputFile);
|
|
||||||
CPLog.info("Format : " + ["Auto", "Mac", "iPhone"][options.format]);
|
|
||||||
CPLog.info("Application : " + appDirectory);
|
|
||||||
CPLog.info("Resources : " + resourcesDirectory);
|
|
||||||
CPLog.info("Frameworks : " + (options.frameworks || ""));
|
|
||||||
CPLog.info("Default theme : " + themeList[0]);
|
|
||||||
CPLog.info("Extra themes : " + themeList.slice(1).join(", "));
|
|
||||||
CPLog.info("Config file : " + (configInfo.path || ""));
|
|
||||||
CPLog.info("System Font : " + [CPFont systemFontSize] + "px " + [CPFont systemFontFace]);
|
|
||||||
CPLog.info("-------------------------------------------------------------\n");
|
|
||||||
|
|
||||||
var converter = [[Converter alloc] initWithInputPath:inputFile
|
|
||||||
format:options.format
|
|
||||||
themes:themes];
|
|
||||||
|
|
||||||
[converter setOutputPath:outputFile];
|
|
||||||
[converter setResourcesPath:resourcesDirectory];
|
|
||||||
|
|
||||||
loadFrameworks(options.frameworks, options.verbosity, function()
|
|
||||||
{
|
|
||||||
[converter convert];
|
|
||||||
});
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch (anException)
|
|
||||||
{
|
|
||||||
CPLog.fatal(exceptionReason(anException));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function watch(options)
|
|
||||||
{
|
|
||||||
var verbosity = options.quiet ? -1 : options.verbosity,
|
|
||||||
watchDir = options.args[0];
|
|
||||||
|
|
||||||
if (!watchDir)
|
|
||||||
watchDir = FILE.canonical(FILE.isDirectory("Resources") ? "Resources" : ".");
|
|
||||||
else
|
|
||||||
{
|
|
||||||
watchDir = FILE.canonical(watchDir);
|
|
||||||
|
|
||||||
if (FILE.basename(watchDir) !== "Resources")
|
|
||||||
{
|
|
||||||
var path = FILE.join(watchDir, "Resources");
|
|
||||||
|
|
||||||
if (FILE.isDirectory(path))
|
|
||||||
watchDir = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!FILE.isDirectory(watchDir))
|
|
||||||
fail("Cannot find the directory: " + watchDir);
|
|
||||||
|
|
||||||
// Turn on info messages
|
|
||||||
setLogLevel(1);
|
|
||||||
|
|
||||||
var nibs = new FileList(FILE.join(watchDir, "*.[nx]ib")).items(),
|
|
||||||
count = nibs.length;
|
|
||||||
|
|
||||||
// First time through only IB files with no corresponding cib
|
|
||||||
// or a cib with an earlier or equal mtime are converted.
|
|
||||||
while (count--)
|
|
||||||
{
|
|
||||||
var nib = nibs[count],
|
|
||||||
cib = nib.substr(0, nib.length - 4) + ".cib";
|
|
||||||
|
|
||||||
if (FILE.exists(cib) && (FILE.mtime(nib) - FILE.mtime(cib)) <= 0)
|
|
||||||
nibInfo[nib] = FILE.mtime(nib);
|
|
||||||
}
|
|
||||||
|
|
||||||
CPLog.info("Watching: " + CPLogColorize(watchDir, "debug"));
|
|
||||||
CPLog.info("Press Control-C to stop...");
|
|
||||||
|
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
var modifiedNibs = getModifiedNibs(watchDir);
|
|
||||||
|
|
||||||
for (var i = 0; i < modifiedNibs.length; ++i)
|
|
||||||
{
|
|
||||||
var action = modifiedNibs[i][0],
|
|
||||||
nib = modifiedNibs[i][1],
|
|
||||||
label = action === "add" ? "Added" : "Modified",
|
|
||||||
level = action === "add" ? "info" : "debug";
|
|
||||||
|
|
||||||
CPLog.info(">> %s: %s", CPLogColorize(label, level), nib);
|
|
||||||
|
|
||||||
// Don't convert an add if there is an existing cib with a later mtime
|
|
||||||
if (action === "add")
|
|
||||||
{
|
|
||||||
var cib = nib.substr(0, nib.length - 4) + ".cib";
|
|
||||||
|
|
||||||
if (FILE.exists(cib) && (FILE.mtime(nib) - FILE.mtime(cib)) < 0)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Let the converter log however the user configured it
|
|
||||||
setLogLevel(verbosity);
|
|
||||||
|
|
||||||
var success = convert(options, nib);
|
|
||||||
|
|
||||||
setLogLevel(1);
|
|
||||||
|
|
||||||
if (success)
|
|
||||||
{
|
|
||||||
if (verbosity > 0)
|
|
||||||
stream.print();
|
|
||||||
else
|
|
||||||
CPLog.warn("Conversion successful");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
OS.sleep(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function parseOptions(args)
|
|
||||||
{
|
|
||||||
parser.usage("[--watch DIRECTORY] [INPUT_FILE [OUTPUT_FILE]]");
|
|
||||||
|
|
||||||
parser.option("--watch", "watch")
|
|
||||||
.set(true)
|
|
||||||
.help("Ask nib2cib to watch a directory for changes");
|
|
||||||
|
|
||||||
parser.option("-R", "resourcesDir")
|
|
||||||
.set()
|
|
||||||
.displayName("directory")
|
|
||||||
.help("Set the Resources directory, usually unnecessary as it is inferred from the input path");
|
|
||||||
|
|
||||||
parser.option("--default-theme", "defaultTheme")
|
|
||||||
.set()
|
|
||||||
.displayName("name")
|
|
||||||
.help("Specify a custom default theme which is not set in your Info.plist");
|
|
||||||
|
|
||||||
parser.option("-t", "--theme", "extraThemes")
|
|
||||||
.push()
|
|
||||||
.displayName("name")
|
|
||||||
.help("An additional theme loaded dynamically by your application");
|
|
||||||
|
|
||||||
parser.option("--config", "configFile")
|
|
||||||
.set()
|
|
||||||
.displayName("path")
|
|
||||||
.help("A path to an Info.plist file from which the system font and/or size can be retrieved");
|
|
||||||
|
|
||||||
// parser.option("--iphone", "format")
|
|
||||||
// .set(NibFormatIPhone)
|
|
||||||
// .help("Set format to iPhone");
|
|
||||||
|
|
||||||
parser.option("-v", "--verbose", "verbosity")
|
|
||||||
.inc()
|
|
||||||
.help("Increase verbosity level");
|
|
||||||
|
|
||||||
parser.option("-q", "--quiet", "quiet")
|
|
||||||
.set(true)
|
|
||||||
.help("No output");
|
|
||||||
|
|
||||||
parser.option("-F", "framework", "frameworks")
|
|
||||||
.push()
|
|
||||||
.help("Add a framework to load");
|
|
||||||
|
|
||||||
parser.option("--mac", "format")
|
|
||||||
.set(NibFormatMac)
|
|
||||||
.def(NibFormatUndetermined)
|
|
||||||
.help("Set format to Mac");
|
|
||||||
|
|
||||||
parser.option("--version", "showVersion")
|
|
||||||
.action(printVersionAndExit)
|
|
||||||
.help("Show the version of nib2cib and quit");
|
|
||||||
|
|
||||||
parser.helpful();
|
|
||||||
|
|
||||||
var options = parser.parse(args, null, null, true);
|
|
||||||
|
|
||||||
if (options.args.length > 2)
|
|
||||||
{
|
|
||||||
parser.printUsage(options);
|
|
||||||
OS.exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
setLogLevel(options.quiet ? -1 : options.verbosity);
|
|
||||||
|
|
||||||
if (!options.quiet && options.verbosity > 0)
|
|
||||||
printVersion();
|
|
||||||
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setLogLevel(level)
|
|
||||||
{
|
|
||||||
CPLogUnregister(CPLogPrint);
|
|
||||||
|
|
||||||
if (level === 0)
|
|
||||||
CPLogRegister(CPLogPrint, "warn", logFormatter);
|
|
||||||
else if (level === 1)
|
|
||||||
CPLogRegister(CPLogPrint, "info", logFormatter);
|
|
||||||
else if (level > 1)
|
|
||||||
CPLogRegister(CPLogPrint, null, logFormatter);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getInputFile(args)
|
|
||||||
{
|
|
||||||
var inputFile = args[0] || DefaultFile,
|
|
||||||
path = "";
|
|
||||||
|
|
||||||
if (!/^.+\.[nx]ib$/.test(inputFile))
|
|
||||||
{
|
|
||||||
if (path = findInputFile(inputFile, ".xib"))
|
|
||||||
inputFile = path;
|
|
||||||
else if (path = findInputFile(inputFile, ".nib"))
|
|
||||||
inputFile = path;
|
|
||||||
else
|
|
||||||
fail("Cannot find the input file (.xib or .nib): " + FILE.canonical(inputFile));
|
|
||||||
}
|
|
||||||
else if (path = findInputFile(inputFile))
|
|
||||||
inputFile = path;
|
|
||||||
else
|
|
||||||
fail("Could not read the input file: " + FILE.canonical(inputFile));
|
|
||||||
|
|
||||||
return FILE.canonical(inputFile);
|
|
||||||
}
|
|
||||||
|
|
||||||
function findInputFile(inputFile, extension)
|
|
||||||
{
|
|
||||||
var path = inputFile;
|
|
||||||
|
|
||||||
if (extension)
|
|
||||||
path += extension;
|
|
||||||
|
|
||||||
if (FILE.isReadable(path))
|
|
||||||
return path;
|
|
||||||
|
|
||||||
if (FILE.basename(FILE.dirname(inputFile)) !== "Resources" && FILE.isDirectory("Resources"))
|
|
||||||
{
|
|
||||||
path = FILE.resolve(path, FILE.join("Resources", FILE.basename(path)));
|
|
||||||
|
|
||||||
if (FILE.isReadable(path))
|
|
||||||
return path;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAppAndResourceDirectoriesFromInputFile(inputFile, options)
|
|
||||||
{
|
|
||||||
appDirectory = resourcesDirectory = "";
|
|
||||||
|
|
||||||
if (options.resourcesDir)
|
|
||||||
{
|
|
||||||
var path = FILE.canonical(options.resourcesDir);
|
|
||||||
|
|
||||||
if (!FILE.isDirectory(path))
|
|
||||||
fail("Cannot read resources at: " + path);
|
|
||||||
|
|
||||||
resourcesDirectory = path;
|
|
||||||
}
|
|
||||||
|
|
||||||
var parentDir = FILE.dirname(inputFile);
|
|
||||||
|
|
||||||
if (FILE.basename(parentDir) === "Resources")
|
|
||||||
{
|
|
||||||
appDirectory = FILE.dirname(parentDir);
|
|
||||||
resourcesDirectory = resourcesDirectory || parentDir;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
appDirectory = parentDir;
|
|
||||||
|
|
||||||
if (!resourcesDirectory)
|
|
||||||
{
|
|
||||||
var path = FILE.join(appDirectory, "Resources");
|
|
||||||
|
|
||||||
if (FILE.isDirectory(path))
|
|
||||||
resourcesDirectory = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function getOutputFile(inputFile, args)
|
|
||||||
{
|
|
||||||
var outputFile = null;
|
|
||||||
|
|
||||||
if (args.length > 1)
|
|
||||||
{
|
|
||||||
outputFile = args[1];
|
|
||||||
|
|
||||||
if (!/^.+\.cib$/.test(outputFile))
|
|
||||||
outputFile += ".cib";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
outputFile = FILE.join(FILE.dirname(inputFile), FILE.basename(inputFile, FILE.extension(inputFile))) + ".cib";
|
|
||||||
|
|
||||||
outputFile = FILE.canonical(outputFile);
|
|
||||||
|
|
||||||
if (!FILE.isWritable(FILE.dirname(outputFile)))
|
|
||||||
fail("Cannot write the output file at: " + outputFile);
|
|
||||||
|
|
||||||
return outputFile;
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadFrameworks(frameworkPaths, verbosity, aCallback)
|
|
||||||
{
|
|
||||||
if (!frameworkPaths || frameworkPaths.length === 0)
|
|
||||||
return aCallback();
|
|
||||||
|
|
||||||
frameworkPaths.forEach(function(aFrameworkPath)
|
|
||||||
{
|
|
||||||
setLogLevel(verbosity);
|
|
||||||
CPLog.info("Loading " + aFrameworkPath);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// CPBundle is a bit loquacious with logging, we will defer
|
|
||||||
// logging its exceptions till later.
|
|
||||||
setLogLevel(-1);
|
|
||||||
|
|
||||||
var frameworkBundle = [[CPBundle alloc] initWithPath:aFrameworkPath];
|
|
||||||
|
|
||||||
[frameworkBundle loadWithDelegate:nil];
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
setLogLevel(verbosity);
|
|
||||||
}
|
|
||||||
|
|
||||||
require("browser/timeout").serviceTimeouts();
|
|
||||||
});
|
|
||||||
|
|
||||||
aCallback();
|
|
||||||
}
|
|
||||||
|
|
||||||
function logFormatter(aString, aLevel, aTitle)
|
|
||||||
{
|
|
||||||
if (aLevel === "info")
|
|
||||||
return aString;
|
|
||||||
else
|
|
||||||
return CPLogColorize(aString, aLevel);
|
|
||||||
}
|
|
||||||
|
|
||||||
function getThemeList(defaultTheme, options)
|
|
||||||
{
|
|
||||||
var themes = [defaultTheme || getAppKitDefaultThemeName()];
|
|
||||||
|
|
||||||
if (options.extraThemes)
|
|
||||||
for (var i = 0; i < options.extraThemes.length; ++i)
|
|
||||||
if (themes.indexOf(options.extraThemes[i]) < 0)
|
|
||||||
themes.push(options.extraThemes[i]);
|
|
||||||
|
|
||||||
return themes;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns undefined if $CAPP_BUILD is not defined, false if path cannot be found in $CAPP_BUILD
|
|
||||||
function findInCappBuild(path, isDirectory, callback)
|
|
||||||
{
|
|
||||||
var cappBuild = SYS.env["CAPP_BUILD"];
|
|
||||||
|
|
||||||
if (!cappBuild)
|
|
||||||
return undefined;
|
|
||||||
|
|
||||||
cappBuild = FILE.canonical(cappBuild);
|
|
||||||
|
|
||||||
if (FILE.isDirectory(cappBuild))
|
|
||||||
{
|
|
||||||
var result = null;
|
|
||||||
|
|
||||||
for (var i = 0; i < BuildTypes.length && !result; ++i)
|
|
||||||
{
|
|
||||||
var findPath = FILE.join(cappBuild, BuildTypes[i], path);
|
|
||||||
|
|
||||||
if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath)))
|
|
||||||
result = callback(findPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function findInInstalledFrameworks(path, isDirectory, callback)
|
|
||||||
{
|
|
||||||
// NOTE: It's safe to use '/' directly in the path, we're guaranteed to be on a Mac
|
|
||||||
var frameworks = FILE.canonical(FILE.join(SYS.prefix, "packages/cappuccino/Frameworks")),
|
|
||||||
result = null,
|
|
||||||
findPath = FILE.join(frameworks, "Debug", path);
|
|
||||||
|
|
||||||
if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath)))
|
|
||||||
result = callback(findPath);
|
|
||||||
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
findPath = FILE.join(frameworks, path);
|
|
||||||
|
|
||||||
if ((isDirectory && FILE.isDirectory(findPath)) || (!isDirectory && FILE.exists(findPath)))
|
|
||||||
result = callback(findPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAppKitDefaultThemeName()
|
|
||||||
{
|
|
||||||
var callback = function(path) { return themeNameFromPropertyList(path); },
|
|
||||||
themeName = findInCappBuild("AppKit/Info.plist", false, callback);
|
|
||||||
|
|
||||||
if (!themeName)
|
|
||||||
themeName = findInInstalledFrameworks("AppKit/Info.plist", false, callback);
|
|
||||||
|
|
||||||
return themeName || DefaultTheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
function themeNameFromPropertyList(path)
|
|
||||||
{
|
|
||||||
if (!FILE.isReadable(path))
|
|
||||||
return nil;
|
|
||||||
|
|
||||||
var themeName = nil,
|
|
||||||
plist = CFPropertyList.readPropertyListFromFile(path);
|
|
||||||
|
|
||||||
if (plist)
|
|
||||||
themeName = plist.valueForKey("CPDefaultTheme");
|
|
||||||
|
|
||||||
return themeName;
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadThemes(themeList)
|
|
||||||
{
|
|
||||||
var themes = [];
|
|
||||||
|
|
||||||
for (var i = 0; i < themeList.length; ++i)
|
|
||||||
themes.push(loadTheme(themeList[i], resourcesDirectory));
|
|
||||||
|
|
||||||
return themes;
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadTheme(themeName, themeDir)
|
|
||||||
{
|
|
||||||
if (/^.+\.blend$/.test(themeName))
|
|
||||||
themeName = themeName.substr(0, themeName.length - ".blend".length);
|
|
||||||
|
|
||||||
var blendName = themeName + ".blend",
|
|
||||||
themePath = "";
|
|
||||||
|
|
||||||
if (themeDir)
|
|
||||||
{
|
|
||||||
themePath = FILE.join(FILE.canonical(themeDir), blendName);
|
|
||||||
|
|
||||||
if (!FILE.isDirectory(themePath))
|
|
||||||
themePath = themeDir = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!themeDir)
|
|
||||||
{
|
|
||||||
var returnPath = function(path) { return path; };
|
|
||||||
|
|
||||||
themePath = findInCappBuild(blendName, true, returnPath);
|
|
||||||
|
|
||||||
if (!themePath)
|
|
||||||
themePath = findInInstalledFrameworks("AppKit/Resources/" + blendName, true, returnPath);
|
|
||||||
|
|
||||||
// Last resort, try the cwd
|
|
||||||
if (!themePath)
|
|
||||||
{
|
|
||||||
var path = FILE.canonical(blendName);
|
|
||||||
|
|
||||||
if (FILE.isDirectory(path))
|
|
||||||
themePath = path;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!themePath)
|
|
||||||
fail('Cannot find the theme "' + themeName + '"');
|
|
||||||
|
|
||||||
return readTheme(themeName, themePath);
|
|
||||||
}
|
|
||||||
|
|
||||||
function readTheme(name, path)
|
|
||||||
{
|
|
||||||
var themeBundle = new CFBundle(path);
|
|
||||||
|
|
||||||
// By default when we try to load the bundle it will use the CommonJS environment,
|
|
||||||
// but we want the Browser environment. So we override mostEligibleEnvironment().
|
|
||||||
themeBundle.mostEligibleEnvironment = function() { return "Browser"; }
|
|
||||||
themeBundle.load();
|
|
||||||
|
|
||||||
var keyedThemes = themeBundle.valueForInfoDictionaryKey("CPKeyedThemes");
|
|
||||||
|
|
||||||
if (!keyedThemes)
|
|
||||||
fail("Could not find the keyed themes in the theme: " + path);
|
|
||||||
|
|
||||||
var index = keyedThemes.indexOf(name + ".keyedtheme");
|
|
||||||
|
|
||||||
if (index < 0)
|
|
||||||
fail("Could not find the main theme data (" + name + ".keyedtheme" + ") in the theme: " + path);
|
|
||||||
|
|
||||||
// Load the keyed theme data, making sure to resolve it
|
|
||||||
var resourcePath = themeBundle.pathForResource(keyedThemes[index]),
|
|
||||||
themeData = new CFMutableData();
|
|
||||||
|
|
||||||
themeData.setRawString(StaticResource.resourceAtURL(new CFURL(resourcePath), true).contents());
|
|
||||||
|
|
||||||
var theme = [CPKeyedUnarchiver unarchiveObjectWithData:themeData];
|
|
||||||
|
|
||||||
if (!theme)
|
|
||||||
fail("Could not unarchive the theme at: " + path);
|
|
||||||
|
|
||||||
CPLog.debug("Loaded theme: " + path);
|
|
||||||
return theme;
|
|
||||||
}
|
|
||||||
|
|
||||||
function readConfigFile(configFile, inputFile)
|
|
||||||
{
|
|
||||||
var configPath = null,
|
|
||||||
path;
|
|
||||||
|
|
||||||
// First see if the user passed a config file path
|
|
||||||
if (configFile)
|
|
||||||
{
|
|
||||||
path = FILE.canonical(configFile);
|
|
||||||
|
|
||||||
if (!FILE.isReadable(path))
|
|
||||||
fail("Cannot find the config file: " + path);
|
|
||||||
|
|
||||||
configPath = path;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
path = FILE.join(appDirectory, "Info.plist");
|
|
||||||
|
|
||||||
if (FILE.isReadable(path))
|
|
||||||
configPath = path;
|
|
||||||
}
|
|
||||||
|
|
||||||
var plist = null;
|
|
||||||
|
|
||||||
if (configPath)
|
|
||||||
{
|
|
||||||
var plist = FILE.read(configPath);
|
|
||||||
|
|
||||||
if (!plist)
|
|
||||||
fail("Could not read the Info.plist at: " + configPath);
|
|
||||||
|
|
||||||
plist = CFPropertyList.propertyListFromString(plist);
|
|
||||||
|
|
||||||
if (!plist)
|
|
||||||
fail("Could not parse the Info.plist at: " + configPath);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {path: configPath, plist: plist};
|
|
||||||
}
|
|
||||||
|
|
||||||
function getModifiedNibs(path)
|
|
||||||
{
|
|
||||||
var nibs = new FileList(FILE.join(path, "*.[nx]ib")).items(),
|
|
||||||
count = nibs.length,
|
|
||||||
newNibInfo = {},
|
|
||||||
modifiedNibs = [];
|
|
||||||
|
|
||||||
while (count--)
|
|
||||||
{
|
|
||||||
var nib = nibs[count];
|
|
||||||
|
|
||||||
newNibInfo[nib] = FILE.mtime(nib);
|
|
||||||
|
|
||||||
if (!nibInfo.hasOwnProperty(nib))
|
|
||||||
modifiedNibs.push(["add", nib]);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (newNibInfo[nib] - nibInfo[nib] !== 0)
|
|
||||||
modifiedNibs.push(["mod", nib]);
|
|
||||||
|
|
||||||
// Remove matching nibs so that we leave
|
|
||||||
// deleted nibs in nibInfo.
|
|
||||||
delete nibInfo[nib];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var nib in nibInfo)
|
|
||||||
if (nibInfo.hasOwnProperty(nib))
|
|
||||||
CPLog.info(">> %s: %s", CPLogColorize("Deleted", "warn"), nib);
|
|
||||||
|
|
||||||
nibInfo = newNibInfo;
|
|
||||||
|
|
||||||
return modifiedNibs;
|
|
||||||
}
|
|
||||||
|
|
||||||
function printVersionAndExit()
|
|
||||||
{
|
|
||||||
printVersion();
|
|
||||||
OS.exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
function printVersion()
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
There are two usual possibilities for the location of the nib2cib binary.
|
|
||||||
If we are executing the installed narwhal binary, the location is:
|
|
||||||
<narwhal>/packages/cappuccino/bin/nib2cib
|
|
||||||
If we are executing the built binary, the location is:
|
|
||||||
<CAPP_BUILD>/Debug|Release/CommonJS/cappuccino/bin/nib2cib
|
|
||||||
|
|
||||||
Base on these paths we can locate nib2cib's Info.plist.
|
|
||||||
*/
|
|
||||||
var path = FILE.dirname(FILE.dirname(FILE.canonical(SYS.args[0]))),
|
|
||||||
version = null;
|
|
||||||
|
|
||||||
if (FILE.basename(path) === "narwhal")
|
|
||||||
path = FILE.join(path, "packages", "cappuccino");
|
|
||||||
|
|
||||||
path = FILE.join(path, "lib", "nib2cib", "Info.plist");
|
|
||||||
|
|
||||||
if (FILE.isReadable(path))
|
|
||||||
{
|
|
||||||
var plist = FILE.read(path);
|
|
||||||
|
|
||||||
if (!plist)
|
|
||||||
return;
|
|
||||||
|
|
||||||
plist = CFPropertyList.propertyListFromString(plist);
|
|
||||||
|
|
||||||
if (!plist)
|
|
||||||
return;
|
|
||||||
|
|
||||||
version = plist.valueForKey("CPBundleVersion");
|
|
||||||
|
|
||||||
if (version)
|
|
||||||
stream.print("nib2cib v" + version);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!version)
|
|
||||||
stream.print("<No version info available>");
|
|
||||||
}
|
|
||||||
|
|
||||||
function exceptionReason(exception)
|
|
||||||
{
|
|
||||||
if (typeof(exception) === "string")
|
|
||||||
return exception;
|
|
||||||
else if (exception.isa && [exception respondsToSelector:@selector(reason)])
|
|
||||||
return [exception reason];
|
|
||||||
else
|
|
||||||
return "An unknown error occurred";
|
|
||||||
}
|
|
||||||
|
|
||||||
function fail(message)
|
|
||||||
{
|
|
||||||
[CPException raise:ConverterConversionException reason:message];
|
|
||||||
}
|
}
|
||||||
|
|||||||
+72
-5
@@ -1,6 +1,7 @@
|
|||||||
.Dd April 3, 2011
|
.Dd April 3, 2011
|
||||||
.Os "Cappuccino"
|
.Os "Cappuccino"
|
||||||
.Dt NIB2CIB 1 "PRM"
|
.Dt NIB2CIB 1 "PRM"
|
||||||
|
.nh
|
||||||
.\"-----------------------------------------------------------------------------------------
|
.\"-----------------------------------------------------------------------------------------
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
.\"-----------------------------------------------------------------------------------------
|
.\"-----------------------------------------------------------------------------------------
|
||||||
@@ -154,8 +155,15 @@ options, one for each theme that you load.
|
|||||||
.Pp
|
.Pp
|
||||||
Themes are searched for in the Resources, $CAPP_BUILD/Debug and
|
Themes are searched for in the Resources, $CAPP_BUILD/Debug and
|
||||||
$CAPP_BUILD/Release directories.
|
$CAPP_BUILD/Release directories.
|
||||||
|
.Pp
|
||||||
|
If you have a list of auxiliary themes in your Info.plist using the
|
||||||
|
.Ar CPAuxiliaryThemes
|
||||||
|
item,
|
||||||
|
.Nm
|
||||||
|
will load them automatically, you do not have to do anything special.
|
||||||
|
.Nm
|
||||||
.\"-----------------------------------------------------------------------------------------
|
.\"-----------------------------------------------------------------------------------------
|
||||||
.Sh "COMMON OPTIONS"
|
.Sh "OPTIONS"
|
||||||
.\"-----------------------------------------------------------------------------------------
|
.\"-----------------------------------------------------------------------------------------
|
||||||
The following options are available in watch mode or single mode:
|
The following options are available in watch mode or single mode:
|
||||||
.Bl -tag -width 4n
|
.Bl -tag -width 4n
|
||||||
@@ -192,7 +200,7 @@ use this option, as
|
|||||||
uses the Info.plist in the application directory, which is inferred from
|
uses the Info.plist in the application directory, which is inferred from
|
||||||
the input file.
|
the input file.
|
||||||
.It Fl F
|
.It Fl F
|
||||||
Specify the path of a framework to load before converting. This is only useful if:
|
Specify the name or path of a framework to load before converting. This is only useful if:
|
||||||
.Bl -dash -width 0n -hang
|
.Bl -dash -width 0n -hang
|
||||||
.It
|
.It
|
||||||
Your IB files use classes from the framework.
|
Your IB files use classes from the framework.
|
||||||
@@ -202,13 +210,33 @@ Those classes need to serialize/deserialize more data than their superclasses.
|
|||||||
Those classes implement encodeWithCoder: and initWithCoder:.
|
Those classes implement encodeWithCoder: and initWithCoder:.
|
||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
This option may be used multiple times to load multiple frameworks.
|
This option may be used multiple times to load multiple frameworks. If the argument
|
||||||
|
contains a "/" character, it is considered to be a relative or absolute path and
|
||||||
|
the framework is searched for at that location. Otherwise it is considered a framework
|
||||||
|
name and is searched for in the following directories:
|
||||||
|
.Bl -ohang -offset 4n
|
||||||
|
.It $CAPP_BUILD/Debug
|
||||||
|
.It $CAPP_BUILD/Release
|
||||||
|
.It <App>/Frameworks/Debug
|
||||||
|
.It <App>/Frameworks
|
||||||
|
.It <narwhal>/packages/cappuccino/Frameworks/Debug
|
||||||
|
.It <narwhal>/packages/cappuccino/Frameworks
|
||||||
|
.El
|
||||||
.It Fl \-quiet
|
.It Fl \-quiet
|
||||||
Tells
|
Tells
|
||||||
.Nm
|
.Nm
|
||||||
to output nothing. This is useful if you are using
|
to output nothing. This is useful if you are using
|
||||||
.Nm
|
.Nm
|
||||||
in a shell script and are only interested in the return value.
|
in a shell script and are only interested in the return value. Note that this
|
||||||
|
option overrides the
|
||||||
|
.Fl v
|
||||||
|
option.
|
||||||
|
.It Fl \-no-stored-options
|
||||||
|
Tells
|
||||||
|
.Nm
|
||||||
|
not to read stored options. See
|
||||||
|
.Sy Stored Options
|
||||||
|
below for more information.
|
||||||
.It Fl \-version
|
.It Fl \-version
|
||||||
Prints the current version of
|
Prints the current version of
|
||||||
.Nm
|
.Nm
|
||||||
@@ -221,7 +249,46 @@ Displays
|
|||||||
usage and options.
|
usage and options.
|
||||||
.El
|
.El
|
||||||
.\"-----------------------------------------------------------------------------------------
|
.\"-----------------------------------------------------------------------------------------
|
||||||
|
.Ss "Stored Options"
|
||||||
|
.\"-----------------------------------------------------------------------------------------
|
||||||
|
To make it easier to use nib2cib in an automated way, you can store command line options
|
||||||
|
that will apply to converted xibs/nibs. To store command line options, you enter the
|
||||||
|
options on a single line into a text file. For example, if you always want to set
|
||||||
|
"MyTheme" as the default theme, you would create a text file with this line:
|
||||||
|
.Pp
|
||||||
|
.D1 --default-theme MyTheme
|
||||||
|
.Pp
|
||||||
|
If an option takes a parameter and the parameter contains spaces, it must be enclosed in
|
||||||
|
single or double quotes. You may store options in the following three places, in increasing
|
||||||
|
order of precedence:
|
||||||
|
.Bl -ohang -offset 4n
|
||||||
|
.It Em ~/.nib2cibconfig
|
||||||
|
nib2cib options that apply to all nibs converted under your user account.
|
||||||
|
.It Em <app>/nib2cib.conf
|
||||||
|
nib2cib options that apply to all nibs in <app>/Resources.
|
||||||
|
.It Em <app>/Resources/<xib-or-nib-basename>.conf
|
||||||
|
nib2cib options that apply to a specific xib or nib. For example, if the xib
|
||||||
|
is called MainMenu.xib, the stored options file would be MainMenu.conf.
|
||||||
|
.El
|
||||||
|
.Pp
|
||||||
|
Each of these files is read in the order listed above, and if it exists, its options
|
||||||
|
are merged with the previous file's options. Options in later files (more specific)
|
||||||
|
override options in earlier files (more generic). After all of the stored options
|
||||||
|
are merged, the command line options are merged in. Thus command line options always
|
||||||
|
override stored options.
|
||||||
|
.Pp
|
||||||
|
Using stored options is especially useful if your xibs/nibs use custom themes or
|
||||||
|
frameworks. By using stored options, you can avoid remembering (or forgetting!) to
|
||||||
|
specify the theme or framework every time you invoke
|
||||||
|
.Nm .
|
||||||
|
.Pp
|
||||||
|
To prevent
|
||||||
|
.Nm
|
||||||
|
from reading stored options, and thus only use command line options, use the
|
||||||
|
.Fl \-no-stored-options
|
||||||
|
option on the command line.
|
||||||
|
.\"-----------------------------------------------------------------------------------------
|
||||||
.Sh "RETURN VALUES"
|
.Sh "RETURN VALUES"
|
||||||
.\"-----------------------------------------------------------------------------------------
|
.\"-----------------------------------------------------------------------------------------
|
||||||
.Nm
|
.Nm
|
||||||
returns 0 for a successful conversion and >0 if an error occurred.
|
returns 0 for a successful conversion and >0 if an error occurred.
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
source.. = src/
|
||||||
|
output.. = bin/
|
||||||
|
bin.includes = META-INF/,\
|
||||||
|
content/,\
|
||||||
|
patch/,\
|
||||||
|
.
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
repositories.remote = ["http://release.intalio.com/m2repo"]
|
||||||
|
#, "http://www.intalio.org/public/maven2", "http://dist.codehaus.org/mule/dependencies/maven2", "http://repository.jboss.com/maven2", "http://repo1.maven.org/maven2", "http://mirrors.ibiblio.org/pub/mirrors/maven2" ]
|
||||||
|
|
||||||
|
repositories.release_to[:username] ||= "release"
|
||||||
|
repositories.release_to[:url] ||= "sftp://release.intalio.com/home/release/m2repo"
|
||||||
|
repositories.release_to[:permissions] ||= 0664
|
||||||
Reference in New Issue
Block a user