
wxUniversal and related projects
wxUniversal |
wxMGL |
wxX11 |
wxMicroWindows
The wxUniversal port is a SciTech Software-sponsored project
to create a set of widgets that are implemented in wxWidgets
itself. In all previous ports, with some exceptions,
each widget class is a wrapper around an existing implementation
on that platform. A wxUniversal-based port therefore needs only need
a relatively straightforward effort on each new platform, to
provide basic classes such as wxWindow, wxFrame and wxDC. The
main reason for wxUniversal is for a wxMGL port (targetting
SciTech's MGL API which works on a variety of platforms
including DOS). It is also being used for a MicroWindows port (see below).
wxUniversal can be compiled on platforms that have existing ports,
such as Windows, but the wxUniversal widgets will replace the native
ones. At present it's not possible to use the wxUniversal widgets
from a regular wxWidgets port: but in future we may well make
that possible, e.g. by changing the way the universal widgets
are compiled in non-__WXUNIVERSAL__ mode.
wxUniversal supports a theme system to change the look
and feel, and there are currently two themes: WIN32 and GTK+.
The default theme is set by the framework using the
WXTHEME environment variable, and if that doesn't exist,
by using the closest match to the environment it's currently
running on, or failing that, the first in the supported-theme list.
wxUniversal is primarily developed by Vadim Zeitlin.
In July 2001, wxUniversal was merged from its
separate development branch into the CVS trunk. The minimal and widgets samples compile and
run fine under Windows. You can compile wxUniversal with VC++ under Windows
by using src/wxUniv.dsp, and then use the UnivDebug and
UnivRelease targets in the minimal and widgets sample project
files.
You can download a WIN32 binary of the widget
sample here. All of the widgets
in this sample are 'universal', generic ones - believe it or not!
See also the Framework Diagram by Marco Cavallini, showing
the relationships between the various ports.
SciTech Software have also sponsored wxMGL, a port of wxWidgets
to their MGL portability layer, making use of wxUniversal to
implement the widgets. MGL supports Windows, Linux, DOS, OS/2, QNX, SMX, RT-Target
and other embedded operating systems.
wxMGL is being developed by Vaclav Slavik.
See SciTech's wxMGL page,
with screenshots and demos of the DOS port.
Julian Smart and Robert Roebling have started the wxX11 port, which uses Xlib
and wxUniversal. This will appeal to people
who for one reason or another do not wish to use Motif or GTK+ on X11, and it
is likely to be a better supported and more functional port than wxMotif.
It is also aimed at embedded projects that cannot afford the overhead
of a conventional X-based widget set. Many embedded projects are now
using variants of X11, running on embedded Linux or a smaller operating
system such as eCos.
It is intended to eventually have wxX11 running on NanoX (Microwindows).
In fact this effort will take over from the wxMicroWindows port
(below) since the NanoX API permits multiple processes which MicroWindows/WIN32
currently does not.
As of February 13th 2002, it is early days for this port (10 days in!)
but swift progress is being made. We anticipate that by the end of March, a useful wxX11 port
will exist. Common X11-based code will be shared between wxMotif and wxX11
where practical.
If you want to help, you'll find the X11-specific sources in CVS here:
include/wx/x11
src/x11
and minimal documentation in docs/x11. You can use configure with
--with-x11.
MicroWindows is a small, embedded windowing system with 2 APIs: Nano-X
(X-like functionality) and MicroWindows (cut-down WIN32
functionality, currently supporting only one application running at a
time).
You can compile and run MicroWindows under Linux using an
emulated frame buffer, so you don't need any special hardware to
try it out. It's of particular interest to me (Julian Smart) because there's a
port of MicroWindows to Red Hat's
eCos
operating system: an OS
intended for 'deeply embedded' systems with limited memory.
eCos runs on lots of processors and has
been ported (along with MicroWindows) to the iPAQ PDA. So
wxMicroWindows is (IMO) a good route to showing off wxWidgets
running on an embedded system. A connection between wxWidgets
and eCos already exists via the host-side tool that I've been
porting from MFC to wxWidgets, the eCos Configuration Tool,
which allows you to choose the features you want in eCos.
wxMicroWindows is at a very preliminary stage, but the minimal
sample compiles and (almost) runs. You can try out and help debug wxMicroWindows
by downloading the latest sources from CVS, and following the
instructions in docs/microwin/readme.txt.
There's a screenshot of the wxWidgets minimal sample beginning to work
under MicroWindows on Linux,
here.