bsnes/hiro/cocoa/widget/check-label.cpp

62 lines
1.4 KiB
C++
Raw Normal View History

@implementation CocoaCheckLabel : NSButton
-(id) initWith:(phoenix::CheckLabel&)checkLabelReference {
if(self = [super initWithFrame:NSMakeRect(0, 0, 0, 0)]) {
checkLabel = &checkLabelReference;
[self setTarget:self];
[self setAction:@selector(activate:)];
[self setButtonType:NSSwitchButton];
}
return self;
}
-(IBAction) activate:(id)sender {
checkLabel->state.checked = [self state] != NSOffState;
if(checkLabel->onToggle) checkLabel->onToggle();
}
@end
namespace phoenix {
Size pCheckLabel::minimumSize() {
Size size = Font::size(checkLabel.font(), checkLabel.state.text);
return {size.width + 20, size.height};
}
void pCheckLabel::setChecked(bool checked) {
@autoreleasepool {
[cocoaView setState:checked ? NSOnState : NSOffState];
}
}
void pCheckLabel::setGeometry(Geometry geometry) {
pWidget::setGeometry({
geometry.x - 2, geometry.y,
geometry.width + 4, geometry.height
});
}
void pCheckLabel::setText(string text) {
@autoreleasepool {
[cocoaView setTitle:[NSString stringWithUTF8String:text]];
}
}
void pCheckLabel::constructor() {
@autoreleasepool {
cocoaView = cocoaCheckLabel = [[CocoaCheckLabel alloc] initWith:checkLabel];
setChecked(checkLabel.state.checked);
setText(checkLabel.state.text);
}
}
void pCheckLabel::destructor() {
@autoreleasepool {
[cocoaView release];
}
}
}