In
computingComputing is usually defined as the activity of using and improving computer hardware and software. It is the computer-specific part of information technology...
, a
widget toolkit,
widget library, or
GUI toolkit is a set of widgets for use in designing applications with
graphical user interfaceIn 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...
s (GUIs). The toolkit itself is a piece of software which is usually built on the top of an
operating systemAn operating system is a set of programs that manage computer hardware resources and provide common services for application software. The operating system is the most important type of system software in a computer system...
,
windowing systemA windowing system is a component of a graphical user interface , and more specifically of a desktop environment, which supports the implementation of window managers, and provides basic support for graphics hardware, pointing devices such as mice, and keyboards...
, or
window managerA window manager is system software that controls the placement and appearance of windows within a windowing system in a graphical user interface. Most window managers are designed to help provide a desktop environment...
and provides programs with an
application programming interfaceAn application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...
(API), allowing them to make use of widgets. Each widget facilitates a specific user-computer interaction, and appears as a visible part of the computer's GUI. Widget toolkits can be either native or cross platform.
Widgets that are provided by a toolkit typically adhere to a unified design specification, including aesthetics, to lend a sense of overall cohesion among various parts of the application and between various applications within the GUI.
Widget toolkits also contain software to assist in the creation of window managers, as windows themselves are considered widgets. Some widgets support interaction with the user, for example labels,
buttonsIn computing, a button is a user interface element that provides the user a simple way to trigger an event, like searching for a query at a search engine, or to interact with dialog boxes, like confirming an action.-Description:A typical button is a rectangle or rounded rectangle, wider than it is...
, and check boxes. Others act as
containersIn computer science, a container is a class, a data structure, or an abstract data type whose instances are collections of other objects. In other words; they are used for storing objects in an organized way following specific access rules...
that group the widgets added to them, for example
windowsIn computing, a window is a visual area containing some kind of user interface. It usually has a rectangular shape that can overlap with the area of other windows...
,
panelsIn graphical computer software a panel is :* A widget commonly packaged as part of a Widget toolkit for a graphical user interface. See toolbar and dialog box...
, and tabs.
The
graphical user interfaceIn 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...
of a program is commonly constructed in a cascading manner, with widgets being added directly to on top of existing widgets. In many implementations application windows are added directly to the desktop by the window manager, and can be stacked layered on top of each other through various means. Each window is associated with a particular application which controls the widgets added to its canvas, which can be watched and modified by their associated applications.
Most commercial widget toolkits use
event-driven programmingIn computer programming, event-driven programming or event-based programming is a programming paradigm in which the flow of the program is determined by events—i.e., sensor outputs or user actions or messages from other programs or threads.Event-driven programming can also be defined as an...
as a model for interaction. The toolkit handles user events, for example when the user clicks on a
buttonIn computing, a button is a user interface element that provides the user a simple way to trigger an event, like searching for a query at a search engine, or to interact with dialog boxes, like confirming an action.-Description:A typical button is a rectangle or rounded rectangle, wider than it is...
. When an event is detected, it is passed on to the application where it is dealt with. The design of those toolkits has been criticized for promoting an over-simplified model of event-action, leading programmers to create error-prone, difficult to extend and excessively complex application code.
Finite State MachineA finite-state machine or finite-state automaton , or simply a state machine, is a mathematical model used to design computer programs and digital logic circuits. It is conceived as an abstract machine that can be in one of a finite number of states...
s and
Hierarchical State MachinesUML state machine is a significantly enhanced realization of the mathematical concept of a finite automaton in Computer Science applications as expressed in the Unified Modeling Language notation....
have been proposed as high-level models to represent the interactive state changes for reactive programs.
The
look and feelIn 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...
of the widgets can be hard-coded in the toolkit, but some widget toolkit APIs decouple the look and feel from the definition of the widgets, allowing the widgets to be themed. (see
pluggable look and feelPluggable look and feel is a mechanism used in the Java Swing widget toolkit allowing to change the look and feel of the graphical user interface at runtime....
).
Examples
- FLTK
FLTK 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
- FOX toolkit
The FOX toolkit is an open source, cross-platform widget toolkit, that is, a library of basic elements for building a graphical user interface...
— A fast, open source, cross-platform widget toolkit
- FrugalWidgets - A minimalistic widget set for Win32
- GNUstep
GNUstep is a free software implementation of Cocoa Objective-C libraries , widget toolkit, and application development tools not only for Unix-like operating systems, but also for Microsoft Windows. It is part of the GNU Project.GNUstep features a cross-platform, object-oriented development...
— A free software implementation of Cocoa (formerly NeXT's OpenStep) Objective-C libraries
- 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 GNOMEGNOME 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
- GraphApp, C-language based cross-platform GUI toolkit for Windows and Linux. Free and open source.
- IUP (software)
The IUP Portable User Interface is a computer software development kit that provides a portable, scriptable toolkit for GUI building using C and Lua. This allows rapid, zero-compile prototyping and refinement of deployable GUI applications....
— IUP cross platform static/dynamic library C/Lua, Lua (MIT) licence
- Juce
JUCE 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...
— An extensive cross-platform UI toolkit
- JX Application Framework
- Microsoft Foundation Classes - The most commonly used widgeting toolkit for Windows.
- WTL - Light-weight alternative to the Microsoft Foundation Classes.
- Motif
In computing, Motif refers to both a graphical user interface specification and the widget toolkit for building applications that follow that specification under the X Window System on Unix and other POSIX-compliant systems. It emerged in the 1980s as Unix workstations were on the rise, as a...
- Object Windows Library & OWLNext
The Object Windows Library is a Borland C++ object-oriented framework originally designed for WinAPI. It was used in Turbo Pascal for Windows, Borland Pascal and their Borland C++ package. It was a competitor to the Microsoft Foundation Class Library .OWL had incomplete support by the Borland C++...
- Qt
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...
— Cross-platform UI toolkit, LGPL or commercial licence, used for example in KDEKDE 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...
, Google EarthGoogle Earth is a virtual globe, map and geographical information program that was originally called EarthViewer 3D, and was created by Keyhole, Inc, a Central Intelligence Agency funded company acquired by Google in 2004 . It maps the Earth by the superimposition of images obtained from satellite...
, SkypeSkype is a software application that allows users to make voice and video calls and chat over the Internet. Calls to other users within the Skype service are free, while calls to both traditional landline telephones and mobile phones can be made for a fee using a debit-based user account system...
- Standard Widget Toolkit
The Standard Widget Toolkit is a graphical widget toolkit for use with the Java platform. It was originally developed by IBM and is now maintained by the Eclipse Foundation in tandem with the Eclipse IDE...
— SWT for Java
- Swing
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....
— JavaJava is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
widget toolkit
- Tk
Tk is an open source, cross-platform widget toolkit that provides a library of basic elements for building a graphical user interface in many different programming languages....
— Toolkit part of the TclTcl is a scripting language created by John Ousterhout. Originally "born out of frustration", according to the author, with programmers devising their own languages intended to be embedded into applications, Tcl gained acceptance on its own...
- project and often used by PerlPerl is a high-level, general-purpose, interpreted, dynamic programming language. Perl was originally developed by Larry Wall in 1987 as a general-purpose Unix scripting language to make report processing easier. Since then, it has undergone many changes and revisions and become widely popular...
and PythonPython 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...
programmers
- 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....
- Visual Component Library
VCL is a visual component-based object-oriented framework for developing Microsoft Windows applications. It was developed by Borland for use in, and tightly integrated with, its Delphi and C++Builder RAD tools...
- wxWidgets
wxWidgets 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...
— Free, extensible, cross-platform UI toolkit with a dockable user interface extension
- XForms
XForms is a GUI toolkit based on Xlib for the X Window System. It features a rich set of objects, such as buttons, scrollbars, and menus etc. In addition, the library is extensible and new objects can easily be created and added to the library....
-- Lightweight, free CC is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
toolkit, mostly for UnixUnix 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...
- Zinc
The Zinc Application Framework is a cross-platform application development framework, used for the development of GUI programs ....
- An object oriented 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...
platform independent framework
See also
- WIMP (computing)
In human–computer interaction, WIMP stands for "windows, icons, menus and pointers", denoting a style of interaction using these elements. It was coined by Merzouga Wilberts in 1980...
- Graphical user interface builder
- Layout manager
Layout managers are software components used in widget toolkits which have the ability to lay out widgets by their relative positions without using distance units. It is often more natural to define component layouts in this manner than to define their position in pixels or common distance units,...