mirror of https://github.com/bsnes-emu/bsnes.git
79 lines
1.8 KiB
C++
79 lines
1.8 KiB
C++
@implementation CocoaComboButton : NSPopUpButton
|
|
|
|
-(id) initWith:(phoenix::ComboButton&)comboButtonReference {
|
|
if(self = [super initWithFrame:NSMakeRect(0, 0, 0, 0) pullsDown:NO]) {
|
|
comboButton = &comboButtonReference;
|
|
|
|
[self setTarget:self];
|
|
[self setAction:@selector(activate:)];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
-(IBAction) activate:(id)sender {
|
|
comboButton->state.selection = [self indexOfSelectedItem];
|
|
if(comboButton->onChange) comboButton->onChange();
|
|
}
|
|
|
|
@end
|
|
|
|
namespace phoenix {
|
|
|
|
void pComboButton::append(string text) {
|
|
@autoreleasepool {
|
|
[cocoaView addItemWithTitle:[NSString stringWithUTF8String:text]];
|
|
}
|
|
}
|
|
|
|
Size pComboButton::minimumSize() {
|
|
unsigned maximumWidth = 0;
|
|
for(auto& text : comboButton.state.text) maximumWidth = max(maximumWidth, Font::size(comboButton.font(), text).width);
|
|
Size size = Font::size(comboButton.font(), " ");
|
|
return {maximumWidth + 36, size.height + 6};
|
|
}
|
|
|
|
void pComboButton::remove(unsigned selection) {
|
|
@autoreleasepool {
|
|
[cocoaView removeItemAtIndex:selection];
|
|
}
|
|
}
|
|
|
|
void pComboButton::reset() {
|
|
@autoreleasepool {
|
|
[cocoaView removeAllItems];
|
|
}
|
|
}
|
|
|
|
void pComboButton::setGeometry(Geometry geometry) {
|
|
pWidget::setGeometry({
|
|
geometry.x - 2, geometry.y,
|
|
geometry.width + 4, geometry.height
|
|
});
|
|
}
|
|
|
|
void pComboButton::setSelection(unsigned selection) {
|
|
@autoreleasepool {
|
|
[cocoaView selectItemAtIndex:selection];
|
|
}
|
|
}
|
|
|
|
void pComboButton::setText(unsigned selection, string text) {
|
|
@autoreleasepool {
|
|
[[cocoaView itemAtIndex:selection] setTitle:[NSString stringWithUTF8String:text]];
|
|
}
|
|
}
|
|
|
|
void pComboButton::constructor() {
|
|
@autoreleasepool {
|
|
cocoaView = cocoaComboButton = [[CocoaComboButton alloc] initWith:comboButton];
|
|
}
|
|
}
|
|
|
|
void pComboButton::destructor() {
|
|
@autoreleasepool {
|
|
[cocoaView release];
|
|
}
|
|
}
|
|
|
|
}
|