graphics/nxwidgets and inclu/graphics/nxwidgets: Add support for modal windows.

This commit is contained in:
Gregory Nutt 2019-04-05 09:05:19 -06:00
parent 5a693020b8
commit ef26c25994
9 changed files with 135 additions and 101 deletions

View File

@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
* apps/graphics/nxwidgets/src/cbgwindow.cxx * apps/graphics/nxwidgets/src/cbgwindow.cxx
* *
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved. * Copyright (C) 2012, 2015, 2019 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -202,34 +202,6 @@ bool CBgWindow::setSize(FAR const struct nxgl_size_s *pSize)
return false; return false;
} }
/**
* Bring the window to the top of the display. NOTE: The background
* window cannot be raised.
*
* @return Always returns false.
*/
bool CBgWindow::raise(void)
{
// The background cannot be raised
return false;
}
/**
* Lower the window to the bottom of the display. NOTE: The background
* window is always at the bottom of the window hierarchy.
*
* @return Always returns false.
*/
bool CBgWindow::lower(void)
{
// The background cannot be lowered
return false;
}
/** /**
* Set an individual pixel in the window with the specified color. * Set an individual pixel in the window with the specified color.
* *

View File

@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
* apps/graphics/nxwidgets/src/cnxtkwindow.cxx * apps/graphics/nxwidgets/src/cnxtkwindow.cxx
* *
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved. * Copyright (C) 2012, 2015, 2019 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -359,6 +359,21 @@ bool CNxTkWindow::lower(void)
return nxtk_lower(m_hNxTkWindow) == OK; return nxtk_lower(m_hNxTkWindow) == OK;
} }
/**
* May be used to either (1) raise a window to the top of the display and
* select modal behavior, or (2) disable modal behavior.
*
* @param enable True: enter modal state; False: leave modal state
* @return True on success, false on any failure.
*/
bool CNxTkWindow::modal(bool enable)
{
// Select/de-select window modal state
return nxtk_modal(m_hNxTkWindow, enable) == OK;
}
/** /**
* Set an individual pixel in the window with the specified color. * Set an individual pixel in the window with the specified color.
* *

View File

@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
* apps/graphics/nxwidgets/src/cnxtoolbar.cxx * apps/graphics/nxwidgets/src/cnxtoolbar.cxx
* *
* Copyright (C) 2012, 2015 Gregory Nutt. All rights reserved. * Copyright (C) 2012, 2015, 2019 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -177,59 +177,6 @@ bool CNxToolbar::getSize(FAR struct nxgl_size_s *pSize)
return m_widgetControl->getWindowSize(pSize); return m_widgetControl->getWindowSize(pSize);
} }
/**
* Set the position and size of the toolbar. The position of
* the toolbar is fixed at the top of the parent framed window.
*
* @param pPos The new position of the toolbar.
* @return Always returns false.
*/
bool CNxToolbar::setPosition(FAR const struct nxgl_point_s *pPos)
{
return false;
}
/**
* Set the size of the selected toolbar. The only variable dimension
* is the height of the toolbar, but that cannot be changed once
* it is created.
*
* @param pSize The new size of the toolbar.
* @return Always returns false.
*/
bool CNxToolbar::setSize(FAR const struct nxgl_size_s *pSize)
{
return false;
}
/**
* Bring the toolbar to the top of the display. The toolbar is
* a component of the containing, parent, framed window. It
* cannot be raised separately.
*
* @return Always returns false.
*/
bool CNxToolbar::raise(void)
{
return false;
}
/**
* Lower the toolbar to the bottom of the display. The toolbar is
* a component of the containing, parent, framed window. It
* cannot be raised separately.
*
* @return Always returns false.
*/
bool CNxToolbar::lower(void)
{
return false;
}
/** /**
* Set an individual pixel in the toolbar with the specified color. * Set an individual pixel in the toolbar with the specified color.
* *

View File

@ -215,6 +215,21 @@ bool CNxWindow::lower(void)
return nx_lower(m_hNxWindow) == OK; return nx_lower(m_hNxWindow) == OK;
} }
/**
* May be used to either (1) raise a window to the top of the display and
* select modal behavior, or (2) disable modal behavior.
*
* @param enable True: enter modal state; False: leave modal state
* @return True on success, false on any failure.
*/
bool CNxWindow::modal(bool enable)
{
// Select/de-select window modal state
return nx_modal(m_hNxWindow, enable) == OK;
}
/** /**
* Set an individual pixel in the window with the specified color. * Set an individual pixel in the window with the specified color.
* *

View File

@ -204,19 +204,45 @@ namespace NXWidgets
* Bring the window to the top of the display. NOTE: The background * Bring the window to the top of the display. NOTE: The background
* window cannot be raised. * window cannot be raised.
* *
* @return True on success, false on any failure. * @return Always returns false.
*/ */
bool raise(void); inline bool raise(void)
{
// The background cannot be raised
return false;
}
/** /**
* Lower the window to the bottom of the display. NOTE: The background * Lower the window to the bottom of the display. NOTE: The background
* window is always at the bottom of the window hierarchy. * window is always at the bottom of the window hierarchy.
* *
* @return True on success, false on any failure. * @return Always returns false.
*/ */
bool lower(void); inline bool lower(void)
{
// The background cannot be lowered
return false;
}
/**
* May be used to either (1) raise a window to the top of the display and
* select modal behavior, or (2) disable modal behavior. NOTE: The
* background cannot be a modal window.
*
* @param enable True: enter modal state; False: leave modal state
* @return Always returns false.
*/
inline bool modal(bool enable)
{
// The background cannot a modal window
return false;
}
#ifdef CONFIG_NXTERM_NXKBDIN #ifdef CONFIG_NXTERM_NXKBDIN
/** /**

View File

@ -239,6 +239,16 @@ namespace NXWidgets
bool lower(void); bool lower(void);
/**
* May be used to either (1) raise a window to the top of the display and
* select modal behavior, or (2) disable modal behavior.
*
* @param enable True: enter modal state; False: leave modal state
* @return True on success, false on any failure.
*/
bool modal(bool enable);
/** /**
* Each window implementation also inherits from CCallback. CCallback, * Each window implementation also inherits from CCallback. CCallback,
* by default, forwards NX keyboard input to the various widgets residing * by default, forwards NX keyboard input to the various widgets residing

View File

@ -176,17 +176,24 @@ namespace NXWidgets
* @return Always returns false. * @return Always returns false.
*/ */
bool setPosition(FAR const struct nxgl_point_s *pPos); inline bool setPosition(FAR const struct nxgl_point_s *pPos)
{
return false;
}
/** /**
* Set the position and size of the toolbar. The position of * Set the size of the selected toolbar. The only variable dimension
* the toolbar is fixed at the top of the parent framed window. * is the height of the toolbar, but that cannot be changed once
* it is created.
* *
* @param pPos The new position of the toolbar. * @param pSize The new size of the toolbar.
* @return Always returns false. * @return Always returns false.
*/ */
bool setSize(FAR const struct nxgl_size_s *pSize); inline bool setSize(FAR const struct nxgl_size_s *pSize)
{
return false;
}
/** /**
* Bring the toolbar to the top of the display. The toolbar is * Bring the toolbar to the top of the display. The toolbar is
@ -196,17 +203,38 @@ namespace NXWidgets
* @return Always returns false. * @return Always returns false.
*/ */
bool raise(void); inline bool raise(void)
{
return false;
}
/** /**
* Lower the toolbar to the bottom of the display. The toolbar is * Lower the toolbar to the bottom of the display. The toolbar is
* a component of the containing, parent, framed window. It * a component of the containing, parent, framed window. It
* cannot be lowered separately. * cannot be raised separately.
* *
* @return Always returns false. * @return Always returns false.
*/ */
bool lower(void); inline bool lower(void)
{
return false;
}
/**
* May be used to either (1) raise a window to the top of the display and
* select modal behavior, or (2) disable modal behavior. The toolbar is
* a component of the containing, parent, framed window. It cannot
* be placed in the modal state separately.
*
* @param enable True: enter modal state; False: leave modal state
* @return Always returns false.
*/
inline bool modal(bool enable)
{
return false;
}
/** /**
* Each window implementation also inherits from CCallback. CCallback, * Each window implementation also inherits from CCallback. CCallback,

View File

@ -212,6 +212,16 @@ namespace NXWidgets
bool lower(void); bool lower(void);
/**
* May be used to either (1) raise a window to the top of the display and
* select modal behavior, or (2) disable modal behavior.
*
* @param enable True: enter modal state; False: leave modal state
* @return True on success, false on any failure.
*/
bool modal(bool enable);
/** /**
* Each window implementation also inherits from CCallback. CCallback, * Each window implementation also inherits from CCallback. CCallback,
* by default, forwards NX keyboard input to the various widgets residing * by default, forwards NX keyboard input to the various widgets residing

View File

@ -150,7 +150,8 @@ namespace NXWidgets
/** /**
* Get the size of the window (as reported by the NX callback). * Get the size of the window (as reported by the NX callback).
* *
* @return The size. * @param pSize The location to return window size.
* @return True on success, false on any failure.
*/ */
virtual bool getSize(FAR struct nxgl_size_s *pSize) = 0; virtual bool getSize(FAR struct nxgl_size_s *pSize) = 0;
@ -159,7 +160,7 @@ namespace NXWidgets
* Set the position and size of the window. * Set the position and size of the window.
* *
* @param pPos The new position of the window. * @param pPos The new position of the window.
* @return True on success, false on failure. * @return True on success, false on any failure.
*/ */
virtual bool setPosition(FAR const struct nxgl_point_s *pPos) = 0; virtual bool setPosition(FAR const struct nxgl_point_s *pPos) = 0;
@ -168,7 +169,7 @@ namespace NXWidgets
* Set the size of the selected window. * Set the size of the selected window.
* *
* @param pSize The new size of the window. * @param pSize The new size of the window.
* @return OK on success; ERROR on failure with errno set appropriately. * @return True on success, false on any failure.
*/ */
virtual bool setSize(FAR const struct nxgl_size_s *pSize) = 0; virtual bool setSize(FAR const struct nxgl_size_s *pSize) = 0;
@ -176,7 +177,7 @@ namespace NXWidgets
/** /**
* Bring the window to the top of the display. * Bring the window to the top of the display.
* *
* @return OK on success; ERROR on failure with errno set appropriately. * @return True on success, false on any failure.
*/ */
virtual bool raise(void) = 0; virtual bool raise(void) = 0;
@ -184,11 +185,21 @@ namespace NXWidgets
/** /**
* Lower the window to the bottom of the display. * Lower the window to the bottom of the display.
* *
* @return OK on success; ERROR on failure with errno set appropriately. * @return True on success, false on any failure.
*/ */
virtual bool lower(void) = 0; virtual bool lower(void) = 0;
/**
* May be used to either (1) raise a window to the top of the display and
* select modal behavior, or (2) disable modal behavior.
*
* @param enable True: enter modal state; False: leave modal state
* @return True on success, false on any failure.
*/
virtual bool modal(bool enable) = 0;
#ifdef CONFIG_NXTERM_NXKBDIN #ifdef CONFIG_NXTERM_NXKBDIN
/** /**
* Each window implementation also inherits from CCallback. CCallback, * Each window implementation also inherits from CCallback. CCallback,