1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
//
// MButtonImageCell.m
// MySQLGUICommon
//
// Created by Alfredo Kojima on Wed Jul 07 2004.
// Copyright (c) 2004 MySQL AB. All rights reserved.
//
#import "MButtonImageCell.h"
#define IMAGE_OFFSET 2
@implementation MButtonImageCell
- (void)dealloc
{
[_image release];
[super dealloc];
}
- copyWithZone:(NSZone*)zone
{
MButtonImageCell *copy = (MButtonImageCell*)[super copyWithZone:zone];
if (_image)
copy->_image = [_image retain];
else
copy->_image= nil;
return copy;
}
- (void)setIconImage:(NSImage*)image
{
if (image != _image)
{
[_image release];
_image= [image retain];
}
}
- (NSImage*)iconImage
{
return _image;
}
- (void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent
{
NSRect textFrame, imageFrame;
NSLog(@"here!!!!!!!!!!!!!!!!!!!!!!!!!");
NSDivideRect(aRect, &imageFrame, &textFrame, IMAGE_OFFSET + [_image size].width, NSMinXEdge);
[super editWithFrame: textFrame inView: controlView editor:textObj delegate:anObject event: theEvent];
}
- (void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(int)selStart length:(int)selLength
{
NSRect textFrame, imageFrame;
NSDivideRect(aRect, &imageFrame, &textFrame, IMAGE_OFFSET + [_image size].width, NSMinXEdge);
[super selectWithFrame: textFrame inView: controlView editor:textObj delegate:anObject start:selStart length:selLength];
}
- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
if (_image != nil)
{
NSSize imageSize;
NSRect imageFrame;
imageSize = [_image size];
NSDivideRect(cellFrame, &imageFrame, &cellFrame, IMAGE_OFFSET + imageSize.width, NSMinXEdge);
imageFrame.origin.x += IMAGE_OFFSET;
if ([controlView isFlipped])
imageFrame.origin.y += ceil((cellFrame.size.height + imageSize.height) / 2);
else
imageFrame.origin.y += ceil((cellFrame.size.height - imageSize.height) / 2);
[_image compositeToPoint:imageFrame.origin operation:NSCompositeSourceOver];
}
[super drawWithFrame:cellFrame inView:controlView];
}
- (NSSize)cellSize
{
NSSize cellSize = [super cellSize];
cellSize.width += (_image ? [_image size].width : 0) + IMAGE_OFFSET;
return cellSize;
}
@end
|