FLUID

Last updated
FLUID
Fl code view.png
FLUID's code view window shows how the C++ output would look like if written on the disk.
Stable release 1.3.5 (March 3, 2019;7 months ago (2019-03-03) [1] ) [±]
Preview release 1.4.x-20190329-7a3af40e (March 29, 2019;6 months ago (2019-03-29)) [±]
Type
License GNU Lesser General Public Licence
Website www.fltk.org
FLUID widget list window FLUID-01.jpg
FLUID widget list window

FLUID (Fast Light User Interface Designer) is a graphical editor and GUI builder that is used to produce FLTK source code. FLUID edits and saves its state in text .fl files, which can be edited in a text editor for finer control over display and behavior. [2]

A graphical user interface builder, also known as GUI designer, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in source-code, with no visual feedback until the program is run.

FLTK library

Fast Light Toolkit is a cross-platform widget library for graphical user interfaces (GUIs), developed by Bill Spitzak and others. Made to accommodate 3D graphics programming, it has an interface to OpenGL, but it is also suitable for general GUI programming.

In computing, source code is any collection of code, possibly with comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source code. The source code is often transformed by an assembler or compiler into binary machine code understood by the computer. The machine code might then be stored for execution at a later time. Alternatively, source code may be interpreted and thus immediately executed.

Contents

After designing the application, FLUID compiles the .fl file into a .cxx file, which defines all the objects from the .fl file, and an .h file, which declares all the global ones. [3] FLUID also supports localization of label strings using message files and the GNU gettext or POSIX catgets interfaces. [4]

Internationalization and localization process in which software is made accessible to people in different areas of the world

In computing, internationalization and localization (AmE) or internationalisation and localisation (BrE) are means of adapting computer software to different languages, regional peculiarities and technical requirements of a target locale. Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes. Localization is the process of adapting internationalized software for a specific region or language by translating text and adding locale-specific components. Localization uses the infrastructure or flexibility provided by internationalization.

GNU Unix-like operating system

GNU is an operating system and an extensive collection of computer software. GNU is composed wholly of free software, most of which is licensed under the GNU Project's own General Public License (GPL).

In computing, gettext is an internationalization and localization system commonly used for writing multilingual programs on Unix-like computer operating systems. One of the main benefit of gettext is that it separates programming from translating. The most commonly used implementation of gettext is GNU gettext, released by the GNU Project in 1995. The runtime library is libintl. gettext provides an option to use different strings for any number of plural forms of nouns, but it has no support for grammatical gender.

A flowchart showing the steps needed to compile FLUID-generated code Fluid compilation flowchart.svg
A flowchart showing the steps needed to compile FLUID-generated code

A simple program can be made by putting all non-interface code (including a main function) into the .fl file, thus making the .cxx file a single source file to compile. Most programs are more complex than this, so other .cxx files can be written that call the FLUID functions. These .cxx files must #include the .h file, or they can #include the .cxx file so it still appears to be a single source file.

Normally the FLUID file defines one or more functions or classes, which output C++ code. Each function defines one or more FLTK windows, and all the widgets that go inside those windows.

C++ General-purpose programming language

C++ is a general-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significantly over time, and modern C++ has object-oriented, generic, and functional features in addition to facilities for low-level memory manipulation. It is almost always implemented as a compiled language, and many vendors provide C++ compilers, including the Free Software Foundation, LLVM, Microsoft, Intel, Oracle, and IBM, so it is available on many platforms.

Widgets created by FLUID are "named", "complex named", or "unnamed". A named widget has a legal C++ variable identifier as its name (i.e. only alphanumeric and underscore), and is defined by a global variable or class member that will point at the widget after the function defining it is called. A complex named object has punctuation such as '.' or '->' or any other symbols in its name. In this case, FLUID assigns a pointer to the widget to the name, but does not attempt to declare it. This can be used to get the widgets into structures. An unnamed widget has a blank name and no pointer is stored.

Widgets may either call a named callback function that one writes in another source file, or one can supply a small piece of C++ source and FLUID will write a private callback function into the .cxx file.

Code View window

While editing the program FLUID the user can look at the Code View window which shows exactly how the C++ output of the program would look. The Code View window supports auto refreshing (when something in the program is changed, Code View will automatically change the source code being shown) which can be disabled by the user. It won't let the user change the code being shown through it. Code View is part of FLUID and is not automatically shown on startup. It can be enabled through FLUID's menu.

Widget bin window

FLUID's widget bin window FLUID's widget bin.png
FLUID's widget bin window

See also

Glade Interface Designer graphical rapid application development program

Glade Interface Designer is a graphical user interface builder for GTK+, with additional components for GNOME. In its third version, Glade is programming language–independent, and does not produce code for events, but rather an XML file that is then used with an appropriate binding. See List of language bindings for GTK+ for the available ones.

Qt Creator QT development environment

Qt Creator is a cross-platform C++, JavaScript and QML integrated development environment which is part of the SDK for the Qt GUI application development framework. It includes a visual debugger and an integrated GUI layout and forms designer. The editor's features include syntax highlighting and autocompletion. Qt Creator uses the C++ compiler from the GNU Compiler Collection on Linux and FreeBSD. On Windows it can use MinGW or MSVC with the default install and can also use Microsoft Console Debugger when compiled from source code. Clang is also supported.

Rapid-application development (RAD), also called rapid-application building (RAB), is both a general term, used to refer to adaptive software development approaches, as well as the name for Terry Barraclough's approach to rapid development. In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even in place of design specifications.

Related Research Articles

wxWidgets widget toolkit for creating graphical user interfaces

wxWidgets 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 minimal or no code changes. A wide choice of compilers and other tools to use with wxWidgets facilitates development of sophisticated applications. wxWidgets supports a comprehensive range of popular operating systems and graphical libraries, both proprietary and free, and is widely deployed in prominent organizations.

In computer programming, a callback, also known as a "call-after" function, is any executable code that is passed as an argument to other code that is expected to call back (execute) the argument at a given time. This execution may be immediate as in a synchronous callback, or it might happen at a later time as in an asynchronous callback. Programming languages support callbacks in different ways, often implementing them with subroutines, lambda expressions, blocks, or function pointers.

Widget (GUI) Element of interaction in a graphical user interface

A control element in a graphical user interface is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through direct manipulation to read or edit information about an application. User interface libraries such as Windows Presentation Foundation, GTK, and Cocoa, contain a collection of controls and the logic to render these.

PyQt GUI Library for Python

PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing. It is available under similar terms to Qt versions older than 4.5; this means a variety of licenses including GNU General Public License (GPL) and commercial license, but not the GNU Lesser General Public License (LGPL). PyQt supports Microsoft Windows as well as various flavours of UNIX, including Linux and MacOS.

CMUCL is a free Common Lisp implementation, originally developed at Carnegie Mellon University.

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.

Magic User Interface

The Magic User Interface is an object-oriented system by Stefan Stuntz to generate and maintain graphical user interfaces. With the aid of a preferences program, the user of an application has the ability to customize the system according to personal taste.

thinBasic is a BASIC-like computer programming language interpreter with a central core engine architecture surrounded by many specialized modules. Although originally designed mainly for computer automation, thanks to its modular structure it can be used for wide range of tasks.

A foreign function interface (FFI) is a mechanism by which a program written in one programming language can call routines or make use of services written in another.

CEGUI graphical user interface software library for the C++ programming language

Crazy Eddie's GUI (CEGUI) is a graphical user interface (GUI) library for the programming language C++. It was designed for the needs of video games, but is usable for non-game tasks, such as applications and tools. It is designed for user flexibility in look-and-feel, and to be adaptable to the user's choice in tools and operating systems.

GTK-server is an open-source project released under the GNU General Public License. The GTK-server project aims to bring Graphical User Interface programming to any interpreted language using the GIMP Tool Kit (GTK) or XForms.

A software widget is a relatively simple and easy-to-use software application or component made for one or more different software platforms.

Ultimate++ is a C++ rapid application development cross-platform development framework which aims to reduce the code complexity of typical desktop applications by extensively exploiting C++ features.

Lively Kernel

The Lively Kernel is an open-source web programming environment. It supports desktop-style applications with rich graphics and direct manipulation abilities, but without the installation or upgrade troubles of conventional desktop applications. Development began at Sun Microsystems Laboratories in Menlo Park, California, and later moved to the Hasso Plattner Institute in Potsdam-Babelsberg near Berlin.

QML is a user interface markup language. It is a declarative language for designing user interface–centric applications. Inline JavaScript code handles imperative aspects. It is associated with Qt Quick, the UI creation kit originally developed by Nokia within the Qt framework. Qt Quick is used for mobile applications where touch input, fluid animations and user experience are crucial. QML is also used with Qt3D to describe a 3D scene and a "frame graph" rendering methodology. A QML document describes a hierarchical object tree. QML modules shipped with Qt include primitive graphical building blocks, modeling components, behavioral components, and more complex controls. These elements can be combined to build components ranging in complexity from simple buttons and sliders, to complete internet-enabled programs.

Nana is a cross-platform C++ library for creating graphical user interfaces. It uses a platform-independent API and currently supports Windows and Linux(X11) platforms.

References