# Product

### Overview

IUP is a multi-platform toolkit for building graphical user interfaces. It offers APIs in three basic languages: C, Lua and LED.

Its library contains about 100 functions for creating and manipulating dialogs.

IUP's purpose is to allow a program to run in different systems without changes - the toolkit provides the application portability. Supported systems include: GTK+, Motif and Windows.

IUP uses an abstract layout model based on the boxes-and-glue paradigm from the TEX text editor. This model, combined with the dialog-specification language (LED) or with the Lua binding (IupLua) makes the dialog creation task more flexible and independent from the graphics system's resolution.

Currently available interface elements can be categorized as follows:

- Primitives (effective user interaction): dialog, label, button, text, multi-line, list, toggle, canvas, frame, image.
- Composition (ways to show the elements): hbox, vbox, zbox, fill.
- Grouping (definition of a common functionality for a group of elements): radio.
- Menu (related both to menu bars and to pop-up menus): menu, submenu, item, separator.
- Additional (elements built outside the main library): dial, gauge, matrix, tabs, valuator, OpenGL canvas, color chooser, color browser.
- Dialogs (useful predefined dialogs): file selection, message, alarm, data input, list selection.

Hence IUP has some advantages over other interface toolkits available:

- Simplicity: due to the small number of functions and to its attribute mechanism, the learning curve for a new user is often faster.
- Portability: the same functions are implemented in each one of the platforms, thus assuring the interface system's portability.
- Customization: the dialog specification language (LED) and the Lua binding (IupLua) are two mechanisms in which it is possible to customize an application for a specific user with a simple-syntax text file.
- Flexibility: its abstract layout mechanism provides flexibility to dialog creation.
- Extensibility: the programmer can create new interface elements as needed.

IUP is free software, can be used for public and commercial applications.

### Availability

The library is available for several compilers:

- GCC and CC, in the UNIX environment
- Visual C++, Borland C++, Watcom C++ and GCC (Cygwin and MingW), in the Windows environment

The library is available for several operating systems:

- UNIX (SunOS, IRIX, and AIX) using Motif 2.x
- UNIX (FreeBSD and Linux) using GTK+ (since 3.0)
- Microsoft Windows XP/2003/Vista/7 using the Win32 API

### Support

The official support mechanism is by e-mail, using iup@tecgraf.puc-rio.br. Before sending your message:

- Check if the reported behavior is not described in the user guide.
- Check if the reported behavior is not described in the specific control or driver characteristics.
- Check the History to see if your version is updated.
- Check the To Do list to see if your problem has already been reported.

If all these points were checked, you can report your problem. Please specify in your message: function, attribute, callback, platform and compiler.

We host the IUP support features at SourceForge: http://sourceforge.net/projects/iup/. It provides us Mailing List, SVN Repository and Downloads.

The discussion list is available at: http://lists.sourceforge.net/lists/listinfo/iup-users.
Source code, pre-compiled binaries and documentation can be downloaded at: http://sourceforge.net/projects/iup/files/.
The SVN can be browsed at: https://sourceforge.net/p/iup/iup/.

If you want us to develop a specific feature for the toolkit, Tecgraf is available for partnerships and cooperation.

Lua documentation and resources can be found at http://www.lua.org/.

### Credits

This work was developed at Tecgraf by means of the partnership with PETROBRAS/CENPES.

Library Authors:

- Marcelo Gattass
- Luiz Henrique de Figueiredo
- Carlos Henrique Levy
- Antonio Scuri

We must also mention engineer Enio Emanuel Russo, from PETROBRAS, who effectively contributed to the system's specification and project.

We would like to thank all the people from Tecgraf that directly worked or strategically contributed to the library:

- André Carregal
- André Clinio
- André Costa
- André Derraik
- Camilo Freire
- Carlos Augusto Mendes
- Carlos José Pereira de Lucena
- Claudio Coutinho de Biasi
- Diego Nehab
- Diogo Martinez
- Guilherme Fonseca Alvarenga
- Henrique Dalcin Mendes Pinheiro
- Leonardo Constantino Oliveira
- Luiz Cristóvão Gomes Coelho
- Luiz Martins
- Mark Stroetzel Glasberg
- Mauricio Oliveira Carneiro
- Milton Jonathan
- Neil Armstrong Rezende
- Rafael Rieder
- Renato Borges
- Renato Cerqueira
- Roberto Beauclair
- Tomas Guisasola Gorham
- Vinicius Almendra

Thanks for SourceForge for hosting the support features. Thanks for the LuaForge team for previously hosting the support features for many years.

IUP is registered at the National Institute of Intellectual Property in Brazil (INPI) under the number 07569-0, and so it is protected against illegal use. The registration is valid internationally. See the Tecgraf Library License for further usage information and Copyright.

### Documentation

This documentation is available at http://www.tecgraf.puc-rio.br/iup and http://iup.sourceforge.net/

The full documentation can be downloaded from the Download Files. The documentation is also available in Adobe Acrobat and Windows HTML Help formats.

The HTML navigation uses the WebBook tool, available at http://www.tecgraf.puc-rio.br/webbook.

There are also a few presentations:

- Lua Workshop 2009 - IUP, CD and IM in Lua (http://www.lua.org/wshop09.html#Scuri) [iupcdim_wlua2009.pdf]
- PUCRS 2010 - IUP, CD and IM [iupcdim_facin2010.pdf]

### Publications

This product stimulated the following scientific publications:

- Scuri, A. "IUP - Portable User Interface". Software Developer's Journal. Dec/2005. [iup_sdj2005.pdf]
- Levy, C. H.; Figueiredo, L. H.; Gattass, M.; Lucena, C.; and Cowan, D. "IUP/LED: A Portable User Interface Development Tool". Software: Practice & Experience, 26 #7 (1996) 737-762. [spe95.pdf]
- Oliveira Prates, R.; Figueiredo, L. H.; and Gattass, M. "Especificação de Layout Abstrato por Manipulção Direta". Proceedings of VII SIBGRAPI (1994), 165-172. [sib94.pdf in Portuguese]
- Oliveira Prates, R.; Gattass, M. ;and Figueiredo, L. H. "Visual LED: uma ferramenta interativa para geração de interfaces gráficas". M.Sc. dissertation, Computer Science Department, PUC-Rio, 1994. [prates94.pdf in Portuguese]
- Levy, C. H. "IUP/LED: Uma Ferramenta Portátil de Interface com Usuário". M.Sc. dissertation, Computer Science Department, PUC-Rio, 1993.[levy93.pdf in Portuguese]
- Figueiredo, L. H.;Gattass, M.; and Levy, C.H. "Uma Estratégia de Portabilidade para Aplicações Gráficas Interativas". Proceedings of VI SIBGRAPI (1993), 203-211. [sib93.pdf in Portuguese]

Interview at the FLOSS weekly show about Free Libre Open Source Software, hosted by Randal Schwartz, in Nov 9th 2011:

- http://twit.tv/show/floss-weekly/190 or
  https://www.youtube.com/watch?v=k6KyyebX84I