OpenExposition is a library aimed at automatic generation of user interfaces. The programmer only needs to specify what parts of the application need to be exposed to the user, and OpenExposition does the rest.
At present, OpenExposition allows access to variables (either directly or through a pair of set/get methods), and class methods. It can construct the user interface graphically (using either the multi-platform FLTK library or Cocoa on Mac OS X), programatically (through Python), aurally (using the speech synthesis and recognition capabilities on Mac OS X), and by building MAX/MSP externals that can then be used in MAX/MSP.
There are many devices, environments (real and virtual), and modes of communication that we would like to use to communicate with software. Given any particular application, it is impossible to write a custom user interface for each one of these devices/environments/modes. It would be nice to have a library that makes it easy for the application programmer to specify what exactly needs to be communicated between the application and the user, and have that be the only thing that needs to be specified. It should be up to the library to add support for new devices, and most importantly, to make it easy for the user to communicate with the application.
Personally, I can see this library being of use in the artistic/scientific/research setting, where I often need to interactively test new algorithms, shout at the computer from the stage and have it shout back, run scripted data analysis, and export my algorithms to other environments such as MAX/MSP. Specifying the UI once and being able to do all that for free is nice.
This library is currently at a decent prototype stage. In turn, it can be used to quickly test and evaluate application objects in development. It can compile on multiple platforms, and automatically generate many kinds of UI. It currently offers:
- Support for Mac OS X, MS Windows, and Linux.
- Exposition of class variables and simple methods to the user.
- Exposition properties, such as "read only", "influences" etc, which intuitively guide UI construction.
- Automatic GUI construction via a simple layout manager (GUI elements are stacked in a window).
- Support for both Cocoa and FLTK GUI libraries.
- Speech based access to exposed elements on Mac OS X.
- Embedded Python scripting that can be used to access exposed elements programatically.
- Easy building of self-contained Python modules that can be imported into other Python systems. (see Python Modules Tutorial)
- Easy building of MAX/MSP externals for any objects with an OpenExposition interface. (see MAX/MSP Externals Tutorial)
The development of this project is hosted on SourceForge at http://sourceforge.net/projects/openexposition/.
Check there for downloads.
Instructions for downloading and installing/building OpenExposition can be found on the Installation page. You are HIGHLY encouraged to read them.
These pages have been constructed using Doxygen, and contain all of the available documentation. For an overview of how OpenExposition works and how it can be used, see the OpenExposition Introduction
The ultimate goal of this project is to make UI construction automatic, user-sensitive, and context-sensitive. The immediate goals concentrate on making a good design base to ease the growth of this project and attract other developers. In the short term, we hope to:
- Document the library well.
- Compile OpenExposition using GNUStep.
In the long term, the following is on the agenda:
- Continue improving the GUI layout manager.
- Encapsulating exposed elements as methods/variables of enclosing Python objects (currently the elements are referred to by get, set, and call methods of the enclosing object).
- Making use of a more flexible and multi-platform speech recognition system.
OpenExposition is currently being developed by Stjepan Rajko, and released under the GNU GPL
. If you are interested in joining the development or providing feedback or advice, please contact me! (contact info at http://randomaxis.info/
- See also:
- OpenExposition Introduction, Licensing Information, Installation Information, Directory Tree Information.
Documentation generated on 14 Jun 2006 for OpenExposition by
Development hosted by