The IUP Portable User Interface is a computer
software development kit
A software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific ...
that provides a portable, scriptable toolkit to build
graphical user interface
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows User (computing), users to Human–computer interaction, interact with electronic devices through graphical icon (comp ...
s (GUIs) using the programming languages
C,
Perl
Perl is a family of two High-level programming language, high-level, General-purpose programming language, general-purpose, Interpreter (computing), interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it ...
,
Lua
Lua or LUA may refer to:
Science and technology
* Lua (programming language)
* Latvia University of Agriculture
* Last universal ancestor, in evolution
Ethnicity and language
* Lua people, of Laos
* Lawa people, of Thailand sometimes referred t ...
,
Nim and
Zig
among others. This allows rapid, zero-compile
prototyping
A prototype is an early sample, model, or release of a product built to test a concept or process. It is a term used in a variety of contexts, including semantics, design
A design is a plan or specification for the construction of an object o ...
and refinement of deployable GUI applications.
IUP's purpose is to allow programs user interface to run in different systems in unmodified form.
It provides this ability by
binding Lua with its C/
C++ code, or simply writing C to the
application programming interface (API). It handles user interface elements by using native controls provided by native APIs, such as
Windows API
The Windows API, informally WinAPI, is Microsoft's core set of application programming interfaces (APIs) available in the Microsoft Windows operating systems. The name Windows API collectively refers to several different platform implementations ...
in
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ...
,
GTK+
GTK (formerly GIMP ToolKit and GTK+) is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both free and prop ...
in
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
, and
Motif
Motif may refer to:
General concepts
* Motif (chess composition), an element of a move in the consideration of its purpose
* Motif (folkloristics), a recurring element that creates recognizable patterns in folklore and folk-art traditions
* Moti ...
-
LessTif
LessTif is a defunct free software reimplementation or clone of the Motif computer programming toolkit. The project aimed for full source- and binary-code compatibility with Motif. While this was not achieved, many Motif applications could run wit ...
in older Unices. It also provides some custom developed controls using graphics APIs such as
CD - Canvas Draw or
OpenGL
OpenGL (Open Graphics Library) is a cross-language, cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. The API is typically used to interact with a graphics processing unit (GPU), to achieve ha ...
.
Features
IUP's distinguishing features include:
* ANSI C API, one of the few plain C-capable toolkits,
* Single API for
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for ...
or
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
,
* Built in support for Lua scripts calling IUP functions (controlled by Lua script),
* Removal of the restriction of class/instance
object
Object may refer to:
General meanings
* Object (philosophy), a thing, being, or concept
** Object (abstract), an object which does not exist at any particular time or place
** Physical object, an identifiable collection of matter
* Goal, an ai ...
types, but retaining the
prototype Lua-style hierarchy of inheritance.
* An
abstract
Abstract may refer to:
* ''Abstract'' (album), 1962 album by Joe Harriott
* Abstract of title a summary of the documents affecting title to parcel of land
* Abstract (law), a summary of a legal document
* Abstract (summary), in academic publishi ...
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
functions.
* Use of an
event loop In computer science, the event loop is a programming construct or design pattern that waits for and dispatches events or messages in a program. The event loop works by making a request to some internal or external "event provider" (that generally ...
-
callback
Callback may refer to:
* Callback (comedy), a joke which refers to one previously told
* Callback (computer programming), executable code that is passed as a parameter to other code
* Callback (telecommunications), the telecommunications event tha ...
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 a 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. Or, 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 Lua compiler if needed.
Support for
UTF-8
UTF-8 is a variable-length character encoding used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode'' (or ''Universal Coded Character Set'') ''Transformation Format 8-bit''.
UTF-8 is capable of ...
was added to the Windows target in November 2013 with the release of version 3.9
License, copyright
IUP is liberally-licensed for free use, modification, sale, and redistribution under the
MIT license
The MIT License is a permissive free software license originating at the Massachusetts Institute of Technology (MIT) in the late 1980s. As a permissive license, it puts only very limited restriction on reuse and has, therefore, high license co ...
.
IUP has been in development at least since the 1.8 version issued in 1998. It was begun in collaboration with
Petrobras.
References
External links
*
Lua (programming language) software
Widget toolkits
Application programming interfaces
Free computer libraries
Cross-platform free software
Software using the MIT license
Software development kits
{{free-software-stub