| 47 |
47 |
| 48 static char* nl_strdup(const char* str) { |
48 static char* nl_strdup(const char* str) { |
| 49 return str ? strdup(str) : NULL; |
49 return str ? strdup(str) : NULL; |
| 50 } |
50 } |
| 51 |
51 |
| 52 static UiToolbarItemArgs itemargs_copy(UiToolbarItemArgs args, size_t *ngroups) { |
52 static UiToolbarItemArgs itemargs_copy(UiToolbarItemArgs *args, size_t *ngroups) { |
| 53 UiToolbarItemArgs newargs; |
53 UiToolbarItemArgs newargs; |
| 54 newargs.label = nl_strdup(args.label); |
54 newargs.label = nl_strdup(args->label); |
| 55 newargs.stockid = nl_strdup(args.stockid); |
55 newargs.stockid = nl_strdup(args->stockid); |
| 56 newargs.icon = nl_strdup(args.icon); |
56 newargs.icon = nl_strdup(args->icon); |
| 57 newargs.onclick = args.onclick; |
57 newargs.onclick = args->onclick; |
| 58 newargs.onclickdata = args.onclickdata; |
58 newargs.onclickdata = args->onclickdata; |
| 59 newargs.groups = uic_copy_groups(args.groups, ngroups); |
59 newargs.groups = uic_copy_groups(args->groups, ngroups); |
| 60 return newargs; |
60 return newargs; |
| 61 } |
61 } |
| 62 |
62 |
| 63 void ui_toolbar_item_create(const char* name, UiToolbarItemArgs args) { |
63 void ui_toolbar_item_create(const char* name, UiToolbarItemArgs *args) { |
| 64 UiToolbarItem* item = malloc(sizeof(UiToolbarItem)); |
64 UiToolbarItem* item = malloc(sizeof(UiToolbarItem)); |
| 65 item->item.type = UI_TOOLBAR_ITEM; |
65 item->item.type = UI_TOOLBAR_ITEM; |
| 66 item->args = itemargs_copy(args, &item->ngroups); |
66 item->args = itemargs_copy(args, &item->ngroups); |
| 67 cxMapPut(toolbar_items, name, item); |
67 cxMapPut(toolbar_items, name, item); |
| 68 } |
68 } |
| 69 |
69 |
| 70 |
70 |
| 71 static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs args, size_t *ngroups) { |
71 static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs *args, size_t *ngroups) { |
| 72 UiToolbarToggleItemArgs newargs; |
72 UiToolbarToggleItemArgs newargs; |
| 73 newargs.label = nl_strdup(args.label); |
73 newargs.label = nl_strdup(args->label); |
| 74 newargs.stockid = nl_strdup(args.stockid); |
74 newargs.stockid = nl_strdup(args->stockid); |
| 75 newargs.icon = nl_strdup(args.icon); |
75 newargs.icon = nl_strdup(args->icon); |
| 76 newargs.varname = nl_strdup(args.varname); |
76 newargs.varname = nl_strdup(args->varname); |
| 77 newargs.onchange = args.onchange; |
77 newargs.onchange = args->onchange; |
| 78 newargs.onchangedata = args.onchangedata; |
78 newargs.onchangedata = args->onchangedata; |
| 79 newargs.groups = uic_copy_groups(args.groups, ngroups); |
79 newargs.groups = uic_copy_groups(args->groups, ngroups); |
| 80 return newargs; |
80 return newargs; |
| 81 } |
81 } |
| 82 |
82 |
| 83 void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs args) { |
83 void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *args) { |
| 84 UiToolbarToggleItem* item = malloc(sizeof(UiToolbarToggleItem)); |
84 UiToolbarToggleItem* item = malloc(sizeof(UiToolbarToggleItem)); |
| 85 item->item.type = UI_TOOLBAR_TOGGLEITEM; |
85 item->item.type = UI_TOOLBAR_TOGGLEITEM; |
| 86 item->args = toggleitemargs_copy(args, &item->ngroups); |
86 item->args = toggleitemargs_copy(args, &item->ngroups); |
| 87 cxMapPut(toolbar_items, name, item); |
87 cxMapPut(toolbar_items, name, item); |
| 88 } |
88 } |
| 89 |
89 |
| 90 static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs args) { |
90 static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args) { |
| 91 UiToolbarMenuArgs newargs; |
91 UiToolbarMenuArgs newargs; |
| 92 newargs.label = nl_strdup(args.label); |
92 newargs.label = nl_strdup(args->label); |
| 93 newargs.stockid = nl_strdup(args.stockid); |
93 newargs.stockid = nl_strdup(args->stockid); |
| 94 newargs.icon = nl_strdup(args.icon); |
94 newargs.icon = nl_strdup(args->icon); |
| 95 return newargs; |
95 return newargs; |
| 96 } |
96 } |
| 97 |
97 |
| 98 UIEXPORT void ui_toolbar_menu_create(const char* name, UiToolbarMenuArgs args) { |
98 UIEXPORT void ui_toolbar_menu_create(const char* name, UiToolbarMenuArgs *args) { |
| 99 UiToolbarMenuItem* item = malloc(sizeof(UiToolbarMenuItem)); |
99 UiToolbarMenuItem* item = malloc(sizeof(UiToolbarMenuItem)); |
| 100 item->item.type = UI_TOOLBAR_MENU; |
100 item->item.type = UI_TOOLBAR_MENU; |
| 101 memset(&item->menu, 0, sizeof(UiMenu)); |
101 memset(&item->menu, 0, sizeof(UiMenu)); |
| 102 item->args = menuargs_copy(args); |
102 item->args = menuargs_copy(args); |
| 103 |
103 |