ui/server/container.c

changeset 991
ab3125bd8b5f
parent 990
38a48b756d80
equal deleted inserted replaced
990:38a48b756d80 991:ab3125bd8b5f
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

mercurial