mirror of https://github.com/Airr/nim-cocoa.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.8 KiB
83 lines
2.8 KiB
#import <Cocoa/Cocoa.h>
|
|
|
|
#import "col.h"
|
|
|
|
@implementation CocoaTextEdit
|
|
@synthesize widget;
|
|
|
|
- (id)initWithFrame:(NSRect)frame {
|
|
self = [super initWithFrame:frame];
|
|
if (self) {
|
|
self.widget = [[[NSTextView alloc] initWithFrame:frame] autorelease];
|
|
[[self.widget textContainer] setContainerSize:NSMakeSize(FLT_MAX, FLT_MAX)];
|
|
[[self.widget textContainer] setWidthTracksTextView:NO];
|
|
[self.widget setHorizontallyResizable:YES];
|
|
[self.widget setTextContainerInset:NSMakeSize(2.0,2.0)];
|
|
[self setHasHorizontalScroller: YES];
|
|
[self setHasVerticalScroller: YES];
|
|
[self.widget setFont: [NSFont userFontOfSize:13.0]];
|
|
[self.widget setDelegate:self];
|
|
[self.widget becomeFirstResponder];
|
|
// [self.widget setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
|
|
[self setDocumentView: widget];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (BOOL)performKeyEquivalent:(NSEvent *)theEvent
|
|
{
|
|
if (([theEvent type] == NSEventTypeKeyDown) && ([theEvent modifierFlags] & NSEventModifierFlagCommand)) {
|
|
NSResponder * responder = [[self window] firstResponder];
|
|
|
|
if ((responder != nil) && [responder isKindOfClass:[NSTextView class]]) {
|
|
NSTextView * textView = (NSTextView *)responder;
|
|
NSRange range = [textView selectedRange];
|
|
bool bHasSelectedTexts = (range.length > 0);
|
|
|
|
unsigned short keyCode = [theEvent keyCode];
|
|
|
|
bool bHandled = false;
|
|
|
|
//6 Z, 7 X, 8 C, 9 V
|
|
if (keyCode == 6) {
|
|
if ([[textView undoManager] canUndo])
|
|
{
|
|
[[textView undoManager] undo];
|
|
bHandled = true;
|
|
}
|
|
}
|
|
else if (keyCode == 7 && bHasSelectedTexts) {
|
|
[textView cut:self];
|
|
bHandled = true;
|
|
}
|
|
else if (keyCode== 8 && bHasSelectedTexts) {
|
|
[textView copy:self];
|
|
bHandled = true;
|
|
}
|
|
else if (keyCode == 9) {
|
|
[textView paste:self];
|
|
bHandled = true;
|
|
}
|
|
|
|
if (bHandled)
|
|
return YES;
|
|
}
|
|
}
|
|
|
|
return NO;
|
|
}
|
|
|
|
|
|
@end
|
|
|
|
id createTextEdit(id parent, const char* txt, int l, int t, int w, int h) {
|
|
CocoaTextEdit *widget = [[[CocoaTextEdit alloc] initWithFrame:NSMakeRect( l, t, w, h )] autorelease];
|
|
if (strlen(txt)>0) {
|
|
NSString *str = [NSString stringWithUTF8String:txt];
|
|
[[widget documentView] setString:str];
|
|
}
|
|
|
|
[[parent contentView] addSubview:widget];
|
|
return widget;
|
|
}
|
|
|
|
|