bsnes/hiro/cocoa/widget/line-edit.cpp

84 lines
1.7 KiB
C++

#if defined(Hiro_LineEdit)
@implementation CocoaLineEdit : NSTextField
-(id) initWith:(hiro::mLineEdit&)lineEditReference {
if(self = [super initWithFrame:NSMakeRect(0, 0, 0, 0)]) {
lineEdit = &lineEditReference;
[self setDelegate:self];
[self setTarget:self];
[self setAction:@selector(activate:)];
//prevent focus changes from generating activate event
[[self cell] setSendsActionOnEndEditing:NO];
}
return self;
}
-(void) textDidChange:(NSNotification*)n {
lineEdit->doChange();
}
-(IBAction) activate:(id)sender {
lineEdit->doActivate();
}
@end
namespace hiro {
auto pLineEdit::construct() -> void {
@autoreleasepool {
cocoaView = cocoaLineEdit = [[CocoaLineEdit alloc] initWith:self()];
pWidget::construct();
setBackgroundColor(state().backgroundColor);
setEditable(state().editable);
setForegroundColor(state().foregroundColor);
setText(state().text);
}
}
auto pLineEdit::destruct() -> void {
@autoreleasepool {
[cocoaView removeFromSuperview];
[cocoaView release];
}
}
auto pLineEdit::minimumSize() const -> Size {
Size size = pFont::size(self().font(true), state().text);
return {size.width() + 10, size.height() + 8};
}
auto pLineEdit::setBackgroundColor(Color color) -> void {
}
auto pLineEdit::setEditable(bool editable) -> void {
@autoreleasepool {
[cocoaView setEditable:editable];
}
}
auto pLineEdit::setForegroundColor(Color color) -> void {
}
auto pLineEdit::setText(const string& text) -> void {
@autoreleasepool {
[cocoaView setStringValue:[NSString stringWithUTF8String:text]];
}
}
/*
auto pLineEdit::text() const -> string {
@autoreleasepool {
return [[cocoaView stringValue] UTF8String];
}
}
*/
}
#endif