| 55 newargs.label = nl_strdup(args->label); |
55 newargs.label = nl_strdup(args->label); |
| 56 newargs.icon = nl_strdup(args->icon); |
56 newargs.icon = nl_strdup(args->icon); |
| 57 newargs.tooltip = nl_strdup(args->tooltip); |
57 newargs.tooltip = nl_strdup(args->tooltip); |
| 58 newargs.onclick = args->onclick; |
58 newargs.onclick = args->onclick; |
| 59 newargs.onclickdata = args->onclickdata; |
59 newargs.onclickdata = args->onclickdata; |
| 60 newargs.groups = uic_copy_groups(args->groups, ngroups); |
60 newargs.states = uic_copy_states(args->states, ngroups); |
| 61 newargs.visibility_states = uic_copy_groups(args->visibility_states, nvstates); |
61 newargs.visibility_states = uic_copy_states(args->visibility_states, nvstates); |
| 62 return newargs; |
62 return newargs; |
| 63 } |
63 } |
| 64 |
64 |
| 65 void ui_toolbar_item_create(const char* name, UiToolbarItemArgs *args) { |
65 void ui_toolbar_item_create(const char* name, UiToolbarItemArgs *args) { |
| 66 UiToolbarItem* item = malloc(sizeof(UiToolbarItem)); |
66 UiToolbarItem* item = malloc(sizeof(UiToolbarItem)); |
| 67 item->item.type = UI_TOOLBAR_ITEM; |
67 item->item.type = UI_TOOLBAR_ITEM; |
| 68 item->args = itemargs_copy(args, &item->ngroups, &item->nvstates); |
68 item->args = itemargs_copy(args, &item->nstates, &item->nvstates); |
| 69 cxMapPut(toolbar_items, name, item); |
69 cxMapPut(toolbar_items, name, item); |
| 70 } |
70 } |
| 71 |
71 |
| 72 |
72 |
| 73 static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs *args, size_t *ngroups, size_t *nvstates) { |
73 static UiToolbarToggleItemArgs toggleitemargs_copy(UiToolbarToggleItemArgs *args, size_t *ngroups, size_t *nvstates) { |
| 76 newargs.icon = nl_strdup(args->icon); |
76 newargs.icon = nl_strdup(args->icon); |
| 77 newargs.tooltip = nl_strdup(args->tooltip); |
77 newargs.tooltip = nl_strdup(args->tooltip); |
| 78 newargs.varname = nl_strdup(args->varname); |
78 newargs.varname = nl_strdup(args->varname); |
| 79 newargs.onchange = args->onchange; |
79 newargs.onchange = args->onchange; |
| 80 newargs.onchangedata = args->onchangedata; |
80 newargs.onchangedata = args->onchangedata; |
| 81 newargs.groups = uic_copy_groups(args->groups, ngroups); |
81 newargs.states = uic_copy_states(args->states, ngroups); |
| 82 newargs.visibility_states = uic_copy_groups(args->visibility_states, nvstates); |
82 newargs.visibility_states = uic_copy_states(args->visibility_states, nvstates); |
| 83 return newargs; |
83 return newargs; |
| 84 } |
84 } |
| 85 |
85 |
| 86 void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *args) { |
86 void ui_toolbar_toggleitem_create(const char* name, UiToolbarToggleItemArgs *args) { |
| 87 UiToolbarToggleItem* item = malloc(sizeof(UiToolbarToggleItem)); |
87 UiToolbarToggleItem* item = malloc(sizeof(UiToolbarToggleItem)); |
| 88 item->item.type = UI_TOOLBAR_TOGGLEITEM; |
88 item->item.type = UI_TOOLBAR_TOGGLEITEM; |
| 89 item->args = toggleitemargs_copy(args, &item->ngroups, &item->nvstates); |
89 item->args = toggleitemargs_copy(args, &item->nstates, &item->nvstates); |
| 90 cxMapPut(toolbar_items, name, item); |
90 cxMapPut(toolbar_items, name, item); |
| 91 } |
91 } |
| 92 |
92 |
| 93 static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args, size_t *nvstates) { |
93 static UiToolbarMenuArgs menuargs_copy(UiToolbarMenuArgs *args, size_t *nvstates) { |
| 94 UiToolbarMenuArgs newargs; |
94 UiToolbarMenuArgs newargs; |
| 95 newargs.label = nl_strdup(args->label); |
95 newargs.label = nl_strdup(args->label); |
| 96 newargs.icon = nl_strdup(args->icon); |
96 newargs.icon = nl_strdup(args->icon); |
| 97 newargs.tooltip = nl_strdup(args->tooltip); |
97 newargs.tooltip = nl_strdup(args->tooltip); |
| 98 newargs.visibility_states = uic_copy_groups(args->visibility_states, nvstates); |
98 newargs.visibility_states = uic_copy_states(args->visibility_states, nvstates); |
| 99 return newargs; |
99 return newargs; |
| 100 } |
100 } |
| 101 |
101 |
| 102 UIEXPORT void ui_toolbar_menu_create(const char* name, UiToolbarMenuArgs *args) { |
102 UIEXPORT void ui_toolbar_menu_create(const char* name, UiToolbarMenuArgs *args) { |
| 103 UiToolbarMenuItem* item = malloc(sizeof(UiToolbarMenuItem)); |
103 UiToolbarMenuItem* item = malloc(sizeof(UiToolbarMenuItem)); |