File: MButtonImageCell.m

package info (click to toggle)
mysql-query-browser 1.1.6-1sarge0
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 36,320 kB
  • ctags: 24,680
  • sloc: pascal: 203,479; xml: 136,561; ansic: 47,502; cpp: 28,926; sh: 12,433; objc: 4,823; java: 1,849; php: 1,485; python: 1,225; sql: 1,128; makefile: 872
file content (86 lines) | stat: -rw-r--r-- 2,338 bytes parent folder | download | duplicates (2)
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