What is VisualOberon?
VisualOberon (or short 'VO') is a collection of classes written in the programming language Oberon-2. The classes are designed to let application developer easily build graphical user interfaces for programs written in Oberon-2. VO is distributed under the GNU license.
VisualOberon is not a programming language. While it sound like the Oberon version of VisualBasic, it is not an integrated developement enviroment with build in text editor, builder and that stuff. It is just a library. Nevertheless is can be the basis for such integrated enviroment.
Oberon-2 is an object orientated programming language, a successor of Pascal, designed by the famous Niklaus Wirth. It unites the famous and proofen design of Pascal (strict type system, easy to read code, easy to follow program flow, possibility to naturally structure your source code) with the modularity of Modula-2 and enhances both of them with clean, simple but powerfull object orientated concepts, including inheritance, dynamic type information, virtual methods, various access rules on class and module basis and a build in garbage collector.
VisualOberon uses OOC/oo2c as development tool, but VisualOberon in its design is not limited to that compiler. It fully bases on the language defined by the official language report and thus should be easyly adaptable to other compilers.
Main design criteria for VisualOberon
About the design...
VO tries to achieve the above mentioned goals by using themeable controls together with a layouting engine.
A layouting engine take an abstract layout description and then calculates position and size of the individual controls using the information given in the description. The concept of layouting engine isn't really new, but while there many proofen advantages most developement enviroments still use so called GUI builders for designing dialogs.
For another developement using layouting engines, see the AWT and Swing packages of the Sun Java implementation. The Java developements have wisly choosen the same solution of exactly the same set of problems.
What is already implemented?
The current implementation is build on top of X11. It was developed under Linux X11R6 and fvwm2. It is very likely to run under other Unix systems running X11, too. Linux, HP and Sun are tested and seem to be working, also using VO via a X11 server on a PC has proven to work.
The current version implements the standard controls available on most plattforms but also features some more advanced controls. See the screen shot pages for some examples.
A Windows port has also been made (80%), but its source is not up to date with the main source line anymore. It took about two weeks to do the port. So, while it takes some time, a port can be handled by only one person in a rather short time. We hope to get the windows port running again later.