diff options
| author | [email protected] <[email protected]> | 2010-12-06 00:04:22 +0000 |
|---|---|---|
| committer | [email protected] <[email protected]> | 2010-12-06 00:04:22 +0000 |
| commit | a8053dbe6e7f182099204ec6878fc5b79a77d819 (patch) | |
| tree | 0cc253af435e5522594bee4b9d8056f11777cb66 /components/rtgui/include | |
| parent | 1a8721ecdfa0c4036492a0e0f2c2beb9cec35642 (diff) | |
update combobox widget
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1179 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'components/rtgui/include')
| -rw-r--r-- | components/rtgui/include/rtgui/widgets/combobox.h | 4 | ||||
| -rw-r--r-- | components/rtgui/include/rtgui/widgets/menu.h | 79 |
2 files changed, 82 insertions, 1 deletions
diff --git a/components/rtgui/include/rtgui/widgets/combobox.h b/components/rtgui/include/rtgui/widgets/combobox.h index e524358834..517b125d06 100644 --- a/components/rtgui/include/rtgui/widgets/combobox.h +++ b/components/rtgui/include/rtgui/widgets/combobox.h @@ -32,6 +32,8 @@ struct rtgui_combobox /* pull down window */
struct rtgui_win* pd_win;
rt_bool_t pd_pressed;
+ rt_uint16_t pd_win_width;
+ rt_uint16_t pd_win_height;
/* combobox items */
struct rtgui_combobox_item* items;
@@ -48,6 +50,6 @@ rtgui_combobox_t *rtgui_combobox_create(); void rtgui_combobox_destroy(rtgui_combobox_t* box);
rt_bool_t rtgui_combobox_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
-struct rtgui_item* rtgui_combox_get_select(struct rtgui_combobox* box);
+struct rtgui_combobox_item* rtgui_combox_get_select(struct rtgui_combobox* box);
#endif
diff --git a/components/rtgui/include/rtgui/widgets/menu.h b/components/rtgui/include/rtgui/widgets/menu.h new file mode 100644 index 0000000000..1d98f32e51 --- /dev/null +++ b/components/rtgui/include/rtgui/widgets/menu.h @@ -0,0 +1,79 @@ +#ifndef __RTGUI_MENU_H__
+#define __RTGUI_MENU_H__
+
+#include <rtgui/image.h>
+#include <rtgui/widgets/label.h>
+#include <rtgui/widgets/window.h>
+
+/* rtgui menu item */
+enum rtgui_menu_item_type
+{
+ RTGUI_ITEM_NORMAL,
+ RTGUI_ITEM_CHECK,
+ RTGUI_ITEM_SUBMENU,
+ RTGUI_ITEM_SEPARATOR
+};
+typedef enum rtgui_menu_item_type rtgui_menu_item_type_t;
+
+struct rtgui_menu_item
+{
+ rtgui_menu_item_type_t type;
+
+ /* menu text label */
+ const char* label;
+ /* menu image */
+ rtgui_image_t *image;
+ /* parent menu */
+ struct rtgui_menu *parent_menu, *sub_menu;
+
+ /* menu action */
+ rt_bool_t (*on_menuaction)(rtgui_widget_t* widget, rtgui_event_t* event);
+};
+typedef struct rtgui_menu_item rtgui_menu_item_t;
+
+/** Gets the type of a menu */
+#define RTGUI_MENU_TYPE (rtgui_menu_type_get())
+/** Casts the object to an rtgui_menu */
+#define RTGUI_MENU(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_MENU_TYPE, rtgui_menu_t))
+/** Checks if the object is an rtgui_menu */
+#define RTGUI_IS_MENU(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_MENU_TYPE))
+
+#define RTGUI_MENU_DEFAULT_WIDTH 100
+
+struct rtgui_menu_item;
+
+struct rtgui_menu
+{
+ /* inherited from window */
+ struct rtgui_win parent;
+
+ /* menu items */
+ const struct rtgui_menu_item *items;
+ rt_uint16_t items_count;
+ rt_uint16_t current_item;
+
+ /* parent item */
+ struct rtgui_menu_item *parent_item;
+
+ /* pop event handle */
+ rt_bool_t (*on_menupop)(rtgui_widget_t* widget, rtgui_event_t* event);
+ rt_bool_t (*on_menuhide)(rtgui_widget_t* widget, rtgui_event_t* event);
+};
+typedef struct rtgui_menu rtgui_menu_t;
+
+rtgui_type_t *rtgui_menu_type_get(void);
+
+struct rtgui_menu* rtgui_menu_create(const char* title);
+void rtgui_menu_destroy(struct rtgui_menu* menu);
+
+void rtgui_menu_set_onmenupop(struct rtgui_menu* menu, rtgui_event_handler_ptr handler);
+void rtgui_menu_set_onmenuhide(struct rtgui_menu* menu, rtgui_event_handler_ptr handler);
+
+void rtgui_menu_pop(struct rtgui_menu* menu, int x, int y);
+rtgui_menu_item_t* rtgui_menu_item_new(struct rtgui_menu* menu, char* text, int type,
+ rt_bool_t (*on_menu)(rtgui_widget_t* widget, rtgui_event_t* event));
+rtgui_menu_item_t* rtgui_menu_item_new_separator(struct rtgui_menu* menu);
+void rtgui_menu_item_add(struct rtgui_menu* menu, struct rtgui_menu_item* item);
+struct rtgui_menu_item* rtgui_menu_get_first_item(struct rtgui_menu* menu);
+
+#endif
|
