NXWidgets  1.19
mainpage.h
Go to the documentation of this file.
1 /*! \mainpage NXWidgets Documentation
2  *
3  * In order to better support NuttX based platforms, a special graphical user
4  * interface has been created called NXWidgets. NXWidgets is written in C++
5  * and integrates seamlessly with the NuttX NX graphics subystem in order to
6  * provide graphic objects, or "widgets", in the <a title="NX Graphics
7  * Subsystem" href="https://bitbucket.org/nuttx/documentation/src/master/NXGraphicsSubsystem.html">
8  * NX Graphics Subsystem</a>.
9  *
10  * \section feature Features
11  *
12  * \subsection conservative_cxx Conservative C++
13  *
14  * Written entirely in C++ but using only selected "embedded
15  * friendly" C++ constructs that are fully supported under NuttX. No
16  * additional C++ support libraries are required.
17  *
18  * \subsection nx_integration NX Integration
19  *
20  * Integrates seamlessly with the NX graphics subsytem. Think of the X
21  * server under Linux... the NX graphics subsystem is like a tiny X server
22  * that provides windowing under NuttX. By adding NXWidgets, you can
23  * support graphic objects like buttons and text boxes in the NX windows
24  * and toolbars.
25  *
26  * \subsection small_footprint Small Footprint
27  *
28  * Tailored for use MCUs in embedded applications. It is ideally suited for
29  * mid- and upper-range of most MCU families. A complete NXWidgets is
30  * possible in as little as 40Kb of FLASH and maybe 4Kb of SRAM.
31  *
32  * \subsection output_devices Output Devices
33  *
34  * NXWidgets will work on the high-end fram buffer devices as well as on
35  * LCDs connected via serial or parallel port to a small MCU.
36  *
37  * \subsection input_devices Input Devices
38  *
39  * NXWidgets will accept position and selection inputs from a mouse or a
40  * touchscreen. It will also support character input from a keyboard such
41  * as a USB keyboard. NXWidgets supports a very special widget called
42  * CKeypad that will provide keyboard input via on-screen keypad that can
43  * be operated via mouse or touchscreen inputs.
44  *
45  * \subsection many_graphic_objects Many Graphic Objects\
46  *
47  * Some of the graphic objects supported by NXWidgets include labels,
48  * buttons, text boxes, button arrays, check boxes, cycle buttons, images,
49  * sliders, scrollable list boxes, progress bars, and more.
50  *
51  * \subsection NXWM\
52  *
53  * NxWM isthe tiny window manager based on NX and NxWidgets. NxWM is a true
54  * multiple window manager but only one window is displayed at a time. This
55  * simplification helps performance on LCD based products (in the same way
56  * that a tiled window manager helps) and also makes the best use of small
57  * displays. It is awkward from a human factors point-of-view trying to
58  * manage multiple windows on a small display.
59  *
60  * The window manager consists of a task bar with icons representing the
61  * running tasks. If you touch the task's icon, it comes to the top. Each
62  * window has a toolbar with (1) a title, (2) a minimize button, and (3) a
63  * stop application button using the standard icons for these things. User
64  * input via a touchscreen or mouse and keyboard is supported.
65  *
66  * There is always a start window that is available in the task bar. When
67  * you touch the start window icon, it brings up the start window containing
68  * icons representing all of the available applications. If you touch an
69  * icon in the start window, it will be started and added to the task bar.
70  *
71  * There is a base class that defines an add-on application and an interface
72  * that supports incorporation of new applications. The only application
73  * that is provided is NxTerm. This is an NSH session running in a window.
74  * You should be able to select the NX icon in the start menu and create as
75  * many NSH sessions in windows as you want. (keybard input still comes
76  * through serial).
77  *
78  * Note 1: The current release of NwWM requires NuttX-7.9 or above.
79  *
80  * Note 2: Many of the fundamental classes in NxWidgets derive from the Antony
81  * Dzeryn's "Woopsi" project: http://woopsi.org/ which also has a BSD style
82  * license. See the COPYING file for details.
83  */