bsnes/phoenix/cocoa/action/radio-item.cpp

54 lines
1.1 KiB
C++
Raw Normal View History

@implementation CocoaRadioItem : NSMenuItem
-(id) initWith:(phoenix::RadioItem&)radioItemReference {
if(self = [super initWithTitle:@"" action:@selector(activate) keyEquivalent:@""]) {
radioItem = &radioItemReference;
[self setTarget:self];
[self setOnStateImage:[NSImage imageNamed:@"NSMenuRadio"]];
}
return self;
}
-(void) activate {
radioItem->setChecked();
if(radioItem->onActivate) radioItem->onActivate();
}
@end
namespace phoenix {
void pRadioItem::setChecked() {
@autoreleasepool {
for(auto& item : radioItem.state.group) {
auto state = (&item == &radioItem) ? NSOnState : NSOffState;
[item.p.cocoaAction setState:state];
}
}
}
void pRadioItem::setGroup(const group<RadioItem>& group) {
}
void pRadioItem::setText(string text) {
@autoreleasepool {
[cocoaAction setTitle:[NSString stringWithUTF8String:text]];
}
}
void pRadioItem::constructor() {
@autoreleasepool {
cocoaAction = cocoaRadioItem = [[CocoaRadioItem alloc] initWith:radioItem];
setText(radioItem.state.text);
}
}
void pRadioItem::destructor() {
@autoreleasepool {
[cocoaAction release];
}
}
}