summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-02-01 14:53:38 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2013-02-01 14:53:38 +0000
commit43c642c61857ceefe07ce0fb929c569b52a545a5 (patch)
tree865d4f643ca3024818a963b2d5ff1aceb8c3a9f5
parent5a5bdf7d1b7afcf5c7b30209bdfad2abf2e72f3b (diff)
downloadnuttx-43c642c61857ceefe07ce0fb929c569b52a545a5.tar.gz
nuttx-43c642c61857ceefe07ce0fb929c569b52a545a5.tar.bz2
nuttx-43c642c61857ceefe07ce0fb929c569b52a545a5.zip
NxWidgets updates from Petteri Aimonen; buildroot GDB build fix from Ken Bannister
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5592 42af7a65-404d-4744-a932-0658087f49c3
-rw-r--r--NxWidgets/ChangeLog.txt11
-rw-r--r--NxWidgets/libnxwidgets/Makefile2
-rw-r--r--NxWidgets/libnxwidgets/include/cgraphicsport.hxx7
-rw-r--r--NxWidgets/libnxwidgets/include/cnxwidget.hxx2
-rw-r--r--NxWidgets/libnxwidgets/include/ctabpanel.hxx108
-rw-r--r--NxWidgets/libnxwidgets/src/cgraphicsport.cxx19
-rw-r--r--NxWidgets/libnxwidgets/src/cnxwidget.cxx14
-rw-r--r--NxWidgets/libnxwidgets/src/ctabpanel.cxx133
-rw-r--r--misc/buildroot/ChangeLog3
-rw-r--r--misc/buildroot/toolchain/gdb/Config.in2
-rw-r--r--nuttx/README.txt6
-rw-r--r--nuttx/libc/stdio/lib_fgets.c2
12 files changed, 293 insertions, 16 deletions
diff --git a/NxWidgets/ChangeLog.txt b/NxWidgets/ChangeLog.txt
index 744584ed4..be55a2e78 100644
--- a/NxWidgets/ChangeLog.txt
+++ b/NxWidgets/ChangeLog.txt
@@ -252,3 +252,14 @@
around this, I added several "enabling" settings to override the
default setting. This is awkward and I preferred the configuration as
it was before, but this avoids the mconf errors and warnings.
+* UnitTests: Changed occurrences of lib_rawprintf() and lib_lowprintf()
+ to match recent changes to NuttX (will be in NuttX-6.25)
+* CGraphicsPort::_drawText: Renamed from CGraphicsPort::drawText in order
+ to eliminate some naming collisions when overloaded in some configurations
+ (i.e., when both bool and nx_pixel_t are uint8_t). From Petteri Aimonen.
+* CNxWidgets::drawContents: Change base drawContents from a do-nothing
+ function to a function that fills the widget with the background color.
+ This is useful when using CNxWidgets as a "panel" , i.e. a container
+ for other widgets. Subclasses will override drawContents and decide
+ themselves how to draw the background.
+* CNxWidgets::CTabPanel: A new widget contributed by Petteri Aimonen.
diff --git a/NxWidgets/libnxwidgets/Makefile b/NxWidgets/libnxwidgets/Makefile
index 0c7c922ea..84b377edd 100644
--- a/NxWidgets/libnxwidgets/Makefile
+++ b/NxWidgets/libnxwidgets/Makefile
@@ -63,7 +63,7 @@ CXXSRCS += cprogressbar.cxx cradiobutton.cxx cradiobuttongroup.cxx cscrollbarhor
CXXSRCS += cscrollbarpanel.cxx cscrollbarvertical.cxx cscrollinglistbox.cxx
CXXSRCS += cscrollingpanel.cxx cscrollingtextbox.cxx csliderhorizontal.cxx
CXXSRCS += csliderhorizontalgrip.cxx cslidervertical.cxx csliderverticalgrip.cxx
-CXXSRCS += cstickybutton.cxx cstickybuttonarray.cxx ctextbox.cxx
+CXXSRCS += cstickybutton.cxx cstickybuttonarray.cxx ctabpanel.cxx ctextbox.cxx
# Images
CXXSRCS += glyph_nxlogo.cxx
CXXSRCS += glyph_arrowdown.cxx glyph_checkboxon.cxx glyph_screendepthup.cxx
diff --git a/NxWidgets/libnxwidgets/include/cgraphicsport.hxx b/NxWidgets/libnxwidgets/include/cgraphicsport.hxx
index d3d9e6114..006a56d51 100644
--- a/NxWidgets/libnxwidgets/include/cgraphicsport.hxx
+++ b/NxWidgets/libnxwidgets/include/cgraphicsport.hxx
@@ -123,9 +123,10 @@ namespace NXWidgets
* @param background Color to use for background if transparent is false.
* @param transparent Whether to fill the background.
*/
- void drawText(struct nxgl_point_s *pos, CRect *bound, CNxFont *font,
- const CNxString &string, int startIndex, int length,
- nxgl_mxpixel_t background, bool transparent);
+
+ void _drawText(struct nxgl_point_s *pos, CRect *bound, CNxFont *font,
+ const CNxString &string, int startIndex, int length,
+ nxgl_mxpixel_t background, bool transparent);
public:
/**
diff --git a/NxWidgets/libnxwidgets/include/cnxwidget.hxx b/NxWidgets/libnxwidgets/include/cnxwidget.hxx
index dda8efc1d..32e3dfbc6 100644
--- a/NxWidgets/libnxwidgets/include/cnxwidget.hxx
+++ b/NxWidgets/libnxwidgets/include/cnxwidget.hxx
@@ -222,7 +222,7 @@ namespace NXWidgets
* @see redraw().
*/
- virtual inline void drawContents(CGraphicsPort* port) { }
+ virtual void drawContents(CGraphicsPort* port);
/**
* Draw the area of this widget that falls within the clipping region.
diff --git a/NxWidgets/libnxwidgets/include/ctabpanel.hxx b/NxWidgets/libnxwidgets/include/ctabpanel.hxx
new file mode 100644
index 000000000..aa6eb20f8
--- /dev/null
+++ b/NxWidgets/libnxwidgets/include/ctabpanel.hxx
@@ -0,0 +1,108 @@
+/****************************************************************************
+ * NxWidgets/libnxwidgets/include/ctabpanel.hxx
+ *
+ * Copyright (C) 2013 Gregory Nutt. All rights reserved.
+ * Author: Petteri Aimonen <jpa@kapsi.fi>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX, NxWidgets, nor the names of its contributors
+ * me be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __INCLUDE_CTABPANEL_HXX
+#define __INCLUDE_CTABPANEL_HXX
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <nuttx/nx/nxglib.h>
+
+#include "cnxwidget.hxx"
+#include "cwidgetstyle.hxx"
+#include "cnxstring.hxx"
+#include "tnxarray.hxx"
+#include "clatchbuttonarray.hxx"
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Implementation Classes
+ ****************************************************************************/
+
+#if defined(__cplusplus)
+
+namespace NXWidgets
+{
+ /**
+ * Forward references
+ */
+
+ class CWidgetControl;
+ class CRect;
+ class CStickyButtonArray;
+
+ /**
+ * Tab panel, with tabs at the top and a panel at the bottom.
+ */
+
+ class CTabPanel : public CNxWidget, public CWidgetEventHandler
+ {
+ protected:
+ TNxArray<CNxWidget*> m_tabpages;
+ CLatchButtonArray *m_buttonbar;
+
+ virtual void handleActionEvent(const CWidgetEventArgs &e);
+
+ virtual void drawContents(CGraphicsPort* port) {}
+ virtual void drawBorder(CGraphicsPort* port) {}
+
+ public:
+ CTabPanel(CWidgetControl *pWidgetControl, uint8_t numPages,
+ nxgl_coord_t x, nxgl_coord_t y,
+ nxgl_coord_t width, nxgl_coord_t height,
+ nxgl_coord_t buttonHeight,
+ FAR const CWidgetStyle *style = (FAR const CWidgetStyle *)NULL
+ );
+
+ inline CNxWidget &page(uint8_t index) { return *m_tabpages.at(index); }
+
+ void setPageName(uint8_t index, const CNxString &name);
+
+ void showPage(uint8_t index);
+ };
+}
+
+#endif
+#endif
diff --git a/NxWidgets/libnxwidgets/src/cgraphicsport.cxx b/NxWidgets/libnxwidgets/src/cgraphicsport.cxx
index 73f2352eb..f295483a9 100644
--- a/NxWidgets/libnxwidgets/src/cgraphicsport.cxx
+++ b/NxWidgets/libnxwidgets/src/cgraphicsport.cxx
@@ -604,7 +604,7 @@ void CGraphicsPort::drawBitmapGreyScale(nxgl_coord_t x, nxgl_coord_t y,
void CGraphicsPort::drawText(struct nxgl_point_s *pos, CRect *bound,
CNxFont *font, const CNxString &string)
{
- drawText(pos, bound, font, string, 0, string.getLength());
+ _drawText(pos, bound, font, string, 0, string.getLength(), 0, true);
}
/**
@@ -632,7 +632,7 @@ void CGraphicsPort::drawText(struct nxgl_point_s *pos, CRect *bound,
// Draw the string with this new color
- drawText(pos, bound, font, string, startIndex, length);
+ _drawText(pos, bound, font, string, startIndex, length, 0, true);
// Restore the font color
@@ -654,7 +654,7 @@ void CGraphicsPort::drawText(struct nxgl_point_s *pos, CRect *bound,
CNxFont *font, const CNxString &string,
int startIndex, int length)
{
- drawText(pos, bound, font, string, startIndex, length, 0, true);
+ _drawText(pos, bound, font, string, startIndex, length, 0, true);
}
/**
@@ -680,7 +680,7 @@ void CGraphicsPort::drawText(struct nxgl_point_s *pos, CRect *bound,
nxgl_mxpixel_t savedColor = font->getColor();
font->setColor(color);
- drawText(pos, bound, font, string, startIndex, length, background, false);
+ _drawText(pos, bound, font, string, startIndex, length, background, false);
font->setColor(savedColor);
}
@@ -697,11 +697,12 @@ void CGraphicsPort::drawText(struct nxgl_point_s *pos, CRect *bound,
* @param background Color to use for background if transparent is false.
* @param transparent Whether to fill the background.
*/
-void CGraphicsPort::drawText(struct nxgl_point_s *pos, CRect *bound,
- CNxFont *font, const CNxString &string,
- int startIndex, int length,
- nxgl_mxpixel_t background,
- bool transparent)
+
+void CGraphicsPort::_drawText(struct nxgl_point_s *pos, CRect *bound,
+ CNxFont *font, const CNxString &string,
+ int startIndex, int length,
+ nxgl_mxpixel_t background,
+ bool transparent)
{
// Verify index and length
diff --git a/NxWidgets/libnxwidgets/src/cnxwidget.cxx b/NxWidgets/libnxwidgets/src/cnxwidget.cxx
index ab4a09b4e..15ed501e6 100644
--- a/NxWidgets/libnxwidgets/src/cnxwidget.cxx
+++ b/NxWidgets/libnxwidgets/src/cnxwidget.cxx
@@ -1444,6 +1444,20 @@ void CNxWidget::useWidgetStyle(const CWidgetStyle *style)
}
/**
+ * Draw the area of this widget that falls within the clipping region.
+ * Called by the redraw() function to draw all visible regions.
+ *
+ * @param port The CGraphicsPort to draw to.
+ * @see redraw().
+ */
+
+void CNxWidget::drawContents(CGraphicsPort* port)
+{
+ port->drawFilledRect(getX(), getY(), getWidth(), getHeight(),
+ getBackgroundColor());
+}
+
+/**
* Draw all visible regions of this widget's children.
*/
diff --git a/NxWidgets/libnxwidgets/src/ctabpanel.cxx b/NxWidgets/libnxwidgets/src/ctabpanel.cxx
new file mode 100644
index 000000000..f1723fdba
--- /dev/null
+++ b/NxWidgets/libnxwidgets/src/ctabpanel.cxx
@@ -0,0 +1,133 @@
+/****************************************************************************
+ * NxWidgets/libnxwidgets/src/ctabpanel.hxx
+ *
+ * Copyright (C) 2013 Gregory Nutt. All rights reserved.
+ * Author: Petteri Aimonen <jpa@kapsi.fi>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ * 3. Neither the name NuttX, NxWidgets, nor the names of its contributors
+ * me be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <nuttx/nx/nxglib.h>
+
+#include "ctabpanel.hxx"
+#include "cgraphicsport.hxx"
+#include "cwidgetstyle.hxx"
+
+/****************************************************************************
+ * Pre-Processor Definitions
+ ****************************************************************************/
+
+/****************************************************************************
+ * CTabPanel Method Implementations
+ ****************************************************************************/
+
+using namespace NXWidgets;
+
+CTabPanel::CTabPanel(CWidgetControl *pWidgetControl, uint8_t numPages,
+ nxgl_coord_t x, nxgl_coord_t y,
+ nxgl_coord_t width, nxgl_coord_t height,
+ nxgl_coord_t buttonHeight,
+ FAR const CWidgetStyle *style
+ ):
+ CNxWidget(pWidgetControl, x, y, width, height, 0, style)
+{
+ m_buttonbar = new CLatchButtonArray(pWidgetControl, x, y,
+ numPages, 1,
+ width / numPages,
+ buttonHeight,
+ 0);
+ m_buttonbar->addWidgetEventHandler(this);
+ this->addWidget(m_buttonbar);
+
+ for (int i = 0; i < numPages; i++)
+ {
+ CNxWidget *tabpage = new CNxWidget(pWidgetControl, x, y + buttonHeight,
+ width, height - buttonHeight, 0);
+ tabpage->setBackgroundColor(getBackgroundColor());
+ tabpage->setBorderless(true);
+ m_tabpages.push_back(tabpage);
+ this->addWidget(tabpage);
+ }
+
+ // Activate the first page
+
+ showPage(0);
+}
+
+void CTabPanel::setPageName(uint8_t index, const CNxString &name)
+{
+ m_buttonbar->setText(index, 0, name);
+}
+
+void CTabPanel::showPage(uint8_t index)
+{
+ if (!m_buttonbar->isThisButtonStuckDown(index, 0))
+ {
+ m_buttonbar->stickDown(index, 0);
+ }
+
+ for (int i = 0; i < m_tabpages.size(); i++)
+ {
+ if (i == index)
+ {
+ m_tabpages.at(i)->enable();
+ m_tabpages.at(i)->show();
+ m_tabpages.at(i)->redraw();
+ }
+ else
+ {
+ m_tabpages.at(i)->hide();
+ m_tabpages.at(i)->disable();
+ }
+ }
+}
+
+void CTabPanel::handleActionEvent(const CWidgetEventArgs &e)
+{
+ if (e.getSource() == m_buttonbar)
+ {
+ int x = 0;
+ int y = 0;
+
+ m_buttonbar->isAnyButtonStuckDown(x, y);
+ showPage(x);
+ }
+}
+
+
+
diff --git a/misc/buildroot/ChangeLog b/misc/buildroot/ChangeLog
index 6b09b8b94..0053b1e92 100644
--- a/misc/buildroot/ChangeLog
+++ b/misc/buildroot/ChangeLog
@@ -128,3 +128,6 @@ buildroot-1.11 2011-11-05 <gnutt@nuttx.org>
logic. There are lots of issues that I still do not understand here.
buildroot-1.12 2011-xx-xx <gnutt@nuttx.org>
+
+ * Fix typo toolchain/gdb/Config.in that prevented GDB 7.4 from building
+ (from Ken Bannister).
diff --git a/misc/buildroot/toolchain/gdb/Config.in b/misc/buildroot/toolchain/gdb/Config.in
index ebe8578a9..1fc1ecd8b 100644
--- a/misc/buildroot/toolchain/gdb/Config.in
+++ b/misc/buildroot/toolchain/gdb/Config.in
@@ -41,7 +41,7 @@ choice
depends on !BR2_avr32
config BR2_GDB_VERSION_7_4
- config BR2_GDB_VERSION_7_4
+ bool "gdb 7.4"
depends on !BR2_bfin
endchoice
diff --git a/nuttx/README.txt b/nuttx/README.txt
index 571f8e04e..da1ed10c6 100644
--- a/nuttx/README.txt
+++ b/nuttx/README.txt
@@ -533,6 +533,12 @@ NuttX Buildroot Toolchain
an ARM Cortex-M3/4, you will need to set CONFIG_ARMV7M_OABI_TOOLCHAIN
in the .config file in order to pick the right tool prefix.
+ If the make system ever picks the wrong prefix for your toolchain, you
+ can always specify the prefix on the command to override the default
+ like:
+
+ make CROSSDEV=arm-nuttx-elf
+
SHELLS
^^^^^^
diff --git a/nuttx/libc/stdio/lib_fgets.c b/nuttx/libc/stdio/lib_fgets.c
index 35d024ebb..87eed285d 100644
--- a/nuttx/libc/stdio/lib_fgets.c
+++ b/nuttx/libc/stdio/lib_fgets.c
@@ -150,7 +150,7 @@ char *fgets(FAR char *buf, int buflen, FILE *stream)
if (ch == '\n')
#elif defined(CONFIG_EOL_IS_CR)
if (ch == '\r')
-#else /* elif CONFIG_EOL_IS_EITHER_CRLF */
+#else /* elif defined(CONFIG_EOL_IS_EITHER_CRLF) */
if (ch == '\n' || ch == '\r')
#endif
{