|
@@ -7,53 +7,45 @@
|
|
|
#include <rtgui/widgets/menu.h>
|
|
|
#include <rtgui/widgets/button.h>
|
|
|
|
|
|
-static rt_bool_t _onmenuitem(struct rtgui_widget *widget, struct rtgui_event* event)
|
|
|
-{
|
|
|
- rt_kprintf("menu action!!\n");
|
|
|
- return RT_TRUE;
|
|
|
-}
|
|
|
-
|
|
|
-static const rtgui_menu_item_t sub_items[] =
|
|
|
-{
|
|
|
- {RTGUI_ITEM_NORMAL, "item #1", RT_NULL, RT_NULL, 0, _onmenuitem},
|
|
|
- {RTGUI_ITEM_NORMAL, "item #2", RT_NULL, RT_NULL, 0, RT_NULL},
|
|
|
- {RTGUI_ITEM_SEPARATOR, RT_NULL, RT_NULL, RT_NULL, 0, RT_NULL},
|
|
|
- {RTGUI_ITEM_NORMAL, "item #3", RT_NULL, RT_NULL, 0, RT_NULL},
|
|
|
-};
|
|
|
-static const rtgui_menu_item_t items[] =
|
|
|
-{
|
|
|
- {RTGUI_ITEM_NORMAL, "item #1", RT_NULL, RT_NULL, 0, RT_NULL},
|
|
|
- {RTGUI_ITEM_NORMAL, "item #2", RT_NULL, RT_NULL, 0, RT_NULL},
|
|
|
- {RTGUI_ITEM_SEPARATOR, RT_NULL, RT_NULL, RT_NULL, 0, RT_NULL},
|
|
|
- {RTGUI_ITEM_SUBMENU, "item #3", RT_NULL, (struct rtgui_menu_item_t *)sub_items, sizeof(sub_items)/sizeof(sub_items[0]), RT_NULL},
|
|
|
-};
|
|
|
-static rtgui_menu_t* menu;
|
|
|
-
|
|
|
-static _onmenu(PVOID wdt, rtgui_event_t* event)
|
|
|
-{
|
|
|
- rtgui_rect_t rect;
|
|
|
-
|
|
|
- rtgui_widget_get_rect(widget, &rect);
|
|
|
- rtgui_widget_rect_to_device(widget, &rect);
|
|
|
-
|
|
|
- if (menu != RT_NULL)
|
|
|
- rtgui_menu_pop(menu, rect.x1, rect.y2 + 5);
|
|
|
-}
|
|
|
-
|
|
|
/* 创建用于演示menu控件的视图 */
|
|
|
rtgui_view_t* demo_gui_menu(rtgui_view_t* parent_view)
|
|
|
{
|
|
|
- rtgui_rect_t rect;
|
|
|
- rtgui_view_t* view;
|
|
|
- rtgui_button_t* button;
|
|
|
+ rtgui_view_t *view;
|
|
|
+ rtgui_menu_t *main_menu, *sub_menu, *toolmenu;
|
|
|
|
|
|
/* 先创建一个演示用的视图 */
|
|
|
view = demo_view_create(parent_view, "MENU View");
|
|
|
|
|
|
- button = rtgui_button_create(view, "Pop Menu", 5, 40, 50, 22);
|
|
|
- rtgui_button_set_onbutton(button, _onmenu);
|
|
|
-
|
|
|
- menu = rtgui_menu_create("Menu Test", RT_NULL, items, sizeof(items)/sizeof(items[0]));
|
|
|
-
|
|
|
+ /* 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;
|
|
|
}
|