Welcome to the TnFOX homepage

This page has been accessed 38,452 times since the 17th June 2003.

 

View this page in: flag
English
flag
Chinese
flag
Dutch
flag
French
flag
German
flag
Greek
flag
Italian
flag
Japanese
flag
Korean
flag
Portuguese
flag
Russian
flag
Spanish

Translation to non-English languages provided by Babelfish on Altavista

 

 

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:

TnFOX test results

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:

  1. 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.
  2. 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:

  • None available

Quick links to SVN versions: (based on FOX v1.6) (based on FOX v1.4)

Releases:

  1. The TnFOX license
  2. Most recent changelog (52.15Kb) (The CVS version is here)
  3. Language translation files (English and Spanish are included):
    • none available as yet
  4. The documentation:
  5. Header files:
  6. Unified source tree:
  7. Precompiled Binaries:

SourceForge.net Logo Support This Project

  MS Windows Logo
Microsoft Windows
(2000, XP, Vista)
Linux Logo
Linux
(Ubuntu edgy)
Apple Mac OS X Logo
Apple Mac OS X
(10.4.8)
FreeBSD Logo
FreeBSD
(6.x)
  i486 x64 i486 x64 i686 x64 i486 x64
Current (v0.87): v1.4 based (7.51Mb)
v1.6 based (8.27Mb)
v1.4 based (7.29Mb)
v1.6 based (8.22Mb)
v1.4 based (4.81Mb)
v1.6 based (5.44Mb)
v1.4 based (5.00Mb)
v1.6 based (5.68Mb)
v1.4 based (2.41Mb)
v1.6 based (2.86Mb)
None this release None this release None this release
Previous: To Sourceforge Download Page for older binaries

All binaries packages come with:

  1. The Core TnFOX library
  2. The Graphing Extension library
  3. The SQL database Extension library
  4. The no-GUI TnFOX library (useful for command line or daemon apps)
  5. AllTests executable, the automated test suite control program
  6. [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:

  1. The standard JPEG library
  2. The standard PNG library
  3. The TIFF library & the TIFF LZW compression patch (18Kb)
  4. The Zlib library
  5. The BZip2 library
  6. 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.
  7. OpenSSL library
  8. Boost library
  9. VTK library
     
  10. 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.


Contact the webmaster: Niall Douglas @ webmaster2<at symbol>nedprod.com (Last updated: 04 March 2008 21:36:48 -0000)