summaryrefslogtreecommitdiff
path: root/grlib/listbox.h
diff options
context:
space:
mode:
authorYuval Adam <yuval@y3xz.com>2015-03-13 12:24:02 +0200
committerYuval Adam <yuval@y3xz.com>2015-03-13 12:24:02 +0200
commit788db64b8642bf31de6930d18a62177c64163ee0 (patch)
tree38e8291d1fcfceac7ad2a393ad74396ed6453d24 /grlib/listbox.h
parentc686407d271989d5c4bcc1b3c4f5bb6fcd1846a8 (diff)
Add grlib, fixes #5
Diffstat (limited to 'grlib/listbox.h')
-rw-r--r--grlib/listbox.h758
1 files changed, 758 insertions, 0 deletions
diff --git a/grlib/listbox.h b/grlib/listbox.h
new file mode 100644
index 0000000..5db084e
--- /dev/null
+++ b/grlib/listbox.h
@@ -0,0 +1,758 @@
+//*****************************************************************************
+//
+// listbox.h - Prototypes for the listbox widget.
+//
+// Copyright (c) 2008-2014 Texas Instruments Incorporated. All rights reserved.
+// Software License Agreement
+//
+// Texas Instruments (TI) is supplying this software for use solely and
+// exclusively on TI's microcontroller products. The software is owned by
+// TI and/or its suppliers, and is protected under applicable copyright
+// laws. You may not combine this software with "viral" open-source
+// software in order to form a larger program.
+//
+// THIS SOFTWARE IS PROVIDED "AS IS" AND WITH ALL FAULTS.
+// NO WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT
+// NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. TI SHALL NOT, UNDER ANY
+// CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+// DAMAGES, FOR ANY REASON WHATSOEVER.
+//
+// This is part of revision 2.1.0.12573 of the Tiva Graphics Library.
+//
+//*****************************************************************************
+
+#ifndef __LISTBOX_H__
+#define __LISTBOX_H__
+
+//*****************************************************************************
+//
+//! \addtogroup listbox_api
+//! @{
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+// If building with a C++ compiler, make all of the definitions in this header
+// have a C binding.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+//*****************************************************************************
+//
+//! The structure that describes a listbox widget.
+//
+//*****************************************************************************
+typedef struct
+{
+ //
+ //! The generic widget information.
+ //
+ tWidget sBase;
+
+ //
+ //! The style for this widget. This is a set of flags defined by
+ //! LISTBOX_STYLE_xxx.
+ //
+ uint32_t ui32Style;
+
+ //
+ //! The 24-bit RGB color used as the background for the listbox.
+ //
+ uint32_t ui32BackgroundColor;
+
+ //
+ //! The 24-bit RGB color used as the background for the selected entry
+ //! in the listbox.
+ //
+ uint32_t ui32SelectedBackgroundColor;
+
+ //
+ //! The 24-bit RGB color used to draw text on this listbox.
+ //
+ uint32_t ui32TextColor;
+
+ //
+ //! The 24-bit RGB color used to draw the selected text on this listbox.
+ //
+ uint32_t ui32SelectedTextColor;
+
+
+ //
+ //! The 24-bit RGB color used to outline this listbox, if
+ //! LISTBOX_STYLE_OUTLINE is selected.
+ //
+ uint32_t ui32OutlineColor;
+
+ //
+ //! A pointer to the font used to render the listbox text.
+ //
+ const tFont *psFont;
+
+ //
+ //! A pointer to the array of string pointers representing the contents of
+ //! the list box.
+ //
+ const char **ppcText;
+
+ //
+ //! The number of elements in the array pointed to by pci8Text.
+ //
+ uint16_t ui16MaxEntries;
+
+ //
+ //! The number of elements in the array pointed to by pci8Text which are
+ //! currently populated with strings.
+ //
+ uint16_t ui16Populated;
+
+ //
+ //! The index of the string currently selected in the list box. If no
+ //! selection has been made, this will be set to 0xFFFF (-1).
+ //
+ int16_t i16Selected;
+
+ //
+ //! The index of the string that appears at the top of the list box. This
+ //! is used by the widget class to control scrolling of the box content.
+ //! This is an internal variable and must not be modified by an application
+ //! using this widget class.
+ //
+ uint16_t ui16StartEntry;
+
+ //
+ //! The index of the oldest entry in the ppcText array. This is used by the
+ //! widget class to determine where to add a new string if the array is
+ //! full and the listbox has style LISTBOX_STYLE_WRAP. This is an internal
+ //! variable and must not be modified by an application using this widget
+ //! class.
+ //
+ uint16_t ui16OldestEntry;
+
+ //
+ //! A flag which we use to determine whether to change the selected element
+ //! when the pointer is lifted. The listbox will change the selection if
+ //! no scrolling was performed since the last WIDGET_MSG_PTR_DOWN was
+ //! received. This is an internal variable and must not be modified by
+ //! an application using this widget class.
+ //
+ uint16_t ui16Scrolled;
+
+ //
+ //! The Y coordinate of the last pointer position we received. This is an
+ //! internal variable used to manage scrolling of the listbox contents and
+ //! must not be modified by an application using this widget class.
+ //
+ int32_t i32PointerY;
+
+ //
+ //! A pointer to the application-supplied callback function. This function
+ //! will be called each time the selected element in the list box changes.
+ //! The ui16SelIndex parameter contains the index of the selected string in
+ //! ppcText array or, if no element is selected, 0xFFFF (-1).
+ //
+ void (*pfnOnChange)(tWidget *psWidget, int16_t ui16SelIndex);
+}
+tListBoxWidget;
+
+//*****************************************************************************
+//
+//! This flag indicates that the listbox should be outlined. If enabled, the
+//! widget is drawn with a two pixel border, the outer, single pixel rectangle
+//! of which is in the color found in the ui32OutlineColor field of the widget
+//! structure and the inner rectangle in color ui32BackgroundColor.
+//
+//*****************************************************************************
+#define LISTBOX_STYLE_OUTLINE 0x00000001
+
+//*****************************************************************************
+//
+//! This flag indicates that the listbox is not interactive but merely displays
+//! strings. Scrolling of the listbox content is supported when this flag is
+//! set but widgets using this style do not make callbacks to the application
+//! and do not support selection and deselection of entries. This may be used
+//! if a listbox is intended, for example, as a text output or status reporting
+//! control.
+//
+//*****************************************************************************
+#define LISTBOX_STYLE_LOCKED 0x00000002
+
+//*****************************************************************************
+//
+//! This flag controls the behavior of the listbox if a new string is added
+//! when the string table (ppcText) is already full. If this style is set, the
+//! oldest string in the table is replaced with new one and, if the discarded
+//! string was currently displayed, the display positions will be fixed up to
+//! ensure that the (new) oldest string remains at the top of the listbox. If
+//! this style is not set, the attempt to set a new string will fail if the
+//! table is full.
+//
+//*****************************************************************************
+#define LISTBOX_STYLE_WRAP 0x00000004
+
+//*****************************************************************************
+//
+//! Declares an initialized listbox widget data structure.
+//!
+//! \param psParent is a pointer to the parent widget.
+//! \param psNext is a pointer to the sibling widget.
+//! \param psChild is a pointer to the first child widget.
+//! \param psDisplay is a pointer to the display on which to draw the listbox.
+//! \param i32X is the X coordinate of the upper left corner of the listbox.
+//! \param i32Y is the Y coordinate of the upper left corner of the listbox.
+//! \param i32Width is the width of the listbox.
+//! \param i32Height is the height of the listbox.
+//! \param ui32Style is the style to be applied to the listbox.
+//! \param ui32BgColor is the background color for the listbox.
+//! \param ui32SelBgColor is the background color for the selected element in
+//! the listbox.
+//! \param ui32TextColor is the color used to draw text on the listbox.
+//! \param ui32SelTextColor is the color used to draw the selected element
+//! text in the listbox.
+//! \param ui32OutlineColor is the color used to outline the listbox.
+//! \param psFont is a pointer to the font to be used to draw text on the
+//! listbox.
+//! \param ppcText is a pointer to the string table for the listbox.
+//! \param ui16MaxEntries provides the number of entries in the \e ppcText
+//! array and represents the maximum number of strings the listbox can hold.
+//! \param ui16PopulatedEntries indicates the number of entries in the
+//! \e ppcText array that currently hold valid string for the listbox.
+//! \param pfnOnChange is a pointer to the application callback for the
+//! listbox.
+//!
+//! This macro provides an initialized listbox widget data structure, which can
+//! be used to construct the widget tree at compile time in global variables
+//! (as opposed to run-time via function calls). This must be assigned to a
+//! variable, such as:
+//!
+//! \verbatim
+//! tListBoxWidget g_sListBox = ListBoxStruct(...);
+//! \endverbatim
+//!
+//! Or, in an array of variables:
+//!
+//! \verbatim
+//! tListBoxWidget g_psListBox[] =
+//! {
+//! ListBoxStruct(...),
+//! ListBoxStruct(...)
+//! };
+//! \endverbatim
+//!
+//! \e ui32Style is the logical OR of the following:
+//!
+//! - \b #LISTBOX_STYLE_OUTLINE to indicate that the listbox should be outlined.
+//! - \b #LISTBOX_STYLE_LOCKED to indicate that the listbox should ignore user
+//! input and merely display its contents.
+//! - \b #LISTBOX_STYLE_WRAP to indicate that the listbox should discard the
+//! oldest string it contains if asked to add a new string while the string
+//! table is already full.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define ListBoxStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, ui32Style, ui32BgColor, \
+ ui32SelBgColor, ui32TextColor, ui32SelTextColor, \
+ ui32OutlineColor, psFont, ppcText, ui16MaxEntries, \
+ ui16PopulatedEntries, pfnOnChange) \
+ { \
+ { \
+ sizeof(tListBoxWidget), \
+ (tWidget *)(psParent), \
+ (tWidget *)(psNext), \
+ (tWidget *)(psChild), \
+ psDisplay, \
+ { \
+ i32X, \
+ i32Y, \
+ (i32X) + (i32Width) - 1, \
+ (i32Y) + (i32Height) - 1 \
+ }, \
+ ListBoxMsgProc \
+ }, \
+ ui32Style, \
+ ui32BgColor, \
+ ui32SelBgColor, \
+ ui32TextColor, \
+ ui32SelTextColor, \
+ ui32OutlineColor, \
+ psFont, \
+ ppcText, \
+ ui16MaxEntries, \
+ ui16PopulatedEntries, \
+ (int16_t)0xFFFF, \
+ 0, \
+ 0, \
+ 0, \
+ 0, \
+ pfnOnChange \
+ }
+
+//*****************************************************************************
+//
+//! Declares an initialized variable containing a listbox widget data structure.
+//!
+//! \param sName is the name of the variable to be declared.
+//! \param psParent is a pointer to the parent widget.
+//! \param psNext is a pointer to the sibling widget.
+//! \param psChild is a pointer to the first child widget.
+//! \param psDisplay is a pointer to the display on which to draw the listbox.
+//! \param i32X is the X coordinate of the upper left corner of the listbox.
+//! \param i32Y is the Y coordinate of the upper left corner of the listbox.
+//! \param i32Width is the width of the listbox.
+//! \param i32Height is the height of the listbox.
+//! \param ui32Style is the style to be applied to the listbox.
+//! \param ui32BgColor is the background color for the listbox.
+//! \param ui32SelBgColor is the background color for the selected element in
+//! the listbox.
+//! \param ui32TextColor is the color used to draw text on the listbox.
+//! \param ui32SelTextColor is the color used to draw the selected element
+//! text in the listbox.
+//! \param ui32OutlineColor is the color used to outline the listbox.
+//! \param psFont is a pointer to the font to be used to draw text on the
+//! listbox.
+//! \param ppcText is a pointer to the string table for the listbox.
+//! \param ui16MaxEntries provides the number of entries in the \e ppcText
+//! array and represents the maximum number of strings the listbox can hold.
+//! \param ui16PopulatedEntries indicates the number of entries in the
+//! \e ppcText array that currently hold valid string for the listbox.
+//! \param pfnOnChange is a pointer to the application callback for the
+//! listbox.
+//!
+//! This macro declares a variable containing an initialized listbox widget
+//! data structure, which can be used to construct the widget tree at compile
+//! time in global variables (as opposed to run-time via function calls).
+//!
+//! \e ui32Style is the logical OR of the following:
+//!
+//! - \b #LISTBOX_STYLE_OUTLINE to indicate that the listbox should be outlined.
+//! - \b #LISTBOX_STYLE_LOCKED to indicate that the listbox should ignore user
+//! input and merely display its contents.
+//! - \b #LISTBOX_STYLE_WRAP to indicate that the listbox should discard the
+//! oldest string it contains if asked to add a new string while the string
+//! table is already full.
+//!
+//! \return Nothing; this is not a function.
+//
+//*****************************************************************************
+#define ListBox(sName, psParent, psNext, psChild, psDisplay, i32X, i32Y, \
+ i32Width, i32Height, ui32Style, ui32BgColor, ui32SelBgColor, \
+ ui32TextColor, ui32SelTextColor, ui32OutlineColor, psFont, \
+ ppcText, ui16MaxEntries, ui16PopulatedEntries, pfnOnChange) \
+tListBoxWidget sName = \
+ ListBoxStruct(psParent, psNext, psChild, psDisplay, i32X, i32Y, i32Width, \
+ i32Height, ui32Style, ui32BgColor, ui32SelBgColor, \
+ ui32TextColor, ui32SelTextColor, ui32OutlineColor, psFont, \
+ ppcText, ui16MaxEntries, ui16PopulatedEntries, pfnOnChange)
+
+//*****************************************************************************
+//
+//! Sets the function to call when the listbox selection changes.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//! \param pfnCallback is a pointer to the function to call.
+//!
+//! This function sets the function to be called when the selected element in
+//! this listbox changes. If style \b #LISTBOX_STYLE_LOCKED is selected, or
+//! the callback function pointer set is NULL, no callbacks will be made.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxCallbackSet(psWidget, pfnCallback) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->pfnOnChange = pfnCallback; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the background color of a listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use for the listbox background.
+//!
+//! This function changes the color used for the listbox background on the
+//! display. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxBackgroundColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32BackgroundColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the background color of the selected element in a listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use for the background of the
+//! selected element.
+//!
+//! This function changes the color used for the background of the selected
+//! line of text on the display. The display is not updated until the next
+//! paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxSelectedBackgroundColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32SelectedBackgroundColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the font for a listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//! \param pFnt is a pointer to the font to use to draw text on the listbox.
+//!
+//! This function changes the font used to draw text on the listbox. The
+//! display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxFontSet(psWidget, pFnt) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ const tFont *pF = pFnt; \
+ psW->psFont = pF; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the outline color of a listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to outline the listbox.
+//!
+//! This function changes the color used to outline the listbox on the display.
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxOutlineColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32OutlineColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables outlining of a listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//!
+//! This function disables the outlining of a listbox widget. The display is
+//! not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxOutlineOff(psWidget) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32Style &= ~(LISTBOX_STYLE_OUTLINE); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables outlining of a listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//!
+//! This function enables the outlining of a listbox widget. The display is
+//! not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxOutlineOn(psWidget) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32Style |= LISTBOX_STYLE_OUTLINE; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the text color of a listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to draw text on the
+//! listbox.
+//!
+//! This function changes the color used to draw text on the listbox on the
+//! display. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxTextColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32TextColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the text color of the selected element in a listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to be modified.
+//! \param ui32Color is the 24-bit RGB color to use to draw the selected text
+//! on the listbox.
+//!
+//! This function changes the color used to draw the selected element text
+//! on the display. The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxSelectedTextColorSet(psWidget, ui32Color) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32SelectedTextColor = ui32Color; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Changes the text associated with an element in the listbox widget.
+//!
+//! \param psWidget is a pointer to the listbox widget to be modified.
+//! \param pcTxt is a pointer to the new text string.
+//! \param ui32Index is the index of the element whose string is to be
+//! replaced.
+//!
+//! This function replaces the string associated with one of the listbox
+//! elements. This call should only be used to replace a string for an
+//! already-populated element. To add a new string, use ListBoxTextAdd().
+//! The display is not updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxTextSet(psWidget, pcTxt, ui32Index) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ const char *pcT = pcTxt; \
+ if(ui32Index < psW->ui16MaxEntries) \
+ { \
+ psW->ppcText[ui32Index] = pcT; \
+ } \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Locks a listbox making it ignore attempts to select elements.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//!
+//! This function locks a listbox widget and makes it ignore attempts to
+//! select or deselect an element. When locked, a listbox acts as a passive
+//! indicator. Strings may be added and the selected element changed via
+//! calls to ListBoxSelectioSet() but pointer activity will not change the
+//! selection and no callbacks will be made. In this mode, the user may still
+//! use the pointer to scroll the content of the listbox assuming it contains
+//! more strings that can be displayed in the widget area.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxLock(psWidget) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32Style |= LISTBOX_STYLE_LOCKED; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Unlocks a listbox making it respond to pointer input.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//!
+//! This function unlocks a listbox widget. When unlocked, a listbox will
+//! respond to pointer input by setting its selected element appropriately and
+//! informing the application of changes via callbacks.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxUnlock(psWidget) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32Style &= ~(LISTBOX_STYLE_LOCKED); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Enables wrapping in a listbox.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//!
+//! This function enables text wrapping in a listbox widget. With wrapping
+//! enabled, calls to ListBoxTextAdd() made when the widget string table is
+//! full will discard the oldest string in favor of the new one. If wrapping
+//! is disabled, these calls will fail.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxWrapEnable(psWidget) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32Style &= ~(LISTBOX_STYLE_WRAP); \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Disables text wrapping in a listbox.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//!
+//! This function disables text wrapping in a listbox widget. With wrapping
+//! enabled, calls to ListBoxTextAdd() made when the widget string table is
+//! full will discard the oldest string in favor of the new one. If wrapping
+//! is disabled, these calls will fail.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxWrapDisable(psWidget) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui32Style |= LISTBOX_STYLE_WRAP; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Empties the listbox.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//!
+//! This function removes all text from a listbox widget. The display is not
+//! updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxClear(psWidget) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ psW->ui16Populated = 0; \
+ psW->i16Selected = (int16_t)0xFFFF; \
+ psW->ui16StartEntry = 0; \
+ psW->ui16OldestEntry = 0; \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Sets the current selection within the listbox.
+//!
+//! \param psWidget is a pointer to the listbox widget to modify.
+//! \param i16Sel is the index of the item to select.
+//!
+//! This function selects an item within the list box. The display is not
+//! updated until the next paint request.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxSelectionSet(psWidget, i16Sel) \
+ do \
+ { \
+ tListBoxWidget *psW = psWidget; \
+ if((i16Sel) < psW->ui16Populated) \
+ { \
+ psW->i16Selected = (i16Sel); \
+ } \
+ } \
+ while(0)
+
+//*****************************************************************************
+//
+//! Gets the index of the current selection within the listbox.
+//!
+//! \param psWidget is a pointer to the listbox widget to be queried.
+//!
+//! This function returns the index of the item currently selected in a
+//! listbox. If no selection has been made, 0xFFFF (-1) is returned.
+//!
+//! \return None.
+//
+//*****************************************************************************
+#define ListBoxSelectionGet(psWidget) \
+ (((tListBoxWidget *)(psWidget))->i16Selected)
+
+//*****************************************************************************
+//
+// Prototypes for the listbox widget APIs.
+//
+//*****************************************************************************
+extern int32_t ListBoxMsgProc(tWidget *psWidget, uint32_t ui32Msg,
+ uint32_t ui32Param1, uint32_t ui32Param2);
+extern void ListBoxInit(tListBoxWidget *psWidget, const tDisplay *psDisplay,
+ const char **ppcText, uint16_t ui16MaxEntries,
+ uint16_t ui16PopulatedEntries,
+ int32_t i32X, int32_t i32Y,
+ int32_t i32Width, int32_t i32Height);
+extern int32_t ListBoxTextAdd(tListBoxWidget *psWidget, const char *pcTxt);
+
+//*****************************************************************************
+//
+// Mark the end of the C bindings section for C++ compilers.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+}
+#endif
+
+//*****************************************************************************
+//
+// Close the Doxygen group.
+//! @}
+//
+//*****************************************************************************
+
+#endif // __LISTBOX_H__