|
|
|
|
TnFOX
is a modern secure, robust, multithreaded, exception aware, internationalisable,
portable GUI toolkit library designed for mission-critical work in C++ and
Python forked from the FOX library.
It replicates the Qt API in many places and has been designed primarily
for Tn, the port of Tornado to FOX.

Download a self-contained
Win32 version of the above program (897Kb)
A multithreading
screenshot of TnFOX on X11 is here (125Kb)
Screenshot of
TnFOX adapting to a mobile phone and the user's handedness
Features of FOX:
 |
Portable to X11/POSIX (Linux, BSD,
Apple MacOS X) and Microsoft Windows |
 |
Wide range of easily extendable (via
subclassing) widgets |
 |
License based on the Library GNU Public
License (LGPL) so can be used by closed-source & commercial applications |
 |
Fast and Lightweight, noticeably faster
than other C++ GUI toolkits |
 |
Dynamic run-time binding of widgets
to each other and to data via messaging |
 |
Also provides OpenGL, drag & drop,
anti-aliased fonts, MIME, graphics & compression support |
 |
Unicode support |
|
|
Additional features of TnFOX (see the library documentation below for
more detail):
 |
Outstanding error handling & robustness
tools, including full C++ exception support, exception safety within
the extensions and full checking of all host OS errors. Suitable
for mission-critical applications |
 |
Integrated
Python support with full set
of exception-safe, thread-safe Python bindings. It is extremely
easy to embed python scriptlets into your C++ code (based on
Boost.Python) or base your python
program on TnFOX |
 |
Many of the extensions replicate the
Qt API except that they
are all exception and thread safe |
 |
Extensive heavy-duty multithreading
tools with assembler-written signal-safe fast mutex (futex) |
 |
Per-thread event loops, allowing multiple
threads to run GUI trees concurrently - a markedly superior way
to use threads in your GUI |
 |
Superior Qt-style automatic human language
translation (much better than GNU gettext). TnFOX comes with Spanish
translations included |
 |
Extremely secure with
SSL, strong encryption, a
secure heap, data shredding, Access Control List & POSIX discretionary
security, segfault/GPF handling and a high-quality entropy gatherer |
 |
Also provides shared memory regions,
memory mapped files, constrained custom memory pools (based on
nedmalloc),
generic & compile-time meta-programming (policies, traits, typelists,
functors, smart pointers etc) |
 |
Lightweight and highly efficient Inter
Process Communication (IPC) framework over pipes, sockets or encrypted
sockets with optional zlib compression. Can transport arbitrary
C++ object instances from one process to another. Benchmarks substantially
faster than CORBA |
 |
Improved UI facilities with small screen
support (for PDA's, mobile phones etc), run-time layout scaling,
user handedness layout and screen constraints for debugging |
 |
Metaprogramming driven generic SQL
database support with automatic to/from BLOB conversion between
C++ and SQL types with an integrated copy of the
SQLite3 database.
Can work with remote SQL databases over an IPC channel |
 |
Automatic transparent UTF and CR/LF
text format conversion with auto-detection of UTF-8, UTF-16LE, UTF-16BE,
UTF-32LE and UTF-32BE |
And the documentation for the TnFOX parts is excellent
...
Searchable online TnFOX documentation:
v0.87 (last release)
(You can bookmark these locations if you wish)
Upcoming features in v0.90:
 |
Fully working Python bindings [awaiting
improvements to pyplusplus] |
 |
Streaming Maths Computation module
which can utilise graphics cards |
Minimum System Requirements:
- Microsoft Windows 2000, XP, Vista or later.
OR
A POSIX compliant Unix with a recent GNU toolchain and a solid port
of X11. Recent versions of FreeBSD, GNU/Linux and Apple MacOS X
should suffice.
- Any processor architecture (little or big endian) including
x64 is fine, though the code is much faster with x86 and x64.
- A decent C++ compiler with partial template specialisation support.
GCC 4.x or better along with MSVC7.1
(Visual Studio .NET
2003) or better is preferred though the
Intel C++ compiler for Linux v8 and the
Intel C++ compiler for Windows v8 are known to work. Hope is
that the Digital Mars C++
compiler for Windows will be capable soon. And indeed GCC v3.2
and v3.3 should continue to be fine. MSVC6 support was dropped in
v0.4.
- The QTL is implemented as thunks to the STL, so you need a good
STL. With MSVC's Dinkumware or libstdc++ 3.2+ it's fine. If your
STL is poor, look into www.stlport.org
which is the same as the SGI-based STL supplied with recent versions
of GCC.
- Python v2.3 or later. TnFOX's
helper scripts use quite a few of the new features and the bindings
library is bound to that DLL.
- The scons make tool, v0.95
or later
- If you want to regenerate the python bindings, you'll need a
copy of the Boost library v1.33
or later, GCCXML and the
elementtree library for python
- If you want to compile in strong encryption support, you will
need a copy of the OpenSSL
library.
Regression test suite for v0.87:

The regression failures on coLinux are due to bugs in coLinux (TestIPC)
or lack of memory (TestMemoryPool).
The regression failures on Apple Mac OS X are due to bugs in Apple's
POSIX and X11 support libraries (TestDLL and TestGraphing) or kevents
not being able to monitor FAT partitions (TestFSMonitor).
News:
12th July 2007:
TnFOX v0.87 is finally out after some sixteen months since the v0.86
release (sorry!). New features include:
- FOX v1.4.35 and FOX v1.6.28 merged.
- 2D and 3D graphing support of arbitrary datasets rendered using
OpenGL along with official
Visualisation Toolkit (VTK) support.
- Modular building support. You can now build separate no-GUI, SQL
database and Graphing sublibraries. You can also toggle whether
large proportions of FOX and TnFOX are compiled into your library or
not, making for a very slimline standalone executables if you so
choose.
- Added child process device i/o class QChildProcess. You can now
redirect i/o and manage child processes on all supported platforms.
- An automated test suite now can perform full regression testing
on all supported platforms. It stores its results inside a SQLite3
database and can output the database in HTML format (as you can see
on the TnFOX website).
- TnFOX is now completely portable to any
architecture (not just Intel based ones).
- Fixed stack backtracing on exception throw for Windows (which
had become broken thanks to Microsoft) and added support for stack
backtracing on Linux via glibc.
- Even more performance increases. Tn now runs on Linux slightly
faster than Windows!
- Lots of bugs (some major) fixed.
- New platforms now officially supported: Apple Mac OS X (using
Apple's X11 server), CoLinux and Microsoft Windows Vista. TnFOX is
fully & officially supported on all 32 bit and 64 bit platforms.
Note that the v1.4 based branch will be dropped from this release
onwards - only v1.6 or later shall be used in subsequent TnFOX releases.
Anyone still using the v1.4 (non-Unicode) branch will need to upgrade.
FreeBSD precompiled binaries have not been provided this time round
due to a (current) lack of a FreeBSD installation. There is no reason
why it shouldn't compile and run.
The Python bindings have been much improved since the last release,
but still aren't quite there (hence not supplying binaries). I am afraid
that they are not a high priority for me currently, but I hope to get
back to them relatively soon. I have a new computer whose extra power
should greatly ease compiling & debugging them.
Older TnFOX news can be found here
Mailing lists:
Support:
Support is entirely provided by mailing list. Here's the procedure:
- Is your question already answered?
Try
searching the FOX toolkit mailing list and the TnFOX mailing list
here. Sourceforge is known to be flaky with the uptime for mailing
list searches so there are archives at
http://www.mail-archive.com/tnfox-discussion%40lists.sourceforge.net/
and
http://news.gmane.org/gmane.comp.lib.fox-toolkit.tnfox. Note that
these archives only contain messages posted after 19th July 2004.
- Post a message to tnfox-discussion <at symbol> lists.sourceforge.net
In your message specify what version of TnFOX you are using, what
operating system (+version) and what compiler (+version). If it's a
question exclusively regarding the FOX part of TnFOX you will likely
be told to reask the question on foxgui-users <at symbol> lists.sourceforge.net.
There is also a Usenet (NNTP) interface to tnfox-discussion at
news://news.gmane.org/gmane.comp.lib.fox-toolkit.tnfox
Downloads:
TnFOX is available in parts so that you can pick and choose what you
want:
The current version of TnFOX is v0.87 and it was
released on 12th July 2007
| NOTE: TnFOX should be considered PRODUCTION READY code
for Win32, Win64 and Linux. It should be considered BETA code for FreeBSD
and Apple MacOS X.
On all platforms the python bindings are INCOMPLETE and still require
further work. |
The next version of TnFOX will be v0.90 and is
due whenever FOX v1.8 is updated
Snapshots:
The most recent snapshots of TnFOX v0.90 are:
Quick links to SVN versions: (based
on FOX v1.6) (based
on FOX v1.4)
Releases:
- The TnFOX license
- Most recent changelog
(52.15Kb) (The
CVS version is here)
- Language translation files (English and Spanish are included):
- The documentation:
- Header files:
- Unified source tree:
- Precompiled Binaries:
All binaries packages come with:
- The Core TnFOX library
- The Graphing Extension library
- The SQL database Extension library
- The no-GUI TnFOX library (useful for command line or daemon
apps)
- AllTests executable, the automated test suite control program
- [on v1.6 based versions only] a TnFOX enhanced version of Adie, the
FOX text editor
Extras:
Optional extra graphic formats, compression & encryption support:- most
Linux and BSD installations already come with these, so they are for Windows
users mostly. Note firstly that I did not write these libraries, they are
merely pointers to other places on the web for your convenience. Therefore
I can not offer any assistance with their usage:
- The standard JPEG
library
-
The standard PNG library
-
The
TIFF library &
the TIFF LZW compression patch (18Kb)
- The Zlib library
- The BZip2 library
- Dbghelp.lib & Psapi.lib
I unfortunately can't supply these because of restrictive Microsoft
licenses. You'll have to go get them by downloading
the Platform SDK.
- OpenSSL library
- Boost library
- VTK library
- For Apple MacOS X users only:
A full set of the missing
JPEG, TIFF and PNG library binaries in /usr/local for Intel
MacOS X only (3.67Mb)
There is also a sourceforce
project and see below for the berlios project.
Links:
The "other" FOX extension
library
FOX Community
CVS/SVN access:
As of November 2004, for those who cannot wait until the latest version
of TnFOX is released, it is possible to gain access to the main development
repository by following the instructions at
http://developer.berlios.de/svn/?group_id=2262 which requires the use
of subversion.
You can also browse the repository
here.
You can see what has changed at
http://svn.berlios.de/viewcvs/tnfox/trunk/ChangeLog.txt?view=markup.
Note that any version of TnFOX fetched from this source may not work
at all. You can regress back the changes if necessary. Snapshots are
tagged in SVN, so rolling back to that point may be the most useful for
you.
|