}
objc_setAssociatedObject(button, "eventdata", event, OBJC_ASSOCIATION_RETAIN);
- NSSegmentedControl *seg;
+ NSSegmentedControl *seg = nil;
if(!item->args.icon) {
- NSArray *labels = @[[[NSString alloc] initWithUTF8String:item->args.label]];
- seg = [NSSegmentedControl segmentedControlWithLabels:labels trackingMode:NSSegmentSwitchTrackingSelectAny target:event action:@selector(handleEvent:)];
- button.view = seg;
+ if(item->args.label) {
+ NSArray *labels = @[[[NSString alloc] initWithUTF8String:item->args.label]];
+ seg = [NSSegmentedControl segmentedControlWithLabels:labels trackingMode:NSSegmentSwitchTrackingSelectAny target:event action:@selector(handleEvent:)];
+ button.view = seg;
+ } else {
+ NSLog(@"UI Error: toggle button has no icon or label");
+ }
} else {
- NSArray *images = @[ui_cocoa_named_icon(item->args.icon)];
- seg = [NSSegmentedControl segmentedControlWithImages:images trackingMode:NSSegmentSwitchTrackingSelectAny target:event action:@selector(handleEvent:)];
+ NSImage *image = ui_cocoa_named_icon(item->args.icon);
+ if(image != nil) {
+ NSArray *images = @[image];
+ seg = [NSSegmentedControl segmentedControlWithImages:images trackingMode:NSSegmentSwitchTrackingSelectAny target:event action:@selector(handleEvent:)];
+ } else {
+ NSLog(@"UI Error: icon %s not found", item->args.icon);
+ }
}
button.view = seg;
}
i->obj = (__bridge void*)seg;
- printf("seg: %p\n", seg);
i->get = ui_toolbar_seg_toggleitem_get;
i->set = ui_toolbar_seg_toggleitem_set;
}
app_delegate = [[AppDelegate alloc] init];
- if(app.delegate != nil) {
- printf("app delegate exists\n");
- } else {
- printf("app delegate is null\n");
- }
fflush(stdout);
app.delegate = app_delegate;
void ui_main(void) {
NSApplicationMain(app_argc, app_argv);
+ //[NSApp finishLaunching];
+ //[NSApp activateIgnoringOtherApps:YES];
+ //[NSApp run];
if(exit_on_shutdown) {
exit(0);
}
[[NSApplication sharedApplication] terminate:nil];
}
+void ui_open_uri(const char *uri) {
+ NSString *urlString = [NSString stringWithUTF8String:uri];
+ NSURL *url = [NSURL URLWithString:urlString];
+ [[NSWorkspace sharedWorkspace] openURL:url];
+}
+
/* ------------------- Window Visibility functions ------------------- */
void ui_show(UiObject *obj) {
}
void ui_textarea_showposition(UiText *text, int pos) {
- ui_textarea_scroll_to(text->obj, pos);
+ if(text->obj) {
+ ui_textarea_scroll_to(text->obj, pos);
+ }
}
void ui_textarea_setselection(UiText *text, int begin, int end) {
if(!value->data2) {
value->data2 = ui_create_undomgr();
}
+ GtkTextBuffer *buf = value->data1;
UiUndoMgr *mgr = value->data2;
if(!mgr->event) {
return;
}
}
- char *text = gtk_text_buffer_get_text(value->obj, start, end, FALSE);
+ char *text = gtk_text_buffer_get_text(buf, start, end, FALSE);
UiTextBufOp *op = malloc(sizeof(UiTextBufOp));
op->prev = NULL;
}
void ui_text_undo(UiText *value) {
+ GtkTextBuffer *buf = value->data1;
UiUndoMgr *mgr = value->data2;
if(mgr->cur) {
case UI_TEXTBUF_INSERT: {
GtkTextIter begin;
GtkTextIter end;
- gtk_text_buffer_get_iter_at_offset(value->obj, &begin, op->start);
- gtk_text_buffer_get_iter_at_offset(value->obj, &end, op->end);
- gtk_text_buffer_delete(value->obj, &begin, &end);
+ gtk_text_buffer_get_iter_at_offset(buf, &begin, op->start);
+ gtk_text_buffer_get_iter_at_offset(buf, &end, op->end);
+ gtk_text_buffer_delete(buf, &begin, &end);
break;
}
case UI_TEXTBUF_DELETE: {
GtkTextIter begin;
GtkTextIter end;
- gtk_text_buffer_get_iter_at_offset(value->obj, &begin, op->start);
- gtk_text_buffer_get_iter_at_offset(value->obj, &end, op->end);
- gtk_text_buffer_insert(value->obj, &begin, op->text, op->len);
+ gtk_text_buffer_get_iter_at_offset(buf, &begin, op->start);
+ gtk_text_buffer_get_iter_at_offset(buf, &end, op->end);
+ gtk_text_buffer_insert(buf, &begin, op->text, op->len);
break;
}
}
}
void ui_text_redo(UiText *value) {
+ GtkTextBuffer *buf = value->data1;
UiUndoMgr *mgr = value->data2;
UiTextBufOp *elm = NULL;
case UI_TEXTBUF_INSERT: {
GtkTextIter begin;
GtkTextIter end;
- gtk_text_buffer_get_iter_at_offset(value->obj, &begin, op->start);
- gtk_text_buffer_get_iter_at_offset(value->obj, &end, op->end);
- gtk_text_buffer_insert(value->obj, &begin, op->text, op->len);
+ gtk_text_buffer_get_iter_at_offset(buf, &begin, op->start);
+ gtk_text_buffer_get_iter_at_offset(buf, &end, op->end);
+ gtk_text_buffer_insert(buf, &begin, op->text, op->len);
break;
}
case UI_TEXTBUF_DELETE: {
GtkTextIter begin;
GtkTextIter end;
- gtk_text_buffer_get_iter_at_offset(value->obj, &begin, op->start);
- gtk_text_buffer_get_iter_at_offset(value->obj, &end, op->end);
- gtk_text_buffer_delete(value->obj, &begin, &end);
+ gtk_text_buffer_get_iter_at_offset(buf, &begin, op->start);
+ gtk_text_buffer_get_iter_at_offset(buf, &end, op->end);
+ gtk_text_buffer_delete(buf, &begin, &end);
break;
}
}