A multithreading
screenshot of TnFOX on X11 is here (125Kb)
Screenshot of
TnFOX adapting to a mobile phone and the user's handedness
Download a self-contained Win32 version of the program below (897Kb)
Welcome | Features & Minimum System Requirements | Regression Test Suite Status | Support | Downloads |
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 & all Google Translation supported 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) and SIMD optimised vectors | ||
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 |
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.