mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-09-22 11:30:01 +08:00
update combobox widget; add listctrl.
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1193 bbd45198-f89e-11dd-88c7-29a3b14d5316
This commit is contained in:
@@ -4,13 +4,7 @@
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/image.h>
|
||||
#include <rtgui/widgets/window.h>
|
||||
|
||||
/* combobox item */
|
||||
struct rtgui_combobox_item
|
||||
{
|
||||
char* name;
|
||||
rtgui_image_t *image;
|
||||
};
|
||||
#include <rtgui/widgets/listbox.h>
|
||||
|
||||
/** Gets the type of a combobox */
|
||||
#define RTGUI_COMBOBOX_TYPE (rtgui_combobox_type_get())
|
||||
@@ -32,24 +26,24 @@ 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;
|
||||
struct rtgui_listbox_item* items;
|
||||
rt_uint16_t items_count;
|
||||
rt_uint16_t current_item;
|
||||
|
||||
/* call back */
|
||||
rt_bool_t (*on_selected) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
void (*on_selected) (struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
};
|
||||
typedef struct rtgui_combobox rtgui_combobox_t;
|
||||
|
||||
rtgui_type_t *rtgui_combobox_type_get(void);
|
||||
rtgui_combobox_t *rtgui_combobox_create();
|
||||
rtgui_combobox_t *rtgui_combobox_create(struct rtgui_listbox_item* items, rt_uint16_t counter, struct rtgui_rect* rect);
|
||||
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_combobox_item* rtgui_combox_get_select(struct rtgui_combobox* box);
|
||||
struct rtgui_listbox_item* rtgui_combox_get_select(struct rtgui_combobox* box);
|
||||
|
||||
void rtgui_combobox_set_onselected(struct rtgui_combobox* box, rtgui_onitem_func_t func);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* File : listctrl.h
|
||||
* This file is part of RTGUI in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2010, RT-Thread Development Team
|
||||
*
|
||||
* The license and distribution terms for this file may be
|
||||
* found in the file LICENSE in this distribution or at
|
||||
* http://www.rt-thread.org/license/LICENSE
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2010-12-06 Bernard first version
|
||||
*/
|
||||
|
||||
#ifndef __RTGUI_LISTCTRL_H__
|
||||
#define __RTGUI_LISTCTRL_H__
|
||||
|
||||
#include <rtgui/rtgui.h>
|
||||
#include <rtgui/image.h>
|
||||
#include <rtgui/rtgui_system.h>
|
||||
#include <rtgui/widgets/widget.h>
|
||||
|
||||
/** Gets the type of a list ctrl */
|
||||
#define RTGUI_LISTCTRL_TYPE (rtgui_listctrl_type_get())
|
||||
/** Casts the object to a filelist */
|
||||
#define RTGUI_LISTCTRL(obj) (RTGUI_OBJECT_CAST((obj), RTGUI_LISTCTRL_TYPE, rtgui_listctrl_t))
|
||||
/** Checks if the object is a filelist ctrl */
|
||||
#define RTGUI_IS_LISTCTRL(obj) (RTGUI_OBJECT_CHECK_TYPE((obj), RTGUI_LISTCTRL_TYPE))
|
||||
|
||||
struct rtgui_listctrl
|
||||
{
|
||||
struct rtgui_widget parent;
|
||||
|
||||
/* widget private data */
|
||||
/* listctrl items */
|
||||
rt_uint32_t items;
|
||||
|
||||
/* total number of items */
|
||||
rt_uint16_t items_count;
|
||||
/* the number of item in a page */
|
||||
rt_uint16_t page_items;
|
||||
/* current item */
|
||||
rt_uint16_t current_item;
|
||||
|
||||
/* item event handler */
|
||||
void (*on_item)(rtgui_widget_t *widget, struct rtgui_event* event);
|
||||
void (*on_item_draw)(struct rtgui_listctrl *list, struct rtgui_dc* dc, rtgui_rect_t* rect, rt_uint16_t index);
|
||||
};
|
||||
typedef struct rtgui_listctrl rtgui_listctrl_t;
|
||||
|
||||
typedef void (*rtgui_onitem_func_t)(struct rtgui_widget* widget, rtgui_event_t *event);
|
||||
typedef void (*rtgui_onitem_draw_t)(struct rtgui_listctrl *list, struct rtgui_dc* dc, rtgui_rect_t* rect, rt_uint16_t index);
|
||||
|
||||
rtgui_type_t *rtgui_listctrl_type_get(void);
|
||||
|
||||
rtgui_listctrl_t* rtgui_listctrl_create(rt_uint32_t items, rt_uint16_t count,
|
||||
rtgui_rect_t *rect, rtgui_onitem_draw_t ondraw);
|
||||
void rtgui_listctrl_destroy(rtgui_listctrl_t* ctrl);
|
||||
|
||||
rt_bool_t rtgui_listctrl_event_handler(struct rtgui_widget* widget, struct rtgui_event* event);
|
||||
void rtgui_listctrl_set_onitem(rtgui_listctrl_t* ctrl, rtgui_onitem_func_t func);
|
||||
void rtgui_listctrl_set_items(rtgui_listctrl_t* ctrl, rt_uint32_t items, rt_uint16_t count);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user