Example #1
0
/* 创建用于演示button控件的视图 */
rtgui_view_t* demo_gui_button(rtgui_view_t* parent_view)
{
    rtgui_view_t* view;
    rtgui_button_t* button;
    rtgui_font_t* font;

    /* 先创建一个演示用的视图 */
    view = demo_view_create(parent_view, "Button View");

    /* 创建一个button控件 */
    button = rtgui_button_create(view, "Red", 5, 40, 100, 25);
    /* 设置label控件的前景色为红色 */
    RTGUI_WIDGET_FOREGROUND(button) = red;

    button = rtgui_button_create(view, "Blue", 5, 70, 100, 25);
    RTGUI_WIDGET_FOREGROUND(button) = blue;

    button = rtgui_button_create(view, "12 font", 5, 100, 100, 25);
    /* 设置字体为12点阵的asc字体 */
    font = rtgui_font_refer("asc", 12);
    RTGUI_WIDGET_FONT(button) = font;

    button = rtgui_button_create(view, "16 font", 5, 130, 100, 25);
    /* 设置字体为16点阵的asc字体 */
    font = rtgui_font_refer("asc", 16);
    RTGUI_WIDGET_FONT(button) = font;


    return view;
}
Example #2
0
rtgui_view_t *demo_gui_buffer_animation(rtgui_view_t* parent_view)
{
    rtgui_view_t *view;

    view = demo_view_create(parent_view, "DC 缓冲区动画");
    if (view != RT_NULL)
        rtgui_widget_set_event_handler(view, animation_event_handler);

    rtgui_font_get_metrics(RTGUI_WIDGET_FONT(view), "缓冲动画", &text_rect);
    if (dc_buffer == RT_NULL)
    {
        rtgui_rect_t rect;

        rect.x1 = 0;
        rect.x2 = rtgui_rect_width(text_rect) + 2;
        rect.y1 = 0;
        rect.y2 = rtgui_rect_height(text_rect) + 2;

        /* 创建 DC Buffer,长 50,宽 50 */
        dc_buffer = rtgui_dc_buffer_create(rtgui_rect_width(rect), rtgui_rect_height(rect));
        RTGUI_DC_FC(dc_buffer) = RTGUI_WIDGET_BACKGROUND(view);
        rtgui_dc_fill_rect(dc_buffer, &rect);
        RTGUI_DC_FC(dc_buffer) = black;
        rect.x1 = 1;
        rect.y1 = 1;
        rtgui_dc_draw_text(dc_buffer, "缓冲动画", &rect);
    }

    /* 启动定时器以触发动画 */
    timer = rtgui_timer_create(1, RT_TIMER_FLAG_PERIODIC, timeout, view);
    rtgui_timer_start(timer);

    return view;
}
Example #3
0
/* 创建用于演示checkbox控件的视图 */
rtgui_view_t* demo_gui_checkbox(rtgui_view_t* parent_view)
{
    rtgui_view_t* view;
    rtgui_checkbox_t* checkbox;
    rtgui_font_t* font;

    /* 先创建一个演示用的视图 */
    view = demo_view_create(parent_view, "CheckBox View");

    /* 创建一个checkbox控件 */
    checkbox = rtgui_checkbox_create(view, "Red", RT_TRUE, 5, 40);
    /* 设置前景色为红色 */
    RTGUI_WIDGET_FOREGROUND(checkbox) = red;

    checkbox = rtgui_checkbox_create(view, "Blue", RT_TRUE, 5, 60);
    RTGUI_WIDGET_FOREGROUND(checkbox) = blue;

    checkbox = rtgui_checkbox_create(view, "12 font", RT_TRUE, 5, 80);
    font = rtgui_font_refer("asc", 12);
    RTGUI_WIDGET_FONT(checkbox) = font;

    checkbox = rtgui_checkbox_create(view, "16 font", RT_TRUE, 5, 100);
    font = rtgui_font_refer("asc", 16);
    RTGUI_WIDGET_FONT(checkbox) = font;

    return view;
}
rtgui_view_t *demo_gui_benchmark(rtgui_view_t* parent_view)
{
	srand(100);
	view = demo_view_create(parent_view, "绘图测试");
	rtgui_widget_set_event_handler(view, benchmark_event_handler);

	return view;
}
/* 创建用于演示combobox控件的视图 */
rtgui_view_t* demo_gui_combobox(rtgui_view_t* parent_view)
{
	rtgui_view_t* view;
	rtgui_combo_t* box;

	/* 先创建一个演示用的视图 */
	view = demo_view_create(parent_view, "ComboBox View");

	box = rtgui_combo_create(view, "demo combo", 5, 40, 120, 20);
	rtgui_combo_set_items(box, items, RT_COUNT(items));
	box->add_string(box, "add item 1");
	box->add_string(box, "add item 2");

	return view;
}
rtgui_view_t *demo_gui_slider(rtgui_view_t* parent_view)
{
	rtgui_view_t *view;

	/* create a demo view */
	view = demo_view_create(parent_view, "Slider View");

	rtgui_label_create(view, "horizontal slider:", 5, 40, 150, 20);
	rtgui_slider_create(view, 0, 100, 5, 60, 100, 16, RTGUI_HORIZONTAL);

	rtgui_label_create(view, "vertical slider:", 5, 80, 150, 20);
	rtgui_slider_create(view, 0, 100, 10, 100, 16, 80, RTGUI_VERTICAL);

	return view;
}
/* 方向键: 移动
 * 回车键: 进入下一级目录,或调用文件处理函数
 * 退格键: 返回上一级目录 
 */
rtgui_view_t* demo_gui_fnview(rtgui_view_t* parent_view)
{
	rtgui_view_t *view;
	rtgui_filelist_view_t *fview;

	/* 创建演示用的视图 */
	view = demo_view_create(parent_view, "FileList View");

#ifdef _WIN32
	fview = rtgui_filelist_view_create(view, "d:\\", "*.*", 5, 40, 200, 150);
#else
	fview = rtgui_filelist_view_create(view, "/", "*.*", 5, 40, 200, 150);
#endif

	fview->on_item = demo_fview_on_item;

	return view;
}
/* 创建用于演示menu控件的视图 */
rtgui_view_t* demo_gui_menu(rtgui_view_t* parent_view)
{
	rtgui_view_t *view;
	rtgui_menu_t *main_menu, *sub_menu, *toolmenu;

	/* 先创建一个演示用的视图 */
	view = demo_view_create(parent_view, "MENU View");

	/* 1.使用动态方式创建菜单 */
	main_menu = rtgui_menu_create(view, "menu", 5, 40, RTGUI_MENU_NORMAL);
		sub_menu = rtgui_menu_create(view, "File", 0, 0, RTGUI_MENU_POPUP);
		rtgui_menu_append(sub_menu, 0, 0x20001, "New", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x20002, "Open", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x20003, "Save", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x20004, "Print", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x20005, "Exit", RT_NULL);
	rtgui_menu_append(main_menu, RTGUI_MENU_POPUP, (rt_uint32_t)sub_menu, sub_menu->name, RT_NULL);
		sub_menu = rtgui_menu_create(view, "EditDocument", 0, 0, RTGUI_MENU_POPUP);
		rtgui_menu_append(sub_menu, 0, 0x30001, "Cut", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x30002, "Copy", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x30002, "Paste", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x30003, "Find...", RT_NULL);
			toolmenu = rtgui_menu_create(view, "Toolbars", 0, 0, RTGUI_MENU_POPUP);
			rtgui_menu_append(toolmenu, 0, 0x50001, "File Tools", RT_NULL);
			rtgui_menu_append(toolmenu, 0, 0x50002, "build Tools", RT_NULL);
		rtgui_menu_append(sub_menu, RTGUI_MENU_POPUP, (rt_uint32_t)toolmenu, toolmenu->name, RT_NULL);
	rtgui_menu_append(main_menu, RTGUI_MENU_POPUP, (rt_uint32_t)sub_menu, sub_menu->name, RT_NULL);
		sub_menu = rtgui_menu_create(view, "View", 0, 0, RTGUI_MENU_POPUP);
		rtgui_menu_append(sub_menu, 0, 0x40001, "Status bar", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x40001, "Tool bar", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x40001, "Project window", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x40001, "Books window", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x40001, "Functions window", RT_NULL);
		rtgui_menu_append(sub_menu, 0, 0x40001, "Full screen", RT_NULL);
	rtgui_menu_append(main_menu, RTGUI_MENU_POPUP, (rt_uint32_t)sub_menu, sub_menu->name, RT_NULL);
	rtgui_menu_append(main_menu, 0, 0x10004, "Help", RT_NULL);

	/* 2.使用静态方式创建菜单 */
	/* 菜单的一些功能还在调试中... */
	return view;
}
/* 创建用于演示label控件的视图 */
rtgui_view_t* demo_gui_label(rtgui_view_t* parent_view)
{
	rtgui_view_t* view;
	rtgui_label_t* label;
	rtgui_font_t* font;

	/* 先创建一个演示用的视图 */
	view = demo_view_create(parent_view, "Label View");

	/* 创建一个label控件 */
	label = rtgui_label_create(view, "Red Left", 10, 40, 200, 20);
	/* 设置label控件上的文本对齐方式为:左对齐 */
	RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_LEFT|RTGUI_ALIGN_CENTER_VERTICAL;
	/* 设置label控件的前景色为红色 */
	RTGUI_WIDGET_FOREGROUND(label) = red;
	RTGUI_WIDGET_BACKGROUND(label) = white;


	label = rtgui_label_create(view, "Blue Right", 10, 65, 200, 20);
	RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_RIGHT|RTGUI_ALIGN_CENTER_VERTICAL;
	RTGUI_WIDGET_FOREGROUND(label) = blue;
	RTGUI_WIDGET_BACKGROUND(label) = white;

	label = rtgui_label_create(view, "Green Center", 10, 90, 200, 20);
	RTGUI_WIDGET_TEXTALIGN(label) = RTGUI_ALIGN_CENTER_HORIZONTAL|RTGUI_ALIGN_CENTER_VERTICAL;
	RTGUI_WIDGET_FOREGROUND(label) = green;
	RTGUI_WIDGET_BACKGROUND(label) = white;

	label = rtgui_label_create(view, "12 font",10, 115, 200, 20);
	/* 设置字体为12点阵的asc字体 */
	font = rtgui_font_refer("asc", 12);
	RTGUI_WIDGET_FONT(label) = font;
	RTGUI_WIDGET_BACKGROUND(label) = white;

	label = rtgui_label_create(view, "16 font", 10, 140, 200, 20);
	font = rtgui_font_refer("asc", 16);
	RTGUI_WIDGET_FONT(RTGUI_WIDGET(label)) = font;
	RTGUI_WIDGET_BACKGROUND(label) = white;

	return view;
}
/* 创建用于演示textbox控件的视图 */
rtgui_view_t* demo_gui_textbox(rtgui_view_t* parent_view)
{
	rtgui_view_t* view;
	
	/* 先创建一个演示用的视图 */
	view = demo_view_create(parent_view, "TextBox View");

	rtgui_label_create(view, "名字: ", 5, 40, 50, 20);
	rtgui_textbox_create(view, "bernard",5, 60, 200, 20, RTGUI_TEXTBOX_NONE);

	rtgui_label_create(view, "邮件: ", 5, 80, 50, 20);
	rtgui_textbox_create(view, "*****@*****.**", 5, 100, 200, 20, RTGUI_TEXTBOX_NONE);

	rtgui_label_create(view, "密码: ", 5, 120, 50, 20);
	rtgui_textbox_create(view, "rt-thread", 5, 140, 200, 20, RTGUI_TEXTBOX_MASK);

	rtgui_label_create(view, "主页: ", 5, 160, 50, 20);
	rtgui_textbox_create(view, "http://www.rt-thread.org", 5, 180, 200, 20, RTGUI_TEXTBOX_NONE);

	return view;
}
rtgui_view_t *demo_gui_progressbar(rtgui_view_t* parent_view)
{
	rtgui_view_t *view;
	rtgui_progressbar_t *hbar, *vbar;
	rtgui_timer_t *timer = RT_NULL;
	
	/* create a demo view */
	view = demo_view_create(parent_view, "ProgressBar View");
	
	rtgui_label_create(view, "邦峠序業訳:", 5, 40, 100, 20);
	hbar = rtgui_progressbar_create(view, RTGUI_HORIZONTAL, 100, 10, 70, 150, 15);

	rtgui_label_create(view, "換岷序業訳:", 5, 90, 100, 20);
	vbar = rtgui_progressbar_create(view, RTGUI_VERTICAL, 100, 10, 110, 15, 60);

	timer = rtgui_timer_create(20, RT_TIMER_FLAG_PERIODIC, hbar_timeout, hbar);
	rtgui_timer_start(timer);

	timer = rtgui_timer_create(20, RT_TIMER_FLAG_PERIODIC, vbar_timeout, vbar);
	rtgui_timer_start(timer);

	return view;
}
/* 创建用于DC Buffer操作演示用的视图 */
rtgui_view_t *demo_gui_dc_buffer(rtgui_view_t* parent_view)
{
	rtgui_view_t *view;

	if (dc_buffer == RT_NULL) {
		rtgui_rect_t rect = {0, 0, 50, 50};

		/* 创建 DC Buffer,长 50,宽 50 */
		dc_buffer = rtgui_dc_buffer_create(50, 50);
		RTGUI_DC_FC(dc_buffer) = blue;
		rtgui_dc_fill_rect(dc_buffer, &rect);

		RTGUI_DC_FC(dc_buffer) = red;
		rtgui_dc_draw_circle(dc_buffer, 25, 25, 10);
	}

	view = demo_view_create(parent_view, "缓冲DC演示");
	if (view == RT_NULL) return RT_NULL;
	/* 设置成自己的事件处理函数 */
	rtgui_widget_set_event_handler(view, dc_buffer_event_handler);

	return view;
}
rtgui_view_t *demo_gui_scrollbar(rtgui_view_t* parent_view)
{
	rtgui_view_t *view;
	rtgui_scrollbar_t* hbar;
	rtgui_scrollbar_t* vbar;

	/* create a demo view */
	view = demo_view_create(parent_view, "ScrollBar View");
	
	rtgui_label_create(view, "horizontal bar:", 5, 40, 150, 20);
	hbar = rtgui_scrollbar_create(view, 5, 65, 20, 100, RTGUI_HORIZONTAL);
	rtgui_scrollbar_set_range(hbar, 10);
	rtgui_scrollbar_set_page_step(hbar, 5);
	rtgui_scrollbar_set_line_step(hbar, 1);

	rtgui_label_create(view, "vertical bar:", 5, 90, 150, 20);
	vbar = rtgui_scrollbar_create(view, 10, 115, 20, 80, RTGUI_VERTICAL);
	rtgui_scrollbar_set_range(vbar, 5);
	rtgui_scrollbar_set_page_step(vbar, 3);
	rtgui_scrollbar_set_line_step(vbar, 1);

	return view;
}