From 259f822ba7a30cd729faf273dbb8acbca51c5a3a Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Wed, 17 Jul 2013 17:49:21 +0200 Subject: [PATCH] added list widget dummy --- include/gfx_rules.h | 5 ++++ include/gwin/gwin.h | 4 +++ include/gwin/list.h | 61 +++++++++++++++++++++++++++++++++++++ src/gwin/gwin.mk | 1 + src/gwin/label.c | 1 + src/gwin/list.c | 73 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 145 insertions(+) create mode 100644 include/gwin/list.h create mode 100644 src/gwin/list.c diff --git a/include/gfx_rules.h b/include/gfx_rules.h index ddad82a7..214a327b 100644 --- a/include/gfx_rules.h +++ b/include/gfx_rules.h @@ -67,6 +67,11 @@ #define GWIN_NEED_WIDGET TRUE #endif #endif + #if GWIN_NEED_LIST + #if !GDISP_NEED_TEXT + #error "GWIN: GDISP_NEED_TEXT is required when GWIN_NEED_LIST is TRUE." + #endif + #endif #if GWIN_NEED_WIDGET #if !GDISP_NEED_TEXT #error "GWIN: GDISP_NEED_TEXT is required if GWIN_NEED_WIDGET is TRUE." diff --git a/include/gwin/gwin.h b/include/gwin/gwin.h index a2c0d0a1..53f5e205 100644 --- a/include/gwin/gwin.h +++ b/include/gwin/gwin.h @@ -825,6 +825,10 @@ extern "C" { #include "gwin/label.h" #endif + #if GWIN_NEED_LIST || defined(__DOXYGEN__) + #include "gwin/list.h" + #endif + #endif /* GFX_USE_GWIN */ #endif /* _GWIN_H */ diff --git a/include/gwin/list.h b/include/gwin/list.h new file mode 100644 index 00000000..8aa46b0c --- /dev/null +++ b/include/gwin/list.h @@ -0,0 +1,61 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://chibios-gfx.com/license.html + */ + +/** + * @file include/gwin/list.h + * @brief GWIN list widget header file + * + * @defgroup List List + * @ingroup GWIN + * + * @details GWIN allows it to create a list widget. + * + * @pre GFX_USE_GDISP must be set to TRUE in your gfxconf.h + * @pre GFX_USE_GWIN must be set to TRUE in your gfxconf.h + * @pre GDISP_NEED_TEXT must be set to TRUE in your gfxconf.h + * @pre GWIN_NEED_LIST must be set to TRUE in your gfxconf.h + * @pre The font you want to use must be enabled in your gfxconf.h + * + * @{ + */ + +#ifndef _GWIN_LIST_H +#define _GWIN_LIST_H + +// This file is included within "gwin/gwin.h" + +/** + * @brief The event type for a list event + */ +#define GEVENT_GWIN_LIST (GEVENT_GWIN_FIRST+4) + +/** + * @brief A list event + */ +typedef struct GEventGWinList { + GEventType type; // The type of this event (GEVENT_GWIN_LIST) + GHandle list; // THe list that has generated the event +} GEventGWinList; + +// A list window +typedef struct GListObject { + GWidgetObject w; +} GListObject; + +#ifdef __cplusplus +extern "C" { +#endif + +GHandle gwinListCreate(GListObject *widget, GWidgetInit *pInit); + +#ifdef __cplusplus +} +#endif + +#endif // _GWIN_LIST_H +/** @} */ + diff --git a/src/gwin/gwin.mk b/src/gwin/gwin.mk index 92b10b7b..ec02f139 100644 --- a/src/gwin/gwin.mk +++ b/src/gwin/gwin.mk @@ -9,4 +9,5 @@ GFXSRC += $(GFXLIB)/src/gwin/gwin.c \ $(GFXLIB)/src/gwin/gimage.c \ $(GFXLIB)/src/gwin/label.c \ $(GFXLIB)/src/gwin/radio.c \ + $(GFXLIB)/src/gwin/list.c \ diff --git a/src/gwin/label.c b/src/gwin/label.c index 2ff60eb4..a76c0ec4 100644 --- a/src/gwin/label.c +++ b/src/gwin/label.c @@ -95,6 +95,7 @@ GHandle gwinLabelCreate(GLabelObject *widget, GWidgetInit *pInit) { // auto assign width if (pInit->g.width <= 0) { + flags |= GLABEL_FLG_WAUTO; pInit->g.width = getwidth(pInit->text, gwinGetDefaultFont(), gdispGetWidth() - pInit->g.x); } diff --git a/src/gwin/list.c b/src/gwin/list.c new file mode 100644 index 00000000..475b4fba --- /dev/null +++ b/src/gwin/list.c @@ -0,0 +1,73 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://chibios-gfx.com/license.html + */ + +/** + * @file include/gwin/list.h + * @brief GWIN list widget header file. + * + * @defgroup List List + * @ingroup GWIN + * + * @{ + */ + +#include "gfx.h" + +#if GFX_USE_GWIN && GWIN_NEED_LIST + +#include "gwin/class_gwin.h" + +static void gwinListDefaultDraw(GWidgetObject* gw, void* param) { + +} + +static const gwidgetVMT listVMT = { + { + "List", // The class name + sizeof(GListObject), // The object size + _gwidgetDestroy, // The destroy routine + _gwidgetRedraw, // The redraw routine + 0, // The after-clear routine + }, + gwinListDefaultDraw, // default drawing routine + #if GWINPUT_NEED_MOUSE + { + 0, + 0, + 0, + }, + #endif + #if GINPUT_NEED_TOGGLE + { + 0, + 0, + 0, + 0, + 0, + }, + #endif + #if GINPUT_NEED_DIAL + { + 0, + 0, + 0, + 0, + }, + #endif +}; + +GHandle gwinListCreate(GListObject* widget, GWidgetInit* pInit) { + if (!(widget = (GListObject *)_gwidgetCreate(&widget->w, pInit, &listVMT))) + return 0; + + gwinSetVisible(&widget->w.g, pInit->g.show); + + return (GHandle)widget; +} + +#endif // GFX_USE_GWIN && GWIN_NEED_LIST +