UNIXworkcode

1 /* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 3 * 4 * Copyright 2025 Olaf Wintermann. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #ifndef CLIENT_H 30 #define CLIENT_H 31 32 #include <ui/ui.h> 33 #include <cx/string.h> 34 #include <cx/json.h> 35 #include <cx/map.h> 36 37 #include "../ui/common/message.h" 38 39 #ifdef __cplusplus 40 extern "C" { 41 #endif 42 43 typedef struct WindowData { 44 CxMap *widgets; 45 } WindowData; 46 47 typedef int (*json_msg_handler)(UiObject *parent, const CxJsonValue *value, cxmutstr type); 48 49 void client_init(UiMessageHandler *handler); 50 51 void client_msg_received(cxstring msg); 52 53 int client_handle_json(UiObject *obj, const CxJsonValue *value); 54 55 int client_handle_children(UiObject *parent, const CxJsonValue *value); 56 57 void client_add_obj_mapping(UiObject *obj, cxmutstr id); 58 UiObject* client_get_mapped_obj(cxmutstr id); 59 void client_reg_widget(UiObject *obj, cxmutstr id, UIWIDGET w); 60 UIWIDGET client_get_widget(UiObject *obj, cxmutstr id); 61 62 63 int msg_window(UiObject *parent, const CxJsonValue *value, cxmutstr type); 64 int msg_show(UiObject *parent, const CxJsonValue *value, cxmutstr type); 65 66 int msg_vbox(UiObject *parent, const CxJsonValue *value, cxmutstr type); 67 int msg_hbox(UiObject *parent, const CxJsonValue *value, cxmutstr type); 68 int msg_grid(UiObject *parent, const CxJsonValue *value, cxmutstr type); 69 70 int msg_end(UiObject *parent, const CxJsonValue *value, cxmutstr type); 71 72 int msg_button(UiObject *parent, const CxJsonValue *value, cxmutstr type); 73 74 int msg_togglebutton(UiObject *parent, const CxJsonValue *value, cxmutstr type); 75 76 77 78 79 #ifdef __cplusplus 80 } 81 #endif 82 83 84 #endif /* CLIENT_H */ 85 86