IUP (software)
Encyclopedia
The IUP Portable User Interface is a computer software development kit
that provides a portable, scriptable toolkit for GUI
building using C
and Lua
. This allows rapid, zero-compile prototyping
and refinement of deployable GUI applications.
It provides this functionality by binding
Lua with its C/C++ code, or simply writing C to the API
. It supports calling native Windows
graphics, native Motif
/Lesstif
or GTK+
elements, or the developers' own CanvasDraw elements from the Lua scripts or natively in a C/C++ application.
The Lua scripting is done by binding Lua and IUPLua in (at least) a small C program called a host application. This program creates a Lua state, passes the Lua state to IUPLua for initialization, and then opens and executes a Lua script against the Lua state. Alternatively, the entire IUP state can be dynamically loaded via use of a Lua 'require' or 'package.loadlib' of IUPLua.
The script(s) can later be compiled with the luac compiler if desired.
, only the GTK+ version of IUP supports Unicode
. http://www.tecgraf.puc-rio.br/iup/en/to_do.html
http://www.tecgraf.puc-rio.br/iup/en/copyright.html
IUP has been in development at least since the 1.8 version issued in 1998. It was begun in collaboration with Petrobras
.
Software development kit
A software development kit is typically a set of software development tools that allows for the creation of applications for a certain software package, software framework, hardware platform, computer system, video game console, operating system, or similar platform.It may be something as simple...
that provides a portable, scriptable toolkit for GUI
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
building using C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
and Lua
Lua programming language
Lua is a lightweight multi-paradigm programming language designed as a scripting language with extensible semantics as a primary goal. Lua has a relatively simple C API compared to other scripting languages.- History :...
. This allows rapid, zero-compile prototyping
Rapid application development
Rapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. The "planning" of software developed using RAD is interleaved with writing the software itself...
and refinement of deployable GUI applications.
It provides this functionality by binding
Language binding
In computing, a binding from a programming language to a library or OS service is an API providing that service in the language.Many software libraries are written in systems programming languages such as C or C++...
Lua with its C/C++ code, or simply writing C to the API
Application programming interface
An application programming interface is a source code based specification intended to be used as an interface by software components to communicate with each other...
. It supports calling native Windows
Windows API
The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces available in the Microsoft Windows operating systems. It was formerly called the Win32 API; however, the name "Windows API" more accurately reflects its roots in 16-bit Windows and its support on...
graphics, native Motif
Motif (widget toolkit)
In computing, Motif refers to both a graphical user interface specification and the widget toolkit for building applications that follow that specification under the X Window System on Unix and other POSIX-compliant systems. It emerged in the 1980s as Unix workstations were on the rise, as a...
/Lesstif
LessTif
LessTif is a free software reimplementation or clone of the Motif computer programming toolkit, developed by the Hungry Programmers.As opposed to Motif, which is distributed under a proprietary license that can require the payment of royalties, LessTif is distributed under the GNU Lesser General...
or GTK+
GTK+
GTK+ is a cross-platform widget toolkit for creating graphical user interfaces. It is licensed under the terms of the GNU LGPL, allowing both free and proprietary software to use it. It is one of the most popular toolkits for the X Window System, along with Qt.The name GTK+ originates from GTK;...
elements, or the developers' own CanvasDraw elements from the Lua scripts or natively in a C/C++ application.
Features
IUP's distinguishing features include:- Built in support for Lua scripts calling IUP functions (controlled by Lua script) on WindowsMicrosoft WindowsMicrosoft Windows is a series of operating systems produced by Microsoft.Microsoft introduced an operating environment named Windows on November 20, 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces . Microsoft Windows came to dominate the world's personal...
, and LinuxLinuxLinux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
installations of IUP,
- Can also be used from native ANSI C, one of the few plain C capable toolkits,
- Removal of the restriction of class/instance object types, but retaining the Lua-stylePrototype-based programmingPrototype-based programming is a style of object-oriented programming in which classes are not present, and behavior reuse is performed via a process of cloning existing objects that serve as prototypes. This model can also be known as classless, prototype-oriented or instance-based programming...
hierarchy of inheritance.
- An abstractAbstraction (computer science)In computer science, abstraction is the process by which data and programs are defined with a representation similar to its pictorial meaning as rooted in the more complex realm of human life and language with their higher need of summarization and categorization , while hiding away the...
layout model, in which sizes and positions are calculated from horizontal and vertical containers, rather than explicit X and Y coordinates. (Coordinate-based layout is also supported with a third container type.)
- Small API, on the order of about 100 functionsFunctional programmingIn computer science, functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It emphasizes the application of functions, in contrast to the imperative programming style, which emphasizes changes in state...
.
- Use of an event loopEvent loopIn computer science, the event loop, message dispatcher, message loop, message pump, or run loop is a programming construct that waits for and dispatches events or messages in a program...
/callbackCallback (computer science)In computer programming, a callback is a reference to executable code, or a piece of executable code, that is passed as an argument to other code. This allows a lower-level software layer to call a subroutine defined in a higher-level layer....
mechanism. This main loop can be called inside Lua.
- Interface elements are created before they are mapped to the native elements. This is the reverse of the usual situation for assembling GUI elements.
- Available as source or pre-built static or dynamic libraries for wide variety of compilers, including turnkey example source.
The Lua scripting is done by binding Lua and IUPLua in (at least) a small C program called a host application. This program creates a Lua state, passes the Lua state to IUPLua for initialization, and then opens and executes a Lua script against the Lua state. Alternatively, the entire IUP state can be dynamically loaded via use of a Lua 'require' or 'package.loadlib' of IUPLua.
The script(s) can later be compiled with the luac compiler if desired.
, only the GTK+ version of IUP supports Unicode
Unicode
Unicode is a computing industry standard for the consistent encoding, representation and handling of text expressed in most of the world's writing systems...
. http://www.tecgraf.puc-rio.br/iup/en/to_do.html
License/Copyright
IUP is liberally-licensed for free use, modification, sale, and redistribution under the MIT licence.http://www.tecgraf.puc-rio.br/iup/en/copyright.html
IUP has been in development at least since the 1.8 version issued in 1998. It was begun in collaboration with Petrobras
Petrobras
Petróleo Brasileiro or Petrobras is a semi-public Brazilian multinational energy corporation headquartered in Rio de Janeiro, Brazil. It is the largest company in Latin America by market capitalization and revenue, and the largest company headquartered in the Southern Hemisphere by market...
.
Project sites
- IUP Project
- IUP-Users mailmanGNU MailmanGNU Mailman is a computer software application from the GNU project for managing electronic mailing lists.Mailman is coded primarily in Python and currently maintained by Barry Warsaw...
list and archive, at LuaForgeLuaForgeLuaForge is an open source code repository and collaborative software development management system for programmers and projects related to the Lua programming language., there are more than five hundred projects in a software catalog of LuaForge....
.