mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-10-02 23:26:16 +00:00
Began integrating new imageandtextview into CPButton.
Reviewed by me.
This commit is contained in:
+50
-48
@@ -311,7 +311,7 @@ var _CPButtonClassName = nil,
|
||||
*/
|
||||
- (void)setButtonType:(CPButtonType)aButtonType
|
||||
{
|
||||
if (aButtonType == CPSwitchButton)
|
||||
if (aButtonType === CPSwitchButton)
|
||||
{
|
||||
[self setBordered:NO];
|
||||
[self setImage:nil];
|
||||
@@ -326,6 +326,10 @@ var _CPButtonClassName = nil,
|
||||
|
||||
if (self)
|
||||
{
|
||||
|
||||
|
||||
[self setVerticalAlignment:CPCenterVerticalTextAlignment];
|
||||
|
||||
_imagePosition = CPImageLeft;
|
||||
_imageScaling = CPScaleNone;
|
||||
|
||||
@@ -351,7 +355,7 @@ var _CPButtonClassName = nil,
|
||||
|
||||
_imagePosition = anImagePosition;
|
||||
|
||||
[self drawContentsWithHighlight:_isHighlighted];
|
||||
[_imageAndTextView setImagePosition:_imagePosition];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -373,7 +377,7 @@ var _CPButtonClassName = nil,
|
||||
|
||||
_imageScaling = anImageScaling;
|
||||
|
||||
[self drawContentsWithHighlight:_isHighlighted];
|
||||
[_imageAndTextView setImageScaling:anImageScaling];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -392,7 +396,7 @@ var _CPButtonClassName = nil,
|
||||
{
|
||||
[super setTextColor:aColor];
|
||||
|
||||
[self drawContentsWithHighlight:_isHighlighted];
|
||||
[_imageAndTextView setTextColor:[self textColor]];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -403,7 +407,7 @@ var _CPButtonClassName = nil,
|
||||
{
|
||||
[super setFont:aFont];
|
||||
|
||||
[self drawContentsWithHighlight:_isHighlighted];
|
||||
[_imageAndTextView setFont:[self font]];
|
||||
}
|
||||
|
||||
// Setting the state
|
||||
@@ -461,7 +465,7 @@ var _CPButtonClassName = nil,
|
||||
{
|
||||
[super setAlignment:anAlignment];
|
||||
|
||||
[self drawContentsWithHighlight:_isHighlighted];
|
||||
[_imageAndTextView setAlignment:[self alignment]];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -470,12 +474,12 @@ var _CPButtonClassName = nil,
|
||||
*/
|
||||
- (void)setImage:(CPImage)anImage
|
||||
{
|
||||
if (_image == anImage)
|
||||
if (_image === anImage)
|
||||
return;
|
||||
|
||||
_image = anImage;
|
||||
|
||||
[self drawContentsWithHighlight:_isHighlighted];
|
||||
[self setNeedsDisplay:YES];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -514,7 +518,7 @@ var _CPButtonClassName = nil,
|
||||
|
||||
_title = aTitle;
|
||||
|
||||
[self drawContentsWithHighlight:_isHighlighted];
|
||||
[self setNeedsDisplay:YES];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -549,11 +553,46 @@ var _CPButtonClassName = nil,
|
||||
[_imageAndTextView setFrameSize:size];
|
||||
}
|
||||
|
||||
- (CGRect)contentRectForBounds:(CGRect)aRect
|
||||
{
|
||||
if (_isBordered)
|
||||
{
|
||||
if (_bezelStyle == CPHUDBezelStyle)
|
||||
aRect.size.height -= 4.0;
|
||||
else if (_bezelStyle == CPRoundRectBezelStyle)
|
||||
aRect.size.height -= 2.0;
|
||||
else if (_bezelStyle == CPTexturedRoundedBezelStyle)
|
||||
aRect.size.height -= 2.0;
|
||||
}
|
||||
|
||||
return aRect;
|
||||
}
|
||||
|
||||
- (void)drawRect:(CGRect)aRect
|
||||
{
|
||||
if (!_imageAndTextView)
|
||||
{
|
||||
_imageAndTextView = [[_CPImageAndTextView alloc] initWithFrame:[self contentRectForBounds:aRect] control:self];
|
||||
|
||||
[self addSubview:_imageAndTextView];
|
||||
}
|
||||
else
|
||||
[_imageAndTextView setFrame:[self contentRectForBounds:aRect]];
|
||||
|
||||
[_imageAndTextView setText:_isHighlighted && _alternateTitle ? _alternateTitle : _title];
|
||||
[_imageAndTextView setImage:_isHighlighted && _alternateImage ? _alternateImage : _image];
|
||||
}
|
||||
|
||||
/*!
|
||||
Compacts the button's frame to fit its contents.
|
||||
*/
|
||||
- (void)sizeToFit
|
||||
{
|
||||
{ if (!_imageAndTextView)
|
||||
{
|
||||
_imageAndTextView = [[_CPImageAndTextView alloc] initWithFrame:[self contentRectForBounds:[self bounds]] control:self];
|
||||
|
||||
[self addSubview:_imageAndTextView];
|
||||
}
|
||||
[_imageAndTextView sizeToFit];
|
||||
|
||||
var frame = [_imageAndTextView frame],
|
||||
@@ -570,17 +609,6 @@ var _CPButtonClassName = nil,
|
||||
[self setFrameSize:CGSizeMake(CGRectGetWidth(frame), height)];
|
||||
}
|
||||
|
||||
/*!
|
||||
Sets the frame size for the button.
|
||||
@param the new frame size
|
||||
*/
|
||||
- (void)setFrameSize:(CGSize)aSize
|
||||
{
|
||||
[super setFrameSize:aSize];
|
||||
|
||||
[self tile];
|
||||
}
|
||||
|
||||
/*!
|
||||
Highlights the receiver based on <code>aFlag</code>.
|
||||
@param If <code>YES</code> the button will highlight, <code>NO</code> the button will unhighlight.
|
||||
@@ -590,7 +618,7 @@ var _CPButtonClassName = nil,
|
||||
_isHighlighted = aFlag;
|
||||
|
||||
[self drawBezelWithHighlight:aFlag];
|
||||
[self drawContentsWithHighlight:aFlag];
|
||||
[self setNeedsDisplay:YES];
|
||||
}
|
||||
|
||||
/*!
|
||||
@@ -752,32 +780,6 @@ var _CPButtonClassName = nil,
|
||||
[self setBackgroundColorWithName:shouldHighlight ? CPControlHighlightedBackgroundColor : CPControlNormalBackgroundColor];
|
||||
}
|
||||
|
||||
/* @ignore */
|
||||
- (void)drawContentsWithHighlight:(BOOL)isHighlighted
|
||||
{
|
||||
if (!_title && !_image && !_alternateTitle && !_alternateImage && !_imageAndTextView)
|
||||
return;
|
||||
|
||||
if (!_imageAndTextView)
|
||||
{
|
||||
_imageAndTextView = [[_CPImageAndTextView alloc] initWithFrame:[self bounds]];
|
||||
|
||||
[self addSubview:_imageAndTextView];
|
||||
|
||||
[self tile];
|
||||
}
|
||||
|
||||
[_imageAndTextView setVerticalAlignment:CPCenterVerticalTextAlignment];
|
||||
[_imageAndTextView setFont:[self font]];
|
||||
[_imageAndTextView setTextColor:[self textColor]];
|
||||
[_imageAndTextView setAlignment:[self alignment]];
|
||||
[_imageAndTextView setImagePosition:_imagePosition];
|
||||
[_imageAndTextView setImageScaling:_imageScaling];
|
||||
|
||||
[_imageAndTextView setText:isHighlighted && _alternateTitle ? _alternateTitle : _title];
|
||||
[_imageAndTextView setImage:isHighlighted && _alternateImage ? _alternateImage : _image];
|
||||
}
|
||||
|
||||
- (void)viewDidMoveToWindow
|
||||
{
|
||||
if (_bezelBorderNeedsUpdate)
|
||||
|
||||
+31
-6
@@ -91,10 +91,13 @@ var CPControlBlackColor = [CPColor blackColor];
|
||||
BOOL _isEnabled;
|
||||
|
||||
int _alignment;
|
||||
CPVerticalTextAlignment _verticalAlignment;
|
||||
CPFont _font;
|
||||
CPColor _textColor;
|
||||
CPShadow _textShadow;
|
||||
|
||||
CPLineBreakMode _lineBreakMode;
|
||||
|
||||
id _target;
|
||||
SEL _action;
|
||||
int _sendActionOn;
|
||||
@@ -114,6 +117,8 @@ var CPControlBlackColor = [CPColor blackColor];
|
||||
|
||||
if (self)
|
||||
{
|
||||
[self setVerticalAlignment:CPTopVerticalTextAlignment];
|
||||
|
||||
_sendActionOn = CPLeftMouseUpMask;
|
||||
_trackingMouseDownFlags = 0;
|
||||
|
||||
@@ -169,6 +174,15 @@ var CPControlBlackColor = [CPColor blackColor];
|
||||
return _textColor;
|
||||
}
|
||||
|
||||
/*!
|
||||
Sets the receiver's alignment
|
||||
@param anAlignment the receiver's alignment
|
||||
*/
|
||||
- (void)setAlignment:(CPTextAlignment)anAlignment
|
||||
{
|
||||
_alignment = anAlignment;
|
||||
}
|
||||
|
||||
/*!
|
||||
Returns the receiver's alignment
|
||||
*/
|
||||
@@ -177,13 +191,24 @@ var CPControlBlackColor = [CPColor blackColor];
|
||||
return _alignment;
|
||||
}
|
||||
|
||||
/*!
|
||||
Sets the receiver's alignment
|
||||
@param anAlignment the receiver's alignment
|
||||
*/
|
||||
- (void)setAlignment:(CPTextAlignment)anAlignment
|
||||
- (void)setVerticalAlignment:(CPVerticalTextAlignment)anAlignment
|
||||
{
|
||||
_alignment = anAlignment;
|
||||
_verticalAlignment = anAlignment;
|
||||
}
|
||||
|
||||
- (CPVerticalTextAlignment)verticalAlignment
|
||||
{
|
||||
return _verticalAlignment;
|
||||
}
|
||||
|
||||
- (void)setLineBreakMode:(CPLineBreakMode)aLineBreakMode
|
||||
{
|
||||
_lineBreakMode = aLineBreakMode;
|
||||
}
|
||||
|
||||
- (CPLineBreakMode)lineBreakMode
|
||||
{
|
||||
return _lineBreakMode;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
||||
@@ -65,6 +65,7 @@ var CPPopUpButtonArrowsImage = nil;
|
||||
|
||||
[self setImagePosition:CPImageLeft];
|
||||
[self setAlignment:CPLeftTextAlignment];
|
||||
[self setLineBreakMode:CPLineBreakByTruncatingTail];
|
||||
|
||||
[self setMenu:[[CPMenu alloc] initWithTitle:@""]];
|
||||
}
|
||||
@@ -698,6 +699,11 @@ var CPPopUpButtonArrowsImage = nil;
|
||||
[self sendAction:action to:target];
|
||||
}
|
||||
|
||||
- (CGRect)contentRectForBounds:(CGRect)bounds
|
||||
{
|
||||
return CGRectMake(3.0, 2.0, CGRectGetWidth(bounds) - 16.0, CGRectGetHeight(bounds) - 5.0);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
var CPPopUpButtonMenuKey = @"CPPopUpButtonMenuKey",
|
||||
|
||||
@@ -73,27 +73,39 @@ var HORIZONTAL_MARGIN = 3.0,
|
||||
unsigned _flags;
|
||||
|
||||
#if PLATFORM(DOM)
|
||||
DOMElement _DOMImageElement;
|
||||
DOMELement _DOMTextElement;
|
||||
DOMElement _DOMImageElement;
|
||||
DOMELement _DOMTextElement;
|
||||
#endif
|
||||
}
|
||||
|
||||
- (id)initWithFrame:(CGRect)aFrame
|
||||
- (id)initWithFrame:(CGRect)aFrame control:(CPControl)aControl
|
||||
{
|
||||
self = [super initWithFrame:aFrame];
|
||||
|
||||
if (self)
|
||||
{
|
||||
_lineBreakMode = CPLineBreakByClipping;
|
||||
_textColor = nil;
|
||||
|
||||
[self setAlignment:CPCenterTextAlignment];
|
||||
// ?
|
||||
[self setVerticalAlignment:CPTopVerticalTextAlignment];
|
||||
[self setFont:[CPFont systemFontOfSize:12.0]];
|
||||
[self setImagePosition:CPNoImage];
|
||||
[self setImageScaling:CPScaleNone];
|
||||
|
||||
_textColor = nil;
|
||||
if (aControl)
|
||||
{
|
||||
[self setLineBreakMode:[aControl lineBreakMode]];
|
||||
[self setTextColor:[aControl textColor]];
|
||||
[self setAlignment:[aControl alignment]];
|
||||
[self setVerticalAlignment:[aControl verticalAlignment]];
|
||||
[self setFont:[aControl font]];
|
||||
[self setImagePosition:[aControl imagePosition]];
|
||||
[self setImageScaling:[aControl imageScaling]];
|
||||
}
|
||||
else
|
||||
{
|
||||
[self setLineBreakMode:CPLineBreakByClipping];
|
||||
//[self setTextColor:[aControl textColor]];
|
||||
[self setAlignment:CPCenterTextAlignment];
|
||||
[self setFont:[CPFont systemFontOfSize:12.0]];
|
||||
[self setImagePosition:CPNoImage];
|
||||
[self setImageScaling:CPScaleNone];
|
||||
}
|
||||
|
||||
_textSize = NULL;
|
||||
}
|
||||
@@ -101,6 +113,11 @@ var HORIZONTAL_MARGIN = 3.0,
|
||||
return self;
|
||||
}
|
||||
|
||||
- (id)initWithFrame:(CGRect)aFrame
|
||||
{
|
||||
return [self initWithFrame:aFrame control:nil];
|
||||
}
|
||||
|
||||
- (void)setAlignment:(CPTextAlignment)anAlignment
|
||||
{
|
||||
if (_alignment === anAlignment)
|
||||
@@ -489,37 +506,33 @@ var HORIZONTAL_MARGIN = 3.0,
|
||||
textStyle.left = textRectX + "px";
|
||||
textStyle.width = textRectWidth + "px";
|
||||
|
||||
switch (_verticalAlignment)
|
||||
if (_verticalAlignment === CPTopVerticalTextAlignment)
|
||||
{
|
||||
case CPTopVerticalTextAlignment: textStyle.top = "0px";
|
||||
textStyle.height = textRectHeight + "px";
|
||||
|
||||
break;
|
||||
|
||||
case CPCenterVerticalTextAlignment: if (0 && _lineBreakMode !== CPLineBreakByCharWrapping && _lineBreakMode !== CPLineBreakByWordWrapping)
|
||||
{
|
||||
textStyle.lineHeight = textRectHeight + "px";
|
||||
textStyle.height = textRectHeight + "px";
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
if (!_textSize)
|
||||
_textSize = [_text sizeWithFont:_font inWidth:textRectWidth];
|
||||
|
||||
textStyle.top = (textRectY + (textRectHeight - _textSize.height) / 2.0) + "px";
|
||||
textStyle.height = _textSize.height + "px";
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case CPBottomVerticalTextAlignment: if (!_textSize)
|
||||
_textSize = [_text sizeWithFont:_font inWidth:textRectWidth];
|
||||
|
||||
textStyle.top = (textRectY + textRectHeight - _textSize.height) + "px";
|
||||
textStyle.height = _textSize.height + "px";
|
||||
|
||||
break;
|
||||
textStyle.top = "0px";
|
||||
textStyle.height = textRectHeight + "px";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!_textSize)
|
||||
{
|
||||
if (_lineBreakMode === CPLineBreakByCharWrapping ||
|
||||
_lineBreakMode === CPLineBreakByWordWrapping)
|
||||
_textSize = [_text sizeWithFont:_font inWidth:textRectWidth];
|
||||
else
|
||||
_textSize = [_text sizeWithFont:_font];
|
||||
}
|
||||
|
||||
if (_verticalAlignment === CPCenterVerticalTextAlignment)
|
||||
{
|
||||
textStyle.top = (textRectY + (textRectHeight - _textSize.height) / 2.0) + "px";
|
||||
textStyle.height = _textSize.height + "px";
|
||||
}
|
||||
|
||||
else //if (_verticalAlignment === CPBottomVerticalTextAlignment)
|
||||
{
|
||||
textStyle.top = (textRectY + textRectHeight - _textSize.height) + "px";
|
||||
textStyle.height = _textSize.height + "px";
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user