FOX is a platform independent GUI toolkit by Jeroen van der Zijp. v1.4 has some exciting new features.
Smooth dragging and side-by-side docking of toolbars and dockable panels has been implemented. Also new is the seven segment widget for LCD style display, a memory mapped file class and support for Sun Raster and Amiga IFF image formats. The table widget now has editing capabilities and the ruler widget (MSWord like) was finished for this release.
Thread support was augmented with synchronization primitives and a global application mutex was added to deconflict worker threads and GUI thread.
Also, a new class FXGUISignal serves to wake the GUI thread from a worker thread.
A new class FXIconSource facilitates loading and scaling of images or icons, from a large variety of image formats. The file selection widget now support thumbnail previewing mode. If a filename is recognized as an image, and the thumbnail mode is in effect, the image is loaded and scaled down to serve as the thumbnail. Shaped windows are now supported and the new class FXSplashWindow uses the new shaped window facility to present an attractive, arbitrarily shaped introduction window for applications.
Message calls are now exception safe and resource exceptions are thrown when creating scarce resources.
FOX is licensed under the GNU Lesser General Public License with the FOX Library License Addendum.
External Links:
Main FOX website
FOX Community
FXRuby
Purty. I only looked at some of the sample code, but it looks similar to ruby-gtk. Can’t be a bad thing…
it seems quite mature
That someone writes a whole desktop (or at least more software) using this toolkit, it feels very snappy.
It’s already been done. It’s called the FOX Desktop. But it’s an abandoned project, because no one cares. People have KDE and Gnome to use.
I’ve just discovered Xfe, a really nice file manager, in the spirit of Windows Commander and Windows Explorer. It was written using the FOX toolkit, and it is fast!
I installed the FOX toolkit and dev libs on my Debian box. I’m going to play around with it a bit.
Debian distributes very old versions of FOX, AFAIK. I suggest you compile FOX yourself so you can manually activate anti-aliased fonts.
As far as I know, I think rarewares.org has the most up 2 date FOX packages (1.2) for Debian.
How do they compare?
They don’t. Trolltech has many devs, FOX is mostly developed by a single person. FOX is not as advanced or as full featured as Qt. It’s faster than GTK though.
Also, FOX only supports X and Win32, while Qt supports the framebuffer, X, Win32 and Mac OS X. It’s more multi-platform than FOX.
The advantage of FOX is that it allows to write closed source apps without having to buy a license.
Its not dead yet, though development is slow and more focused on getting some usefull tools out than a complete environment. For example FOX now comes with a ControlPanel application to setup the colors and filebindings for FOX applications which originally was intended to be distributed with the desktop itself.
How would you define “not as advanced”.?
FOX should work on MacOSX using the X-server. Yes, there is no “native” port, but that wouldn’t really matter, since it would look the same as the one running in the X-Server.
But as you said, I think the license is a lot more attractive for commercial companies.
The FOX-SWT guy would kick back into action and help us out with Eclipse on Linux (GTK version is balls-slow… and the SWT-FOX port while pretty buggy was so damn promising (windows speed))
>How would you define “not as advanced”.?
Fox is *not* as full featured as Qt is, let’s be real here. Qt has many internationalization/DB sub-parts that FOX simply lacks. Also, Qt’s documentation quality is legendary.
>FOX should work on MacOSX using the X-server.
Sorry, but this not enough. 99% of the Mac users don’t bother to load the 3rd OSX CD and install X11. Usually they ignore apps that require X or the Fink subsystem (with a very small exception for people who want to try Gimp).
Therefore, I can not say that “Fox is good on osx too”. It’s not, as long there is no native port. Qt has a native port and its apps look like all other OSX apps, while Fox under X will simply look like Fox. These little things really bother OSX users.
The only attractive thing Fox has compared to Qt, except extra some speed for not being as bloated as Qt is, is its license. Nothing else.
To truely appreciate the grace of developing with FOX, I suggest you write a non-trivial application with FOX and then compare it against another toolkit.
Features are not the only thing that matters, since not a single toolkit is going to give you a ready-made application.
What counts just as much is how easy it is to develop from the basics that a toolkit provides toward the application you want to create. This process is what FOX shines at. You try it, and then tell me that you want to go back to work with something else.
As for what what you think FOX lacks:- it is being improved daily, and the development plans for the coming months will close the gap. You can take my word for it, I’m the developer!
I was the one that originally posted the question. I had hoped to get some sort of comparative matrix of the two displaying what FOX has or doesn’t have when compared to Qt.
One thing that is very attractive though, from a 100 foot level is the license. It’s attractive because of the fact that you can write closed source apps, which is a very busness friendly feature.
Not only that, but by looking at the screenshots I can conclude that you can write some very nice looking applications with FOX.
Now, how would FOX compare with FLTK, or wxWidgets?
Same thing. It’s just that wxWidgets also has a native OSX port and it’s easier statically compiled to your app.
> To truely appreciate the grace of developing with FOX, I suggest you write a non-trivial application with FOX and then compare it against another toolkit.
Actually, Jeroen, you need to do this. You need to create a matrix for a 50-60 lines fox app and have the source code of the same app but in Win32, Qt, FLTK, wxWidgets and Gtkmm next to each other. That’s what Trolltech does in their brochures. That’s how they demonstrate their ease of use of their toolkit.
You should not expect people to do research for you. Instead, you should convince them yourself with such a demo.
When doing that sort of comparison it would be helpful for the project in question to be nontrivial, in order to prevent certain simple interfaces from being unnaturally prominent and making any one appear favorable.
FOX looks nice, simple and easy to develop. The sole reason why i’m not using it is because it looks like a 15 years old toolkit. I want themes and all that kind of things..
Its better that you investigate yourself if you want to do a comparison of toolkits, because you know your needs and depending on those needs, different toolkits may be suitable. Anyway in case you want to read some comparison notes:
http://fox-toolkit.net/cgi-bin/wiki.pl?Comparisons
http://wiki.wxwidgets.org/wiki.pl?WxWidgets_Compared_To_Other_Toolk…
http://freeride.rubyforge.org/wiki/wiki.pl?GUIFrameworkProject/GUIC…
Actually, I don’t do these comparisons, as such comparisons are meaningless to people. Its like asking General Motors to compare itself to Ford; of course, you know exactly what
General Motors is going to tell you before you even ask the question.
What matters is what people who have no iron in this fire think, and what they do. This speaks volumes, more so than anything I could say.
There are some pretty large applications written using FOX,
such as ABAQUS, ESI-Group, AVL, TMP Vision, and many others.
Some of them are listed on FOX’s projects page (some are not, as I only list those whose permission I have
obtained).
So, I think its a great idea to have someone do a fair comparison, but if its me that’s doing it it’ll be a meaningless exercise.
Now, anyone who want to give it a shot, just download the code, join the mailing list, [email protected], ask questions, start coding, and make up your own mind instead of letting others do it for you!
Interesting GTK+/gtkmm, Qt, FOX, FLTK, and wxWindows comparison:
GUI Toolkits for The X Window System
http://freshmeat.net/articles/view/928/
FLTK was revealed a very good toolkit.
Are there plans to support maybe GtkStyle engines? If it would look similar to GTK+ apps (by using their engines) more people might be tempted to use FOX.
I understand that your goal is to make a cross-platform toolkit that looks similar on every platform. However, Linux users don’t like to use applications that look like Windows 95, just like Windows XP users wouldn’t appreciate a GTK+ look (and feel). But currently, it’s only the linux users who ‘suffer’.
Major defficiency of FOX and QT is language… C++ is not a good programming language at all, and further isn’t good for GUI projects. The best thing I’ve ever seen for GUI was delphi – it’s slick simple and has wonderfull GUI builder extending mechanism. I’m dreaming about crossplatform toolkit with Qt (or fox) strength and something better than C++ underneath… Kylix was the hope but, as many technologies with bridge code like qt-LVCL or gtk-lazarus has numerous limitations, don’t give the programmer full VCL look’n’feel and are not as slick as VCL/win32… Qt seems to be favourite but:
– it is C++
– it has lousy layouting.
– out-of-the-box widgets are not customizable
– it has preprocessor ‘moc’ which slows build and generates problems with C++ parsing
– slots/signals are not as clean as simple as delphi’s closures callbacks…
.Net WindowsForms is quite a good technology (notice numerous ideas which .net borrowed from VCL) but managed code needs more hardware than than compiled.
IMHO
Quote:
“C++ is not a good programming language at all”
I think that’s a personal opinion.
You’re used to using Delphi, and I agree, Delphi is a great language, I use it daily.
But I also use C++ a lot and can say that C++ with a good toolkit, like for example Qt, is very fun to code in.
Although, it might be a little bit more “abstract” than Delphi.
On the other hand, Qt is not only C++, there are bindings for java, python, perl etc…
But, yeah… they are 3rd party bindings.
I don’t know what you mean with lousy layouting, but I find using layouts in Qt much easier than setting individual settings on controls in Delphi (didn’t try version 8, can only comment on Delphi <= 7)
Qt’s widgets can easily be subclassed though
You can make widgets with 1000s of properties, but then you’ll loose “usability” in my opinion.
You can’t create controls that fit every programmers needs now and in the future.
The preprocessor itself has a very low impact on the build process. A large list is handles in less than a second on my Pentium II.
Slots and signals are also a personal preference.
Some like it, some not.
My opinions though
Don’t take those opinions as facts
What is Fox’s history with FVWM95? From what I’ve read they used the same low level toolkit at one point. Can you tell us more? And what about namespace, the reviews indicated that Fox doesn’t use namespace, is this still so? Oh, and how easy is it to build under Mingw? And are the Python bindings still dead?
FVWM95 and FOX have nothing to do with each other.
Yes, Python bindings are still dead; Ruby bindings are actively maintained.
FOX should build on all unix machines (and not just Linux), as
well as flavors of Windows from Win95 on up.
FOX does use namespaces, in fact this is the second major release with namespaces.
Several compilers are supported on Windows: VC++, Borland C++, Watcom C++, Digital Mars C++ and GCC.
As for layouts, FOX has very powerful layout algorithms,
and moreover, they’re easy to use, and work consistently.
As for theming, yes there are plans to do theming! The current “look” is indeed based on Win9x. Love it or loathe it, its what 90% of the users know, and are immediately productive with. But realize that you can never please everyone, all at the same time. So theming is an issue that
will need to be addressed at some time in the future.
FVWM95 is based on XClass, XClass was part of Foxproject, I thought that was you, apparently it wasn’t. Sorry my mistake.
On the signal/slot issue: I’ve written my analysis on that on the FOX web page, http://www.fox-toolkit.org/messages.html.
At the time, I’ve looked at the alternatives: message maps (like MFC and wxWindows), ordinary C++ function pointers (like Motif and FLTK), C++ template-based signal/slot (no, Qt doesn’t use this; they require an awkward moc preprocessing compiler!).
The choice went to message maps, but with the twist: while other toolkits uses message maps and have a fixed routing of
messages to their receivers, in FOX, each message is sent to a particular target; this means you don’t need a global list of message ID’s like MFC does.
It also means that its easy for Widgets to be not just senders, but also receivers of messages, since you as the application programmer can decide how controls connect to each other, and in what they’re saying to each other when they’re connected.
You can connect widgets to each other without ever writing any callback handlers. This covers common scenarios such as
enabling or disabling controls (graying out), for getting or
setting values to or fron valuator controls, hiding and showing panels or controls, and so on.
Moreover, by eliminating the need for a global list of message ID’s, you can make reusable widgets which can simply be “plugged into” an application and connected up to the application without any glue-code in the form of callback handlers.
For example, the GL Viewer is a component which can be hooked up (via messages) to controls for rotation, zooming, colors and lighting.
Thus, you can do a lot of things, simply by connection stuff up. The FOX motto is that every line of code you won’t have to write is a correct one.
If you’re interested, look at the datatarget example program which is in the tests directory. It connects variables like integers and reals and string directly to valuator controls, and uses no callback handlers to do so. It simply works by being hooked up in a certain way.
I consider this one of the major innovations in FOX, and one you’d be hard-pressed to find anywhere else.
Major defficiency (sic) of FOX and QT is language…
There are some FOX bindings for other programming languages, such as Ruby and Eiffel. Check the sidebar on the FOX home page for links to those projects.
Are there plans to support maybe GtkStyle engines? If it would look similar to GTK+ apps (by using their engines) more people might be tempted to use FOX.
I understand that your goal is to make a cross-platform toolkit that looks similar on every platform. However, Linux users don’t like to use applications that look like Windows 95, just like Windows XP users wouldn’t appreciate a GTK+ look (and feel). But currently, it’s only the linux users who ‘suffer’.
People have been asking for “theming” support in FOX for at least the last four years, and it’s still not there. So you shouldn’t hold your breath waiting for that to happen. Right now I’d just be happy for the download site to be mirrored somewhere so that we could actually download the software.
There is a mirror at http://fox-toolkit.net. Please be
gentle!
As for themes, yes, there will be themes, but there are lots of other things that have been requested. Currently, I have (or at least, I *may* have!) some funding to do work on other additions to the library, but I do not yet have funding to work on themes.
While I do think themes would be more fun to do, please understand that I will work on the funded things first 😉
How much cost adding themes?
That depends on how soon you want it!
> Major defficiency of FOX and QT is language… C++ is not a good programming language at all
Please FOX (and FLTK, Qt, Toad, wxWidgets, etc.) developers, port FOX to Object Pascal. lol
FOX Toolkit would be cool, if it didn’t have i18n issues
Theming support for FOX:
http://pi3.informatik.uni-mannheim.de/~tneumann/fox/
Just keep going, Jeroen, you are doing a great job!