NXWidgets: mainpage.h Source File

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 */