[ Home Page ] [ Eiffel Archive ] [ Eiffel Classes and Clusters]
![]() |
EiffelFox - Eiffel GUI wrapper for the Fox C++ GUI library |
Written by Darren Hiebert
EiffelFox-0_6_1_tar.gz
(440,544 bytes) - the EiffelFox source code
EiffelFox-0_6_1.zip
(739,671 bytes) - the EiffelFox source code
http://darren.hiebert.com/EiffelFox/index.html
(EiffelFox home page)
http://darren.hiebert.com/index.html
(Darren Hiebert's home page)
http://www.cfdrc.com/FOX/fox.html
(Fox GUI library home page)
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.
EiffelFox is presently supported only on version 4.3 or later of the ISE compiler, supporting the optional use of the new agent mechanism for nice direct call-backs. The ISE 4.2 compiler had a code generation bug for C++ externals and so cannot be easily used (If you are stuck with 4.2, I have a shell script available which can be called from your finish_freezing script to correct the generated source code).
Because the Halstenbach compiler (iss-base) also supports ISE-style C++ external features, I will soon begin the process of officially supporting EiffelFox on this compiler as soon as I acquire the compiler.
A SmallEiffel port is underway. Currently, SmallEiffel-0.77beta4 will compile EiffelFox, but there are still problems with its code generation for C++ externals.
FOX is supported on both Unix and Win32. EiffelFox should be able to work
on both platforms, as well. I am mostly a Unix guy, so I have not actually
built up EiffelFox on Win32 yet. Ed Falis
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 CECIL code which provides the glue between the Eiffel objects and
FOX C++ objects. When you run ./configure in the installation directory, a
makefile will be generated that is customized for your environment. Also,
appropriate ACE files will be created in the example and precomp directories
for building those.
It is assumed that you have extracted the archive in the directory where
your ACE files will be pointing to use the EiffelFox clusters. In the
top-level directory of the distribution, execute "./configure", followed by
"make". This will compile the C++ library which serves as the interface
between FOX and EiffelFox. There are potentially two versions of the library
which will be built, libefx.a and libefxgl.a, a version without OpenGL/Mesa
support and one with.
You can also execute "make precompile", which will build a precompiled
library in the "precomp" directory.
When you are finished building the libraries, you can execute "make
mostlyclean", which will remove all of the intermediate generated files,
but leave the *.a archives and precompiled libraries.
If you are trying to build EiffelFox under MicroSoft Windows, you will find
project and workspace files for Developers' Studio in Clib. For further
details, see the separate document ReadMe-Win32.txt included in the
distribution.
Extensive documentation for FOX has not yet been written. Thus, it is still
necessary to consult the FOX C++ source code to answer certain questions,
primarily with regards to which messages are forwarded on to targets, a key
feature which make FOX so powerful, generally requiring far less code to
accomplish an interface. A document, FoxMessages.ps, that has a fairly
complete description of which messages are forwarded on by which widgets is
included in the doc directory.
The documentation which comes in the doc directory of the FOX distribution
should be read in preparation for using EiffelFox. Although the
documentation is targeted at using the C++ library directory, much of it is
still valid for EiffelFox, as well.
See the HTML file doc/diagrams/index.html for a set of EiffelCase diagrams
of the EiffelFox classes, which shows the inheritance hierarchy.
Lastly, see the tutorial application include in the examples directory,
which helps to understand how the layout managers and widget display options
work.
Documentation should improve rapidly in the next couple of months as FOX
nears its 1.0 release.
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 some unusual porting. There is also a
SmallEiffel makefile and loadpath.se file there if you are so motivated
to try helping the port yourself.
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.
Darren Hiebert
[ Home Page ]
[ Eiffel Archive ]
[ Eiffel Classes and Clusters]
Unix Installation
Win32 Installation
Documentation
Examples
Notes
Caveats