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 70 71 72 73 74 75 76 77 78
|
#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->state.text = [[self stringValue] UTF8String];
lineEdit->doChange();
}
-(IBAction) activate:(id)sender {
lineEdit->doActivate();
}
@end
namespace hiro {
auto pLineEdit::construct() -> void {
cocoaView = cocoaLineEdit = [[CocoaLineEdit alloc] initWith:self()];
pWidget::construct();
setBackgroundColor(state().backgroundColor);
setEditable(state().editable);
setForegroundColor(state().foregroundColor);
setText(state().text);
}
auto pLineEdit::destruct() -> void {
[cocoaView removeFromSuperview];
}
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 {
[(CocoaLineEdit*)cocoaView setEditable:editable];
}
auto pLineEdit::setForegroundColor(SystemColor color) -> void {
[[(CocoaLineEdit*)cocoaView cell] setTextColor: NSMakeColor(color)?: NSMakeColor(hiro::SystemColor::Text)];
}
auto pLineEdit::setForegroundColor(Color color) -> void {
[[(CocoaLineEdit*)cocoaView cell] setTextColor: NSMakeColor(color)?: NSMakeColor(hiro::SystemColor::Text)];
}
auto pLineEdit::setText(const string& text) -> void {
[(CocoaLineEdit*)cocoaView setStringValue:[NSString stringWithUTF8String:text]];
}
/*
auto pLineEdit::text() const -> string {
return [[cocoaView stringValue] UTF8String];
}
*/
}
#endif
|