Annotated edit history of
ToolKit version 4, including all changes.
View license author blame.
Rev |
Author |
# |
Line |
1 |
AristotlePagaltzis |
1 |
[GUI] [ToolKit]s are libraries written to ease the task of writing [GUI] applications by abstracting the drudgework away from the programmer. As an added bonus, they offer a consistent look between applications that use the same one. |
|
|
2 |
|
|
|
3 |
In a [GUI] application written without a ToolKit the actual program is a long loop that continuously calls a function to poll incoming events and then feeds them into a huge switch construct that decides how to react to each event. Every single facet of the application's behaviour has to be reflected here. Needless to say, writing non-trivial applications this way is tiresome at best. |
|
|
4 |
|
|
|
5 |
A [GUI] ToolKit's main responsibility is to abstract away this event loop in a way that it can be maintained and extended easily. To this end, the different "widgets" (such as buttons, labels, menus etc) of a [GUI] are treated as black boxes. An EventModel is then specified, which defines how events "propagate" across these blackboxes. The EventModel is a large factor in the design of an application's architecture. Different [ToolKit]s tend to use very different [EventModel]s, which can cause a great deal of confusion. |
2 |
StuartYeates |
6 |
|
3 |
AristotlePagaltzis |
7 |
Popular [ToolKit]s include |
4 |
AristotlePagaltzis |
8 |
* [GTK], the GimpToolKit, written in [C] but with bindings for many other languages, is the first choice for most any serious application on Linux and foundation of the [GNOME] DesktopEnvironment |
3 |
AristotlePagaltzis |
9 |
* [Qt], written in and for [C++], is the ToolKit the [KDE] DesktopEnvironment is built on top of |
|
|
10 |
* [Tk], a rather crufty and baroque ToolKit, was originally made for [TCL], but now has bindings for several other scripting languages, most notably [Perl] |
|
|
11 |
* [AWT], the first ToolKit of the [Java] class library |
|
|
12 |
* Swing, a more modern ToolKit that superseedes [AWT] in the [Java] class library |
|
|
13 |
* [Motif], which is only of historical interest anymore |
4 |
AristotlePagaltzis |
14 |
* LessTif, a [Free] [Motif] clone, barely more interesting |