code.c

来自「超强的嵌入式GUI系统」· C语言 代码 · 共 574 行 · 第 1/2 页

C
574
字号
		tmp->dontparse = 1;	}}void code_generate_object_progressbar (s_xml_node_t *node){	s_xml_node_t *tmp;	char *nid = s_xml_node_get_attr_value(node, "id");	char *pid = s_xml_node_get_attr_value(node->parent, "id");	char *wid = s_xml_node_get_attr_value(s_xml_node_get_parent(node, "window"), "id");	fprintf(g_source, "w_progressbar_init(%s, &%s, %s->object);\n", wid, nid, pid);	while ((tmp = s_xml_node_get_path(node, "style")) != NULL) {		code_generate_style(tmp, node, NULL);		tmp->dontparse = 1;	}	if ((tmp = s_xml_node_get_path(node, "boxstyle")) != NULL) {		code_generate_style(tmp, node, "box");		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "image")) != NULL) {		code_generate_image(tmp, node, NULL);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "boximage")) != NULL) {		code_generate_image(tmp, node, "box");		tmp->dontparse = 1;	}	if ((tmp = s_xml_node_get_path(node, "changed")) != NULL) {		fprintf(g_source, "w_progressbar_set_changed(%s->object, %s);\n", nid, tmp->value);		tmp->dontparse = 1;	}}void code_generate_object_scrollbuffer (s_xml_node_t *node){	s_xml_node_t *tmp;	char *nid = s_xml_node_get_attr_value(node, "id");	char *pid = s_xml_node_get_attr_value(node->parent, "id");	char *wid = s_xml_node_get_attr_value(s_xml_node_get_parent(node, "window"), "id");	fprintf(g_source, "w_scrollbuffer_init(%s, &%s, %s->object);\n", wid, nid, pid);	while ((tmp = s_xml_node_get_path(node, "object")) != NULL) {		code_generate(tmp, g_source, g_name);		tmp->dontparse = 1;	}	if ((tmp = s_xml_node_get_path(node, "child")) != NULL) {		fprintf(g_source, "w_scrollbuffer_set_child(%s->object, %s->object);\n", nid, tmp->value);		tmp->dontparse = 1;	}	if ((tmp = s_xml_node_get_path(node, "slide")) != NULL) {		fprintf(g_source, "w_scrollbuffer_set_slide(%s->object, %s);\n", nid, tmp->value);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "border")) != NULL) {		fprintf(g_source, "w_scrollbuffer_set_border(%s->object, %s);\n", nid, tmp->value);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "style")) != NULL) {		code_generate_style(tmp, node, NULL);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "image")) != NULL) {		code_generate_image(tmp, node, NULL);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "boxstyle")) != NULL) {		code_generate_style(tmp, node, "box");		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "boximage")) != NULL) {		code_generate_image(tmp, node, "box");		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "addstyle")) != NULL) {		code_generate_style(tmp, node, "add");		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "addimage")) != NULL) {		code_generate_image(tmp, node, "add");		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "substyle")) != NULL) {		code_generate_style(tmp, node, "sub");		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "subimage")) != NULL) {		code_generate_image(tmp, node, "sub");		tmp->dontparse = 1;	}}void code_generate_object_listbox (s_xml_node_t *node){	s_xml_node_t *tmp;	s_xml_node_t *tnm;	char *nid = s_xml_node_get_attr_value(node, "id");	char *pid = s_xml_node_get_attr_value(node->parent, "id");	char *wid = s_xml_node_get_attr_value(s_xml_node_get_parent(node, "window"), "id");	fprintf(g_source, "w_listbox_init(%s, &%s, %s->object);\n", wid, nid, pid);	while ((tmp = s_xml_node_get_path(node, "style")) != NULL) {		code_generate_style(tmp, node, NULL);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "changed")) != NULL) {		fprintf(g_source, "%s->changed = %s;\n", nid, tmp->value);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "itemheight")) != NULL) {		fprintf(g_source, "w_listbox_set_item_height(%s->object, %s);\n", nid, tmp->value);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "itemimage")) != NULL) {		code_generate_image(tmp, node, "item");		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "item")) != NULL) {		char *tid = s_xml_node_get_attr_value(tmp, "id");		fprintf(g_source, "w_listbox_item_init(%s->object, &%s);\n", nid, tid);		while ((tnm = s_xml_node_get_path(tmp, "name")) != NULL) {			fprintf(g_source, "w_listbox_item_name_set(%s->object, %s, %s);\n", nid, tid, tnm->value);			tnm->dontparse = 1;		}		fprintf(g_source, "w_listbox_item_add(%s->object, %s);\n", nid, tid);		tmp->dontparse = 1; 	}	while ((tmp = s_xml_node_get_path(node, "scrollbuffer")) != NULL) {		fprintf(g_source, "w_listbox_scrollbuffer_set(%s->object, %s->object);\n", nid, tmp->value);		tmp->dontparse = 1;	}}void code_generate_object_clistbox (s_xml_node_t *node){	s_xml_node_t *tmp;	s_xml_node_t *tnm;	char *nid = s_xml_node_get_attr_value(node, "id");	char *pid = s_xml_node_get_attr_value(node->parent, "id");	char *wid = s_xml_node_get_attr_value(s_xml_node_get_parent(node, "window"), "id");	fprintf(g_source, "w_clistbox_init(%s, &%s, %s->object);\n", wid, nid, pid);	while ((tmp = s_xml_node_get_path(node, "style")) != NULL) {		code_generate_style(tmp, node, NULL);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "changed")) != NULL) {		fprintf(g_source, "%s->changed = %s;\n", nid, tmp->value);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "itemheight")) != NULL) {		fprintf(g_source, "w_clistbox_set_item_height(%s->object, %s);\n", nid, tmp->value);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "itemimage")) != NULL) {		code_generate_image(tmp, node, "item");		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "item")) != NULL) {		char *tid = s_xml_node_get_attr_value(tmp, "id");		fprintf(g_source, "w_clistbox_item_init(%s->object, &%s);\n", nid, tid);		while ((tnm = s_xml_node_get_path(tmp, "name")) != NULL) {			fprintf(g_source, "w_clistbox_item_name_set(%s->object, %s, %s);\n", nid, tid, tnm->value);			tnm->dontparse = 1;		}		fprintf(g_source, "w_clistbox_item_add(%s->object, %s);\n", nid, tid);		tmp->dontparse = 1; 	}	while ((tmp = s_xml_node_get_path(node, "scrollbuffer")) != NULL) {		fprintf(g_source, "w_clistbox_scrollbuffer_set(%s->object, %s->object);\n", nid, tmp->value);		tmp->dontparse = 1;	}}void code_generate_effect (s_xml_node_t *node){	s_xml_node_t *tmp;	char *effect = s_xml_node_get_path_value(node, "effect");	char *pid = s_xml_node_get_attr_value(node->parent, "id");	fprintf(g_source, "%s->object->effect->effect = %s;\n", pid, (effect) ? effect : "0");	if ((tmp = s_xml_node_get_path(node, "effect")) != NULL) { tmp->dontparse = 1; }}void code_generate_show (s_xml_node_t *node){	if (strcmp(node->parent->name, "window") == 0) {		char *pid = s_xml_node_get_attr_value(s_xml_node_get_parent(node, "window"), "id");		fprintf(g_source, "w_object_show(%s->object);\n", pid);		fprintf(g_source, "s_window_show(%s->window);\n", pid);		fprintf(g_source, "s_window_main(%s->window);\n", pid);	} else if (strcmp(node->parent->name, "object") == 0) {		char *oid = s_xml_node_get_attr_value(s_xml_node_get_parent(node, "object"), "id");		fprintf(g_source, "w_object_show(%s->object);\n", oid);	}}void code_generate_draw (s_xml_node_t *node){	char *pid = s_xml_node_get_attr_value(node->parent, "id");	fprintf(g_source, "%s->object->draw = %s;\n", pid, node->value);}void code_generate_event (s_xml_node_t *node){	char *pid = s_xml_node_get_attr_value(node->parent, "id");	fprintf(g_source, "%s->object->event = %s;\n", pid, node->value);}void code_generate_onload (s_xml_node_t *node){	char *pid = s_xml_node_get_attr_value(node->parent, "id");	fprintf(g_source, "%s->object->onload = %s;\n", pid, node->value);}void code_generate_unload (s_xml_node_t *node){	char *pid = s_xml_node_get_attr_value(node->parent, "id");	fprintf(g_source, "%s->object->unload = %s;\n", pid, node->value);}void code_generate_object (s_xml_node_t *node){	s_xml_node_t *tmp;	char *type = s_xml_node_get_attr_value(node, "type");	if (strcmp(type, "frame") == 0) {		code_generate_object_frame(node);	} else if (strcmp(type, "button") == 0) {		code_generate_object_button(node);	} else if (strcmp(type, "textbox") == 0) {		code_generate_object_textbox(node);	} else if (strcmp(type, "checkbox") == 0) {		code_generate_object_checkbox(node);	} else if (strcmp(type, "editbox") == 0) {		code_generate_object_editbox(node);	} else if (strcmp(type, "progressbar") == 0) {		code_generate_object_progressbar(node);	} else if (strcmp(type, "scrollbuffer") == 0) {		code_generate_object_scrollbuffer(node);	} else if (strcmp(type, "listbox") == 0) {		code_generate_object_listbox(node);	} else if (strcmp(type, "clistbox") == 0) {		code_generate_object_clistbox(node);	}	while ((tmp = s_xml_node_get_path(node, "effect")) != NULL) {		code_generate_effect(tmp);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "draw")) != NULL) {		code_generate_draw(tmp);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "event")) != NULL) {		code_generate_event(tmp);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "onload")) != NULL) {		code_generate_onload(tmp);		tmp->dontparse = 1;	}	while ((tmp = s_xml_node_get_path(node, "unload")) != NULL) {		code_generate_unload(tmp);		tmp->dontparse = 1;	}}void code_generate (s_xml_node_t *node, FILE *source, char *name){	int p;	s_xml_node_t *tmp;	if (node->dontparse != 0) {		return;	}	g_name = name;	g_source = source;	if (strcmp(node->name, "window") == 0) {		code_generate_window(node);	} else if (strcmp(node->name, "object") == 0) {		code_generate_object(node);	} else if (strcmp(node->name, "move") == 0) {		code_generate_move(node);	} else if (strcmp(node->name, "show") == 0) {		code_generate_show(node);	}	p = 0;	while (!s_list_eol(node->nodes, p)) {		tmp = (s_xml_node_t *) s_list_get(node->nodes, p);		code_generate(tmp, source, name);		p++;	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?