FOX toolkit
Encyclopedia
The FOX toolkit is an open source
, cross-platform
widget toolkit
, that is, a library of basic elements for building a graphical user interface
(GUI). FOX stands for Free Objects for X.
It features a hard-wired Windows 95
-style theme
available for both Microsoft Windows
itself as well as the X Window System
(which is used on many UNIX
and UNIX-like
operating systems).
The FOX toolkit has been released under the GNU Lesser General Public Licence. Development began 1997 by Jeroen van der Zijp while he was affiliated at CFDRC. Since then, Jeroen van der Zijp maintains the core library and test applications, with the help of a growing user community.
The FOX toolkit is written in C++
, with language binding
s available for Python
, Ruby
and Eiffel
. The FOX source code
distribution supports building with many different (commercial and free) C++ compilers.
All of these toolkits have some support for programming natively on Mac OS
and/or Mac OS X
platforms, which FOX currently does not support.
FOX uses a technique similar to the Java Swing
-style approach to display a graphical user interface to the screen, using only graphical primitives available on that platform, as opposed to the original Java AWT
-style approach which used native widgets. This means that applications will have a similar look and feel
across platforms. In theory, porting FOX to a new platform should also be easier than implementing support for native widgets.
On the downside, it usually means that FOX applications will look and feel
different from native applications for those platforms, which some users may find confusing. Also, certain native platform features may not be available immediately, such as comprehensive printing support or internationalized input handling, because they will need to be re-implemented in a cross-platform way before they can be used in FOX.
The FOX messaging system simplifies the GUI update strategy: during widget update, the widgets can ask from their targets to update them. This means that a command message does not also have to explicitly update any widgets as it is typical. In case an application implements N command messages each updating M widgets, then M*N updates must be executed and at most M*N messages must be implemented. On the other hand, if widgets request for update, only N command messages and at most M update messages are implemented. This strategy separates the GUI update from data changes, making the GUI a real-time reflection of the underlying data structures.
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
, cross-platform
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...
widget toolkit
Widget toolkit
In computing, a widget toolkit, widget library, or GUI toolkit is a set of widgets for use in designing applications with graphical user interfaces...
, that is, a library of basic elements for building a graphical user interface
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...
(GUI). FOX stands for Free Objects for X.
It features a hard-wired Windows 95
Windows 95
Windows 95 is a consumer-oriented graphical user interface-based operating system. It was released on August 24, 1995 by Microsoft, and was a significant progression from the company's previous Windows products...
-style theme
Skin (computing)
In computing, a skin is a custom graphical appearance achieved by the use of a graphical user interface that can be applied to specific software and websites to suit the purpose, topic, or tastes of different users....
available for both Microsoft Windows
Microsoft Windows
Microsoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
itself as well as the X Window System
X Window System
The X window system is a computer software system and network protocol that provides a basis for graphical user interfaces and rich input device capability for networked computers...
(which is used on many UNIX
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
and UNIX-like
Unix-like
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification....
operating systems).
The FOX toolkit has been released under the GNU Lesser General Public Licence. Development began 1997 by Jeroen van der Zijp while he was affiliated at CFDRC. Since then, Jeroen van der Zijp maintains the core library and test applications, with the help of a growing user community.
The FOX toolkit is written in C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
, with language binding
Language binding
In computing, a binding from a programming language to a library or OS service is an API providing that service in the language.Many software libraries are written in systems programming languages such as C or C++...
s available for Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...
, Ruby
Ruby (programming language)
Ruby is a dynamic, reflective, general-purpose object-oriented programming language that combines syntax inspired by Perl with Smalltalk-like features. Ruby originated in Japan during the mid-1990s and was first developed and designed by Yukihiro "Matz" Matsumoto...
and Eiffel
Eiffel (programming language)
Eiffel is an ISO-standardized, object-oriented programming language designed by Bertrand Meyer and Eiffel Software. The design of the language is closely connected with the Eiffel programming method...
. The FOX source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...
distribution supports building with many different (commercial and free) C++ compilers.
Cross-platform compatibility
FOX differentiates itself in the following way from other cross-platform toolkits:- Tk is a cross-platform toolkit but does not have all of the widgets that FOX considers desirable.
- QtQt (toolkit)Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...
had a different licensing model, which might have required a commercial license in some cases where FOX would not. (This is no longer the case starting with Qt 4.5.) - wxWidgetsWxWidgetswxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
promotes the use of native widgets on each supported platform. - FLTKFLTKFLTK is a cross-platform GUI library developed by Bill Spitzak and others. Made with 3D graphics programming in mind, it has an interface to OpenGL, but it is also suitable for general GUI programming....
is a fast, low-footprint library that supports rapid application development, and requires less code to use, but lacks advanced widgets.
All of these toolkits have some support for programming natively on Mac OS
Mac OS
Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...
and/or Mac OS X
Mac OS X
Mac OS X is a series of Unix-based operating systems and graphical user interfaces developed, marketed, and sold by Apple Inc. Since 2002, has been included with all new Macintosh computer systems...
platforms, which FOX currently does not support.
FOX uses a technique similar to the Java Swing
Swing (Java)
Swing is the primary Java GUI widget toolkit. It is part of Oracle's Java Foundation Classes — an API for providing a graphical user interface for Java programs....
-style approach to display a graphical user interface to the screen, using only graphical primitives available on that platform, as opposed to the original Java AWT
Abstract Window Toolkit
The Abstract Window Toolkit is Java's original platform-independent windowing, graphics, and user-interface widget toolkit. The AWT is now part of the Java Foundation Classes — the standard API for providing a graphical user interface for a Java program.AWT is also the GUI toolkit for a...
-style approach which used native widgets. This means that applications will have a similar look and feel
Look and feel
In software design, look and feel is a term used in respect of a graphical user interface and comprises aspects of its design, including elements such as colors, shapes, layout, and typefaces , as well as the behavior of dynamic elements such as buttons, boxes, and menus...
across platforms. In theory, porting FOX to a new platform should also be easier than implementing support for native widgets.
On the downside, it usually means that FOX applications will look and feel
Look and feel
In software design, look and feel is a term used in respect of a graphical user interface and comprises aspects of its design, including elements such as colors, shapes, layout, and typefaces , as well as the behavior of dynamic elements such as buttons, boxes, and menus...
different from native applications for those platforms, which some users may find confusing. Also, certain native platform features may not be available immediately, such as comprehensive printing support or internationalized input handling, because they will need to be re-implemented in a cross-platform way before they can be used in FOX.
Messaging system
FOX offers a transparent bi-directional messaging system. Each Widget sends its message to a certain target. Each message is composed by a selector that identifies its kind and an id that is unique and provided by the widget's enumeration. The advantage is that each widget can call a target widget's method in a transparent manner, even if the method does not exist. Vice versa, in the implementation of the individual message handler, since the sender is known, the target can also dispatch a message to the sender. This is a particularly important feature in component oriented software, where components may be written by different people, or even different organizations.The FOX messaging system simplifies the GUI update strategy: during widget update, the widgets can ask from their targets to update them. This means that a command message does not also have to explicitly update any widgets as it is typical. In case an application implements N command messages each updating M widgets, then M*N updates must be executed and at most M*N messages must be implemented. On the other hand, if widgets request for update, only N command messages and at most M update messages are implemented. This strategy separates the GUI update from data changes, making the GUI a real-time reflection of the underlying data structures.
Hello World
The following example creates a FOX application and a dialog with a button:Software built on FOX
- CFD-View is a post-processing developed by ESI Group.
- Abaqus/CAE is the pre- post- processor of the AbaqusAbaqusAbaqus FEA is a suite of software applications for finite element analysis and computer-aided engineering, originally released in 1978...
finite element suite. - bdStudio is accurate and easy-to-use visualization tool for complex real time aerospace simulations developed by SAIC.
- Intel Modular Test Architecture (IMTA)
- PVRShaman - free shader development studio from Imagination TechnologiesImagination TechnologiesImagination Technologies Group plc is a British-based maker of a mobile graphics and microprocessor chip technology primarily known for its PowerVR graphics and Pure DAB radio divisions...
- LinkCAD is a commercial format-conversion application for various CAD formats
- TMP Vision and SLIMSLIMSLIM is developed at the Space Telescope European Coordinating Facility and is a slitless spectroscopy simulator programme created to produce simulated ACS grism and prism images. It is written in Python programming language and covers all spectral elements available in the Advanced Camera for...
were designed to meet the needs of complex FEA models. - KerkytheaKerkytheaKerkythea is a standalone rendering system that supports raytracing and Metropolis light transport, uses physically accurate materials and lighting — and is distributed as freeware...
, a multimethod render system - Acronis True ImageAcronis True ImageAcronis True Image is disk imaging software, developed by Acronis, that creates backups and recovers PC systems. The software allows a user to create an image of a disk while it is running Microsoft Windows or offline by booting from CD/DVD, USB flash drives, PXE, or other bootable media...
, and other AcronisAcronisAcronis, Inc. is an international computer software company, dealing in the area of computer backup, disaster recovery, bare-metal restore, system deployment, and storage management in both Windows and Linux systems.-History:...
products - Goggles Music Manager, a music collection manager and player
- xfeXfeXfe is a graphical file manager for the X Window System for Unix and Unix-like systems, written by Roland Baudin. Its stated goals are simplicity, lightness and ease of use. The xfe file manager uses the FOX toolkit and is licensed under the terms of the GNU General Public License.-External links:*...
, a graphical file manager for the X Window SystemX Window SystemThe X window system is a computer software system and network protocol that provides a basis for graphical user interfaces and rich input device capability for networked computers... - TnFOXTnFOXThe TnFOX portability toolkit is a fork of the FOX GUI toolkit with most of the added code implementing orthogonal features such that applications developed for FOX can be easily recompiled for TnFOX...
, a fork of the FOX library
See also
- Widget toolkitWidget toolkitIn computing, a widget toolkit, widget library, or GUI toolkit is a set of widgets for use in designing applications with graphical user interfaces...
- List of widget toolkits
- Qt (toolkit)Qt (toolkit)Qt is a cross-platform application framework that is widely used for developing application software with a graphical user interface , and also used for developing non-GUI programs such as command-line tools and consoles for servers...
- A widget toolkit used by KDEKDEKDE is an international free software community producing an integrated set of cross-platform applications designed to run on Linux, FreeBSD, Microsoft Windows, Solaris and Mac OS X systems... - GTK+GTK+GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...
- The GIMP toolkit, a widget toolkit used by GNOMEGNOMEGNOME is a desktop environment and graphical user interface that runs on top of a computer operating system. It is composed entirely of free and open source software...
applications - gtkmmGtkmmgtkmm is the official C++ interface for the popular GUI library GTK+. gtkmm is free software distributed under the GNU Lesser General Public License ....
- C++ version of GTK+ - FLTKFLTKFLTK is a cross-platform GUI library developed by Bill Spitzak and others. Made with 3D graphics programming in mind, it has an interface to OpenGL, but it is also suitable for general GUI programming....
- A light, cross platform, non-native widget toolkit - Ultimate++Ultimate++Ultimate++ is a C++ cross-platform development framework which aims to reduce the code complexity of typical desktop applications by extensively exploiting C++ features.-Features:* currently supports Microsoft Windows, Linux/X11 and BSD/X11....
- wxWidgetsWxWidgetswxWidgets is a widget toolkit for creating graphical user interfaces for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with minimal or no code changes...
- cross platform open source C++ widgets toolkit developed by community - VCFVisual Component FrameworkThe Visual Component Framework is an open source project for development under Microsoft Windows and Apple Macintosh that is distributed under the BSD license. It is an advanced C++ application framework that makes it easier to produce GUI-based C++ applications. The framework is based on a...
- JuceJuceJUCE is a free software, cross-platform C++ application framework, used for the development of GUI applications and plug-ins.The aim of JUCE is to allow software to be written such that the same source code will compile and run identically on Windows, Mac OS X and Linux platforms...
- TnFOXTnFOXThe TnFOX portability toolkit is a fork of the FOX GUI toolkit with most of the added code implementing orthogonal features such that applications developed for FOX can be easily recompiled for TnFOX...
- fpGUIFpGUIfpGUI, the Free Pascal GUI toolkit, is a cross-platform graphical user interface toolkit developed by Graeme Geldenhuys. fpGUI is open source and free software, licensed under a Modified LGPL license...
- A cross platform GUI toolkit with a Visual Form Designer and a custom help document reader.
External links
- http://www.kerkythea.net/joomla/index.php?option=com_content&task=view&id=50&Itemid=1Jeroen's interview at KerkytheaKerkytheaKerkythea is a standalone rendering system that supports raytracing and Metropolis light transport, uses physically accurate materials and lighting — and is distributed as freeware...
] - FXRuby - Ruby bindings
- FXPy - Python bindings
- EiffelFox - Eiffel bindings