HOME

TheInfoList



OR:

The FOX toolkit is an
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
,
cross-platform In computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several computing platforms. Some cross-platform software r ...
widget toolkit A widget toolkit, widget library, GUI toolkit, or UX library is a library or a collection of libraries containing a set of graphical control elements (called ''widgets'') used to construct the graphical user interface (GUI) of programs. Most widg ...
, i.e. a library of basic elements for building a
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
(GUI). FOX stands for Free Objects for X. It features a hard-wired
Windows 95 Windows 95 is a consumer-oriented operating system developed by Microsoft as part of its Windows 9x family of operating systems. The first operating system in the 9x family, it is the successor to Windows 3.1x, and was released to manufacturin ...
-style
theme Theme or themes may refer to: * Theme (arts), the unifying subject or idea of the type of visual work * Theme (Byzantine district), an administrative district in the Byzantine Empire governed by a Strategos * Theme (computing), a custom graphical ...
available for both
Microsoft Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
itself as well as the
X Window System The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems. X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting wit ...
(which is used on many
UNIX Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
and
UNIX-like A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
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 user community. The FOX toolkit is written in
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
, with
language binding In programming and software design, binding is an application programming interface (API) that provides glue code specifically made to allow a programming language to use a foreign library or operating system service (one that is not native to th ...
s available for
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
,
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
and
Eiffel Eiffel may refer to: Places * Eiffel Peak, a summit in Alberta, Canada * Champ de Mars – Tour Eiffel station, Paris, France; a transit station Structures * Eiffel Tower, in Paris, France, designed by Gustave Eiffel * Eiffel Bridge, Ungheni, M ...
. The FOX
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
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. * Qt up to version 4.5 used to have a licensing model that required a commercial license in some cases where FOX would not. *
wxWidgets wxWidgets (formerly wxWindows) is a widget toolkit and tools library for creating graphical user interfaces (GUIs) for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with mini ...
promotes the use of native widgets on each supported platform. * FLTK 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 the
classic Mac OS Mac OS (originally System Software; retronym: Classic Mac OS) is the series of operating systems developed for the Macintosh family of personal computers by Apple Computer from 1984 to 2001, starting with System 1 and ending with Mac OS 9. The ...
and/or
macOS macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
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 In software design, the look and feel of a graphical user interface comprises aspects of its design, including elements such as colors, shapes, layout, and typefaces (the "look"), as well as the behavior of dynamic elements such as buttons, boxes ...
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. Some applications, like Xfe File Manager, allow changing the color scheme to better integrate with the system's theme colors. On
Arch Linux Arch Linux () is an independently developed, x86-64 general-purpose Linux distribution that strives to provide the latest stable versions of most software by following a Rolling release, rolling-release model. The default installation is a minim ...
, an app called FOX Control Panel is available to change the color scheme of all FOX applications system-wide. It ships with the main FOX Toolkit package.


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.


Internals


Dependencies

Under hood it depends on the cross-platform libraries, which include the following: *
Open GL OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve har ...
*
OpenGL Utility Library The OpenGL Utility Library (GLU) is a computer graphics library for OpenGL. It consists of a number of functions that use the base OpenGL library to provide higher-level drawing routines from the more primitive routines that OpenGL provides. It ...
*
libjpeg libjpeg is a free library with functions for handling the JPEG image data format. It implements a JPEG codec (encoding and decoding) alongside various utilities for handling JPEG data. It is written in C and distributed as free software togeth ...
*
libpng libpng is the official Portable Network Graphics (PNG) reference library (originally called pnglib). It is a platform-independent library that contains C functions for handling PNG images. It supports almost all of PNG's features, is extensible ...
*
LibTIFF LibTIFF is a Library (computing), library for reading and writing Tagged Image File Format (abbreviated TIFF) files. The set also contains command line tools for processing TIFFs. It is distributed in source code and can be found as executable, bi ...
*
zlib zlib ( or "zeta-lib", ) is a software library used for data compression. zlib was written by Jean-loup Gailly and Mark Adler and is an abstraction of the DEFLATE compression algorithm used in their gzip file compression program. zlib is also a ...
(lz) * bzip2 for file compression


Hello World

The following example creates a FOX application and a dialog with a button on C++: #include "fx.h" int main(int argc, char *argv[]) It is also possible to create dialogs with
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (pro ...
2.2 and
Ruby A ruby is a pinkish red to blood-red colored gemstone, a variety of the mineral corundum ( aluminium oxide). Ruby is one of the most popular traditional jewelry gems and is very durable. Other varieties of gem-quality corundum are called sa ...
: ''FXPy'' #! /usr/bin/env python3 from FXPy.fox import * import sys def runme(): app = FXApp("Hello", "Test") app.init(sys.argv) main = FXMainWindow(app, "Hello", None, None, DECOR_ALL) button = FXButton(main, "&Hello, World!", None, app, FXApp.ID_QUIT) app.create() main.show(PLACEMENT_SCREEN) app.run() if __name__

"__main__": runme()
''FXRuby'' require 'fox16' include Fox application = FXApp.new("Hello", "FoxTest") main = FXMainWindow.new(application, "Hi", nil, nil, DECOR_ALL) FXButton.new(main, "&Hello, World!", nil, application, FXApp::ID_QUIT, LAYOUT_FILL_X , BUTTON_TOOLBAR , FRAME_RAISED , FRAME_THICK) application.create() main.show(PLACEMENT_SCREEN) application.run()


Software built on FOX

* CFD-View – a post-processing developed by ESI Group * Abaqus/CAE – the pre- and post- processor of the
Abaqus Abaqus FEA (formerly ABAQUS) is a software suite for finite element analysis and computer-aided engineering, originally released in 1978. The name and logo of this software are based on the abacus calculation tool. The Abaqus product suite consis ...
finite element suite * bdStudio – an accurate and easy-to-use visualization tool for complex real time aerospace simulations developed by SAIC *
Intel Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the developers of the x86 seri ...
Modular Test Architecture (IMTA) * PVRShaman – a free shader-development studio from
Imagination Technologies Imagination Technologies Limited is a British semiconductor and software design company owned by Canyon Bridge Capital Partners, a private equity fund based in Beijing that is ultimately owned by the Chinese government. With its global headquar ...
* LinkCAD – a commercial format-conversion application for various CAD formats * TMP Vision and
SLIM Slim or SLIM may refer to: Arts and entertainment Fictional characters * Slim Goodbody, a fictional character who teaches about anatomy * Slim, one of the alien antagonists of the 1988 film ''Killer Klowns from Outer Space'' * Slim, the Pixl from ...
– designed to meet the needs of complex FEA models *
Kerkythea Kerkythea is a standalone rendering system that supports raytracing and Metropolis light transport, uses physically accurate materials and lighting, and is distributed as freeware. Currently, the program can be integrated with any software tha ...
– a multimethod render system *
Acronis True Image Acronis Cyber Protect Home Office (previously known as Acronis True Image) is a software package produced by Acronis International GmbH that aims to protect the system from ransomware and allows users to backup and restore files or entire systems ...
and other
Acronis Acronis International GmbH, simply referred to as Acronis, is a Swiss technology company with its corporate headquarters in Schaffhausen, Switzerland and global headquarters in Singapore. Acronis develops on-premises and cloud software with uniqu ...
products * Goggles Music Manager – a music collection manager and player * xfe – a graphical file manager for the
X Window System The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems. X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting wit ...
* TnFOX – a fork of the FOX library *
SUMO is a form of competitive full-contact wrestling where a ''rikishi'' (wrestler) attempts to force his opponent out of a circular ring (''dohyō'') or into touching the ground with any body part other than the soles of his feet (usually by thr ...
(Simulation of Urban MObility) – a traffic simulator with a GUI editor


See also

* FLTK – a light, cross-platform, non-native widget toolkit * fpGUI – a cross-platform GUI toolkit with a Visual Form Designer and a custom help document reader *
GTK GTK (formerly GIMP ToolKit and GTK+) is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both free and propriet ...
– a widget toolkit used by
GNOME A gnome is a mythological creature and diminutive spirit in Renaissance magic and alchemy, first introduced by Paracelsus in the 16th century and later adopted by more recent authors including those of modern fantasy literature. Its characte ...
applications *
gtkmm gtkmm (formerly known as gtk-- or gtk minus minus) is the official C++ interface for the popular GUI library GTK. gtkmm is free software distributed under the GNU Lesser General Public License (LGPL). gtkmm allows the creation of user interface ...
– the official C++ interface to GTK * IUP – a multi-platform toolkit for building native graphical user interfaces *
Juce JUCE is an open-source cross-platform C++ application framework, used for the development of desktop and mobile applications. JUCE is used in particular for its GUI and plug-ins libraries. It is dual licensed under the GPLv3 and a commercial l ...
* Qt – a widget toolkit used by
KDE KDE is an international Free software movement, free software community that develops free and open-source software. As a central development hub, it provides tools and resources that allow collaborative work on this kind of software. Well-know ...
* TnFOX *
Ultimate++ U++, formally known as Ultimate++ - is a C++ RAD framework that aims to reduce the code complexity of typical desktop applications by extensively exploiting C++ features. Programs created with it can work on multiple operating systems and hardwar ...
* VCF *
Widget toolkit A widget toolkit, widget library, GUI toolkit, or UX library is a library or a collection of libraries containing a set of graphical control elements (called ''widgets'') used to construct the graphical user interface (GUI) of programs. Most widg ...
*
wxWidgets wxWidgets (formerly wxWindows) is a widget toolkit and tools library for creating graphical user interfaces (GUIs) for cross-platform applications. wxWidgets enables a program's GUI code to compile and run on several computer platforms with mini ...
– a cross-platform open-source C++ widget library, wrapping native widget toolkits *
List of widget toolkits A ''list'' is any set of items in a row. List or lists may also refer to: People * List (surname) Organizations * List College, an undergraduate division of the Jewish Theological Seminary of America * SC Germania List, German rugby union ...


References


External links

*
Jeroen's interview
at
Kerkythea Kerkythea is a standalone rendering system that supports raytracing and Metropolis light transport, uses physically accurate materials and lighting, and is distributed as freeware. Currently, the program can be integrated with any software tha ...

FXRuby – Ruby bindings

FXPy – Python bindings

EiffelFox – Eiffel bindings
{{Widget toolkits Widget toolkits Free software programmed in C++ Software using the LGPL license