Article 34865 of comp.sys.amiga.programmer:
Path: news.csos.orst.edu!gaia.ucs.orst.edu!umn.edu!spool.mu.edu!howland.reston.ans.net!xlink.net!fauern!rrze.uni-erlangen.de!cip.informatik.uni-erlangen.de!orknorr
From: orknorr@cip.informatik.uni-erlangen.de (Oliver Knorr)
Newsgroups: comp.sys.amiga.programmer
Subject: PRERELEASE ANNOUNCEMENT: Oberon User Interface
Date: Sun, 18 Jul 1993 17:23:05 GMT
Organization: Student Pool, CSD, University of Erlangen, Germany
Message-ID: <22c0tpE41j@uni-erlangen.de>
NNTP-Posting-Host: faui00b.informatik.uni-erlangen.de
Lines: 123

I'm currently working on a new Oberon-2 class library for
Amiga Oberon 3.0 and Amiga Release 2.04 and higher called
"Oberon User Interface" (short OUI) for easy creation of
graphical user interfaces.
 
This class library provides you a "GUI"-class for windows
with a graphical user interface. To construct the GUI,
there is an abstract class "Element", on which everything
else is based. Subclasses of Element available now are
for example different gadgets from gadtools.library, "Groups"
to describe the layout of your GUI, "Frames" to render
different kinds of frames around your Elements and so on.
 
Here is an excerpt from the documentation of OUI
about its advantages:
 
 
Oberon User Interface's special features
========================================
 
(or: why to use OUI)
 
   * only for "C"-programmers: 'O' == ('M'++)++
 
   * Oberon User Interface will be freely distributable,
     including all sources
 
   * easy creation of GUIs through objects
 
   * object oriented programming system in true Oberon-2 flavour - no
     foreign OOP system like BOOPSI must be learned
 
   * can be expanded at Oberon-2 high-level language - again no
     knowledge of BOOPSI is needed to create new OUI classes, though
     you _can_ use BOOPSI if you want to
 
   * whenever possible, no new objects at Intuition level are
     introduced by Oberon User Interface - only existing things are
     used and expanded; this gives you AUISG compliance and means your
     programs will benefit from future OS enhancements made by Commodore
 
   * leads to re-usable software - you can easily create your own
     gadget and requester toolkits and use them in all your programs
 
   * Oberon User Interface is based on hartmut Goebel's PortHandle for
     automatic event dispatching - no need to write long and
     complicated main loops
 
   * nonmodal handling of multiple windows
 
   * self-driven user interfaces can be easily created
 
   * GUI layout is not described with coordinates; layout takes place
     automatically according to the relative placement of the Elements
     described by Groups
 
   * GUIs can tell their required minimum size
 
   * GUIs are automatically font-sensitive
 
   * GUIs are automatically resizable
 
   * GUIs can adapt to new fonts and screens on the fly (no need to
     quit and restart the program)
 
   * Gadgets automatically support keyboard shortcuts
 
   * the current value/state of a Gadget can always be queried - you
     don't need to keep track of every change yourself
 
   * supports Amiga Release 3 specific features like scalable images
 
   * supports localisation of your program through locale.library
 
   * takes the screen mode's resolution and aspect ratio (obtained from
     the display database) into account for best looking GUI's
 
 
As soon as the last design issues have been settled and the
interfaces won't change much anymore, I will distribute a demo
package with the complete documentation (AmigaGuide format) and
demonstration programs in source code and executable form
over the AMINET.
 
As a small taster, here is an example how you can use OUI
to create a string gadget where a filename can be entered
with a small button at the right, showing a BOOPSI GetFile
image. Clicking on the button opens an asl.library file
requester, the filename selected there will be copied in
the string gadget. Remember, this works with all the
features mentioned above!
 
  NEW(req);
  ASLRequesters.InitFileName(req, Loc.gadgetText, Loc.requesterTitle);
 
As you can easily see, the source code is even smaller
than its explanation above :-)
 
If you now want to have a frame around that, all you
have to write is...
 
  NEW(frame);
  Frames.Init(frame, Loc.sayYesToOUI, req);
 
...and that's about how complicated everything in OUI gets.
 
Of course there are checkbox gadgets, buttons, textdisplays,
fuelgauges, cycle gadgets, spaces and so on, too. But what's
really special about OUI is the easy expandability. Because
everything is written in Oberon-2, a programming language that's
object-oriented itself, writing even complex subclasses with
new behaviour is as easy as it could be.
 
Have a nice day,
                 Oliver.
 
 

---
      ///          Amiga Release 2 - They made it. Better than ever. 
     ///
\\\ ///   Oliver Knorr, St. Johann 6, D-91056 Erlangen, Tel. ++49 (0)9131 46363
 \\X//              INTERNET: orknorr@cip.informatik.uni-erlangen.de  


