ned Productions – TnFOX

by . Last updated .

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:

tick Portable to X11/POSIX (Linux, BSD, Apple MacOS X) and Microsoft Windows tick Wide range of easily extendable (via subclassing) widgets
tick License based on the Library GNU Public License (LGPL) so can be used by closed-source & commercial applications tick Fast and Lightweight, noticeably faster than other C++ GUI toolkits
tick Dynamic run-time binding of widgets to each other and to data via messaging tick Also provides OpenGL, drag & drop, anti-aliased fonts, MIME, graphics & compression support
tick Unicode support    

Additional features of TnFOX (see the library documentation below for more detail):

tick 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 tick 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
tick Many of the extensions replicate the Qt API except that they are all exception and thread safe tick Extensive heavy-duty multithreading tools with assembler-written signal-safe fast mutex (futex)
tick Per-thread event loops, allowing multiple threads to run GUI trees concurrently - a markedly superior way to use threads in your GUI tick Superior Qt-style automatic human language translation (much better than GNU gettext). TnFOX comes with Spanish & all Google Translation supported translations included
tick 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 tick 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
tick 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 tick 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
tick 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 tick 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:

tick Fully working Python bindings [awaiting improvements to pyplusplus] tick Streaming Maths Computation module which can utilise graphics cards

Minimum System Requirements:

  • Microsoft Windows 2000, XP, Vista or later.
    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 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.

Contact the webmaster: Niall Douglas @ webmaster2<at symbol> (Last updated: 2008-06-14 00:00:00 +0000 UTC)