#ifndef TOOLKIT_H
#define TOOLKIT_H
#include <inttypes.h>
#include "../ui/toolkit.h"
#include "../common/context.h"
#include "../common/object.h"
#include <cx/list.h>
#include <cx/string.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct UiSrvObj UiSrvObj;
typedef struct UiServerEvent UiServerEvent;
typedef struct UiServerEventData UiServerEventData;
typedef void(*ui_srvevent_func)(UiServerEventData *event,
void *userdata);
typedef cxmutstr (*ui_serialize_func)(UiWidget *w);
struct UiServerEventData {
UiObject *obj;
cxmutstr str;
int intvalue;
};
struct UiServerEvent {
UiServerEventData event;
ui_srvevent_func callback;
void *userdata;
};
struct UiSrvObj {
UiContext *ctx;
cxmutstr id;
CxMap *widgets;
uint64_t widget_id_counter;
};
struct UiWidget {
UiSrvObj *obj;
cxmutstr id;
cxstring type;
UiVar *var;
cxmutstr var_id;
UiVarType var_type;
CxList *children;
cxmutstr args;
UiBool invisible;
UiBool disabled;
UiBool sent;
ui_serialize_func serialize;
};
typedef struct UiCallbackWidget {
UiWidget widget;
ui_callback callback;
void *userdata;
} UiCallbackWidget;
void ui_server_message_received(cxstring msg);
UiSrvObj* ui_create_server_object(UiContext *ctx);
void ui_reg_widget(UiWidget *widget);
#ifdef __cplusplus
}
#endif
#endif