Exemple #1
0
struct rtgui_menu* rtgui_menu_create(const char* title, struct rtgui_menu* parent_menu, 
	const struct rtgui_menu_item* items, rt_uint16_t count)
{
	rtgui_rect_t rect = {0, 0, 100, 100};
    struct rtgui_menu* menu;

    menu = (struct rtgui_menu*) rtgui_widget_create ( RTGUI_MENU_TYPE );
	if (menu != RT_NULL)
	{
		rtgui_win_set_title(RTGUI_WIN(menu), title);
		menu->parent_menu = parent_menu;
		menu->items = items;
		menu->items_count = count;

		rtgui_widget_set_rect(RTGUI_WIDGET(menu), &rect);
		rtgui_rect_inflate(&rect, -1);
		/* create menu item list */
		menu->items_list = rtgui_listctrl_create((rt_uint32_t)items, count, &rect, _rtgui_menu_item_ondraw); 
		RTGUI_WIDGET_BACKGROUND(RTGUI_WIDGET(menu->items_list)) = rtgui_theme_default_bc();
		rtgui_container_add_child(RTGUI_CONTAINER(menu), RTGUI_WIDGET(menu->items_list));
		rtgui_listctrl_set_onitem(menu->items_list, _rtgui_menu_onitem);
	}

	return menu;
}
rtgui_digtube_t *rtgui_digtube_create(
	struct rtgui_digitfont * digitfont, 
	int count, 
	void * value, 
	int style)
{
	struct rtgui_digtube *digtube;
	rtgui_rect_t rect;

	RT_ASSERT(count <= 7 && count > 0)

	digtube = (struct rtgui_digtube *) rtgui_widget_create(RTGUI_DIGTUBE_TYPE);
	if (digtube == RT_NULL)
		return RT_NULL;

	/* set field */
	if (digitfont == RT_NULL)
		digitfont = &digitfont_40;

	rt_memcpy(& digtube->digitfont, digitfont, sizeof(struct rtgui_digitfont));

#ifndef RTGUI_DIGTUBE_USE_CONST_FONT
	if (digtube->digitfont.data == RT_NULL)
		rtgui_digitfont_create(& digtube->digitfont);
#endif

	/* set default rect */
	rtgui_get_digfont_metrics(&digtube->digitfont, &rect);
	digtube->digit_width = rect.x2;
	digtube->digit_hight = rect.y2;
	digtube->tube_count = count;
	digtube->digit_space = RTGUI_DIGTUBE_DEFAULT_SPACE;

	rect.x2 = (rect.x2 + digtube->digit_space) * count - digtube->digit_space;
	rect.y2 = rect.y2;

	RTGUI_WIDGET_BACKGROUND(digtube) = rtgui_theme_default_bc();
	RTGUI_WIDGET_FOREGROUND(digtube) = RTGUI_DIGTUBE_DEFAULT_FC;
	rtgui_widget_set_rect(RTGUI_WIDGET(digtube), &rect);

	/* set display value */
	digtube->digit_bc = RTGUI_DIGTUBE_DEFAULT_DIGIT_BC;
	digtube->value = value;
	digtube->tube_style = style;
	
	return digtube;
}