Пример #1
0
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; }
}
Пример #2
0
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;
	}
}
Пример #3
0
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;
}
Пример #4
0
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);
		}
	}
}
Пример #5
0
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;
}
Пример #6
0
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;
	}
}
Пример #7
0
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;
	}
}
Пример #8
0
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;
	}
}
Пример #9
0
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++;
	}
}
Пример #10
0
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);
	}
}