| 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 } |