void code_generate_move (s_hashtable_t *htable, s_xml_node_t *node) { int xi = 0; int yi = 0; int wi = 0; int hi = 0; s_xml_node_t *tmp; w_object_t *object; char *x = s_xml_node_get_path_value(node, "x"); char *y = s_xml_node_get_path_value(node, "y"); char *w = s_xml_node_get_path_value(node, "w"); char *h = s_xml_node_get_path_value(node, "h"); if (x) xi = atoi(x); if (y) yi = atoi(y); if (w) wi = atoi(w); if (h) hi = atoi(h); if (strcmp(node->parent->name, "window") == 0) { if ((object = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id"))) != NULL) { w_window_set_coor(object->window, xi, yi, wi, hi); } } else if (strcmp(node->parent->name, "object") == 0) { if ((object = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id"))) != NULL) { w_object_move(object, xi, yi, wi, hi); } } node->dontparse = 1; if ((tmp = s_xml_node_get_path(node, "x")) != NULL) { tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "y")) != NULL) { tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "w")) != NULL) { tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "h")) != NULL) { tmp->dontparse = 1; } }
void code_generate_object_editbox (s_hashtable_t *htable, s_xml_node_t *node) { s_xml_node_t *tmp; w_editbox_t *editbox; w_object_t *pobject; w_object_t *wobject; s_xml_node_t *window = s_xml_node_get_parent(node, "window"); wobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(window, "id")); pobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id")); w_editbox_init(wobject->window, &editbox, pobject); s_hashtable_add(htable, s_xml_node_get_attr_value(node, "id"), editbox->object); while ((tmp = s_xml_node_get_path(node, "style")) != NULL) { FRAME_SHAPE fshape; FRAME_SHADOW fshadow; code_get_style(htable, tmp, &fshape, &fshadow); w_editbox_set_style(editbox->object, fshape, fshadow); tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "image")) != NULL) { char **var; unsigned int count; unsigned int style; unsigned int rotate; code_get_image(htable, tmp, &style, &rotate, &count, &var); if (var != NULL) { w_editbox_set_image(editbox->object, style, rotate, count, var); while (count--) s_free(var[count]); s_free(var); } tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "properties")) != NULL) { TEXTBOX_PROPERTIES prop; code_get_enum(htable, tmp->value, &prop); w_editbox_set_properties(editbox->object, prop); tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "size")) != NULL) { int size = atoi(tmp->value); w_editbox_set_size(editbox->object, size); tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "color")) != NULL) { int cr = atoi(s_xml_node_get_path_value(tmp, "red")); int cg = atoi(s_xml_node_get_path_value(tmp, "green")); int cb = atoi(s_xml_node_get_path_value(tmp, "blue")); w_editbox_set_rgb(editbox->object, cr, cg, cb); if ((tmp = s_xml_node_get_path(node, "color/red")) != NULL) { tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "color/green")) != NULL) { tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "color/blue")) != NULL) { tmp->dontparse = 1; } tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "string")) != NULL) { w_editbox_set_str(editbox->object, code_trim_quota(tmp->value)); tmp->dontparse = 1; } }
void code_generate_object_button (s_hashtable_t *htable, s_xml_node_t *node) { s_xml_node_t *tmp; code_priv_t *priv; w_button_t *button; w_object_t *pobject; w_object_t *wobject; s_xml_node_t *window = s_xml_node_get_parent(node, "window"); wobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(window, "id")); pobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id")); w_button_init(wobject->window, &button, pobject); s_hashtable_add(htable, s_xml_node_get_attr_value(node, "id"), button->object); while ((tmp = s_xml_node_get_path(node, "style")) != NULL) { FRAME_SHAPE fshape; FRAME_SHADOW fshadow; code_get_style(htable, tmp, &fshape, &fshadow); w_button_set_style(button->object, fshape, fshadow); tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "image")) != NULL) { char **var; unsigned int count; unsigned int style; unsigned int rotate; code_get_image(htable, tmp, &style, &rotate, &count, &var); if (var != NULL) { w_button_set_image(button->object, style, rotate, count, var); while (count--) s_free(var[count]); s_free(var); } tmp->dontparse = 1; } priv = (code_priv_t *) s_malloc(sizeof(code_priv_t)); memset(priv, 0, sizeof(code_priv_t)); if ((tmp = s_xml_node_get_path(node, "pressed")) != NULL) { priv->pressed = strdup(tmp->value); if (g_engine) w_button_set_pressed(button->object, g_engine->button_pressed); tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "released")) != NULL) { priv->released = strdup(tmp->value); if (g_engine) w_button_set_released(button->object, g_engine->button_released); tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "clicked")) != NULL) { priv->clicked = strdup(tmp->value); if (g_engine) w_button_set_clicked(button->object, g_engine->button_clicked); tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "draw")) != NULL) { priv->draw = strdup(tmp->value); if (g_engine) button->object->draw = g_engine->object_draw; tmp->dontparse = 1; } button->object->priv = priv; }
void code_generate_show (s_hashtable_t *htable, s_xml_node_t *node) { w_object_t *object; if (strcmp(node->parent->name, "window") == 0) { if ((object = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id"))) != NULL) { w_object_show(object); s_window_show(object->window->window); s_window_main(object->window->window); } } else if (strcmp(node->parent->name, "object") == 0) { if ((object = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id"))) != NULL) { w_object_show(object); } } }
void code_generate_object_frame (s_hashtable_t *htable, s_xml_node_t *node) { w_frame_t *frame; s_xml_node_t *tmp; code_priv_t *priv; w_object_t *pobject; w_object_t *wobject; s_xml_node_t *window = s_xml_node_get_parent(node, "window"); wobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(window, "id")); pobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id")); w_frame_init(wobject->window, &frame, 0, pobject); s_hashtable_add(htable, s_xml_node_get_attr_value(node, "id"), frame->object); while ((tmp = s_xml_node_get_path(node, "style")) != NULL) { FRAME_SHAPE fshape; FRAME_SHADOW fshadow; code_get_style(htable, tmp, &fshape, &fshadow); w_frame_set_style(frame->object, fshape, fshadow); tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "image")) != NULL) { char **var; unsigned int count; unsigned int style; unsigned int rotate; code_get_image(htable, tmp, &style, &rotate, &count, &var); if (var != NULL) { w_frame_set_image(frame->object, style, rotate, count, var); while (count--) s_free(var[count]); s_free(var); } tmp->dontparse = 1; } priv = (code_priv_t *) s_malloc(sizeof(code_priv_t)); memset(priv, 0, sizeof(code_priv_t)); if ((tmp = s_xml_node_get_path(node, "effect")) != NULL) { EFFECT effect; code_get_effect(htable, tmp, &effect); frame->object->effect->effect = effect; tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "draw")) != NULL) { priv->draw = strdup(tmp->value); if (g_engine) frame->object->draw = g_engine->object_draw; tmp->dontparse = 1; } frame->object->priv = priv; }
void code_generate_object_scrollbuffer (s_hashtable_t *htable, s_xml_node_t *node) { s_xml_node_t *tmp; w_scrollbuffer_t *scrollbuffer; w_object_t *pobject; w_object_t *wobject; s_xml_node_t *window = s_xml_node_get_parent(node, "window"); wobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(window, "id")); pobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id")); w_scrollbuffer_init(wobject->window, &scrollbuffer, pobject); s_hashtable_add(htable, s_xml_node_get_attr_value(node, "id"), scrollbuffer->object); while ((tmp = s_xml_node_get_path(node, "object")) != NULL) { code_parse_generate(htable, tmp); tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "child")) != NULL) { w_object_t *cobject = (w_object_t *) s_hashtable_get_data(htable, tmp->value); w_scrollbuffer_set_child(scrollbuffer->object, cobject); tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "slide")) != NULL) { tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "boxstyle")) != NULL) { FRAME_SHAPE fshape; FRAME_SHADOW fshadow; code_get_style(htable, tmp, &fshape, &fshadow); w_scrollbuffer_set_boxstyle(scrollbuffer->object, fshape, fshadow); tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "boximage")) != NULL) { tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "addstyle")) != NULL) { tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "addimage")) != NULL) { tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "substyle")) != NULL) { tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "subimage")) != NULL) { tmp->dontparse = 1; } }
void code_generate_window (s_hashtable_t *htable, s_xml_node_t *node) { s_window_type_t prop; s_xml_node_t *tmp; w_window_t *window; code_get_enum(htable, s_xml_node_get_attr_value(node, "type"), &prop); w_window_init(&window, prop, NULL); s_hashtable_add(htable, s_xml_node_get_attr_value(node, "id"), window->object); if ((tmp = s_xml_node_get_path(node, "title")) != NULL) { s_window_set_title(window->window, tmp->value); tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "move")) != NULL) { code_generate_move(htable, tmp); tmp->dontparse = 1; } }
void code_generate_object_progressbar (s_hashtable_t *htable, s_xml_node_t *node) { s_xml_node_t *tmp; w_progressbar_t *progressbar; w_object_t *pobject; w_object_t *wobject; s_xml_node_t *window = s_xml_node_get_parent(node, "window"); wobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(window, "id")); pobject = (w_object_t *) s_hashtable_get_data(htable, s_xml_node_get_attr_value(node->parent, "id")); w_progressbar_init(wobject->window, &progressbar, pobject); s_hashtable_add(htable, s_xml_node_get_attr_value(node, "id"), progressbar->object); while ((tmp = s_xml_node_get_path(node, "style")) != NULL) { FRAME_SHAPE fshape; FRAME_SHADOW fshadow; code_get_style(htable, tmp, &fshape, &fshadow); w_progressbar_set_style(progressbar->object, fshape, fshadow); tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "boxstyle")) != NULL) { FRAME_SHAPE fshape; FRAME_SHADOW fshadow; code_get_style(htable, tmp, &fshape, &fshadow); w_progressbar_set_boxstyle(progressbar->object, fshape, fshadow); tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "image")) != NULL) { char **var; unsigned int count; unsigned int style; unsigned int rotate; code_get_image(htable, tmp, &style, &rotate, &count, &var); if (var != NULL) { w_progressbar_set_image(progressbar->object, style, rotate, count, var); while (count--) s_free(var[count]); s_free(var); } tmp->dontparse = 1; } while ((tmp = s_xml_node_get_path(node, "boximage")) != NULL) { tmp->dontparse = 1; } if ((tmp = s_xml_node_get_path(node, "changed")) != NULL) { tmp->dontparse = 1; } }
void header_generate (s_xml_node_t *node, FILE *g_header) { int p; char *nid; char *ntype; s_xml_node_t *tmp; nid = s_xml_node_get_attr_value(node, "id"); ntype = s_xml_node_get_attr_value(node, "type"); if (strcmp(node->name, "window") == 0) { fprintf(g_header, "w_window_t *%s;\n", nid); } else if (strcmp(node->name, "object") == 0) { if (strcmp(ntype, "frame") == 0) { fprintf(g_header, "w_frame_t *%s;\n", nid); } else if (strcmp(ntype, "button") == 0) { fprintf(g_header, "w_button_t *%s;\n", nid); } else if (strcmp(ntype, "textbox") == 0) { fprintf(g_header, "w_textbox_t *%s;\n", nid); } else if (strcmp(ntype, "checkbox") == 0) { fprintf(g_header, "w_checkbox_t *%s;\n", nid); } else if (strcmp(ntype, "editbox") == 0) { fprintf(g_header, "w_editbox_t *%s;\n", nid); } else if (strcmp(ntype, "progressbar") == 0) { fprintf(g_header, "w_progressbar_t *%s;\n", nid); } else if (strcmp(ntype, "scrollbuffer") == 0) { fprintf(g_header, "w_scrollbuffer_t *%s;\n", nid); } else if (strcmp(ntype, "scrollbar") == 0) { fprintf(g_header, "w_scrollbar_t *%s;\n", nid); } else if (strcmp(ntype, "combobox") == 0) { fprintf(g_header, "w_combobox_t *%s;\n", nid); } else if (strcmp(ntype, "listbox") == 0) { fprintf(g_header, "w_listbox_t *%s;\n", nid); } else if (strcmp(ntype, "clistbox") == 0) { fprintf(g_header, "w_clistbox_t *%s;\n", nid); } } p = 0; while (!s_list_eol(node->nodes, p)) { tmp = (s_xml_node_t *) s_list_get(node->nodes, p); header_generate(tmp, g_header); p++; } }
void code_generate_object (s_hashtable_t *htable, s_xml_node_t *node) { char *type = s_xml_node_get_attr_value(node, "type"); if (strcmp(type, "frame") == 0) { code_generate_object_frame(htable, node); } else if (strcmp(type, "button") == 0) { code_generate_object_button(htable, node); } else if (strcmp(type, "textbox") == 0) { code_generate_object_textbox(htable, node); } else if (strcmp(type, "editbox") == 0) { code_generate_object_editbox(htable, node); } else if (strcmp(type, "checkbox") == 0) { code_generate_object_checkbox(htable, node); } else if (strcmp(type, "progressbar") == 0) { code_generate_object_progressbar(htable, node); } else if (strcmp(type, "scrollbuffer") == 0) { code_generate_object_scrollbuffer(htable, node); } }