| 547 uic_add_group_widget(ctx, widget, enable, groups); |
547 uic_add_group_widget(ctx, widget, enable, groups); |
| 548 |
548 |
| 549 cxListFree(groups); |
549 cxListFree(groups); |
| 550 } |
550 } |
| 551 |
551 |
| 552 void ui_widget_set_groups2(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, int *groups, int ngroups) { |
552 void ui_widget_set_groups2(UiContext *ctx, UIWIDGET widget, ui_enablefunc enable, const int *groups, int ngroups) { |
| 553 if(enable == NULL) { |
553 if(enable == NULL) { |
| 554 enable = (ui_enablefunc)ui_set_enabled; |
554 enable = (ui_enablefunc)ui_set_enabled; |
| 555 } |
555 } |
| 556 CxList *ls = cxArrayListCreate(cxDefaultAllocator, NULL, sizeof(int), ngroups); |
556 CxList *ls = cxArrayListCreate(cxDefaultAllocator, NULL, sizeof(int), ngroups); |
| 557 for(int i=0;i<ngroups;i++) { |
557 for(int i=0;i<ngroups;i++) { |
| 559 } |
559 } |
| 560 uic_add_group_widget(ctx, widget, enable, ls); |
560 uic_add_group_widget(ctx, widget, enable, ls); |
| 561 cxListFree(ls); |
561 cxListFree(ls); |
| 562 } |
562 } |
| 563 |
563 |
| 564 void ui_widget_set_visibility_states(UiContext *ctx, UIWIDGET widget, int *states, int nstates) { |
564 void ui_widget_set_visibility_states(UiContext *ctx, UIWIDGET widget, const int *states, int nstates) { |
| 565 ui_widget_set_groups2(ctx, widget, (ui_enablefunc)ui_set_visible, states, nstates); |
565 ui_widget_set_groups2(ctx, widget, (ui_enablefunc)ui_set_visible, states, nstates); |
| 566 } |
566 } |
| 567 |
567 |
| 568 size_t uic_group_array_size(const int *groups) { |
568 size_t uic_group_array_size(const int *groups) { |
| 569 int i; |
569 int i; |
| 620 |
620 |
| 621 void* ui_realloc(UiContext *ctx, void *ptr, size_t size) { |
621 void* ui_realloc(UiContext *ctx, void *ptr, size_t size) { |
| 622 return ctx ? cxRealloc(ctx->allocator, ptr, size) : NULL; |
622 return ctx ? cxRealloc(ctx->allocator, ptr, size) : NULL; |
| 623 } |
623 } |
| 624 |
624 |
| 625 UIEXPORT char* ui_strdup(UiContext *ctx, const char *str) { |
625 char* ui_strdup(UiContext *ctx, const char *str) { |
| 626 if(!ctx) { |
626 if(!ctx) { |
| 627 return NULL; |
627 return NULL; |
| 628 } |
628 } |
| 629 cxstring s = cx_str(str); |
629 cxstring s = cx_str(str); |
| 630 cxmutstr d = cx_strdup_a(ctx->allocator, s); |
630 cxmutstr d = cx_strdup_a(ctx->allocator, s); |
| 631 return d.ptr; |
631 return d.ptr; |
| 632 } |
632 } |
| |
633 |
| |
634 void ui_reg_destructor(UiContext *ctx, void *data, ui_destructor_func destr) { |
| |
635 cxMempoolRegister(ctx->mp, data, (cx_destructor_func)destr); |
| |
636 } |
| |
637 |
| |
638 void ui_set_destructor(void *mem, ui_destructor_func destr) { |
| |
639 cxMempoolSetDestructor(mem, (cx_destructor_func)destr); |
| |
640 } |