README (May 12, 1993, last updated Dec. 16, 1994) Xm++/CommonInteract User Interface Development System =================== Xm++ is a user interface framework for the C++ language. It is designed to be a simple and intuitive programming interface to access the functionality of commonly used GUI toolkit objects. The first release was completely built upon X11 and the X-Toolkit. Over the time Xm++ turned into an experimental system for developing multi platform and client/server GUIs. Today the implementation supports Motif, Xaw (to a limited extent) and TIP/RCI - the Toolkit Interface Protocol, a c/s GUI which allows Xm++ applications to run over a network and/or on non-UNIX systems. (See the release notes for more info on TIP.) Xm++ has been developed independendly from Motif++ or other commercial/free widget wrapper libraries, and it's general approach is quite different. While other libraries are designed strictly after Motif's widget hierarchy, Xm++ was specified to provide a simple programming interface. Many ideas for the Xm++ architecture came from Digitalk's Smalltalk version, which provides an easy to use framework for Windows/PM/Mac applications. Top level objects in Xm++: * 'Windows', 'SystemDialogs' and 'ToolBoxes' which use the automatic layout feature of various composite widgets in Motif and Xaw * 'UserDialogs' which can be individually laid out with a user interface builder (a first version of such a dialog editor is included in this distribution) Controls (children of top level objects): 'staticText', 'staticImage', 'pushButton', 'checkBox', 'radioButton', 'edit', 'listBox', 'comboBox', 'groupBox', 'paneArea', 'drawing', 'toolBar' The staticImage and all the button classes can display b/w (X-bitmap format) or color (GIF format) pictures as an alternative to a label text. Event handling is done by a simple but easy to use mechanism which redirects Xt callbacks to member functions of Xm++ objects. CommonInteract-2 is built upon the Xm++ drawing class and provides components for building direct manipulative applications. Is is a very simplified implementation of some features from the CommonInteract system (research project of our institute in 1991), an approach to define a software achitecture for implementing direct manipulative applications with multiple interaction media (i.e. sound, alternative input devices). If you are interrested, look into the June 1993 issue of the JOOP (SIGS Publications - Journal of Object Oriented Programming) - there should be our paper about CommonInteract (but be aware, that it is our 'state of the art' from 1991). CommonInteract-2 is still undocumented and is included because it was used to implement the dialog editor. It currently supports drawing primitives (lines, rectangles, circles...) and bitmaps. Known problem: the Xm++ drawing class has no redrawing strategy (always redraws the whole window, even after minimal changes like selecting an object). But, nearly all of today's displays are fast enough to let one forget about this shortcoming. (Only my Linux PC at home has a very slow graphics adapter that reminds me of this... ;-) About this release: ------------------- With this implementation we don't want to compete with any commercial product. We created our own framework because after evaluation of many existing products for different languages we wanted to test our own approach for a C++ framework. From our point of view we succeeded with this and we benefit from having Xm++ as an experimentation platform for different GUI research projects. But we also use it to write applications which are usually running without problems on a variety of platforms. So be aware that Xm++ is still incomplete and may have bugs. But if one of our local users (or one of the brave Xm++ fans out on the internet) lacks some functionality it is typically added during a few days. CommonInteract development has been continued over the years and it has also been used for writing several applications. But up to now I have not been able to start a documentation project, so you are still on your own when you want to use it. (Some brave people out there really made it, they started from two supplied examples and the dialog editor source...) Platforms: ---------- this release was compiled and tested by the author on: HP9000/720 running HP-UX 8.07 and 9.01 SUN SPARC running SunOS Release 4.1.3 IBM RISC6000 running AIX 3.2 PC-AT386/486 running Linux v0.99pl14 SGI Indy/Indigo running IRIX 4.0.5 and I'm also told that it runs on DEC-Stations (using g++). Thanks to R. DeMillo at M.I.T./Lincoln Labs for most of the SGI patches. The whole stuff was initially developed using an AT&T standard C++ compiler and then 'ported' to be useable with g++. This release should compile with an AT&T compiler version 2.1 and above and with GNU g++ 2.5.X and 2.6.0. If you use other compilers and have troubles when compiling Xm++ please send a mail with an error description. Where to get it: ---------------- The recent version should be available on: ftp.x.org as: /contrib/devel_tools/Xm++.0.*.tar.gz and: sunsite.unc.edu as: /pub/Linux/X11/devel/Xm++.0.*.tar.gz and on many other ftp servers that are mirroring the above. (send a mail to the address below if you cannot find it there) Our local ftp server is regulary updated and may have additional alpha stuff: sokrates.ani.univie.ac.at (131.130.32.110) login: ftp (anonymous) directory: /pub/Xm++ files: Xm++.0.??.* (always get the last one) Where to find more information: ------------------------------- the .../doc/xmplus directory contains README - this file README.X.X - some notes about the recent release README.HISTORY - change log of Xm++ versions INSTALL - how to build the libraries and examples README.GNU - problems and limitations when using old gcc versions usersGuide.txt - a tutorial how to use Xm++ reference.txt - a first try of a Xm++ class reference manual the README file in the .../src/xmplus/samples gives a brief description for each of the sample programs; Copyright: ---------- Xm++/CommonInteract is free only for non-profit purposes, but it isn't expensive at all when you find it suitable for your commercial project. See the file .../COPYRIGHT and mail us for details. Send any comments, bug reports and donations to the Author: Bernhard Strassl Vienna User Interface Group Institute for Applied Computer Science and Information Systems University of Vienna Lenaugasse 2/8, A-1080 Wien, Austria e-mail: xmplus@ani.univie.ac.at