| 28 |
28 |
| 29 #include <cx/linked_list.h> |
29 #include <cx/linked_list.h> |
| 30 #include <cx/buffer.h> |
30 #include <cx/buffer.h> |
| 31 |
31 |
| 32 #include "container.h" |
32 #include "container.h" |
| |
33 #include "widget.h" |
| 33 #include "args.h" |
34 #include "args.h" |
| 34 |
35 |
| 35 void ui_container_begin_close(UiObject *obj) { |
36 void ui_container_begin_close(UiObject *obj) { |
| 36 UiContainerX *ct = obj->container_end; |
37 UiContainerX *ct = obj->container_end; |
| 37 ct->close = 1; |
38 ct->close = 1; |
| 78 widget->obj = obj->widget->obj; |
79 widget->obj = obj->widget->obj; |
| 79 widget->type = cx_str(type); |
80 widget->type = cx_str(type); |
| 80 widget->args = ui_container_args_to_string(obj->ctx, args); |
81 widget->args = ui_container_args_to_string(obj->ctx, args); |
| 81 widget->children = cxLinkedListCreate(a, NULL, CX_STORE_POINTERS); |
82 widget->children = cxLinkedListCreate(a, NULL, CX_STORE_POINTERS); |
| 82 widget->serialize = ui_container_serialize; |
83 widget->serialize = ui_container_serialize; |
| 83 uic_object_push_container(obj, ui_widget_container(widget)); |
|
| 84 ui_reg_widget((UiWidget*)widget); |
|
| 85 |
84 |
| 86 UiWidget *parent = obj->container_end->container; |
85 UiWidget *parent = obj->container_end->container; |
| 87 cxListAdd(parent->children, widget); |
86 cxListAdd(parent->children, widget); |
| |
87 |
| |
88 uic_object_push_container(obj, ui_widget_container(widget)); |
| |
89 ui_reg_widget((UiWidget*)widget); |
| 88 |
90 |
| 89 return widget; |
91 return widget; |
| 90 } |
92 } |
| 91 |
93 |
| 92 void ui_serialize_children(UiWidget *w, CxBuffer *buf) { |
94 void ui_serialize_children(UiWidget *w, CxBuffer *buf) { |
| 107 |
109 |
| 108 cxmutstr ui_container_serialize(UiWidget *w) { |
110 cxmutstr ui_container_serialize(UiWidget *w) { |
| 109 CxBuffer buf; |
111 CxBuffer buf; |
| 110 cxBufferInit(&buf, NULL, 1024, NULL, CX_BUFFER_AUTO_EXTEND | CX_BUFFER_FREE_CONTENTS); |
112 cxBufferInit(&buf, NULL, 1024, NULL, CX_BUFFER_AUTO_EXTEND | CX_BUFFER_FREE_CONTENTS); |
| 111 |
113 |
| 112 cxBufferPutString(&buf, "{\"type\":\""); |
114 cxBufferPutString(&buf, "{"); |
| 113 cxBufferPutString(&buf, w->type.ptr); |
115 ui_serialize_type_obj_id(w, &buf); |
| 114 cxBufferPutString(&buf, "\",\"args\":\""); |
116 cxBufferPutString(&buf, ",\"args\":"); |
| 115 cxBufferPutString(&buf, w->args.ptr); |
117 cxBufferPutString(&buf, w->args.ptr); |
| 116 cxBufferPutString(&buf, "\",\"obj\":"); |
|
| 117 cxBufferPutString(&buf, w->obj->id.ptr); |
|
| 118 cxBufferPutString(&buf, "\",\"id\":"); |
|
| 119 cxBufferPutString(&buf, w->id.ptr); |
|
| 120 cxBufferPutString(&buf, "\""); |
|
| 121 |
118 |
| 122 ui_serialize_children(w, &buf); |
119 ui_serialize_children(w, &buf); |
| 123 |
120 |
| 124 cxBufferPutString(&buf, "}\n"); |
121 cxBufferPutString(&buf, "}\n"); |
| 125 |
122 |