4
0
mirror of https://github.com/RT-Thread/rt-thread.git synced 2025-02-10 23:11:09 +08:00
rt-thread-official/examples/gui/demo_workbench.c

140 lines
3.4 KiB
C
Raw Normal View History

#include <rtgui/rtgui.h>
#include <rtgui/rtgui_system.h>
#include <rtgui/widgets/view.h>
#include <rtgui/widgets/workbench.h>
static rt_bool_t demo_workbench_event_handler(struct rtgui_widget* widget, struct rtgui_event* event)
{
/* <20><><EFBFBD><EFBFBD>Ŀǰֻ<C7B0>԰<EFBFBD><D4B0><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>Ȥ<EFBFBD><C8A4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰworkbench<63><68><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ʾ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if ((event->type == RTGUI_EVENT_KBD) && !RTGUI_WORKBENCH_IS_MODAL_MODE(RTGUI_WORKBENCH(widget)))
{
struct rtgui_event_kbd* ekbd = (struct rtgui_event_kbd*)event;
if (ekbd->type == RTGUI_KEYDOWN)
{
if (ekbd->key == RTGUIK_RIGHT)
{
demo_view_next(RT_NULL, RT_NULL);
return RT_TRUE;
}
else if (ekbd->key == RTGUIK_LEFT)
{
demo_view_prev(RT_NULL, RT_NULL);
return RT_TRUE;
}
}
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>ʹ<EFBFBD><CAB9>viewԭ<77><D4AD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
return rtgui_workbench_event_handler(widget, event);
}
static void workbench_entry(void* parameter)
{
rt_mq_t mq;
struct rtgui_workbench* workbench;
/* <20><><EFBFBD><EFBFBD>GUIӦ<49><D3A6><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD> */
#ifdef RTGUI_USING_SMALL_SIZE
mq = rt_mq_create("workbench", 32, 32, RT_IPC_FLAG_FIFO);
#else
mq = rt_mq_create("workbench", 256, 32, RT_IPC_FLAG_FIFO);
#endif
/* ע<>ᵱǰ<E1B5B1>߳<EFBFBD>ΪGUI<55>߳<EFBFBD> */
rtgui_thread_register(rt_thread_self(), mq);
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̨ */
workbench = rtgui_workbench_create("main", "workbench");
if (workbench == RT_NULL) return;
rtgui_widget_set_event_handler(RTGUI_WIDGET(workbench), demo_workbench_event_handler);
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD>ͼ */
#if RTTHREAD_VERSION >= 10000
demo_view_benchmark(workbench);
#endif
demo_view_dc(workbench);
#if RTTHREAD_VERSION >= 10000
#ifdef RTGUI_USING_TTF
demo_view_ttf(workbench);
#endif
#endif
#ifndef RTGUI_USING_SMALL_SIZE
demo_view_dc_buffer(workbench);
#endif
demo_view_animation(workbench);
#ifndef RTGUI_USING_SMALL_SIZE
demo_view_buffer_animation(workbench);
demo_view_instrument_panel(workbench);
#endif
demo_view_window(workbench);
demo_view_label(workbench);
demo_view_button(workbench);
demo_view_checkbox(workbench);
demo_view_progressbar(workbench);
demo_view_scrollbar(workbench);
demo_view_radiobox(workbench);
demo_view_textbox(workbench);
demo_view_listbox(workbench);
demo_view_menu(workbench);
demo_view_listctrl(workbench);
demo_view_combobox(workbench);
demo_view_slider(workbench);
// demo_view_notebook(workbench);
demo_view_mywidget(workbench);
#if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW)
demo_view_image(workbench);
#endif
#ifdef RT_USING_MODULE
#if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW)
demo_view_module(workbench);
#endif
#endif
demo_listview_view(workbench);
demo_listview_icon_view(workbench);
#if defined(RTGUI_USING_DFS_FILERW) || defined(RTGUI_USING_STDIO_FILERW)
demo_fn_view(workbench);
#endif
/* <20><>ʾ<EFBFBD><CABE>ͼ */
demo_view_show();
/* ִ<>й<EFBFBD><D0B9><EFBFBD>̨<EFBFBD>¼<EFBFBD>ѭ<EFBFBD><D1AD> */
rtgui_workbench_event_loop(workbench);
/* ȥע<C8A5><D7A2>GUI<55>߳<EFBFBD> */
rtgui_thread_deregister(rt_thread_self());
rt_mq_delete(mq);
}
void workbench_init()
{
static rt_bool_t inited = RT_FALSE;
if (inited == RT_FALSE) /* <20><><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD> */
{
rt_thread_t tid;
tid = rt_thread_create("wb",
workbench_entry, RT_NULL,
2048 * 2, 25, 10);
if (tid != RT_NULL) rt_thread_startup(tid);
inited = RT_TRUE;
}
}
#ifdef RT_USING_FINSH
#include <finsh.h>
void workbench()
{
workbench_init();
}
/* finsh<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ִ<EFBFBD><D6B4>workbench()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD> */
FINSH_FUNCTION_EXPORT(workbench, workbench demo)
#endif