Fork Of

gist: 9714 by boucher checkbox

Revisions

gist: 54686 Download_button fork
public
Public Clone URL: git://gist.github.com/54686.git
Embed All Files: show embed
Text only #
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
var checkboxImage,
    checkboxAlternateImage,
    checkboxCheckedImage,
    checkboxCheckedAlternateImage;
 
@implementation CheckboxButton : CPButton
{
    BOOL _isChecked;
}
 
+ (void)initialize
{
    checkboxImage = [[CPImage alloc] initWithContentsOfFile: "Resources/Checkbox/checkbox.png" size: CPSizeMake(14, 15)],
    checkboxAlternateImage = [[CPImage alloc] initWithContentsOfFile: "Resources/Checkbox/checkbox_h.png" size: CPSizeMake(14, 15)],
    checkboxCheckedImage = [[CPImage alloc] initWithContentsOfFile: "Resources/Checkbox/checkbox_checked.png" size: CPSizeMake(14, 15)],
    checkboxCheckedAlternateImage = [[CPImage alloc] initWithContentsOfFile: "Resources/Checkbox/checkbox_checked_h.png" size: CPSizeMake(14, 15)];
}
 
- (id)initWithFrame:(CPRect)frame
{
    self = [super initWithFrame: frame];
 
    _isChecked = false;
 
    [self setTitle:@"_"];
    [self setBordered:NO];
 
    // FIXME: No!
    [_imageAndTitleView._titleField setLineBreakMode: CPLineBreakByWordWrapping];
    [self setImage: checkboxImage];
    [self setAlternateImage: checkboxAlternateImage];
 
    [self setImagePosition: CPImageLeft];
    [self setAlignment:CPLeftTextAlignment];
 
    return self;
}
 
- (void)mouseUp:(CPEvent)anEvent
{
    if (CGRectContainsPoint([self bounds], [self convertPoint:[anEvent locationInWindow] fromView:nil])) {
      [self setChecked: !_isChecked];
    }
    [super mouseUp: anEvent];
}
 
- (BOOL)isChecked
{
    return _isChecked;
}
 
- (void)setChecked:(BOOL)flag
{
    _isChecked = flag;
 
    if(_isChecked)
    {
        [self setImage: checkboxCheckedImage];
        [self setAlternateImage: checkboxCheckedAlternateImage];
    }
    else
    {
        [self setImage: checkboxImage];
        [self setAlternateImage: checkboxAlternateImage];
    }
}
 
@end