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 to ...
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 users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
s (GUIs) using the programming languages
C,
Perl
Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offici ...
,
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, electronics, and software programming. A prototype is generally used to ...
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++
C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
code, or simply writing C to the
application programming interface
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how t ...
(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 th ...
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 serv ...
,
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 proprie ...
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 ...
, and
Motif-
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 w ...
in older Unices. It also provides some custom developed controls using graphics APIs such as
CD - Canvas Draw
The compact disc (CD) is a digital optical disc data storage format that was co-developed by Philips and Sony to store and play digital audio recordings. In August 1982, the first compact disc was manufactured. It was then released in Octo ...
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 hardwa ...
.
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 serv ...
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 ...
,
* 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 ...
types, but retaining the
prototype
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, electronics, and Software prototyping, software programming. A prototyp ...
Lua-style hierarchy of inheritance.
* An
abstract 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 th ...
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-width encoding, 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'' ...
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 comp ...
.
IUP has been in development at least since the 1.8 version issued in 1998. It was begun in collaboration with
Petrobras
PetrĂ³leo Brasileiro S.A., better known by the portmanteau Petrobras (), is a state owned enterprise, state-owned Brazilian multinational corporation in the petroleum industry headquartered in Rio de Janeiro, Brazil. The company's name transla ...
.
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