# Background

IUP is a multi-platform toolkit developed at Tecgraf/PUC-Rio for building graphical user interfaces.
It offers high performance via native interface elements and fast learning by the user, due to the simplicity of its API.
To use pGUI, you must include pGUI.e. The file phix\builtins\pGUI.e is a "stub include" that simply contains `include ..\demo\pGUI\pGUI.e` (same on Windows and Linux) to simplify matters. You may wish to make a copy of demo\PGUI and that stub file (and indeed the phix executables and phix/builtins) along with any important project, to ensure it is not affected in any way when a newer version of Phix is installed.
pGUI is a simple wrapper of IUP (the C version as precompiled dynamically loaded libraries). The distribution includes all the required pre-built binaries for Windows: IUP, CD and IM, 32 and 64bit. On Linux these must be installed separately, see demo\pGUI\linux\installation.txt (if anyone can turn that into a proper script then let me know). A finished (precompiled) application that uses pGUI must also install the appropiate subdirectory containing the required binaries (ie pGUI\win32|lin32|win64|lin64). Newer/other versions can, if required, be downloaded from:

- CD - http://sourceforge.net/projects/canvasdraw/files/ (5.13 24/05/20)
- IM - http://sourceforge.net/projects/imtoolkit/files/ (3.14 24/05/20)
- IUP - http://sourceforge.net/projects/iup/files/ (3.29 24/05/20)

(NB avoid 3.30 since that contains a bug in K_ANY, promptly fixed but only in svn, that adversely affects Edix.)

### Windows:

I went with the "dll14" builds but feel free to try one of the others. Note this requires msvcr140.dll, but you should get a plain english message and a link (https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads) if you need it. Also note that "dllw4" does not contain iupweb.dll, but you can get away without that as long as you don’t invoke IupWebBrowser, and that particular build has the advantage of not needing any C++ runtimes to be installed.
Be advised that downloads from sourceforge can sometimes be fast, but sometimes slow, flakey, and maybe incomplete (as widely reported), so verify things with eg the 7-zip "test" button.

### Linux:

It would be nice if I could offer you something better, ideally a fully tested and easy to run shell script, but for now this (from Feb 2022) will have to do: (https://openeuphoria.org/forum/m/136685.wc) Obviously any help with all that would be much appreciated.
pGUI is (being) built from the ground up, testing and documenting each routine as it is added, hence there will be many that are not yet available. If in any doubt, please check the official documentation available at http://www.tecgraf.puc-rio.br/iup/. I have stuck with the C names, on the basis of easing both translation from C code, and searching for C and/or pGUI code snippets with just the one shot. (Besides, if you really want other names, a thin wrapper around pGUI.e should not be particularly difficult!)
Credit is also due to Jeremy Cowgar and Greg Haberek; pGUI contains code cherry picked from both.
A recent find is http://search.cpan.org/~kmx/IUP-0.303/lib/IUP.pod which struck me as pretty good, albeit perl based. If I ever get the time, I may one day remodel this documentation based on that (as opposed to the current system of hunting and pecking through the official docs).