diff --git a/AppKit/Cib/_CPCibCustomResource.j b/AppKit/Cib/_CPCibCustomResource.j
index 413e888cb..63bb24a4f 100644
--- a/AppKit/Cib/_CPCibCustomResource.j
+++ b/AppKit/Cib/_CPCibCustomResource.j
@@ -35,7 +35,10 @@
var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey",
_CPCibCustomResourceResourceNameKey = @"_CPCibCustomResourceResourceNameKey",
- _CPCibCustomResourcePropertiesKey = @"_CPCibCustomResourcePropertiesKey";
+ _CPCibCustomResourcePropertiesKey = @"_CPCibCustomResourcePropertiesKey",
+
+ _CPCibCustomResourceTemplateImageMap = nil;
+
@implementation _CPCibCustomResource : CPObject
{
@@ -45,6 +48,16 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey",
CPBundle _bundle;
}
++ (void)initialize
+{
+ if (self !== [_CPCibCustomResource class])
+ return;
+
+ _CPCibCustomResourceTemplateImageMap = @{
+ "CPAddTemplate": "button-image-plus",
+ "CPRemoveTemplate": "button-image-minus"
+ };
+}
+ (id)imageResourceWithName:(CPString)aResourceName size:(CGSize)aSize
{
return [[self alloc] initWithClassName:@"CPImage" resourceName:aResourceName properties:@{ @"size": aSize }];
@@ -98,12 +111,12 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey",
(![aCoder respondsToSelector:@selector(awakenCustomResources)] || [aCoder awakenCustomResources]))
if (_className === @"CPImage")
{
- if (_resourceName == "CPAddTemplate")
- return [[CPTheme defaultTheme] valueForAttributeWithName:@"button-image-plus" forClass:[CPButtonBar class]];
- else if (_resourceName == "CPRemoveTemplate")
- return [[CPTheme defaultTheme] valueForAttributeWithName:@"button-image-minus" forClass:[CPButtonBar class]];
+ var templateImage = [_CPCibCustomResourceTemplateImageMap objectForKey:_resourceName];
- return [self imageFromCoder:aCoder];
+ if (templateImage)
+ return [[CPTheme defaultTheme] valueForAttributeWithName:templateImage forClass:[CPButtonBar class]];
+ else
+ return [self imageFromCoder:aCoder];
}
return self;
diff --git a/Tools/XcodeCapp/XcodeCapp/Info.plist b/Tools/XcodeCapp/XcodeCapp/Info.plist
index 0467742ec..2ac7f472c 100644
--- a/Tools/XcodeCapp/XcodeCapp/Info.plist
+++ b/Tools/XcodeCapp/XcodeCapp/Info.plist
@@ -17,11 +17,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 3.0.5
+ 3.0.6
CFBundleSignature
????
CFBundleVersion
- 3.0.5
+ 3.0.6
LSApplicationCategoryType
public.app-category.developer-tools
LSUIElement
diff --git a/Tools/nib2cib/NSCustomResource.j b/Tools/nib2cib/NSCustomResource.j
index 090c3d07e..d97d2a1b9 100644
--- a/Tools/nib2cib/NSCustomResource.j
+++ b/Tools/nib2cib/NSCustomResource.j
@@ -25,10 +25,16 @@
@import
+@import "Nib2CibException.j"
+
@global CP_NSMapClassName
var FILE = require("file"),
- imageSize = require("cappuccino/imagesize").imagesize;
+ imageSize = require("cappuccino/imagesize").imagesize,
+ supportedTemplateImages = [
+ "NSAddTemplate",
+ "NSRemoveTemplate"
+ ];
@implementation _CPCibCustomResource (NSCoding)
@@ -47,10 +53,15 @@ var FILE = require("file"),
if (_resourceName == "NSSwitch")
return nil;
- else if (_resourceName == "NSAddTemplate" || _resourceName == "NSRemoveTemplate")
+ else if (/^NS[A-Z][A-Za-z]+$/.test(_resourceName))
{
- // Defer resolving this path until runtime.
- _resourceName = _resourceName.replace("NS", "CP");
+ if (supportedTemplateImages.indexOf(_resourceName) >= 0)
+ {
+ // Defer resolving this path until runtime.
+ _resourceName = _resourceName.replace("NS", "CP");
+ }
+ else
+ [CPException raise:Nib2CibException format:@"The built in image “%@” is not supported.", _resourceName];
}
else
{