Historical eugtk, Revision 79

https://sites.google.com/site/euphoriagtk/test2.png

Overview

EuGTK is a Euphoria 4.1 wrapper for the GTK3 GUI (graphic user interface). Euphoria 4.1 is required, earlier versions 3.x and 4.0 do not work.

Euphoria/GTK code is much simpler and easier to understand than similar libraries for other programming languages.

All GTK 3 widgets are implemented and tests for each are provided. EuGTK uses an "object oriented" approach, and many difficult or complex GTK3 functions (such as creating and using a ListView) have easier-to-use alternatives written in Euphoria.

History

Built on an original concept by Dave Cuny, with help from Mike Sabal, Ron Tarrant, and others. It is currently maintained by Irv Mullins.

Platforms

EuGTK runs on Linux, Windows, and OSX. The latest version (4.12.4) Nov 2017, makes it very easy to build complex GUI interfaces for your programs. Interface can be hand-coded or designed using Glade. In many cases, the same source code can run on all three platforms without change.

The latest EuGTK version can be downloaded from http://sites.google.com/site/euphoriagtk/Home

On the Linux platform, EuGTK uses the GTK3 libraries which are installed by default with current Linux distros such as Mint or Ubuntu, etc...

EuGTK on Windows requires the appropriate GTK libraries for Windows. Apparently, only 64-bit versions are now being maintained. A link to the current 3.22 version is included in the pdf which comes with the EuGTK package.

For OSX, you must install the gtk3 package with MacPorts

Raspberry Pi 3 installation instructions are found at the bottom of this page.


Hello World in EuGTK:

---------------------------------------------------------------------------- 
--# Yet Another Hello World! program 
---------------------------------------------------------------------------- 
 
include GtkEngine.e 
 
constant -- step [1] create the widgets. parameters can be passed as key=val pairs; 
     
    win = create(GtkWindow,"border=10,icon=face-laugh,$destroy=Quit"), -- $ indicates a "signal" 
    pan = create(GtkBox,"orientation=1"), 
    lbl = create(GtkLabel,"color=blue"), 
    box = create(GtkButtonBox), 
    btn = create(GtkButton,"gtk-quit", "Quit")  
 
    -- step [2] style label text. labels can use html-style markup; 
 
    set(lbl,"markup", 
    "<b><u><span color='red'>Hello World!</span></u></b>\n\n" & 
    "This demos a simple window with\na label and a quit button.\n") 
 
    -- step [3] add the widgets to containers. 
       /*  
         GTK sizes and packs them automatically,  
         and adjusts during run-time if window size changes,  
         so no messy manual positioning is required;  
       */ 
     
    add(win,pan)      -- 'add' takes as much space as available, expanding to fill, 
    add(pan,lbl)      --  sharing with other widgets packed into same container; 
 
    pack_end(pan,box) -- 'pack' takes only as much space as needed, leaving rest free;  
    add(box,btn) 
 
-- step [4] display the widgets and enter main event processing loop; 
     
show_all(win)  
main()  

Unix:

https://sites.google.com/site/euphoriagtk/test.png

Windows:

Windows 7 showing the native windows file chooser widget: https://sites.google.com/site/euphoriagtk/_/rsrc/1510408411661/Home/NativeFileChooser.png?height=412&width=558
Windows 7 showing icons:
https://sites.google.com/site/euphoriagtk/_/rsrc/1510408451865/Home/icons.png?height=502&width=592

Raspberry Pi 3:

https://sites.google.com/site/euphoriagtk/tach.png


Installing on RPi with Raspbian (should also work if you're running Ubuntu):


Follow the links on the Downloads page to download:

  1. Arm binary for manual installation
  2. Wee
  3. EuGTK


Download the latest EuGTK, and click on the tar.gz file, read the important note, then drag the demos folder into your home folder.

Download euphoria-4.1.0-ARMv6-hardfloat-5.tar.gz Click on it, and extract to, let's say, your home folder.

Go to your home folder, and open a terminal to copy some files:

cd ~/euphoria-4.1.0-ARMv6-hardfloat/bin 
sudo cp * /usr/bin 
cd .. 
sudo mkdir /usr/share/euphoria 
sudo chmod 777 /usr/share/euphoria 
sudo rm /usr/bin/eu.cfg 
cp -r * /usr/share/euphoria 
Confirm that eui is installed:

pi@raspberrypi:~ $ eui 
Euphoria Interpreter v4.1.0 development 
   32-bit Linux, Using System Memory 
   Revision Date: 2015-02-02 14:18:53, Id: 5861:57179171dbed 
 
ERROR: Must specify the file to be interpreted on the command line 
(So far, so good!)

Replace /usr/bin/eu.cfg with the following: (will probably have to use sudo nano here)

[all] 
-eudir /usr/share/euphoria 
-i /usr/share/euphoria/include 
 
[translate] 
-arch ARM 
-gcc  
-con  
-com /usr/share/euphoria 
-lib-pic /usr/share/euphoria/bin/euso.a 
-lib /usr/share/euphoria/bin/eu.a 
 
[bind] 
-eub /usr/share/euphoria/bin/eub 

Check that it works

cd ~/demos
eui test0

Should take a few seconds, and then show the window.

Install WEE

Download WEE-master.zip Use archiver to extract to /home/pi (or /home/your_user_name)

Associate .ex files

Use file manager to navigate to ~/demos 
right-click on test0.ex 
select Properties from the popup window 
Select Open With -> Customize 
Click on Custom Command Line 
enter eui as Command line to execute: 
Enter Euphoria as the Application name 
click OK 

Double click on an .ex program to see if it works.

Trouble Shooting

If you get a long warning re: accessibility, add the setenv line to GtkEngine.e as shown below:

export constant  
	version = "4.12.2", 
	release = "Feb 1, 2017", 
	copyright = " © 2017 by Irv Mullins" 
 
setenv("NO_AT_BRIDGE","1") -- add this line here 

Notes

The Raspberry Pi 3 is a bit slow, so binding your Euphoria programs is helpful. Especially WEE and other programs you will use frequently.

Translating and compiling large EuGTK programs on the Pi is also rather slow, so you may prefer to cross-compile on a full-size PC, and then copy the executable to the Pi.

  1. Check this forum message: Cross Compile
  2. Or this wiki page: Cross Compile


Over on Linux/Mint and probably other Debian distributions, we see libgtk-3.0 is no longer installed to /usr/lib. This causes problems with the library. Until this is worked around you can modify the code so it finds the library, or you can put a symbolic link:

ln -s /usr/lib/*/libgtk-3.so.0 /usr/lib 

On Linux/32-bit, the latest eubins fail to work with this library. This is an interpreter problem and not a problem with the library itself. See ticket #933.

If the demos fail with cannot find test1.ex or something, it is because when the documentation says install to the home directory it really means you must install it there.

Search



Quick Links

User menu

Not signed in.

Misc Menu