ui/server/window.c

changeset 985
93f07ccfd997
parent 984
2cf5e6d55013
child 986
6f7600c2b9e1
equal deleted inserted replaced
984:2cf5e6d55013 985:93f07ccfd997
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE. 26 * POSSIBILITY OF SUCH DAMAGE.
27 */ 27 */
28 28
29 #include "window.h" 29 #include "window.h"
30 #include "container.h"
30 31
31 #include "../common/object.h" 32 #include "../common/object.h"
32 33
33 #include <cx/buffer.h> 34 #include <cx/buffer.h>
34 35
38 39
39 UiWindow *window = cxZalloc(a, sizeof(UiWindow)); 40 UiWindow *window = cxZalloc(a, sizeof(UiWindow));
40 window->widget.obj = ui_create_server_object(obj->ctx); 41 window->widget.obj = ui_create_server_object(obj->ctx);
41 window->widget.children = cxLinkedListCreate(a, NULL, CX_STORE_POINTERS); 42 window->widget.children = cxLinkedListCreate(a, NULL, CX_STORE_POINTERS);
42 window->widget.serialize = (ui_serialize_func)ui_window_serialize; 43 window->widget.serialize = (ui_serialize_func)ui_window_serialize;
44 window->widget.invisible = TRUE;
43 window->title = cx_strdup_a(a, title); 45 window->title = cx_strdup_a(a, title);
44 46
45 obj->widget = (UiWidget*)window; 47 obj->widget = (UiWidget*)window;
48 uic_object_push_container(obj, ui_widget_container((UiWidget*)window));
46 ui_reg_widget(obj->widget); 49 ui_reg_widget(obj->widget);
47 50
48 return obj; 51 return obj;
49 } 52 }
50 53
92 cxBufferPutString(&buf, " \"title\":\""); 95 cxBufferPutString(&buf, " \"title\":\"");
93 cxBufferWrite(w->title.ptr, 1, w->title.length, &buf); 96 cxBufferWrite(w->title.ptr, 1, w->title.length, &buf);
94 cxBufferPutString(&buf, "\""); 97 cxBufferPutString(&buf, "\"");
95 } 98 }
96 99
100 size_t numchildren = cxListSize(w->widget.children);
101 if(numchildren > 0) {
102 cxBufferPutString(&buf, ",\"children\":[");
103 CxIterator i = cxListIterator(w->widget.children);
104 cx_foreach(UiWidget *, child, i) {
105 cxmutstr child_str = child->serialize(child);
106 cxBufferWrite(child_str.ptr, 1, child_str.length, &buf);
107 if(i.index+1 < numchildren) {
108 cxBufferPut(&buf, ',');
109 }
110 }
111 cxBufferPutString(&buf, "]");
112 }
97 113
98 cxBufferPutString(&buf, "}\n"); 114 cxBufferPutString(&buf, "}\n");
99 115
100 return cx_mutstrn(buf.space, buf.size); 116 return cx_mutstrn(buf.space, buf.size);
101 } 117 }

mercurial