Skip to content

Commit

Permalink
Make CPButton archive its key equivalents, and make nib2cib support t…
Browse files Browse the repository at this point in the history
…he feature.
  • Loading branch information
Ross Boucher committed Jun 10, 2010
1 parent 9ab446b commit 421ae6b
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 7 deletions.
14 changes: 13 additions & 1 deletion AppKit/CPButton.j
Expand Up @@ -629,7 +629,9 @@ var CPButtonImageKey = @"CPButtonImageKey",
CPButtonTitleKey = @"CPButtonTitleKey",
CPButtonAlternateTitleKey = @"CPButtonAlternateTitleKey",
CPButtonIsBorderedKey = @"CPButtonIsBorderedKey",
CPButtonImageDimsWhenDisabledKey = @"CPButtonImageDimsWhenDisabledKey";
CPButtonImageDimsWhenDisabledKey = @"CPButtonImageDimsWhenDisabledKey",
CPButtonKeyEquivalentKey = @"CPButtonKeyEquivalentKey",
CPButtonKeyEquivalentMaskKey = @"CPButtonKeyEquivalentMaskKey";

@implementation CPButton (CPCoding)

Expand All @@ -653,6 +655,11 @@ var CPButtonImageKey = @"CPButtonImageKey",

[self setImageDimsWhenDisabled:[aCoder decodeObjectForKey:CPButtonImageDimsWhenDisabledKey]];

if ([aCoder containsValueForKey:CPButtonKeyEquivalentKey])
[self setKeyEquivalent:CFData.decodeBase64ToString([aCoder decodeObjectForKey:CPButtonKeyEquivalentKey])];

[self setKeyEquivalentModifierMask:[aCoder decodeObjectForKey:CPButtonKeyEquivalentMaskKey]];

[self setNeedsLayout];
[self setNeedsDisplay:YES];
}
Expand All @@ -675,6 +682,11 @@ var CPButtonImageKey = @"CPButtonImageKey",
[aCoder encodeObject:_alternateTitle forKey:CPButtonAlternateTitleKey];

[aCoder encodeObject:[self imageDimsWhenDisabled] forKey:CPButtonImageDimsWhenDisabledKey];

if (_keyEquivalent)
[aCoder encodeObject:CFData.encodeBase64String(_keyEquivalent) forKey:CPButtonKeyEquivalentKey];

[aCoder encodeInt:_keyEquivalentModifierMask forKey:CPButtonKeyEquivalentMaskKey];
}

@end
Expand Down
12 changes: 9 additions & 3 deletions Objective-J/CFPropertyList.js
Expand Up @@ -306,6 +306,8 @@ var XML_XML = "xml",
#define PARENT_NODE(anXMLNode) (anXMLNode.parentNode)
#define DOCUMENT_ELEMENT(aDocument) (aDocument.documentElement)

#define HAS_ATTRIBUTE_VALUE(anXMLNode, anAttributeName, aValue) (anXMLNode.getAttribute(anAttributeName) === aValue)

#define IS_OF_TYPE(anXMLNode, aType) (NODE_NAME(anXMLNode) === aType)
#define IS_PLIST(anXMLNode) IS_OF_TYPE(anXMLNode, PLIST_PLIST)

Expand Down Expand Up @@ -559,13 +561,17 @@ CFPropertyList.propertyListFromXML = function(/*String | XMLNode*/ aStringOrXMLN
case PLIST_DICTIONARY: object = new CFMutableDictionary();
containers.push(object);
break;

case PLIST_NUMBER_REAL: object = parseFloat(CHILD_VALUE(XMLNode));
break;
case PLIST_NUMBER_INTEGER: object = parseInt(CHILD_VALUE(XMLNode), 10);
break;

case PLIST_STRING: object = decodeHTMLComponent(FIRST_CHILD(XMLNode) ? CHILD_VALUE(XMLNode) : "");

case PLIST_STRING: if (HAS_ATTRIBUTE_VALUE(XMLNode, "type", "base64"))
object = FIRST_CHILD(XMLNode) ? CFData.decodeBase64ToString(CHILD_VALUE(XMLNode)) : "";
else
object = decodeHTMLComponent(FIRST_CHILD(XMLNode) ? CHILD_VALUE(XMLNode) : "");

break;

case PLIST_BOOLEAN_TRUE: object = YES;
Expand Down
6 changes: 3 additions & 3 deletions Tools/nib2cib/Converter.j
Expand Up @@ -121,9 +121,9 @@ ConverterConversionException = @"ConverterConversionException";
else
plistContents = plistContents.replace(/\<key\>\s*CF\$UID\s*\<\/key\>/g, "<key>CP$UID</key>");

plistContents = plistContents.replace(/\u001b/g, function(c) {
CPLog.warn("Warning: Stripping character 0x"+c.charCodeAt(0).toString(16));
return "";
plistContents = plistContents.replace(/<string>[\u0000-\u0008\u000B\u000C\u000E-\u001F]<\/string>/g, function(c) {
CPLog.warn("Warning: Converting character 0x"+c.charCodeAt(8).toString(16)+" to base64 representation");
return "<string type=\"base64\">"+CFData.encodeBase64String(c.charAt(8))+"</string>";
});

return [CPData dataWithRawString:plistContents];
Expand Down
9 changes: 9 additions & 0 deletions Tools/nib2cib/NSButton.j
Expand Up @@ -180,6 +180,9 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
}
}

[self setKeyEquivalent:[cell keyEquivalent]];
[self setKeyEquivalentModifierMask:[cell keyEquivalentModifierMask]];

return [self NS_initWithCoder:aCoder];
}

Expand All @@ -203,6 +206,9 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;

CPString _title @accessors(readonly, getter=title);
CPImage _alternateImage @accessors(readonly, getter=alternateImage);

CPString _keyEquivalent @accessors(readonly, getter=keyEquivalent);
unsigned _keyEquivalentModifierMask @accessors(readonly, getter=keyEquivalentModifierMask);
}

- (id)initWithCoder:(CPCoder)aCoder
Expand All @@ -223,6 +229,9 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
_objectValue = [self state];

_alternateImage = [aCoder decodeObjectForKey:@"NSAlternateImage"];

_keyEquivalent = [aCoder decodeObjectForKey:@"NSKeyEquivalent"];
_keyEquivalentModifierMask = buttonFlags2 >> 8;
}

return self;
Expand Down

0 comments on commit 421ae6b

Please sign in to comment.