This project provides a simple way to write graphical-user interface (GUI) programs using the Euphoria programming language.
Euphoria is a procedural language with a relatively small core of built-in functionality. It is augmented by a wide range of modular libraries, some of which are included in a distribution; others are (and for over 20 years have been) provided by users. This project adds another such library.
Only one of the many hundred such libraries offers a native GUI (one where the components of the interface are written using Euphoria) and good though it is it only works on MS Windows 10 and with a specially-adapted version of Open Euphoria V4.1. All other GUI libraries utilise pre-existing GUI platforms, using Euphoria's capacity to access code written in the C programming language (the notion of "wrapping"), via "dll"s (MS Windows) or "so"s (Linux, etc).
Some of these libraries go "deep" into the operating system's "guts". For example, win32lib accesses the MS Windows API (Application Programming Interface), whilst EuGTK accesses the Gtk libraries which are at the heart of most Linuxes.
Others GUI wrapper libraries look for cross-platform solutions. For example, wxwidgets or IUP. The former is written in the C++ language and so needs a two-step process to create the Euphoria wrapper; the latter uses different approaches for the Windows/Linux divide, including utilising the Gtk libraries. Unfortunately this can mean that warnings can be issued when using IUP on Linux, because developments in IUP do not always keep pace with those in Gtk.
The Java programming language provides access to the Java Runtime Environment (JRE) and operates on a wide range of platforms through the Java Virtual Machine (JVM) on each machine. It is claimed that over 3 billion devices have JRE and JVM installed, so utilising the cross-platform approach has to be a sensible way to access GUI programming. That is what this project does.
This project's wrapper library originated in October 2000, developing into a final first edition in 2003 (v1.0.6). It was created and has been maintained by the University of Koblenz. You can read all about it here. This version of the Java Application Programming Interface (JAPI) included a wrapper for the Euphoria language, complete with documentation (German and English) and a full range of examples. It was based on the Advanced Windows Toolkit (AWT) which was Java's first foray into GUI programming.
Even by 2003 an alternative to AWT was available: Java Swing. Although this uses some of AWT's approaches, especially with regard to event handling, the drawing of "widgets" (the graphical components of a GUI) was much improved, to meet the rapid developments in screen resolution. In 2017 the University of Koblenz issued JAPI2 (v2.0.0), based on Java Swing, but without changing the underlying interface with the C library: so an example written for the original JAPI, using the original wrapper could now look a lot crisper and more "modern" provided the original dll/so was replaced by the newer one!
Unfortunately, the University of Koblenz did not include Euphoria in its set of languages, so this project has been developed to rectify this omission. It offers suitable dll and so libraries and re-packages the wrapper, documentation and examples. Nevertheless, the wrapper and all the examples which invoke it, can be run on all 32-bit versions of Euphoria from v2.5 to the latest release v4.0.5. (Note, however, that standard lbrary support, with modules written to work in earlier versions of Euphoria, is also needed. The necessary files are included in the include folder.)
Issues regarding later versions of Open Euphoria, including 64-bit libraries will be tackled in due course.
When complete, this distribution will offer an added feature. Java is an Object-Oriented programming (OOP) language, but JAPI is written procedurally. An alternative version of the wrapper will be made available to use with Object-Oriented Euphoria (OOEU) in a fully OOP form.
If you want to use this product on an "old" version of Euphoria, or are not sure, then choose the "Eu3" version; otherwise chooose the "Eu4" version. Either can be downloaded separately (see the zip files) or you can download both versions together. Either way the resulting folders and files are a complete set of libraries and examples.
Please remember that, at present, the libraries are 32-bit only.
The wiki uses Markdown syntax.