Overhaul of CPButton and supporting classes to support image positioning the way Cocoa does

This commit is contained in:
Aparajita Fishman
2010-09-08 22:13:39 +02:00
committed by Klaas Pieter Annema
parent e2741ba604
commit 6680a1f2a7
33 changed files with 1327 additions and 183 deletions
+27 -4
View File
@@ -463,8 +463,20 @@ CPButtonStateMixed = CPThemeState("mixed");
*/
- (void)sizeToFit
{
var size = [([self title] || " ") sizeWithFont:[self currentValueForThemeAttribute:@"font"]],
contentInset = [self currentValueForThemeAttribute:@"content-inset"],
[self layoutSubviews];
var size,
contentView = [self ephemeralSubviewNamed:@"content-view"];
if (contentView)
{
[contentView sizeToFit];
size = [contentView frameSize];
}
else
size = [([self title] || " ") sizeWithFont:[self currentValueForThemeAttribute:@"font"]];
var contentInset = [self currentValueForThemeAttribute:@"content-inset"],
minSize = [self currentValueForThemeAttribute:@"min-size"],
maxSize = [self currentValueForThemeAttribute:@"max-size"];
@@ -642,7 +654,9 @@ var CPButtonImageKey = @"CPButtonImageKey",
CPButtonTitleKey = @"CPButtonTitleKey",
CPButtonAlternateTitleKey = @"CPButtonAlternateTitleKey",
CPButtonIsBorderedKey = @"CPButtonIsBorderedKey",
CPButtonAllowsMixedStateKey = @"CPButtonAllowsMixedStateKey",
CPButtonImageDimsWhenDisabledKey = @"CPButtonImageDimsWhenDisabledKey",
CPButtonImagePositionKey = @"CPButtonImagePositionKey",
CPButtonKeyEquivalentKey = @"CPButtonKeyEquivalentKey",
CPButtonKeyEquivalentMaskKey = @"CPButtonKeyEquivalentMaskKey";
@@ -666,12 +680,18 @@ var CPButtonImageKey = @"CPButtonImageKey",
_title = [aCoder decodeObjectForKey:CPButtonTitleKey];
_alternateTitle = [aCoder decodeObjectForKey:CPButtonAlternateTitleKey];
if ([aCoder containsValueForKey:CPButtonAllowsMixedStateKey])
_allowsMixedState = [aCoder decodeBoolForKey:CPButtonAllowsMixedStateKey];
[self setImageDimsWhenDisabled:[aCoder decodeObjectForKey:CPButtonImageDimsWhenDisabledKey]];
if ([aCoder containsValueForKey:CPButtonImagePositionKey])
[self setImagePosition:[aCoder decodeIntForKey:CPButtonImagePositionKey]];
if ([aCoder containsValueForKey:CPButtonKeyEquivalentKey])
[self setKeyEquivalent:CFData.decodeBase64ToUtf16String([aCoder decodeObjectForKey:CPButtonKeyEquivalentKey])];
_keyEquivalentModifierMask = [aCoder decodeObjectForKey:CPButtonKeyEquivalentMaskKey];
_keyEquivalentModifierMask = [aCoder decodeIntForKey:CPButtonKeyEquivalentMaskKey];
[self setNeedsLayout];
[self setNeedsDisplay:YES];
@@ -694,7 +714,10 @@ var CPButtonImageKey = @"CPButtonImageKey",
[aCoder encodeObject:_title forKey:CPButtonTitleKey];
[aCoder encodeObject:_alternateTitle forKey:CPButtonAlternateTitleKey];
[aCoder encodeObject:[self imageDimsWhenDisabled] forKey:CPButtonImageDimsWhenDisabledKey];
[aCoder encodeBool:_allowsMixedState forKey:CPButtonAllowsMixedStateKey];
[aCoder encodeBool:[self imageDimsWhenDisabled] forKey:CPButtonImageDimsWhenDisabledKey];
[aCoder encodeInt:[self imagePosition] forKey:CPButtonImagePositionKey];
if (_keyEquivalent)
[aCoder encodeObject:CFData.encodeBase64Utf16String(_keyEquivalent) forKey:CPButtonKeyEquivalentKey];
+1 -1
View File
@@ -55,7 +55,7 @@
[self setImagePosition:CPImageLeft];
[self setAlignment:CPLeftTextAlignment];
[self setBordered:YES];
[self setBordered:NO];
}
return self;
+14 -14
View File
@@ -27,26 +27,26 @@
/*!
@ingroup appkit
from this mailing list thread:
http://groups.google.com/group/objectivej/browse_thread/thread/7c41cbd9cbee9ea3
http://groups.google.com/group/objectivej/browse_thread/thread/7c41cbd9cbee9ea3
-----------------------------------
Creating a checkbox is easy enough:
checkbox = [[CPCheckBox alloc] initWithFrame:aFrame];
That's basically all there is to it. Radio buttons are very similar,
the key difference is the introduction of a new class CPRadioGroup,
which defines which radio buttons are part of the same group:
[myRadioButton setRadioGroup:aRadioGroup];
Every radio button receives a unique radio group by default (so if you
do nothing further, they will all behave independently), but you can
use an existing radio button's group with other buttons as so:
button1 = [[CPRadio alloc] initWithFrame:aFrame];
...
button2 = [[CPRadio alloc] initWithFrame:aFrame radioGroup:[button1
@@ -55,7 +55,7 @@
button3 = [[CPRadio alloc] initWithFrame:aFrame radioGroup:[button1
radioGroup]];
...etc...
Here, all the radio buttons will act "together". [[button1 radioGroup]
allRadios] returns every button that's part of this group, and
[[button1 radioGroup] selectedRadio] returns the currently selected
@@ -95,7 +95,7 @@
- (id)initWithFrame:(CGRect)aFrame radioGroup:(CPRadioGroup)aRadioGroup
{
self = [super initWithFrame:aFrame];
if (self)
{
[self setRadioGroup:aRadioGroup];
@@ -109,8 +109,8 @@
[self setBordered:YES];
}
return self;
return self;
}
- (id)initWithFrame:(CGRect)aFrame
@@ -141,7 +141,7 @@
- (void)setObjectValue:(id)aValue
{
[super setObjectValue:aValue];
if ([self state] === CPOnState)
[_radioGroup _setSelectedRadio:self];
}
+8
View File
@@ -2480,6 +2480,14 @@ setBoundsOrigin:
return _ephemeralSubviewsForNames[aViewName];
}
- (CPView)ephemeralSubviewNamed:(CPString)aViewName
{
if (!_ephemeralSubviewsForNames)
return nil;
return (_ephemeralSubviewsForNames[aViewName] || nil);
}
@end
var CPViewAutoresizingMaskKey = @"CPViewAutoresizingMask",
+15 -5
View File
@@ -46,28 +46,28 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey",
- (id)initWithClassName:(CPString)aClassName resourceName:(CPString)aResourceName properties:(CPDictionary)properties
{
self = [super init];
if (self)
{
_className = aClassName;
_resourceName = aResourceName;
_properties = properties;
}
return self;
}
- (id)initWithCoder:(CPCoder)aCoder
{
self = [super init];
if (self)
{
_className = [aCoder decodeObjectForKey:_CPCibCustomResourceClassNameKey];
_resourceName = [aCoder decodeObjectForKey:_CPCibCustomResourceResourceNameKey];
_properties = [aCoder decodeObjectForKey:_CPCibCustomResourcePropertiesKey];
}
return self;
}
@@ -80,7 +80,7 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey",
- (id)awakeAfterUsingCoder:(CPCoder)aCoder
{
if ([aCoder respondsToSelector:@selector(bundle)] &&
if ([aCoder respondsToSelector:@selector(bundle)] &&
(![aCoder respondsToSelector:@selector(awakenCustomResources)] || [aCoder awakenCustomResources]))
if (_className === @"CPImage")
return [[CPImage alloc] initWithContentsOfFile:[[aCoder bundle] pathForResource:_resourceName] size:_properties.valueForKey(@"size")];
@@ -112,4 +112,14 @@ var _CPCibCustomResourceClassNameKey = @"_CPCibCustomResourceClassNameKey",
return NO;
}
- (unsigned)loadStatus
{
return CPImageLoadStatusCompleted;
}
- (id)delegate
{
return nil;
}
@end

Before

Width:  |  Height:  |  Size: 283 B

After

Width:  |  Height:  |  Size: 283 B

Before

Width:  |  Height:  |  Size: 289 B

After

Width:  |  Height:  |  Size: 289 B

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 424 B

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 419 B

Before

Width:  |  Height:  |  Size: 420 B

After

Width:  |  Height:  |  Size: 420 B

Before

Width:  |  Height:  |  Size: 639 B

After

Width:  |  Height:  |  Size: 639 B

Before

Width:  |  Height:  |  Size: 625 B

After

Width:  |  Height:  |  Size: 625 B

Before

Width:  |  Height:  |  Size: 617 B

After

Width:  |  Height:  |  Size: 617 B

Before

Width:  |  Height:  |  Size: 269 B

After

Width:  |  Height:  |  Size: 269 B

Before

Width:  |  Height:  |  Size: 653 B

After

Width:  |  Height:  |  Size: 653 B

Before

Width:  |  Height:  |  Size: 657 B

After

Width:  |  Height:  |  Size: 657 B

Before

Width:  |  Height:  |  Size: 841 B

After

Width:  |  Height:  |  Size: 841 B

Before

Width:  |  Height:  |  Size: 856 B

After

Width:  |  Height:  |  Size: 856 B

Before

Width:  |  Height:  |  Size: 698 B

After

Width:  |  Height:  |  Size: 698 B

Before

Width:  |  Height:  |  Size: 577 B

After

Width:  |  Height:  |  Size: 577 B

+62 -130
View File
@@ -779,162 +779,94 @@ var themedButtonValues = nil,
+ (CPRadioButton)themedRadioButton
{
var button = [[CPRadio alloc] initWithFrame:CGRectMake(0.0, 0.0, 120.0, 17.0)],
var button = [CPRadio radioWithTitle:@"Hello Friend!"],
bezelColor = PatternColor(
[
["radio-bezel.png", 17.0, 17.0], nil, nil
],
PatternIsHorizontal),
bezelColorSelected = PatternColor(
[
["radio-bezel-selected.png", 17.0, 17.0], nil, nil
],
PatternIsHorizontal),
bezelColorSelectedHighlighted = PatternColor(
[
["radio-bezel-selected-highlighted.png", 17.0, 17.0], nil, nil
],
PatternIsHorizontal),
bezelColorSelectedDisabled = PatternColor(
[
["radio-bezel-selected-disabled.png", 17.0, 17.0], nil, nil
],
PatternIsHorizontal),
bezelColorDisabled = PatternColor(
[
["radio-bezel-disabled.png", 17.0, 17.0], nil, nil
],
PatternIsHorizontal),
bezelColorHighlighted = PatternColor(
[
["radio-bezel-highlighted.png", 17.0, 17.0], nil, nil
],
PatternIsHorizontal),
imageNormal = PatternImage("radio-image.png", 17.0, 17.0),
imageSelected = PatternImage("radio-image-selected.png", 17.0, 17.0),
imageSelectedHighlighted = PatternImage("radio-image-selected-highlighted.png", 17.0, 17.0),
imageSelectedDisabled = PatternImage("radio-image-selected-disabled.png", 17.0, 17.0),
imageDisabled = PatternImage("radio-image-disabled.png", 17.0, 17.0),
imageHighlighted = PatternImage("radio-image-highlighted.png", 17.0, 17.0),
themeValues =
[
[@"alignment", CPLeftTextAlignment, CPThemeStateBordered],
[@"font", [CPFont systemFontOfSize:12.0], CPThemeStateBordered],
[@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 20.0), CPThemeStateBordered],
[@"bezel-color", bezelColor, CPThemeStateBordered],
[@"bezel-color", bezelColorSelected, CPThemeStateBordered | CPThemeStateSelected],
[@"bezel-color", bezelColorSelectedHighlighted, CPThemeStateBordered | CPThemeStateSelected | CPThemeStateHighlighted],
[@"bezel-color", bezelColorHighlighted, CPThemeStateBordered | CPThemeStateHighlighted],
[@"bezel-color", bezelColorDisabled, CPThemeStateBordered | CPThemeStateDisabled],
[@"bezel-color", bezelColorSelectedDisabled, CPThemeStateBordered | CPThemeStateSelected | CPThemeStateDisabled],
[@"alignment", CPLeftTextAlignment, CPThemeStateNormal],
[@"font", [CPFont systemFontOfSize:12.0], CPThemeStateNormal],
[@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal],
[@"image", imageNormal, CPThemeStateNormal],
[@"image", imageSelected, CPThemeStateSelected],
[@"image", imageSelectedHighlighted, CPThemeStateSelected | CPThemeStateHighlighted],
[@"image", imageHighlighted, CPThemeStateHighlighted],
[@"image", imageDisabled, CPThemeStateDisabled],
[@"image", imageSelectedDisabled, CPThemeStateSelected | CPThemeStateDisabled],
[@"imageOffset", 4.0],
[@"text-color", [CPColor colorWithCalibratedWhite:79.0 / 255.0 alpha:1.0], CPThemeStateDisabled],
[@"min-size", CGSizeMake(0.0, 17.0)]
[@"min-size", CGSizeMake(0.0, 17.0)],
[@"max-size", CGSizeMake(-1.0, -1.0)]
];
[self registerThemeValues:themeValues forView:button];
[button setTitle:@"Hello Friend!"];
return button;
}
+ (CPRadioButton)themedCheckBoxButton
+ (CPCheckBox)themedCheckBoxButton
{
var button = [[CPCheckBox alloc] initWithFrame:CGRectMake(0.0, 0.0, 120.0, 17.0)],
var button = [CPCheckBox checkBoxWithTitle:@"Another Option"],
bezelColor = PatternColor(
[
["check-box-bezel.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
bezelColorSelected = PatternColor(
[
["check-box-bezel-selected.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
bezelColorSelectedHighlighted = PatternColor(
[
["check-box-bezel-selected-highlighted.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
bezelColorSelectedDisabled = PatternColor(
[
["check-box-bezel-selected-disabled.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
bezelColorDisabled = PatternColor(
[
["check-box-bezel-disabled.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
bezelColorHighlighted = PatternColor(
[
["check-box-bezel-highlighted.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
imageNormal = PatternImage("check-box-image.png", 15.0, 16.0),
imageSelected = PatternImage("check-box-image-selected.png", 15.0, 16.0),
imageSelectedHighlighted = PatternImage("check-box-image-selected-highlighted.png", 15.0, 16.0),
imageSelectedDisabled = PatternImage("check-box-image-selected-disabled.png", 15.0, 16.0),
imageDisabled = PatternImage("check-box-image-disabled.png", 15.0, 16.0),
imageHighlighted = PatternImage("check-box-image-highlighted.png", 15.0, 16.0),
themeValues =
[
[@"alignment", CPLeftTextAlignment, CPThemeStateBordered],
[@"font", [CPFont systemFontOfSize:12.0], CPThemeStateBordered],
[@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 20.0), CPThemeStateBordered],
[@"bezel-color", bezelColor, CPThemeStateBordered],
[@"bezel-color", bezelColorSelected, CPThemeStateBordered | CPThemeStateSelected],
[@"bezel-color", bezelColorSelectedHighlighted, CPThemeStateBordered | CPThemeStateSelected | CPThemeStateHighlighted],
[@"bezel-color", bezelColorHighlighted, CPThemeStateBordered | CPThemeStateHighlighted],
[@"bezel-color", bezelColorDisabled, CPThemeStateBordered | CPThemeStateDisabled],
[@"bezel-color", bezelColorSelectedDisabled, CPThemeStateBordered | CPThemeStateSelected | CPThemeStateDisabled],
[@"alignment", CPLeftTextAlignment, CPThemeStateNormal],
[@"font", [CPFont systemFontOfSize:12.0], CPThemeStateNormal],
[@"content-inset", CGInsetMake(0.0, 0.0, 0.0, 0.0), CPThemeStateNormal],
[@"image", imageNormal, CPThemeStateNormal],
[@"image", imageSelected, CPThemeStateSelected],
[@"image", imageSelectedHighlighted, CPThemeStateSelected | CPThemeStateHighlighted],
[@"image", imageHighlighted, CPThemeStateHighlighted],
[@"image", imageDisabled, CPThemeStateDisabled],
[@"image", imageSelectedDisabled, CPThemeStateSelected | CPThemeStateDisabled],
[@"imageOffset", 4.0],
[@"text-color", [CPColor colorWithCalibratedWhite:79.0 / 255.0 alpha:1.0], CPThemeStateDisabled],
[@"min-size", CGSizeMake(0.0, 17.0)]
[@"min-size", CGSizeMake(0.0, 17.0)],
[@"max-size", CGSizeMake(-1.0, -1.0)]
];
[self registerThemeValues:themeValues forView:button];
[button setTitle:@"Another option"];
return button;
}
+ (CPRadioButton)themedMixedCheckBoxButton
+ (CPCheckBox)themedMixedCheckBoxButton
{
var button = [self themedCheckBoxButton];
[button setAllowsMixedState:YES];
[button setState:CPMixedState];
var mixedSelectedColor = PatternColor(
[
["check-box-bezel-mixed-highlighted.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
mixedDisabledColor = PatternColor(
[
["check-box-bezel-mixed-disabled.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
mixedColor = PatternColor(
[
["check-box-bezel-mixed.png", 15.0, 16.0], nil, nil
],
PatternIsHorizontal),
var mixedHighlightedImage = PatternImage("check-box-image-mixed-highlighted.png", 15.0, 16.0),
mixedDisabledImage = PatternImage("check-box-image-mixed-disabled.png", 15.0, 16.0),
mixedImage = PatternImage("check-box-image-mixed.png", 15.0, 16.0),
themeValues =
[
[@"bezel-color", mixedColor, CPButtonStateMixed | CPThemeStateBordered],
[@"bezel-color", mixedSelectedColor, CPButtonStateMixed | CPThemeStateBordered | CPThemeStateSelected],
[@"bezel-color", mixedDisabledColor, CPButtonStateMixed | CPThemeStateBordered | CPThemeStateDisabled]
[@"image", mixedImage, CPButtonStateMixed],
[@"image", mixedHighlightedImage, CPButtonStateMixed | CPThemeStateHighlighted],
[@"image", mixedDisabledImage, CPButtonStateMixed | CPThemeStateDisabled],
[@"imageOffset", 4.0, CPButtonStateMixed],
[@"max-size", CGSizeMake(-1.0, -1.0)]
];
[self registerThemeValues:themeValues forView:button];
@@ -1355,17 +1287,17 @@ var themedButtonValues = nil,
themedAlertValues =
[
[@"size", size],
[@"content-inset", inset],
[@"message-text-alignment", CPJustifiedTextAlignment],
[@"message-text-color", [CPColor blackColor]],
[@"message-text-font", messageFont],
[@"informative-text-alignment", CPJustifiedTextAlignment],
[@"informative-text-color", [CPColor blackColor]],
[@"informative-text-font", informativeFont],
[@"size", size],
[@"content-inset", inset],
[@"message-text-alignment", CPJustifiedTextAlignment],
[@"message-text-color", [CPColor blackColor]],
[@"message-text-font", messageFont],
[@"informative-text-alignment", CPJustifiedTextAlignment],
[@"informative-text-color", [CPColor blackColor]],
[@"informative-text-font", informativeFont],
[@"image-offset", imageOffset],
[@"information-image", informationIcon],
[@"warning-image", warningIcon],
[@"information-image", informationIcon],
[@"warning-image", warningIcon],
[@"error-image", errorIcon]
];
@@ -1507,8 +1439,8 @@ var themedButtonValues = nil,
hudSpecificValues =
[
[@"message-text-color", [CPColor whiteColor]],
[@"informative-text-color", [CPColor whiteColor]],
[@"message-text-color", [CPColor whiteColor]],
[@"informative-text-color", [CPColor whiteColor]],
];
[self registerThemeValues:hudSpecificValues forView:alert inherit:themedAlertValues];
+8 -2
View File
@@ -184,6 +184,11 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0,
if (_imagePosition == anImagePosition)
return;
// If the position was CPNoImage, there is an image now,
// so mark the flags accordingly so that the image will load.
if (_imagePosition == CPNoImage)
_flags |= _CPImageAndTextViewImageChangedFlag;
_imagePosition = anImagePosition;
_flags |= _CPImageAndTextViewImagePositionChangedFlag;
@@ -616,7 +621,8 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0,
}
else if (_imagePosition === CPImageAbove)
{
CPDOMDisplayServerSetStyleLeftTop(_DOMImageElement, NULL, FLOOR(centerX - imageWidth / 2.0), 0);
imageStyle.left = FLOOR(centerX - imageWidth / 2.0) + "px";
imageStyle.top = 0 + "px";
textRect.origin.y += imageHeight + _imageOffset;
textRect.size.height = size.height - imageHeight - _imageOffset;
@@ -636,7 +642,7 @@ var _CPimageAndTextViewFrameSizeChangedFlag = 1 << 0,
textRect.size.width -= imageWidth + _imageOffset;
}
else if (_imagePosition === CPImageOnly)
else if (_imagePosition === CPImageOnly || _imagePosition == CPImageOverlaps)
{
imageStyle.top = FLOOR(centerY - imageHeight / 2.0) + "px";
imageStyle.left = FLOOR(centerX - imageWidth / 2.0) + "px";
@@ -0,0 +1,107 @@
/*
* AppController.j
* CPButtonImageTest
*
* Created by Aparajita Fishman on August 31, 2010.
*/
@import <Foundation/CPObject.j>
CPLogRegister(CPLogConsole);
@implementation AppController : CPObject
{
CPWindow theWindow;
@outlet CPButton button;
@outlet CPButton imageButton;
@outlet CPCheckBox checkbox;
@outlet CPCheckBox multiCheckbox;
@outlet CPRadio radio1;
@outlet CPRadio radio2;
@outlet CPPopUpButton positionMenu;
CPArray buttons;
CPArray checksAndRadios;
}
- (void)awakeFromCib
{
var path = [[CPBundle bundleForClass:[CPView class]] pathForResource:@"action_button.png"];
[imageButton setImage:[[CPImage alloc] initWithContentsOfFile:path size:CGSizeMake(22.0, 14.0)]];
[self _setImagePosition:CPImageLeft];
[positionMenu selectItemAtIndex:CPImageLeft];
[self _setupButtons];
}
- (void)_setupButtons
{
buttons = [button, imageButton];
checksAndRadios = [checkbox, multiCheckbox, radio1, radio2];
var checkboxHeight = [checkbox frameSize].height,
radioHeight = [radio1 frameSize].height;
[buttons makeObjectsPerformSelector:@selector(sizeToFit)];
[checksAndRadios makeObjectsPerformSelector:@selector(sizeToFit)];
[checkbox setFrameSize:CGSizeMake([checkbox frameSize].width, checkboxHeight)];
[multiCheckbox setFrameSize:CGSizeMake([multiCheckbox frameSize].width, checkboxHeight)];
[radio1 setFrameSize:CGSizeMake([radio1 frameSize].width, radioHeight)];
[radio2 setFrameSize:CGSizeMake([radio2 frameSize].width, radioHeight)];
[multiCheckbox setState:CPMixedState];
}
- (void)setImagePosition:(id)sender
{
[self _setImagePosition:[sender indexOfSelectedItem]];
}
- (void)_setImagePosition:(unsigned)position
{
[buttons makeObjectsPerformSelector:@selector(setImagePosition:) withObject:position];
[checksAndRadios makeObjectsPerformSelector:@selector(setImagePosition:) withObject:position];
var alignment;
switch (position)
{
case CPImageOnly:
return;
case CPNoImage:
case CPImageAbove:
case CPImageBelow:
case CPImageOverlaps:
alignment = CPCenterTextAlignment;
break;
case CPImageLeft:
alignment = CPLeftTextAlignment;
break;
case CPImageRight:
alignment = CPRightTextAlignment;
break;
}
[checksAndRadios makeObjectsPerformSelector:@selector(setAlignment:) withObject:alignment];
}
@end
@implementation BezelView : CPView
- (void)drawRect:(CGRect)dirtyRect
{
var sides = [CPMinYEdge, CPMaxYEdge, CPMinXEdge, CPMaxXEdge],
grays = [0.75, 1.0, 0.75, 1.0];
CPDrawTiledRects(dirtyRect, dirtyRect, sides, grays);
}
@end
+12
View File
@@ -0,0 +1,12 @@
<?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>CPButtonImageTest</string>
<key>CPPrincipalClass</key>
<string>CPApplication</string>
</dict>
</plist>
File diff suppressed because one or more lines are too long
@@ -0,0 +1,834 @@
<?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">10F569</string>
<string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.29</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">788</string>
</object>
<array class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<integer value="1182"/>
</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="1048">
<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">{{408, 712}, {380, 253}}</string>
<int key="NSWTFlags">1946157056</int>
<string key="NSWindowTitle">CPButton Image 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="439893737">
<reference key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSTextField" id="1048195509">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{40, 20}, {101, 17}}</string>
<reference key="NSSuperview" ref="439893737"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="889147185">
<int key="NSCellFlags">68288064</int>
<int key="NSCellFlags2">272630784</int>
<string key="NSContents">Image Position:</string>
<object class="NSFont" key="NSSupport" id="688777490">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">13</double>
<int key="NSfFlags">1044</int>
</object>
<reference key="NSControlView" ref="1048195509"/>
<object class="NSColor" key="NSBackgroundColor" id="44883150">
<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="907837266">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{140, 16}, {207, 26}}</string>
<reference key="NSSuperview" ref="439893737"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="642169287">
<int key="NSCellFlags">-2076049856</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="688777490"/>
<reference key="NSControlView" ref="907837266"/>
<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="399029894">
<reference key="NSMenu" ref="152141186"/>
<string key="NSTitle">No Image</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="164300911">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="287844448">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="642169287"/>
</object>
<bool key="NSMenuItemRespectAlignment">YES</bool>
<object class="NSMenu" key="NSMenu" id="152141186">
<string key="NSTitle">OtherViews</string>
<array class="NSMutableArray" key="NSMenuItems">
<reference ref="399029894"/>
<object class="NSMenuItem" id="22684039">
<reference key="NSMenu" ref="152141186"/>
<string key="NSTitle">Image Only</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="164300911"/>
<reference key="NSMixedImage" ref="287844448"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">1</int>
<reference key="NSTarget" ref="642169287"/>
</object>
<object class="NSMenuItem" id="353694480">
<reference key="NSMenu" ref="152141186"/>
<string key="NSTitle">Left</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="164300911"/>
<reference key="NSMixedImage" ref="287844448"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="642169287"/>
</object>
<object class="NSMenuItem" id="417840949">
<reference key="NSMenu" ref="152141186"/>
<string key="NSTitle">Right</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="164300911"/>
<reference key="NSMixedImage" ref="287844448"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="642169287"/>
</object>
<object class="NSMenuItem" id="651203747">
<reference key="NSMenu" ref="152141186"/>
<string key="NSTitle">Below</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="164300911"/>
<reference key="NSMixedImage" ref="287844448"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="642169287"/>
</object>
<object class="NSMenuItem" id="978825379">
<reference key="NSMenu" ref="152141186"/>
<string key="NSTitle">Above</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="164300911"/>
<reference key="NSMixedImage" ref="287844448"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="642169287"/>
</object>
<object class="NSMenuItem" id="344973167">
<reference key="NSMenu" ref="152141186"/>
<string key="NSTitle">Overlaps</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="164300911"/>
<reference key="NSMixedImage" ref="287844448"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="642169287"/>
</object>
</array>
<reference key="NSMenuFont" ref="688777490"/>
</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="NSCustomView" id="65589413">
<reference key="NSNextResponder" ref="439893737"/>
<int key="NSvFlags">268</int>
<array class="NSMutableArray" key="NSSubviews">
<object class="NSMatrix" id="237170086">
<reference key="NSNextResponder" ref="65589413"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{31, 14}, {168, 40}}</string>
<reference key="NSSuperview" ref="65589413"/>
<bool key="NSEnabled">YES</bool>
<int key="NSNumRows">1</int>
<int key="NSNumCols">2</int>
<array class="NSMutableArray" key="NSCells">
<object class="NSButtonCell" id="282155940">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Radio 1</string>
<reference key="NSSupport" ref="688777490"/>
<reference key="NSControlView" ref="237170086"/>
<int key="NSTag">1</int>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">0</int>
<object class="NSButtonImageSource" key="NSAlternateImage" id="133502171">
<string key="NSImageName">NSRadioButton</string>
</object>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
<object class="NSButtonCell" id="816571944">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Radio 2</string>
<reference key="NSSupport" ref="688777490"/>
<reference key="NSControlView" ref="237170086"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">0</int>
<reference key="NSAlternateImage" ref="133502171"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
</array>
<string key="NSCellSize">{82, 40}</string>
<string key="NSIntercellSpacing">{4, 2}</string>
<int key="NSMatrixFlags">1151868928</int>
<string key="NSCellClass">NSActionCell</string>
<object class="NSButtonCell" key="NSProtoCell" id="19159466">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">Radio</string>
<reference key="NSSupport" ref="688777490"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">0</int>
<object class="NSImage" key="NSNormalImage">
<int key="NSImageFlags">549453824</int>
<string key="NSSize">{18, 18}</string>
<array class="NSMutableArray" key="NSReps">
<array>
<integer value="0"/>
<object class="NSBitmapImageRep">
<object class="NSData" key="NSTIFFRepresentation">
<bytes key="NS.bytes">TU0AKgAABRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAADwRERGLJycnySsrK/A1NTXw
IyMjyRwcHIsJCQk8AAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFRUVdVBQUOCoqKj/
29vb//n5+f/6+vr/2tra/6qqqv9UVFTgHx8fdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUZGRl5
dXV198PDw//8/Pz////////////////////////////U1NT/fHx89yUlJXkAAAAFAAAAAAAAAAAAAAAA
AAAAAxEREUZqamrmtbW1/+3t7f/+/v7//v7+//7+/v/9/f3//f39//39/f/39/f/xMTE/3d3d+YZGRlG
AAAAAwAAAAAAAAAAAAAACkJCQqGtra3/xsbG/+vr6//y8vL/9fX1//X19f/z8/P/9fX1//Ly8v/u7u7/
0tLS/6+vr/9KSkqhAAAACgAAAAAAAAAAAAAAF3h4eN2/v7//z8/P/93d3f/q6ur/7+/v/+/v7//w8PD/
7e3t/+3t7f/i4uL/zs7O/8XFxf98fHzdAAAAFwAAAAAAAAADAAAAJKSkpPjOzs7/2dnZ/+Dg4P/i4uL/
5eXl/+bm5v/n5+f/5eXl/+Li4v/e3t7/2tra/9DQ0P+srKz4AAAAJAAAAAMAAAADAAAALrCwsPrW1tb/
3t7e/+Tk5P/p6en/6+vr/+zs7P/p6en/6+vr/+fn5//k5OT/4ODg/9nZ2f+zs7P6AAAALgAAAAMAAAAD
AAAALp2dnezg4OD/5eXl/+rq6v/u7u7/8PDw//Dw8P/x8fH/8PDw/+7u7v/q6ur/5ubm/+Hh4f+ZmZns
AAAALgAAAAMAAAADAAAAJG5ubs/l5eX/6enp/+/v7//y8vL/9vb2//r6+v/5+fn/9/f3//b29v/x8fH/
6+vr/+Tk5P9ra2vPAAAAJAAAAAMAAAAAAAAAFy4uLpPCwsL67Ozs//Pz8//5+fn//v7+//7+/v/+/v7/
/v7+//v7+//19fX/8PDw/8LCwvosLCyTAAAAFwAAAAAAAAAAAAAACgAAAENfX1/S5OTk/vn5+f/+/v7/
///////////////////////////8/Pz/5ubm/l9fX9IAAABDAAAACgAAAAAAAAAAAAAAAwAAABcAAABl
YmJi3NLS0v3////////////////////////////////V1dX9ZGRk3AAAAGUAAAAXAAAAAwAAAAAAAAAA
AAAAAAAAAAUAAAAfAAAAZTMzM8KAgIDwv7+//O3t7f/t7e3/v7+//ICAgPAzMzPCAAAAZQAAAB8AAAAF
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAFwAAAEMAAAB3AAAAnwAAALMAAACzAAAAnwAAAHcAAABD
AAAAFwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAoAAAAXAAAAJAAAAC4AAAAu
AAAAJAAAABcAAAAKAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAwAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQEAAAMAAAABABIAAAEB
AAMAAAABABIAAAECAAMAAAAEAAAFugEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES
AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABABIAAAEXAAQAAAABAAAFEAEcAAMAAAABAAEAAAFS
AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
</array>
</array>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MCAwAA</bytes>
</object>
</object>
<reference key="NSAlternateImage" ref="133502171"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<reference key="NSSelectedCell" ref="282155940"/>
<reference key="NSBackgroundColor" ref="44883150"/>
<object class="NSColor" key="NSCellBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MQA</bytes>
</object>
<reference key="NSFont" ref="688777490"/>
</object>
<object class="NSButton" id="722468716">
<reference key="NSNextResponder" ref="65589413"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{163, 69}, {152, 40}}</string>
<reference key="NSSuperview" ref="65589413"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1031150360">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">16777216</int>
<string key="NSContents">Multistate Checkbox</string>
<reference key="NSSupport" ref="688777490"/>
<reference key="NSControlView" ref="722468716"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
<object class="NSCustomResource" key="NSNormalImage" id="204220904">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSSwitch</string>
</object>
<object class="NSButtonImageSource" key="NSAlternateImage" id="412801564">
<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="310529951">
<reference key="NSNextResponder" ref="65589413"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{29, 69}, {85, 40}}</string>
<reference key="NSSuperview" ref="65589413"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="778507159">
<int key="NSCellFlags">-2080244224</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Checkbox</string>
<reference key="NSSupport" ref="688777490"/>
<reference key="NSControlView" ref="310529951"/>
<int key="NSButtonFlags">1211912703</int>
<int key="NSButtonFlags2">2</int>
<reference key="NSNormalImage" ref="204220904"/>
<reference key="NSAlternateImage" ref="412801564"/>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
<object class="NSButton" id="463191555">
<reference key="NSNextResponder" ref="65589413"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{143, 126}, {176, 32}}</string>
<reference key="NSSuperview" ref="65589413"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="44707779">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Button With Image</string>
<reference key="NSSupport" ref="688777490"/>
<reference key="NSControlView" ref="463191555"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
<object class="NSButton" id="938838346">
<reference key="NSNextResponder" ref="65589413"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{24, 126}, {96, 32}}</string>
<reference key="NSSuperview" ref="65589413"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="988784972">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">134217728</int>
<string key="NSContents">Button</string>
<reference key="NSSupport" ref="688777490"/>
<reference key="NSControlView" ref="938838346"/>
<int key="NSButtonFlags">-2038284033</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">200</int>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
</array>
<string key="NSFrame">{{20, 59}, {340, 174}}</string>
<reference key="NSSuperview" ref="439893737"/>
<string key="NSClassName">BezelView</string>
</object>
</array>
<string key="NSFrameSize">{380, 253}</string>
<reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSCustomObject" id="635946545">
<string key="NSClassName">AppController</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="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">1090</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">button</string>
<reference key="source" ref="635946545"/>
<reference key="destination" ref="938838346"/>
</object>
<int key="connectionID">1174</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">imageButton</string>
<reference key="source" ref="635946545"/>
<reference key="destination" ref="463191555"/>
</object>
<int key="connectionID">1175</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">checkbox</string>
<reference key="source" ref="635946545"/>
<reference key="destination" ref="310529951"/>
</object>
<int key="connectionID">1176</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">multiCheckbox</string>
<reference key="source" ref="635946545"/>
<reference key="destination" ref="722468716"/>
</object>
<int key="connectionID">1177</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">radio1</string>
<reference key="source" ref="635946545"/>
<reference key="destination" ref="282155940"/>
</object>
<int key="connectionID">1178</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">radio2</string>
<reference key="source" ref="635946545"/>
<reference key="destination" ref="816571944"/>
</object>
<int key="connectionID">1179</int>
</object>
<object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">setImagePosition:</string>
<reference key="source" ref="635946545"/>
<reference key="destination" ref="907837266"/>
</object>
<int key="connectionID">1180</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">positionMenu</string>
<reference key="source" ref="635946545"/>
<reference key="destination" ref="907837266"/>
</object>
<int key="connectionID">1181</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="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"/>
<array class="NSMutableArray" key="children">
<reference ref="439893737"/>
</array>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">372</int>
<reference key="object" ref="439893737"/>
<array class="NSMutableArray" key="children">
<reference ref="1048195509"/>
<reference ref="907837266"/>
<reference ref="65589413"/>
</array>
<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">1148</int>
<reference key="object" ref="1048195509"/>
<array class="NSMutableArray" key="children">
<reference ref="889147185"/>
</array>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1149</int>
<reference key="object" ref="889147185"/>
<reference key="parent" ref="1048195509"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1150</int>
<reference key="object" ref="907837266"/>
<array class="NSMutableArray" key="children">
<reference ref="642169287"/>
</array>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1151</int>
<reference key="object" ref="642169287"/>
<array class="NSMutableArray" key="children">
<reference ref="152141186"/>
</array>
<reference key="parent" ref="907837266"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1152</int>
<reference key="object" ref="152141186"/>
<array class="NSMutableArray" key="children">
<reference ref="399029894"/>
<reference ref="22684039"/>
<reference ref="353694480"/>
<reference ref="417840949"/>
<reference ref="651203747"/>
<reference ref="978825379"/>
<reference ref="344973167"/>
</array>
<reference key="parent" ref="642169287"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1153</int>
<reference key="object" ref="399029894"/>
<reference key="parent" ref="152141186"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1154</int>
<reference key="object" ref="22684039"/>
<reference key="parent" ref="152141186"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1155</int>
<reference key="object" ref="353694480"/>
<reference key="parent" ref="152141186"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1163</int>
<reference key="object" ref="417840949"/>
<reference key="parent" ref="152141186"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1164</int>
<reference key="object" ref="651203747"/>
<reference key="parent" ref="152141186"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1165</int>
<reference key="object" ref="978825379"/>
<reference key="parent" ref="152141186"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1166</int>
<reference key="object" ref="344973167"/>
<reference key="parent" ref="152141186"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1182</int>
<reference key="object" ref="65589413"/>
<array class="NSMutableArray" key="children">
<reference ref="938838346"/>
<reference ref="463191555"/>
<reference ref="310529951"/>
<reference ref="722468716"/>
<reference ref="237170086"/>
</array>
<reference key="parent" ref="439893737"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1130</int>
<reference key="object" ref="938838346"/>
<array class="NSMutableArray" key="children">
<reference ref="988784972"/>
</array>
<reference key="parent" ref="65589413"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1131</int>
<reference key="object" ref="988784972"/>
<reference key="parent" ref="938838346"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1132</int>
<reference key="object" ref="463191555"/>
<array class="NSMutableArray" key="children">
<reference ref="44707779"/>
</array>
<reference key="parent" ref="65589413"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1133</int>
<reference key="object" ref="44707779"/>
<reference key="parent" ref="463191555"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1134</int>
<reference key="object" ref="310529951"/>
<array class="NSMutableArray" key="children">
<reference ref="778507159"/>
</array>
<reference key="parent" ref="65589413"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1135</int>
<reference key="object" ref="778507159"/>
<reference key="parent" ref="310529951"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1140</int>
<reference key="object" ref="722468716"/>
<array class="NSMutableArray" key="children">
<reference ref="1031150360"/>
</array>
<reference key="parent" ref="65589413"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1141</int>
<reference key="object" ref="1031150360"/>
<reference key="parent" ref="722468716"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1142</int>
<reference key="object" ref="237170086"/>
<array class="NSMutableArray" key="children">
<reference ref="816571944"/>
<reference ref="19159466"/>
<reference ref="282155940"/>
</array>
<reference key="parent" ref="65589413"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1146</int>
<reference key="object" ref="816571944"/>
<reference key="parent" ref="237170086"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1145</int>
<reference key="object" ref="19159466"/>
<reference key="parent" ref="237170086"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">1143</int>
<reference key="object" ref="282155940"/>
<reference key="parent" ref="237170086"/>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1130.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1131.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1132.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1133.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1134.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1135.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1140.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1141.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1142.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1143.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1145.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1148.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1149.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1150.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1151.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1152.IBEditorWindowLastContentRect">{{615, 541}, {207, 143}}</string>
<string key="1152.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1153.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1154.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1155.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1163.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1164.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1165.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="1166.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="371.IBEditorWindowLastContentRect">{{902, 462}, {380, 253}}</string>
<string key="371.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="371.IBWindowTemplateEditedContentRect">{{902, 462}, {380, 253}}</string>
<integer value="1" key="371.NSWindowTemplate.visibleAtLaunch"/>
<string key="371.editorWindowContentRectSynchronizationRect">{{33, 99}, {480, 360}}</string>
<string key="372.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">1182</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="actions">
<string key="NS.key.0">setImagePosition:</string>
<string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<string key="NS.key.0">setImagePosition:</string>
<object class="IBActionInfo" key="NS.object.0">
<string key="name">setImagePosition:</string>
<string key="candidateClassName">id</string>
</object>
</object>
<dictionary class="NSMutableDictionary" key="outlets">
<string key="button">NSButton</string>
<string key="checkbox">NSButton</string>
<string key="imageButton">NSButton</string>
<string key="multiCheckbox">NSButton</string>
<string key="positionMenu">NSPopUpButton</string>
<string key="radio1">id</string>
<string key="radio2">id</string>
<string key="theWindow">NSWindow</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="toOneOutletInfosByName">
<object class="IBToOneOutletInfo" key="button">
<string key="name">button</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="checkbox">
<string key="name">checkbox</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="imageButton">
<string key="name">imageButton</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="multiCheckbox">
<string key="name">multiCheckbox</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo" key="positionMenu">
<string key="name">positionMenu</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo" key="radio1">
<string key="name">radio1</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="radio2">
<string key="name">radio2</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo" key="theWindow">
<string key="name">theWindow</string>
<string key="candidateClassName">NSWindow</string>
</object>
</dictionary>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">BezelView</string>
<string key="superclassName">NSView</string>
<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>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<string key="IBDocument.LastKnownRelativeProjectPath">../registration.xcodeproj</string>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<dictionary class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
<string key="NSMenuCheckmark">{9, 8}</string>
<string key="NSMenuMixedState">{7, 2}</string>
<string key="NSSwitch">{15, 15}</string>
</dictionary>
</data>
</archive>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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
TableCibTest
Created by Francisco Tolmasky on July 5, 2009.
Copyright 2009, 280 North, Inc. All rights reserved.
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>CPButton Image Test</title>
<script type = "text/javascript">
OBJJ_MAIN_FILE = "main.j";
OBJJ_INCLUDE_PATHS = ["Frameworks/Debug", "Frameworks", "SomethingElse"];
</script>
<script src = "Frameworks/Debug/Objective-J/Objective-J.js" type = "text/javascript"></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="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 CPButton Image 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>
</body>
</html>
+68
View File
@@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8"?>
<!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
TableCibTest
Created by Francisco Tolmasky on July 5, 2009.
Copyright 2009, 280 North, Inc. All rights reserved.
-->
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>CPButton Image Test</title>
<script type = "text/javascript">
OBJJ_MAIN_FILE = "main.j";
</script>
<script src = "Frameworks/Objective-J/Objective-J.js" type = "text/javascript"></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="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 CPButton Image 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>
</body>
</html>
+18
View File
@@ -0,0 +1,18 @@
/*
* AppController.j
* TableCibTest
*
* Created by Francisco Tolmasky on July 5, 2009.
* Copyright 2009, 280 North, Inc. All rights reserved.
*/
@import <Foundation/Foundation.j>
@import <AppKit/AppKit.j>
@import "AppController.j"
function main(args, namedArgs)
{
CPApplicationMain(args, namedArgs);
}
+11 -1
View File
@@ -33,7 +33,7 @@
objectData = [unarchiver decodeObjectForKey:@"IB.objectdata"];
// Perform a bit of post-processing on views since all CP views are flipped.
// It's better to do this here (instead of say, in NSView::initWithCoder:),
// It's better to do this here (instead of say, in NSView::initWithCoder:),
// because at this point all the objects an mappings are stabilized.
var objects = [unarchiver allObjects],
count = [objects count];
@@ -76,10 +76,20 @@
var convertedData = [CPData data],
archiver = [[CPKeyedArchiver alloc] initForWritingWithMutableData:convertedData];
[archiver setDelegate:self];
[archiver encodeObject:objectData forKey:@"CPCibObjectDataKey"];
[archiver finishEncoding];
return convertedData;
}
// For some reason, occasionally an attempt is made to archive NSMatrix. That will fail, so prevent it here.
- (id)archiver:(CPKeyedArchiver)archiver willEncodeObject:(id)object
{
if ([object isKindOfClass:[NSMatrix class]])
return nil;
else
return object;
}
@end
+54 -12
View File
@@ -36,6 +36,22 @@ _CPButtonBezelStyleHeights[CPRoundedBezelStyle] = 18;
_CPButtonBezelStyleHeights[CPTexturedRoundedBezelStyle] = 20;
_CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
var NSButtonIsBorderedMask = 0x00800000,
NSButtonAllowsMixedStateMask = 0x1000000,
// The image position is contained in the third byte, and the values
// don't really follow much of a pattern.
NSButtonImagePositionMask = 0xFF0000,
NSButtonImagePositionShift = 16,
NSButtonNoImagePositionMask = 0x04,
NSButtonImageAbovePositionMask = 0x0C,
NSButtonImageBelowPositionMask = 0x1C;
NSButtonImageRightPositionMask = 0x2C,
NSButtonImageLeftPositionMask = 0x3C,
NSButtonImageOnlyPositionMask = 0x44,
NSButtonImageOverlapsPositionMask = 0x6C;
@implementation CPButton (NSCoding)
- (id)NS_initWithCoder:(CPCoder)aCoder
@@ -47,13 +63,13 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
var cell = [aCoder decodeObjectForKey:@"NSCell"];
NIB_CONNECTION_EQUIVALENCY_TABLE[[cell UID]] = self;
_title = [cell title];
if (![self NS_isCheckBox] && ![self NS_isRadio])
{
_controlSize = CPRegularControlSize;
_title = [cell title];
[self setBordered:[cell isBordered]];
_bezelStyle = [cell bezelStyle];
// clean up:
@@ -112,7 +128,6 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
}
[self setBordered:YES];
self._title = [cell title];
}
}
@@ -178,14 +193,17 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
else if ([alternateImage imageName] === @"NSRadioButton")
{
_isRadio = YES;
self._radioGroup = [CPRadioGroup new];
_radioGroup = [CPRadioGroup new];
}
}
var self = [self NS_initWithCoder:aCoder];
self = [self NS_initWithCoder:aCoder];
self._allowsMixedState = [cell allowsMixedState];
[self setImagePosition:[cell imagePosition]];
[self setKeyEquivalent:[cell keyEquivalent]];
_keyEquivalentModifierMask = [cell keyEquivalentModifierMask];
self._keyEquivalentModifierMask = [cell keyEquivalentModifierMask];
return self;
}
@@ -205,11 +223,14 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
@implementation NSButtonCell : NSActionCell
{
BOOL _isBordered @accessors(readonly, getter=isBordered);
int _bezelStyle @accessors(readonly, getter=bezelStyle);
BOOL _isBordered @accessors(readonly, getter=isBordered);
int _bezelStyle @accessors(readonly, getter=bezelStyle);
CPString _title @accessors(readonly, getter=title);
CPImage _alternateImage @accessors(readonly, getter=alternateImage);
CPString _title @accessors(readonly, getter=title);
CPImage _alternateImage @accessors(readonly, getter=alternateImage);
BOOL _allowsMixedState @accessors(readonly, getter=allowsMixedState);
BOOL _imagePosition @accessors(readonly, getter=imagePosition);
CPString _keyEquivalent @accessors(readonly, getter=keyEquivalent);
unsigned _keyEquivalentModifierMask @accessors(readonly, getter=keyEquivalentModifierMask);
@@ -222,9 +243,11 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
if (self)
{
var buttonFlags = [aCoder decodeIntForKey:@"NSButtonFlags"],
buttonFlags2 = [aCoder decodeIntForKey:@"NSButtonFlags2"];
buttonFlags2 = [aCoder decodeIntForKey:@"NSButtonFlags2"],
cellFlags2 = [aCoder decodeIntForKey:@"NSCellFlags2"],
position = (buttonFlags & NSButtonImagePositionMask) >> NSButtonImagePositionShift;
_isBordered = (buttonFlags & 0x00800000) ? YES : NO;
_isBordered = (buttonFlags & NSButtonIsBorderedMask) ? YES : NO;
_bezelStyle = (buttonFlags2 & 0x7) | ((buttonFlags2 & 0x20) >> 2);
// NSContents for NSButton is actually the title
@@ -233,6 +256,25 @@ _CPButtonBezelStyleHeights[CPHUDBezelStyle] = 20;
_objectValue = [self state];
_alternateImage = [aCoder decodeObjectForKey:@"NSAlternateImage"];
_allowsMixedState = (cellFlags2 & NSButtonAllowsMixedStateMask) ? YES : NO;
// Test in decreasing order of mask value to ensure the correct match,
// because some of the positions don't care about some bits.
if ((position & NSButtonImageOverlapsPositionMask) == NSButtonImageOverlapsPositionMask)
_imagePosition = CPImageOverlaps;
else if ((position & NSButtonImageOnlyPositionMask) == NSButtonImageOnlyPositionMask)
_imagePosition = CPImageOnly;
else if ((position & NSButtonImageLeftPositionMask) == NSButtonImageLeftPositionMask)
_imagePosition = CPImageLeft;
else if ((position & NSButtonImageRightPositionMask) == NSButtonImageRightPositionMask)
_imagePosition = CPImageRight;
else if ((position & NSButtonImageBelowPositionMask) == NSButtonImageBelowPositionMask)
_imagePosition = CPImageBelow;
else if ((position & NSButtonImageAbovePositionMask) == NSButtonImageAbovePositionMask)
_imagePosition = CPImageAbove;
else if ((position & NSButtonNoImagePositionMask) == NSButtonNoImagePositionMask)
_imagePosition = CPNoImage;
_keyEquivalent = [aCoder decodeObjectForKey:@"NSKeyEquivalent"];
_keyEquivalentModifierMask = buttonFlags2 >> 8;
+18 -14
View File
@@ -4,6 +4,11 @@
@import "NSView.j"
var NSMatrixRadioModeMask = 0x40000000,
NSMatrixDrawsBackgroundMask = 0x01000000;
@implementation NSMatrix : CPObject
{
}
@@ -11,41 +16,37 @@
- (id)initWithCoder:(CPCoder)aCoder
{
var view = [[CPView alloc] NS_initWithCoder:aCoder];
[view setBackgroundColor:[aCoder decodeObjectForKey:@"NSBackgroundColor"]];
var numberOfRows = [aCoder decodeIntForKey:@"NSNumRows"],
numberOfColumns = [aCoder decodeIntForKey:@"NSNumCols"],
cellSize = [aCoder decodeSizeForKey:@"NSCellSize"],
intercellSpacing = [aCoder decodeSizeForKey:@"NSIntercellSpacing"],
cellBackgroundColor = [aCoder decodeObjectForKey:@"NSCellBackgroundColor"],
//cellClassName = [aCoder decodeObjectForKey:@"NSCellClass"];alert("6");
flags = [aCoder decodeIntForKey:@"NSMatrixFlags"],
isRadioMode = flags & NSMatrixRadioModeMask,
drawsBackground = flags & NSMatrixDrawsBackgroundMask,
backgroundColor = [aCoder decodeObjectForKey:@"NSBackgroundColor"],
cells = [aCoder decodeObjectForKey:@"NSCells"],
selectedCell = [aCoder decodeObjectForKey:@"NSSelectedCell"];
if (/*(cellClassName === @"NSButtonCell") &&*/ (flags & 0x40000000))
if (isRadioMode)
{
var radioGroup = [CPRadioGroup new];
var radioGroup = [CPRadioGroup new],
frame = CGRectMake(0.0, 0.0, cellSize.width, cellSize.height);
rowIndex = 0;
for (; rowIndex < numberOfRows; ++rowIndex)
for (var rowIndex = 0; rowIndex < numberOfRows; ++rowIndex)
{
var columnIndex = 0;
frame.origin.x = 0;
for (; columnIndex < numberOfColumns; ++columnIndex)
for (var columnIndex = 0; columnIndex < numberOfColumns; ++columnIndex)
{
var cell = cells[rowIndex * numberOfColumns + columnIndex],
cellView = [[CPRadio alloc] initWithFrame:frame radioGroup:radioGroup];
[cellView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
[cellView setTitle:[cell title]];
[cellView setBackgroundColor:cellBackgroundColor];
[cellView setBackgroundColor:[CPColor clearColor]]; // the IB default
[cellView setObjectValue:[cell objectValue]];
[view addSubview:cellView];
NIB_CONNECTION_EQUIVALENCY_TABLE[[cell UID]] = cellView;
@@ -56,7 +57,10 @@
frame.origin.y = CGRectGetMaxY(frame) + intercellSpacing.height;
}
NIB_CONNECTION_EQUIVALENCY_TABLE[self] = view;
if (drawsBackground)
[view setBackgroundColor:backgroundColor];
NIB_CONNECTION_EQUIVALENCY_TABLE[[self UID]] = view;
}
return view;