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; }