EiffelFox is an Eiffel language wrapper for the FOX C++ GUI. The FOX GUI is a powerful, advanced GUI library which is completely portable from Unix to MSWindows without changes to, or conditional compilation of, the application source code. Eiffel has long suffered from the lack of availability of a GUI library which is not only portable, but offers the full power of what developers have come to expect from an advanced GUI library. Shortly after beginning a position as lead developer of a defense-related simulation project, I discovered Eiffel and selected it for use in our project. I quickly became aware of the lack of strong GUI support. After I began to look into GUI libraries available in the open source world, I discovered FOX, a new GUI library in beta release. Because of the pressing need for a powerful GUI in my project, I undertook the task of developing an Eiffel wrapper for FOX on my own time so that I could make it available to the Eiffel community at large and, by eliminating this shortcoming, help to promote Eiffel, which greatly deserves recognition as a language for serious software development. EiffelFox is already being used in a serious application and is, therefore, ready for serious application development.
FOX is supported on both Unix and Win32. As such, EiffelFox applications will compile without change on both platforms. Please see the file doc/README.w32 for release notes specific to the Win32 platform.
FOX is supported on both Unix and Win32. As such, EiffelFox applications will compile without change on both platforms. Please see the files doc/README.unix or doc/README.w32, for release notes specific to Unix and Windows platforms, respectively.
Getting EiffelFox to its current successful state has been a cause of much grief to me because of the many bugs I encountered in the current set of Eiffel compilers. As you go through the various release notes, you will notice that I have had to deal with many bugs, some of which I was able to get fixed by the vendor (ISE), some which I had to work-around (Halstenbach), some which I had to fix myself (SmartEiffel), and still others which presented problems with which we are currently stuck.
You must obtain and build the FOX library separately before building EiffelFox. Any particular beta release of EiffelFox relies upon the interface of a particular release of FOX. The EiffelFox web site, http://darren.hiebert.com/EiffelFox, will contain a link to the version of FOX to which it is tied. The FOX web site is http://www.cfdrc.com/FOX/fox.html.
EiffelFox comes in two pieces: The Eiffel classes and a C++ wrapper library containing code which provides the glue between the Eiffel objects and FOX C++ objects.
See the "examples" directory for sample applications.
The hello example is a very trivial program simply to try getting things to work if you are trying to port EiffelFox.
This is a translation of the test program by the same name in the FOX distribution. It will allow you to see how things done in the C++ FOX demo applications are converted into Eiffel code. For the most part, each line of C++ code converts to one or two lines of Eiffel code.
This is another translation of a test program included with FOX and one which is presented as a teaching application in the FOX introduction.
This is most important example application. It provides a tree which permits display of each of the FOX widgets and allows you to interactively configure their display properties to learn how these will affect the widget. Not everything is working perfectly (the presentation of some of the menu widgets is not presented well), but it is very functional.
Note that the widget and message data inheritance hierarchies are fairly deep. Therefore, it is essential to look at the flat-short forms of the classes when you are trying to see what they really provide.
EiffelFox should be considered to be late beta software. Because FOX is still in late beta, any interface changes made to FOX will necessarily be reflected in future releases of EiffelFox, thus necessitating changes to application code. Also, there are still likely to be some changes to feature names and some adjustments to how certain things are done. No doubt, there are bugs waiting to be discovered, but most are likely to be caught by assertion violations.
Thank you for trying out EiffelFox. All feedback is appreciated.