diff --git a/src/cocoa/NSTabView.nim b/src/cocoa/NSTabView.nim index ec7ca19..1905984 100644 --- a/src/cocoa/NSTabView.nim +++ b/src/cocoa/NSTabView.nim @@ -4,4 +4,5 @@ import NSFunctions proc newTabBox*(parent: ID, label: cstring; left: cint; top: cint; width: cint; height: cint): ID {.cdecl, importc: "createTabView".} -proc addTab*(parent: ID, label: cstring) {.cdecl, importc: "addTab".} \ No newline at end of file +proc addTab*(parent: ID, label: cstring) {.cdecl, importc: "addTab".} +proc getTab*(parent: ID, label: cstring): ID {.cdecl, importc: "getTab".} \ No newline at end of file diff --git a/src/cocoa/widgets/button.m b/src/cocoa/widgets/button.m index 6c4ee95..3392883 100644 --- a/src/cocoa/widgets/button.m +++ b/src/cocoa/widgets/button.m @@ -27,7 +27,8 @@ id createButton(id parent, const char* caption, int l, int t, int w, int h, ACTI [widget setButtonAction:func]; [widget setAction: @selector(click:)]; } - [[parent contentView] addSubview:widget]; + addToParent(parent, widget); + return widget; } diff --git a/src/cocoa/widgets/checkbox.m b/src/cocoa/widgets/checkbox.m index 6a97a3b..62991fa 100644 --- a/src/cocoa/widgets/checkbox.m +++ b/src/cocoa/widgets/checkbox.m @@ -12,7 +12,8 @@ id createCheckBox(id parent, const char* caption, int l, int t, int w, int h){ [self setTitle: [NSString stringWithUTF8String:caption]]; [self setTarget: self]; - [[parent contentView] addSubview:self]; + addToParent(parent, self); + return self; } diff --git a/src/cocoa/widgets/col.h b/src/cocoa/widgets/col.h index 2b017b0..589bb0a 100644 --- a/src/cocoa/widgets/col.h +++ b/src/cocoa/widgets/col.h @@ -580,6 +580,7 @@ id createSlider(id parent, int left, int top, int width, int height, ACTION callback); + void addToParent(id parent, id child); #ifdef __cplusplus } #endif diff --git a/src/cocoa/widgets/combobox.m b/src/cocoa/widgets/combobox.m index c4ea334..fe81f48 100644 --- a/src/cocoa/widgets/combobox.m +++ b/src/cocoa/widgets/combobox.m @@ -37,7 +37,8 @@ id createComboBox(id parent,int l, int t, int w, int h, ACTION callback){ // [widget setAction: @selector(click:)]; } - [[parent contentView] addSubview:widget]; + addToParent(parent, widget); + return widget; } diff --git a/src/cocoa/widgets/container.m b/src/cocoa/widgets/container.m index a53c9bb..47ec76a 100644 --- a/src/cocoa/widgets/container.m +++ b/src/cocoa/widgets/container.m @@ -12,6 +12,6 @@ id createBox(id parent, const char* title, int x, int y, int width, int height) [sv setBackgroundColor: [NSColor windowBackgroundColor]]; [widget setContentView: sv]; [widget setBorderType: NSLineBorder]; - [[parent contentView] addSubview:widget]; + addToParent(parent, widget); return widget; } \ No newline at end of file diff --git a/src/cocoa/widgets/functions.m b/src/cocoa/widgets/functions.m index 9974253..a6d4223 100644 --- a/src/cocoa/widgets/functions.m +++ b/src/cocoa/widgets/functions.m @@ -156,3 +156,12 @@ void Notify(const char *title, const char * subtitle, const char *text) { } +void addToParent(id parent, id child) { + NSString *widgetClass = [[parent class] description]; + if ([widgetClass isEqualToString:@"NSTabViewItem"]) { + [[parent view] addSubview: child]; + } else { + [[parent contentView] addSubview: child]; + } +} + diff --git a/src/cocoa/widgets/label.m b/src/cocoa/widgets/label.m index 4ef41f7..4bceefc 100644 --- a/src/cocoa/widgets/label.m +++ b/src/cocoa/widgets/label.m @@ -9,6 +9,6 @@ id createLabel(id parent, const char* txt, int l, int t, int w, int h){ [widget setAlignment: NSTextAlignmentLeft]; [widget setDrawsBackground: NO]; [widget setBordered: NO]; - [[parent contentView] addSubview:widget]; + addToParent(parent, widget); return widget; } diff --git a/src/cocoa/widgets/line.m b/src/cocoa/widgets/line.m index 3f94f09..a32d381 100644 --- a/src/cocoa/widgets/line.m +++ b/src/cocoa/widgets/line.m @@ -5,7 +5,7 @@ id createLine(id parent, int x, int y, int width) { NSBox *widget = [[[NSBox alloc] initWithFrame:NSMakeRect(x,y,width,1)] autorelease]; widget.boxType = NSBoxSeparator; - [[parent contentView] addSubview:widget]; + addToParent(parent, widget); return widget; } diff --git a/src/cocoa/widgets/listbox.m b/src/cocoa/widgets/listbox.m index a914db4..6921b05 100644 --- a/src/cocoa/widgets/listbox.m +++ b/src/cocoa/widgets/listbox.m @@ -80,6 +80,6 @@ id createListBox(id parent,int l, int t, int w, int h){ id self = [[[CocoaListBox alloc] initWithFrame:NSMakeRect( l, t, w, h )] autorelease]; - [[parent contentView] addSubview:self]; + addToParent(parent, self); return self; } diff --git a/src/cocoa/widgets/radiobutton.m b/src/cocoa/widgets/radiobutton.m index a7b5ced..3b3a879 100644 --- a/src/cocoa/widgets/radiobutton.m +++ b/src/cocoa/widgets/radiobutton.m @@ -23,6 +23,8 @@ id createRadioButton(id parent, const char* caption, int l, int t, int w, int h, [self setButtonAction:func]; [self setAction: @selector(click:)]; } - [[parent contentView] addSubview:self]; + + addToParent(parent, self); + return self; } \ No newline at end of file diff --git a/src/cocoa/widgets/slider.m b/src/cocoa/widgets/slider.m index 945a86d..fd15fc3 100644 --- a/src/cocoa/widgets/slider.m +++ b/src/cocoa/widgets/slider.m @@ -33,6 +33,6 @@ id createSlider(id parent, int left, int top, int width, int height, ACTION callback) { id widget = [[CocoaSlider alloc] initWithFrame:NSMakeRect(left, top, width, height) callBack:callback]; - [[parent contentView] addSubview:widget]; + addToParent(parent, self); return widget; } diff --git a/src/cocoa/widgets/tabview.m b/src/cocoa/widgets/tabview.m index 36740ef..22e570e 100644 --- a/src/cocoa/widgets/tabview.m +++ b/src/cocoa/widgets/tabview.m @@ -11,11 +11,16 @@ id createTabView(id parent, const char *label, int x, int y, int width, int heig for(NSString *x in items) { + id sv = [[[SaneView alloc] initWithFrame: NSZeroRect] autorelease]; + [sv setBackgroundColor: [NSColor windowBackgroundColor]]; + + id *tabwidget = [[[NSTabViewItem alloc] initWithIdentifier: x ] autorelease]; [tabwidget setLabel: x]; + [tabwidget setView: sv]; [widget addTabViewItem: tabwidget]; } - + [[parent contentView] addSubview:widget]; return widget; } @@ -29,4 +34,11 @@ void addTab(id parent, const char *name) { [widget setLabel: x]; [parent addTabViewItem: widget]; } -} \ No newline at end of file +} + +id getTab(id parent, const char *name) { + NSString *str = [NSString stringWithUTF8String:name]; + NSInteger index = [parent indexOfTabViewItemWithIdentifier: str]; + // NSLog(@"%@", [[parent tabViewItemAtIndex: index] view]); + return [parent tabViewItemAtIndex: index]; +} diff --git a/src/cocoa/widgets/textedit.m b/src/cocoa/widgets/textedit.m index 314e2bc..1076452 100644 --- a/src/cocoa/widgets/textedit.m +++ b/src/cocoa/widgets/textedit.m @@ -104,7 +104,7 @@ id createTextEdit(id parent, const char* txt, int l, int t, int w, int h) { [[widget documentView] setString:str]; } - [[parent contentView] addSubview:widget]; + addToParent(parent, widget); return widget; } diff --git a/src/cocoa/widgets/textfield.m b/src/cocoa/widgets/textfield.m index ef46902..f51a9c0 100644 --- a/src/cocoa/widgets/textfield.m +++ b/src/cocoa/widgets/textfield.m @@ -6,6 +6,6 @@ id createTextField(id parent, const char* txt, int l, int t, int w, int h){ NSTextField *widget = [[[NSTextField alloc] initWithFrame:NSMakeRect( l, t, w, h )] autorelease]; [widget setStringValue:[NSString stringWithUTF8String:txt]]; // [widget setAutoresizingMask: NSViewWidthSizable]; - [[parent contentView] addSubview:widget]; + addToParent(parent, widget); return widget; }