365 lines
21 KiB
Plaintext
365 lines
21 KiB
Plaintext
1.0 2012-03-22 Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* The initial release of the NxWidgets package
|
|
|
|
1.1 2012-05-19 Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* Updated and verified the NxWidgets DOxygen documentation. Contributed
|
|
by Jose Pablo Carballo.
|
|
* IBitmap, CRlePalettBitmap: Extended class to support differnt LUTs
|
|
for selected and non-selected images.
|
|
* CImage: If selected, uses different LUTs based, different borders.
|
|
CImage is now basically a button type.
|
|
* CImage: Add logic to hightlight an CImage (using the selected LUT).
|
|
* nxwm: The tiny NX window manager (NxWM) is being developed in this directory.
|
|
* UnitTests/nxwm: A unit test for the NX window manager.
|
|
* CWidgetControl: Add a semaphore to force clients to wait if the
|
|
size or position of the window is not yet known (multi-user mode only).
|
|
* During integration of NxWM, corrected numerous problems with NxWidgets
|
|
running on toolbars and framed windows. That capability was commented
|
|
out in the 1.0 release but is verfied functional in 1.1.
|
|
* CRlePalettBitmap: Fix an error in the text that determines if we
|
|
need to "rewind" to the beginning of the image.
|
|
* CRlePalettBitmap: Fixe a positioning problem. It was actually losing
|
|
the last row of every image!
|
|
* CNxWidget: Removed support for "shelving" widgets. I will be removing
|
|
some lesser used feature over time in order to reduce the NxWidgets
|
|
footprint.
|
|
* CNxWidget: Removed support for reference constants and close types.
|
|
The goal is to ge the base widget class as small as possible.
|
|
* CNxTkWindow: Fix uninitialized pointer value.
|
|
* CNxToolbar: Need to "fake" the fix position callback to avoid
|
|
deadlock waits for the callback that won't happen.
|
|
* CNxTkWindow: Fix toolbar background color
|
|
* CWidgetControl: Don't declare the the geometry is good until a non-NULL
|
|
window size is received.
|
|
* CGraphicsPort and CWidgetControl: If the underlying graphics device
|
|
is write-only, then we have to render fonts a little differently.
|
|
* CNxWidgets, CWidgetControl, and CRectCache: Big change! Remove all support
|
|
for widgets in a "vertical" hierarchy. Now widgets exist in a flat,
|
|
two-dimensional space and should not overlap. This should greatly
|
|
reduce the memory requirements and, since, NuttX already supports
|
|
a hierarchical windowing system, does not result in loss of functionality.
|
|
* CNxWidgets and CWidgetControl. Remove specific built-in support for
|
|
modal loops. There are too many different control mechanisms that might
|
|
be needed. Replace with hooks to control widget events from totally
|
|
external logic.
|
|
* CWindowEventHandler, CWindowEventHandlerList, CWidgetControl: New
|
|
callback classes to receive notifications about window events.
|
|
* NxWM::CFullScreenWindow and NxWM::CTaskbar: Add support in NxWM for full
|
|
screen window applications.
|
|
* All application windows now use CWindowEventHandler and CWindowEventHandlerList
|
|
to get notifications about mouse and keyboard events. These class will
|
|
then automatically handle polling (with no need for a modal loop).
|
|
* NxWM::CTouchscreen and NxWM::CCalibration: Add touchscreen support (still a long
|
|
way to go).
|
|
* NxWM::g_playBitmp: Change the play icon again. These tiny touch icons
|
|
must be very simple.
|
|
* NxWM::CCalibration: Beef up touch input handling logic. Now changes the
|
|
color of the touch circle to yellow when it is touched.
|
|
* NxWM::CTouchscreen: Do not read touchscreen data when there is no consumer.
|
|
* NxWM::CWindowControl: Add new class to wrap CWidgetControl and provide
|
|
some special mouse and keyboard input event handling.
|
|
* NxWM::CTaskbar: Correct the calculation of the physical size of the
|
|
display.
|
|
* NxWM::CCalibration: run method must clear m_stop when returning, or you can
|
|
never restart the Calibration window.
|
|
* NxWM::CTaskbar: On a failure to start an application, the application icon
|
|
CImage was being deleted twice.
|
|
* NXWidgets::CImage: Now handles mouse click callbacks. CImage is now really
|
|
a button. Probably should separate basic imaging functionality as CImage
|
|
and create a new CImageButton.
|
|
* NxWM::CStartWindow: Now ignores any close application button presses
|
|
(You can't close the start window).
|
|
* NxWM::CCalibration: The calibration application now has its own thread.
|
|
This was necessary for a proper integration with the taskbar.
|
|
* NxWM::CCalibration and NxWM:CTouchscreen: Changed the mechanism use
|
|
to report calbration data. It is now reported directly from CCalibration
|
|
to CTouchscreen. If external logic needs calibration, it can now get it
|
|
from CTouchscreen instead of CCalibration. This change was necessary
|
|
to make the termination conditions of CCalibration clean (it used to
|
|
have to persist until some external logic got the Calibration data).
|
|
* IApplication, IApplicationWindow, and all classes that inherit from
|
|
these: Now support method to report if the application is a full-screen
|
|
or a normal application. This is necessary to prevent CTaskbar from
|
|
displaying a task bar on top of a full-screen window.
|
|
* NxWM::CTaskbar: Ooops... minimizing the wrong application!
|
|
* NxWM::CNxConsole: Add a on_exit() exit handler that will close the
|
|
NxConsole window when the NSH thread exits. A correct build now depends
|
|
on having CONFIG_SCHED_ONEXIT defined.
|
|
* NXWidgets::CNxWidget: Add a new onPreRelease() method.
|
|
* NXWidgets::CButton, CButtonArry, CImage now post action event at pre-release time.
|
|
* NxWM: ICON touches are now drive by action events instead of click events.
|
|
* NXWidgets::CNxTkWindow: Reported size of a framed window must exclude the
|
|
height of the tool bar (if present)
|
|
* TODO.txt: Add a file to keep track of issues.
|
|
* NxWM::CStartWindow and IApplicationFactory: This is a substantial
|
|
redesign. IApplication wraps an application. However, if we want to
|
|
be able to start multiple copies of an application, then we need to
|
|
be able to create multiple IApplication instances from the start window.
|
|
Enter IApplicationFactory. Icons in the start window now correspond
|
|
to application factories; icons in the task bar no correspond to
|
|
application instances.
|
|
* NxWM::CStartWindow and CWindowControl: The above change necessitated
|
|
another architectural change: When create applications, it is sometimes
|
|
necessary to wait for windows events. The above change moved the
|
|
application creation to the window event thread, hence, causing deadlocks
|
|
wheneven the logic tried to wait for a window event. The solution was
|
|
to create a new thread, called the start window thread, that runs
|
|
asynchronously and can wait for windoew events.
|
|
* doc/NxWM-ThreadingModel.ppt: Documented the now rather complex NxWM
|
|
threading model.
|
|
|
|
1.2 2012-06-15 Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* NXWidgets::CCallback: callback arguement is now type CCallback and not
|
|
CWidgetControl; Added a method to redirect keyboard contacts to either
|
|
the widgets in the window (via CWidgetControl) or to an NxConsole (via
|
|
nxcon_kbdin()).
|
|
* NXWidgets::INxWindow, CBgWindow, CNxTkWindow, CNxToolbar, CNxWindow:
|
|
Now pass the CCallback intances as the callback argument instead of
|
|
the CWidgetControl instance. New method redirectNxConsole() will
|
|
support redirection of any window keyboard input to the NxConsole
|
|
(via CCallback).
|
|
* NxWM:CNxConsole: Configures the NxConsole window to redirection keyboard
|
|
input to the NxConsole; redirects standard input to the NxConsole
|
|
device driver.
|
|
* NxWM:CKeyboard: Add a new class that implements a keyboard listener
|
|
thread. This thread reads from /dev/console and injects the keyboard
|
|
input into NX. NX will determine which window is at the top of the
|
|
heirarchy and re-direct the keyboard input to only that top window.
|
|
This solves an important problem with, for example, running multiple
|
|
copies of the NxConsole: On the copy of the NxConsole at the top of
|
|
the heirarchy should get the keyboard input.
|
|
* UnitTests/nxwm/main.cxx: Now starts the keyboard thread if
|
|
CONFIG_NXWM_KEYBOARD is defined.
|
|
* NxWM::CTaskbar: After drawing the task bar, need to raise the
|
|
application window otherwise the taskbar will be on the top and
|
|
keyboard input will not be received by the top application.
|
|
* NxWM::CTaskbar: Bugfix... previous window should not be minimized
|
|
when a new window is started. It should stay in a maximized state
|
|
so that it will re-appear with the window above it is closed or
|
|
minimized.
|
|
* NxWM::CHexCalculator: Add a hexadecimal/decimal calculator
|
|
example.
|
|
* NXWidgets::CNxTkWindow: Back out height adjustment in the getSize()
|
|
method. The code was correct as it was before.
|
|
* NXWidgets::CButtonArray and NXWidgets::CGraphicsPort: There is
|
|
a kludge in there to handle the case where we cannot read the
|
|
background data because the LCD does not support read operations.
|
|
In that case, we just use the default background color. However,
|
|
that doesn't work either for the case where the background color
|
|
changes when the widget is selected. Then the background color
|
|
in the font is wrong. Fixed in CButtonArrary, but the problem
|
|
probably exists in other places as well.
|
|
* NxWM: Increase default spacing of icons on the Start Window.
|
|
* NxWM::CHexCalculator: Fix some non-standard calculator behavior
|
|
after = is pressed. Use upper case hex. Increase font size.
|
|
* nxwm/Makefile: Fix error that creapt in during some other
|
|
recent check-ins.
|
|
|
|
1.3 2012-09-29 Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* UnitTests/*/main.cxx: Change entry point name to be consistent
|
|
with with entry point naming conventions introduced in NuttX
|
|
6.22.
|
|
* Kconfig: Added a mconfig configuration file. Eventually, NxWidgets
|
|
needs to get hooked into the NuttX mconf configuration. Still not
|
|
exactly sure how to do that.
|
|
* libnxwidgets/Makefile and NxWidgets/nxwm/Makefile: Need updates
|
|
for consistency with recent changes to NuttX build system (>= 6.22)
|
|
* Kconfig: Add option to turn on the memory monitor feature of the
|
|
NxWidgets/NxWM unit tests.
|
|
|
|
1.4 2012-12-20 Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* libnxwidgets/Makefile, NxWidgets/nxwm/Makefile, and
|
|
NxWidgets/UnitTests/nxwm/Makefile: Makefile improvements from
|
|
submitted by Petteri Aimonen. Other Makefiles in the UnitTests
|
|
directory probably also need these changes.
|
|
* libnxwidgets/src/ccallback.cxx: Fix misplaced #endif. Provided
|
|
by Petteri Aimonen.
|
|
* libnxwidgets/src/cnxserver.cxx: Reduce delay to allow NX server
|
|
to start. One second was un-necessarily long. Reduced to 50 MS.
|
|
Reduction suggested by Petteri Aimonen.
|
|
* tools/bitmap_converter.py: This script converts from any image type
|
|
supported by Python imaging library to the RLE-encoded format used by
|
|
NxWidgets.
|
|
* NxWidgets/nxwm/src/capplicationwindow.cxx: If the "desktop" is empty,
|
|
users have no need to minimize any windows. If the buttons are small,
|
|
it's easy to hit minimize button accidentally when trying to close an
|
|
application. Contributed by Petteri Aimonen.
|
|
* NxWidgets/nxwm/src/ctaskbar.cxx: Add an option to eliminate the
|
|
background image. Contributed by Petteri Aimonen.
|
|
* NxWidgets/nxwm/src/chexcalculator.cxx and NxWidgets/nxwm/src/cstartwindow.cxx:
|
|
The config settings CONFIG_NXWM_STARTWINDOW_ICON and CONFIG_NXWM_HEXCALCULATOR_ICON
|
|
allow changing the icons used for these applications. However, to declare symbols
|
|
for these icons user would need to modify NxWidgets header files.
|
|
This commit adds a simple forward declaration to the relevant files, based on the
|
|
configured icon. If the icon does not exist, linker will give an error about it.
|
|
Contributed by Petteri Aimonen.
|
|
* NxWidgets::CTaskBar: Highlight the current window in the task bar.
|
|
Contributed by Petteri Aimonen.
|
|
* NxWidgets/libnxwidgets/src/glyph_cycle.cxx: Width of glyph_cycle was wrong;
|
|
Destructor needs to by public. From Petteri Aimonen.
|
|
* NxWidgets::CNumericEdit. This is basically a label with plus and minus buttons.
|
|
Contributed by Petteri, Aimonen.
|
|
* NxWM::CStartWindow: Fix mq_receive error handling with signal is recieved.
|
|
From Petteri Aimonen.
|
|
* NxWidgets::CNxTimer: Replace the original (apparently non-functional) signal-
|
|
based solution with a work queue-based solution. This raises some isses about
|
|
using the internal work queues from user space. I have decided to implemented
|
|
user-space work queues (someday) in order to accomplish that functionaliy.
|
|
Submitted by Petteri Aimonen.
|
|
* NxWidgets:CText and NxWidgets:CNumericEdite: Fix some memory freeing bugs
|
|
(from Petteri Aimonen).
|
|
* NxWidgets::CScrollingPanel: Usability improvements. It is borderless for now,
|
|
because there was no easy way to redraw only the required part of the border.
|
|
Contributed by Petteri Aimonen.
|
|
* NxWidgets::CNxWidgets and NxWM::CStartWindow: Small changes to make sub-
|
|
classing easier (from Petteri Aimonen).
|
|
|
|
1.5 2013-02-01 Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* NxWidgets::CGraphicsPort::move(): Fix typo bug in bounding rectangle
|
|
calculation (from Petteri Aimonen).
|
|
* NxWM::CScrollingPanel::scrollChildren(): Avoid unnecessary redraws in
|
|
CScrollingPanel (contributed by Petteri Aimonen).
|
|
* NxWM::CCycleButton: Remove the separator from CCycleButton. It draws in
|
|
wrong place, and doesnt look very good in the correct place either.
|
|
(from Petteri Aimonen).
|
|
* NxWidgets::CGraphicsPort: Many times we only want a constant background.
|
|
In that case the old code fills the background, reads it back, renders
|
|
the text and then writes it back. When used with LCD's (instead of
|
|
framebuffers) this causes unnecessary delay and screen flicker.
|
|
This commit adds a variant of drawText that takes background color,
|
|
so that the background and text can both be rendered at one go.
|
|
The old functions still function as before (Petteri Aimonen).
|
|
* NxWidgets::CLabel: The label was drawn as a single rectangular region,
|
|
then a text was added to the on top of this. The result is that the
|
|
text would flicker when the CLabel was updated. With this change, the
|
|
two step update is replaced with a five step update: The background
|
|
is updated as four rectangulear regions (leaving the previous text in
|
|
place), then the new text is updated. This eliminates the flicker
|
|
(Petteri Aimonen).
|
|
* Kconfig: Many NxWidgets/NxWM settings do not have meaningful, generic
|
|
default values. Colors, for example, depend on pixel depth. Some
|
|
geometry settings depending on other geometry settings. Font IDs are
|
|
not know-able by the configuration system. etc. In these cases, it
|
|
is best if the settings are just not undefined so that the system can
|
|
calculate a reasonable default. however, if no default is provided
|
|
in the .config file, mconf will complain and generate errors. So work
|
|
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.
|
|
This widget provides a tab panel, which has a button bar at the top
|
|
and panels below it. Pressing a button will select the corresponding
|
|
panel.
|
|
|
|
1.6 2013-03-15 Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* Type of argv[] has changed from const char ** to char * const *
|
|
* NXWidgets::CNxWidget: Add an inline function to get the current style.
|
|
* NxWM::CTaskBar: Make a some methods of CTaskbar virtual to allow
|
|
customizations. From Petteri Aimonen.
|
|
* NXWidgets::CCycleButton: Make CCycleButton change state in onPreRelease().
|
|
This way the new value is already available when a listener gets the
|
|
action event. From Petteri Aimonen.
|
|
* NxWidgets/tools/bitmap_converter.py: Fix bitmap_converter.py so that
|
|
it works with indexed input images.
|
|
* NxWidgets::CLabel: Fix backward conditional compilation in the
|
|
"flicker free" logic.
|
|
* NxWidgets::CNxTimer: Previously repeated timers were re-enabled after
|
|
the timer action event. Consequently, if the action event handler tried
|
|
to stop the timer, the request would be ignored. Changes the order
|
|
so that the timer is re-enabled before the callback. There is still
|
|
no risk of re-entrancy, because everything executes on the USRWORK work
|
|
queue. From Petteri Aimonen.
|
|
* NxWidgets::CMultiLineTestBox: Fix text placement error. From Petteri
|
|
Aimonen.
|
|
* NxWidgets::CWidgetControl: Added another semaphore, boundssem, which
|
|
is set as soon as the screen bounds are known. This corrects two
|
|
problems:
|
|
1) Due to the way nxgl_rectsize computes the size, it will never
|
|
be 0,0 like CWidgetControl expects. Therefore the size is considered
|
|
valid even though it has not been set yet.
|
|
2) After the check is fixed to test for > 1, NxWM window creation will
|
|
hang. This is due to the fact that it uses the screen bounds for
|
|
determining window size. This was being blocked on geosem, which
|
|
is only posted after the size has been set.
|
|
From Petteri Aimonen.
|
|
* NxWidgets::CImage: Two enhancements:
|
|
1) Allow changing the bitmap even after the control has been created.
|
|
2) Allow giving 'null' to have the control draw no image at all.
|
|
From Petteri Aimonen.
|
|
* NxWM::CTaskBar: Allow windows with null icon. This makes sense for e.g.
|
|
full screen windows. From Petteri Aimonen.
|
|
* NxWM::CApplicationWindow: Add config options to override NxWM
|
|
stop/minimize icons. From Petteri Aimonen.
|
|
* NwWM::CStartWindow, NxWM::CWindowMessenger: Get rid of the start window
|
|
thread. Instead, handle all events through the USRWORK work queue.
|
|
For me, this was necessary because I would open some files in button
|
|
handlers and close them in NxTimer handlers. If these belonged to
|
|
different tasks, the close operation would fail. Further benefits:
|
|
+ Gets rid of one task and message queue.
|
|
+ Reduces the amount of code required
|
|
+ Decouples CStartWindow from everything else - now it is just a window
|
|
with application icons, not an integral part of the event logic.
|
|
+ All events come from the same thread, which reduces the possibility of
|
|
multithreading errors in user code.
|
|
+ The user code can also send events to USRWORK, so that everything gets
|
|
serialized nicely without having to use so many mutexes.
|
|
Drawbacks:
|
|
- Currently the work state structure is malloc()ed, causing one allocation
|
|
and free per each input event. Could add a memory pool for these later, but
|
|
the speed difference doesn't seem noticeable.
|
|
- The work queue will add ~50 ms latency to input events. This is however
|
|
configurable, and the delay is anyway short enough that it is unnoticeable.
|
|
From Petteri Aimonen.
|
|
|
|
1.7 2013-04-28 Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* NxWidgets bitmap_converter.py: Fix bug when image width > 255. From
|
|
Petteri Aimonen (2013-4-22).
|
|
* NxWM::CScrollbarPanel: Fix spelling error in class name: CScollbarPanel
|
|
should be CScrollbarPanel. From Petteri Aimonen (2013-4-22).
|
|
* NxWidgets:: CGlyphButton: Generate action event, like CButton does.
|
|
From Petteri Aimonen (2013-4-22).
|
|
* NxWidgets:: CGlyphButton: Prevent drawing outside of the bitmap size.
|
|
From Petteri Aimonen (2013-4-22).
|
|
* NxWM::CTaskBar: Add option CONFIG_NXWM_TASKBAR_NO_BORDER to suppress
|
|
drawing of the border on the taskbar. From Petteri Aimonen (2013-4-22).
|
|
* NxWidgets::CNxTimer: Add function to check if CNxTimer is running.
|
|
From Petteri Aimonen (2013-4-22).
|
|
* NxWidgets::CNxWidgets: Allow overriding of the checkCollision() method.
|
|
From Petteri Aimonen (2013-4-22).
|
|
|
|
1.8 2013-xx-xx Gregory Nutt <gnutt@nuttx.org>
|
|
|
|
* NxWM::CMediaPlayer: shell application for an MP3 Media Player with
|
|
Kconfig settings to enable it. I plan to write this app to help
|
|
develop and test the MP3 codec chip driver. It really doesn't do
|
|
anything yet except display a text box saying "Coming soon", and I
|
|
need to minimize the icon size a bit. From Ken Pettit (2013-5-11).
|
|
* NxWidgets/nxwm/src/glyph_mediaplayer.cxx: Smaller version of the
|
|
media player glyph. From Ken Pettit (2013-5-12).
|
|
* NxWidgets/nxwm/include/ccalibration.hxx and src/ccalibration.cxx:
|
|
Fix a race condition that would cause the calibration screen
|
|
to fail to come up when its icon was touched (From Ken Pettit,
|
|
2013-5-12).
|
|
* Kconfig: Default priorities for NxWidget and NxWM threads
|
|
should be 100, not 50, to be consistent with other default priorities.
|
|
* NxWidgets::CGlyphSliderHorizontal and NxWidgets::CGlyphSliderHorizontalGrip:
|
|
New widgets added by Ken Pettit (2013-5-15).
|