ReAction GUI is the widget toolkit engine that is used in AmigaOS 3.2–4.1.
It is an evolution of ClassAct, which is an object-oriented system of classes that enhanced the aspect of the Workbench 2.0 GUI of AmigaOS.
History
The native Amiga windowing system is called Intuition, which manages the rendering of screens, windows and basic widgets. However, until AmigaOS 2.0 there was no standardized look and feel, and often application developers had to write their own non-standard widgets (both buttons and menus), with Intuition providing little support.
Intuition was later enhanced with gadtools.library (AmigaOS 2.0 and later), which provides a set of standard widgets. AmigaOS 2.0 also introduced a standard dialog system called ASL (Amiga Standard requester Library) and the Amiga User Interface Style Guide, which defined how applications should be laid out for consistency. Intuition was improved with BOOPSI (Basic Object Oriented Programming System for Intuition) which provides an object-oriented interface on which to build an extensible set of widgets. The introduction of BOOPSI allowed third-party developers to create comprehensive widget toolkits, such as MUI and ClassAct which later evolved into ReAction.
Features
ClassACT
ClassAct is an object-oriented system of classes and gadgets developed on the BOOPSI system introduced with AmigaOS 2.0. Its main features are expandability and modularity. New classes and gadgets could be added to the system and improve it with new capabilities. ClassAct was modeled after the future direction Commodore had envisioned for the future of the OS presented at Orlando Developers Conference prior to Commodore's Bankruptcy. Programmers Christopher 'caldi' Aldi, Timothy Aston, Osma 'Tau' Ahvenlampi came together and ClassAct is a realization of that future.
Classes of ClassACT
Main classes are:
- window.class
- requester.class
- arexx.class
Main gadgets are:
- button.gadget
- checkbox.gadget
- speedbar.gadget
- space.gadget
- slider.gadget
- scroller.gadget
- radiobutton.gadget
- palette.gadget
- listbrowser.gadget
- layout.gadget
- integer.gadget
- getscreenmode.gadget
- getfont.gadget
- getfile.gadget
- fuelgauge.gadget
- clicktab.gadget
- chooser.gadget
- string.gadget
- textfield.gadget
Various styles can be applied to ClassAct gadgets, such as 3D aspect. Gadgets could have bevel borders, the font have fallback option in case the default font is too large to fit the window on the screen, Pen number to use for labels and labels fonts could be set by the user, and many, many options like these.
ReAction
ReAction is the official AmigaOS GUI builder since the OS 3.5 days. Nowadays it is being built on top of Intuition, updated and has a better and more consistent look through the apps that use it.
ReAction system of classes and gadgets is almost the same as ClassACT. It is expandable and modular as the same as ClassAct. New classes and gadgets can be added to the system with ease to enhance its features.
A simple example of this modularity is the newly-available ReAction gadget class known as piechart.gadget. The main purpose of this gadget is displaying data distribution among various sources, like shares, disk capacity and free space, etc. via a graphical pie chart. Optional interaction from the user is also possible.
Examples of minimal code
Button and String gadgets
// Button gadget #include <gadgets/layout.h> #include <proto/layout.h> #include <proto/button.h> // Sample layout: LAYOUT_AddChild,OBJ(OBJ_QUIT)=ButtonObject, GA_ID,OBJ_QUIT, GA_Text,"Quit", GA_RelVerify,TRUE, End,//Quit button gadget
// String gadget #include <gadgets/layout.h> #include <gadgets/string.h> #include <proto/layout.h> #include <proto/string.h> #include <intuition/gadgetclass.h> // Sample layout: LAYOUT_AddChild,OBJ(OBJ_STRING)=StringObject, GA_ID,OBJ_STRING, GA_RelVerify,TRUE, STRINGA_MaxChars,32, STRINGA_WorkBuffer,buffername, End,//String gadget
Other toolkits on Amiga
There are two main widget toolkits competing in the Amiga world. ReAction which is the default GUI toolkit chosen for AmigaOS 3.2-4.1 and for developing AmigaOS software, and MUI which is the default GUI toolkit chosen for MorphOS. AROS uses Zune toolkit which is an open source MUI clone.
Cygnix is a lightweight UNIX simulation environment for AmigaOS that comes with an X11 server Cygwin, and this has been used to port programs such as AbiWord or GIMP to the Amiga. A slightly related project is a GTK MUI wrapper which eventually will simplify porting of GTK based software.
Various multi-platforms graphics libraries and toolkits such as Cairo and SDL are also available on Amiga, and are the basics for creating new and enhanced Toolkits, new GUIs, new systems of widgets, etc.
There is also XML based toolkit, Feelin.
See also
- Magic User Interface (MUI)
References
- Bothwick, Neil (November 1999). "OS 3.5". Amiga Active. No. 2. Pinprint Publishing. pp. 26–29. ISSN 1467-3533.
- Vost, Ben (Christmas 1999). "Amiga OS 3.5". Amiga Format. No. 131. Future Publishing. pp. 14–17. ISSN 0957-4867.
Further reading
- Drummond, Richard (January 2000). "Program Perfection Chapter 8: Building the GUI part 2". Amiga Format. No. 132. Future Publishing. pp. 64–65. ISSN 0957-4867.
- Jedlička, Dan (January 2000). "Amiga Developer CD v2.1". Amiga Review (in Czech). No. 52. Atlantida Publishing. p. 16. ISSN 1211-1465.
- Christoph, Michael (November 2005). "Programmieren unter OS4 in der Praxis Teil 3". Amiga Future (in German). No. 57. APC&TCP. pp. 42–46.
External links
AmigaOS 4 | |
---|---|
Main companies | |
Compatible hardware | |
OS4 software | |
Technologies | |
Related and historical | |
|
List of widget toolkits | |||||||||
---|---|---|---|---|---|---|---|---|---|
Low-level platform-specific | |||||||||
On AmigaOS | |||||||||
On Classic Mac OS, macOS | |||||||||
On Windows | |||||||||
On Unix, under X11 | |||||||||
On BeOS, Haiku | |||||||||
On Android |
| ||||||||
Low Level Cross-platform | |||||||||
CLI | |||||||||
C | |||||||||
Java | |||||||||
High-level, platform-specific | |||||||||
On AmigaOS | |||||||||
On Classic Mac OS, macOS |
| ||||||||
On Windows |
| ||||||||
On Unix, under X11 | |||||||||
On Android | |||||||||
High-level, cross-platform | |||||||||
C | |||||||||
C++ | |||||||||
Objective-C | |||||||||
CLI | |||||||||
Adobe Flash | |||||||||
Go | |||||||||
Haskell | |||||||||
Java | |||||||||
JavaScript | |||||||||
Common Lisp | |||||||||
Lua | |||||||||
Pascal | |||||||||
Object Pascal | |||||||||
Perl | |||||||||
PHP | |||||||||
Python | |||||||||
Ruby | |||||||||
Tcl | |||||||||
XML | |||||||||
shell | |||||||||
Dart |