home *** CD-ROM | disk | FTP | other *** search
- Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!bone.think.com!paperboy.osf.org!june.osf.org!dbl
- From: dbl@osf.org (David Lewis)
- Newsgroups: comp.windows.x,news.answers,comp.answers
- Subject: comp.windows.x Frequently Asked Questions (FAQ) 6/7
- Followup-To: poster
- Date: 2 Oct 1996 20:16:34 GMT
- Organization: Open Software Foundation
- Lines: 1078
- Approved: news-answers-request@MIT.Edu
- Distribution: world
- Expires: Sun, 27 Oct 1996 00:00:00 GMT
- Message-ID: <52uij2$bs0@paperboy.osf.org>
- Reply-To: faq%craft@uunet.uu.net (X FAQ maintenance address)
- NNTP-Posting-Host: june.osf.org
- Summary: useful information about the X Window System
- Xref: senator-bedfellow.mit.edu comp.windows.x:110958 news.answers:83418 comp.answers:21529
-
- Archive-name: x-faq/part6
- Last-modified: 1996/09/26
-
- ----------------------------------------------------------------------
- Subject: 111) Where can I find X tools callable from shell scripts?
- I want to have a shell script pop up menus and yes/no dialog boxes if the user
- is running X.
-
- Several tools in the R3 contrib/ area were developed to satisfy these needs:
- yorn pops up a yes/no box, xmessage displays a string, etc. There are several
- versions of these tools; few, if any, have made it to the R4 contrib/ area,
- though they may still be available on various archive sites.
-
- XScript, a collection of X shell scripts, is on csc.canberra.edu.au under
- /pub/motif/xscript and also on ftp.x.org; it includes several stand-alone X
- applications which can be embedded in shell scripts. XScript requires
- tclMotif 1.0 or later.
-
- In addition, Richard Hesketh (rlh2@ukc.ac.uk) has posted the xmenu package to
- comp.sources.x ("v08i008: xmenu") for 1-of-n choices. [7/90]
-
- Two versions of XPrompt have been posted to comp.sources.x, the latter being
- an unauthorized rewrite. [R. Forsman (thoth@reef.cis.ufl.edu), 1/91]
-
- There is a version of XMenu available from comp.sources.x; it is being worked
- on and will likely be re-released.
-
- xp-1.1.tar.Z, xpick-1.1.tar.Z and xzap-1.1.tar.Z on ftp.x.org's R5contrib/
- are tools by Gerry.Tomlinson@newcastle.ac.UK which act as X versions of the
- simple display and choice-making tools in K&P. [4/92]
-
- ----------------------------------------------------------------------
- Subject: 112)! Where can I get an X-based debugger?
-
- The Data Display Debugger (DDD) is a Motif user interface to GDB and DBX. DDD
- provides a graphical data display in which data structures are displayed as
- graphs. A simple mouse click dereferences pointers or views structure contents.
- Sources are available via FTP from
- ftp://ftp.x.org/contrib/utilities/ddd-1.4d.tar.gz [4/96]; binaries (Sun, Linux,
- and others) are available from
- ftp://ftp.ips.cs.tu-bs.de/pub/local/softech/ddd/bin/ . See also
- http://www.cs.tu-bs.de/softech/ddd/ for reference information.
-
- Cygnus Support puts out GDBtk, which is a tcl/tk based interface that is
- compiled into GDB. GDBtk 4.15.1 is available from ftp.cygnus.com, as
- pub/gdbtk/gdbtk-4.15.1.tar.gz. [4/96]
-
- UPS is a source-level debugger which runs under the X11 (and SunView) window
- systems on Sun, DEC, and Linux platforms. It is available from
- ftp://ftp.x.org/contrib/devel_tools/ups-2.45.2.tar.Z , along with several
- binaries. Also in that archive is a 3.14 beta and a 3.7 alpha [7/95]. Rod
- Armstrong (rod@san-jose.ate.slb.com) has made some unofficial enhancements;
- they are at ftp://ftp.x.org/contrib/devel_tools/ups-2.54-RGA.README and
- ftp://ftp.x.org/contrib/devel_tools/ups-2.54-RGA.tar.gz .
-
- xdbx, an X interface to the dbx debugger, is available via ftp from
- ftp://ftp.x.org/R5contrib/xdbx2.1.tar.Z . The current and apparently final
- version [1/91] is 2.1 patchlevel 2.
-
- An X interface to gdb called xxgdb is similar to xdbx 2.1.2.
- Sources are on ftp://ftp.x.org/R5contrib/xxgdb.108.tar.gz [3/96].
-
- mxgdb is a Motif interface to gdb by Jim Tsillas (jtsillas@proteon.com);
- version 1.2.1 is on ftp://ftp.x.org/contrib/devel_tools/mxgdb-1.2.1.tar.gz
- [3/96].
-
- Also:
-
- Certain vendors (MIPS, Sun, SCO) ship X-based debuggers. Sun's SPARCworks is
- an integrated development environment.
-
- CenterLine's CodeCenter (617-498-3000) source-level debugger, available on most
- major platforms, includes an X-based interface.
-
- The PDB debugger is part of the OI distribution.
-
- The Energize Programming System developed by Lucid and now sold by Tartan
- is a tightly-integrated development
- environment for C and C++ programs. Energize incorporates a graphical user interface
- on top of an extended version of gdb. Info: tnt-support@tartan.com,
- +1 412-856-3600.
-
- ----------------------------------------------------------------------
- Subject: 113) Is there a "pseudo-tty" or fake X display I can use?
-
- Applications often have a need to run against an X display which isn't tied
- to a physical display -- perhaps to make a screendump, or to run when the
- software expects to have an open display. In these cases, the X Virtual Frame
- Buffer can be used. It is a full X server which doesn't open any devices (the
- output can be a memory-mapped file) but which otherwise behaves as an X
- display. It is also useful for testing. The Xvfb is part of the X11R6
- distribution, in programs/Xserver; set the configuration option in
- config/{machine}.cf to build the distribution with this server.
-
- ----------------------------------------------------------------------
- Subject: 114)! How can I "tee" an X program identically to several displays?
-
- There are several protocol multiplexor tools which provide for the
- simultaneous display of X clients on any number of machines. This ability to
- echo one display onto another is useful for demo purposes, for teaching, and
- for testing. Other related programs are useful as conferencing mechanisms;
- they typically involve several parties, with the results of the electronic
- conference visible on all screens:
-
- XMX (an X Protocol Multiplexor) is a standalone utility for sharing an X
- Window System session on multiple displays. XMX takes advantage of the
- networked nature of the X Window System by acting as an intermediary between
- X clients and X servers. In this way, XMX works with any X clients and any X
- servers, without the need to modify either. XMX accepts multiple X client
- connections, and displays client graphics on multiple X displays. XMX paints
- the same graphics on all servers, providing a WYSIWIS (What You See Is What I
- See) environment. An upcoming version is being developed. In the current
- version, one machine controls input while all others are passive observers,
- an arrangement which does not allow private work. XMX version 1 multicasts a
- complete X session (as opposed to individual windows) to any number of X
- servers. The X server which provides input to the shared X client
- applications (the "master") is established at setup time and remains fixed
- throughout the session. Similarly, the "slave" servers which participate in
- the multicast are established at the start. There is no facility for adding
- or removing a server to or from the session. The software is available at
- ftp://ftp.cs.brown.edu/pub/xmx-1.1.tar.Z . For more info see
- http://www.cs.brown.edu/software/xmx/ . [6/96]
-
- XTV is a conference program which can be used to duplicate the "chalkboard"
- on several displays. Release 1 is available on the X11R5 contrib tapes; a
- more recent version [7/95] is on ftp://ftp.cs.odu.edu/pub/wahab/XTV/ ;
- binaries for several systems and source are there. Information:
- wahab@cs.odu.edu. [6/96]
-
- Shared X, a modified X library to give dynamic multi-display support, by
- Michael Altenhofen (altenhofen@kampus.enet.dec.com), was
- done as part of the NESTOR project being conducted at Digital CEC Karlsruhe
- in collaboration with the University of Karlsruhe. (The NESTOR project is
- described in "Upgrading A Window System For Tutoring Functions", Michael
- Altenhofen et al., in the proceedings of the EXUG Conference 11/90.)
- It provides "naive" X applications with the capability to
- work with several displays simultaneously, dynamically add and remove
- new displays and hand input control from display to display.
- shX was mainly intended to be used in a student/tutor environment,
- where the tutor would need to see the students current work, make some
- modifications to it on-line and would then drop out of the application
- again. It may be generally useful for group work and presentations.
- Sources are on ftp://ftp.x.org/R5contrib/shX.tar.Z . [6/96]
-
- Modifications to shX for color mapping and private color allocation by Mark
- J. Handley (M.Handley@cs.ucl.ac.uk) are on
- ftp://cs.ucl.ac.uk/car/shX.ucl.tar.Z .
-
- XTrap is an extension to X that facilitates user emulation; it can be used to
- record and then replay an X session. Device input synthesis, device input
- monitoring, and grapics request output monitoring are supported by XTrap.
- XTrap comes with a client-side library which makes the new functionality
- easier to use in an X application. XTrap also comes with sample clients
- which demonstrate the various capabilities of the extension and library.
- Please see the man page within programs/xtrap/xtrap.man for more
- information. It is available as
- ftp://ftp.x.org/contrib/extensions/XTrap_R6_v34.tar.Z . (Note: the XTEST and
- RECORD extensions in R6 provide input synthesis and protocol recording
- respectively. Taken together, they provide functionality similar to XTrap.)
- [6/96]
-
- The program "wscrawl" is a demo of the networking capabilities of X-Windows.
- Wscrawl can be thought of as a paint program shared between multiple people,
- displays, and workstations. Any number of people can draw independently of
- each other, yet they all work on the same picture. The word "wscrawl" stands
- for "window-scrawl". The user may think of wscrawl as a paint program shared
- by any number of people at the same time. When wscrawl is run, it opens up a
- separate window on each participant's display. From that point onward, each
- participant sees the actions and ideas of every other participant as they
- occur. Each individual may simply watch, or participate at any moment. Any
- individual may exit out of the session at any time without affecting the
- other participants. Sources are on
- ftp://sunsite.unc.edu//pub/archives/comp.sources.x/wscrawl/part01.Z . [6/96]
-
- Shdr (by Rank Xerox EuroPARC) implements a simple shared whiteboard, with
- scribble-style drawing and text drawing. The drawing surface is entirely
- shared and entirely unstructured, being simply a bit plane. The mouse acts
- either as a pen (in 'draw') mode or an eraser (in 'erase' mode). When no
- mouse button is pressed, it acts as a pointing device; movements are echoed
- on the remote screen. It features continuous telepointing to both sides, so
- there's no mode switch between marking, pointing and entering text. There's
- no chalk-passing mechanism; both sides can make/erase marks at once. The
- drawing object is replicated on both sides, so that the network traffic is
- reduced. Sources are on ftp://parcftp.xerox.com/pub/europarc/shdr.tar.Z 1.3a
- appears to be the final version. [6/96]
-
- xmove is a pseudoserver (aka proxy server) which allows you to dynamically
- move an X application between servers See The X Resource (Summer 1994) for an
- article on the motivation for and construction of xmove. Version 1.2f is
- current [6/96]; sources are on ftp://ftp.cs.columbia.edu/pub/xmove/ .
-
- Vartalaap is a multiparty multimedia conferencing system that works over Unix
- sockets; the interface is based on XView. It's available at
- ftp://ftp.x.org/R5contrib/vartalaap.tar.Z.
-
- Collage is a synchronous collaborative data analysis tool for use over the
- Internet. Features include a shared whiteboard, screen capture/sharing, a
- shared text editor, and data-analysis tools. Sources are on
- ftp://ftp.ncsa.uiuc.edu/UNIX/XCollage/Collage1.3/ .
-
- TeamRooms provides "shared spaces" on the Internet allowing groups to share
- information. These electronic team rooms provide places to meet in
- real-time, or a common locale to leave information for other collaborators.
- TeamRooms combines real-time groupware technologies such as shared
- whiteboards, chat rooms, and customizable groupware applets with a persistent
- work environment. A beta 1.0 is at
- http://www.cpsc.ucalgary.ca/projects/grouplab/teamrooms/ , for several
- systems. [8/96]
-
- GroupKit is a Tcl/Tk extension that provides facilities for building
- real-time groupware applications such as shared whiteboards, meeting tools,
- games, discussion tools, etc. The package comes with over 30 sample
- groupware applications/demos.
- http://www.cpsc.ucalgary.ca/projects/grouplab/groupkit/ . [9/96]
-
- GroupKit is a Tcl/Tk extension that provides facilities for building
- real-time groupware applications such as shared whiteboards, meeting tools,
- games, discussion tools, etc. Version 3.2 was released 8/96. Sources are on
- http://www.cpsc.ucalgary.ca/projects/grouplab/groupkit/ .
-
- Also of use [commercial products not recently confirmed]:
-
- X/TeleScreen is a commercial implementation of a "tee"ing program.
- Information: info@nis.com.
-
- Hewlett-Packard Co. has a commercial product, "HP SharedX" which works under
- HP-UX currently on their 300, 400, and 700 series workstations and their HP
- 700/RX X Stations. Machines receiving shared windows can be any X server.
- HP SharedX consists of a server extensions and a Motif based user interface
- process. Contact your local HP sales rep. for more information.
-
- IBM offers a commercial product.
-
- Sun offers multi-user confering software called ShowMe.
-
- InSoft (Mechanicsburg, PA, USA, 717-730-9501) offers multi-user conferencing
- software called Communique. Version 3.0 is available on Sun and HP
- platforms.
-
- TeamConference is a product which allows real-time sharing of X windows. For
- more info: http://www.spectra.com/products/teamC.html .
-
- [Thanks in part to scott@spectra.com (Tim Scott), 5/91, and to Peter Cigehn
- (peter@lulea.trab.se), 8/92 ]
-
- ----------------------------------------------------------------------
- Subject: 115)! Can I use C++ with X11? Motif? XView?
-
- The X11R4 and later header files are compatible with C++. The Motif 1.1
- header files are usable as is inside extern "C" {...}. However, the
- definition of String in Intrinsic.h can conflict with the libg++ or other
- String class and needs to be worked around.
-
- Some other projects which can help:
-
- WWL, a set of C++ classes by Jean-Daniel Fekete to wrap X Toolkit widgets, is
- available via anonymous FTP from ftp.x.org as R5contrib/WWL-1.2.tar.Z
- or lri.lri.fr (129.175.15.1) as pub/WWL-1.2.tar.Z. It works by building a
- set of C++ classes in parallel to the class tree of the widgets.
-
- The C++ InterViews toolkit is obtainable via anonymous FTP from
- interviews.stanford.edu. InterViews uses a box/glue model similar to that of
- TeX for constructing user interfaces and supports multiple looks on the user
- interfaces. Some of its sample applications include a WYSIWIG document editor
- (doc), a MacDraw-like drawing program (idraw) and an interface builder
- (ibuild). Many of the ideas in InterViews are being folded into Fresco.
-
- THINGS, a class library written at the Rome Air Force Base by the Strategic
- Air Command, available as freeware on archive sites.
-
- Motif++ is a public-domain library that defines C++ class wrappers for Motif
- 1.1 and 1.2; it adds an "application" class for, e.g., initializing X, and
- also integrates WCL and the Xbae widget set. This work was developed by
- Ronald van Loon <rvloon@motif.xs4all.nl> based on X++, a set of bindings done
- by the University of Lowell Graphics Research Laboratory. The current sources
- are available from decuac.dec.com (192.5.214.1) in
- /pub/X11/motif++.28.jul.93.tar.gz; in the UK check src.doc.ic.ac.uk. Send to
- motif++-request@motif.xs4all.nl to be added to the mailing list.
-
- Xm++ is a user interface framework for C++ using the Motif and Athena
- toolkits. Source is on ftp.x.org as contrib/devel_tools/Xm++.0.62.tar.Z; or
- email to xmplus@ani.univie.ac.at.
-
- YACL, Yet Another Class Library, by M. A. Sridhar
- (sridhar@usceast.cs.scarolina.edu) implements a general-purpose programming
- library, using X/Motif and MSWindows for graphical-user-interface needs.
- Sources are on ftp.cs.scarolina.edu (129.252.131.11), in /pub/yacl. Version
- 1.5 was released 3/96.
-
- Qt is a complete and well-developed object-oriented framework for developing
- graphical user interface applications using C++. Version 1.0 was released
- 8/96. For information, contact Troll Tech at sales@troll.no, fax +47
- 22646949, or http://www.troll.no/qt/ . A mailing list exists; send the single
- word "subscribe" to qt-interest-request@nvg.unit.no.
-
- Modello is an object-oriented interface to the Display PostScript System that
- is designed to provide a foundation for WYSIWYG applications and the tools to
- built support them. Files are in ftp://ftp.x.org/contrib/devel_tools/DPS/ .
- A beta release became available 4/96.
-
- V is a portable C++ GUI Framework intended to develop a wide variety of
- applications on different graphical interface platforms. Most standard GUI
- objects are supported by V, including windows with menus, status bars, tool
- bars, and a drawing canvas; modal and modeless dialogs with the most common
- controls (buttons, lists, labels, text entry, check and radio buttons, etc.);
- and portable printing support. Sources are on http://www.cs.unm.edu/~wampler
- and on ftp://sunsite.unc.edu/pub/Linux/X11/libs/v-1.05.tar.gz . Version 1.05
- was released 2/96.
-
- Xl is a protocol implementor for C++; see ftp://humm.whoi.edu/pub/Xl/ .
-
- The xarm C++ wrapper to Motif is at 1.2.1 [12/95]; it is at
- ftp://sunsite.unc.edu/pub/Linux/X11/devel/Xarm-1.2.1.tar.gz .
-
- The Theseus++ User Interface Toolkit Release 2.5.2 is a copylefted C++
- user-interface toolkit for X and Motif. Sources are on archimedes.igd.fhg.de
- in /pub/Theseus++/theseus++-2.5.2.
-
- The source code examples for Doug Young's "Object-Oriented Programming with
- C++ and OSF/Motif" [ISBN 0-13-630252-1] do not include "widget wrappers" but
- do include a set of classes that encapsulates higher-level facilities
- commonly needed by Motif- or other Xt-based applications; check ftp.x.org in
- R5contrib/young.cxx.tar.Z. This software is now being produced commercially
- as "ViewKit" by SGI; ICS is a reseller (http://www.ics.com/ ).
-
- The Hungry Programmers have written a ViewKit toolkit; the Hungry ViewKit is
- available under Gnu Public License terms from:
- ftp://pain.csrv.uidaho.edu/pub/hungry/viewkit/ . Info: hungry@uidaho.edu.
-
- UIT is a set of C++ classes embedding the XView toolkit; it is intended for
- use with Sun's OpenWindows Developers Guide 3.0 builder tool. Sources are on
- ftp.x.org as R5contrib/UIT.tar.Z. This tool may since have become GIT (GNU
- Interactive Tools).
-
- The Andrew User Interface System provides a rich C++ toolkit. Version 6.3 is
- on the R6 tapes. You may be able to use the Remote Andrew Demo service to
- try this software; try "finger help@atk.itc.cmu.edu" for help. Version 7.4 is
- now [8/96] available; see ftp://ftp.andrew.cmu.edu/pub/AUIS/ .
-
- The DD++ library is a C++ wrapper for the Motif 1.2 drag and drop preregister
- protocol; sources are on ftp.x.org:contrib/libraries/DD++1.2.tar.Z [3/95].
-
- A "minimal Motif C++ library wrapper" (using GNU Public License terms) is
- available from ftp.lasermoon.co.uk in ftp.lasermoon.co.uk as /pub/products/Xad.
- Information is available from xmmin@sytek.it.
-
- Rogue Wave offers "View.h++" for C++ programmers using Motif. Info:
- 1-800-487-3217 or +1 503 754 2311.
-
- wxWindows from the Artificial Intelligence group at Edinburgh University is
- available for Motif and Windows NT/95. It includes a GUI builder.
-
- A product called "Commonview" by Glockenspiel Ltd, Ireland, apparently is a
- C++-based toolkit for multiple window systems, including PM, Windows, and
- X/Motif. This product is one of an increasing number of C++ toolkits which
- offer X (typically Motif) as one user-interface choice.
-
- Xv++ is sold by Qualix (415-572-0200; fax -1300); it implements an interface
- from the GIL files that Sun's OpenWindows Developers Guide 3.0 produces to
- Xview wrapper classes in C++.
-
- The Microsoft Foundation Class (MFC) library from Bristol (info@bristol.com)
- is a GUI class library for Windows, Mac, and Motif applications.
-
- Pure Software's (formerly ParcPlace's; formerly Solbourne's) Object Interface
- is a full user-interface toolkit (from Xlib up) developed for C++; it offers
- both OpenLook and Motif visuals. The OI package includes a builder.
-
- ----------------------------------------------------------------------
- Subject: 116) Where can I obtain alternate language bindings to X/Xt/Motif?
-
- Versions of the CLX Lisp bindings are part of the X11 core source
- distributions. A version of CLX is on the R5 tape; version 5.0.2 [9/92] is on
- ftp.x.org in R5contrib/CLX.R5.02.tar.Z.
-
- GNU SmallTalk has a beta native SmallTalk binding to X called STIX (by
- Steven.Byrne@Eng.Sun.COM). It is still in its beginning stages, and
- documentation is sparse outside the SmallTalk code itself. The sources are
- available as /pub/gnu/smalltalk-1.1.1.tar.Z on prep.ai.mit.edu (18.71.0.38)
- or ugle.unit.no (129.241.1.97).
-
- Xm++ for Smalltalk is a class library for building Motif or Athena
- applications. It can be used with GNU Smalltalk (1.1.1). The main sources
- are on sokrates.ani.univie.ac.at (131.130.32.110) in /pub/Xm++.
-
- Prolog bindings (called "XWIP") written by Ted Kim at UCLA while supported in
- part by DARPA are available by anonymous FTP from
- ftp.x.org:R5contrib/xwip-0.6.tar.Z [4/93]. These prolog language bindings
- depend on having a Quintus-type foreign function interface in your prolog.
- The developer has gotten it to work with Quintus and SICStus prolog.
- Inquiries should go to xwip@cs.ucla.edu.
-
- Elk, the Extension Language Kit, is a Scheme implementation with Scheme
- bindings to Xlib, the Programmer's Interface of Xt, the Athena widget set,
- and the OSF/Motif widget set. Sources are in ftp.x.org as
- contrib/devel_tools/elk-3.0.tar.gz. For more information see also
- http://www.informatik.uni-bremen.de/~net/elk .
-
- TCL bindings to Motif 1.[12] by Jan Newmarch (jan@pandonia.canberra.edu.au)
- are on csc.canberra.edu.au and ftp.x.org (in contrib/devel_tools/tclMotif*).
- Version 1.4 was released 4/95.
-
- x-scm, a bolt-on accessory for Aubrey Jaffer's "scm" Scheme interpreter that
- provides an interface to Xlib, Motif, and OpenLook, is now available via FTP
- from altdorf.ai.mit.edu:archive/scm/xscm1.05.tar.Z and
- nexus.yorku.ca:pub/scheme/new/xscm1.05.tar.Z.
-
- Poplog V14.2 is offered by Integral Solutions Ltd. (Phone +44 (0)256 882028;
- Fax +44 (0)256 882182; Email isl@integ.uucp); it is an integrated programming
- environment consisting of the programming languages Pop-11, Prolog, Standard
- ML, and Lisp which are compiled to machine code via a common virtual machine.
- Pop-11 provides an interface to the X Toolkit which can be accessed from all
- other Poplog languages. The OLIT, Motif, and Athena widget sets are
- supported, in addition to the custom Poplog (Xpw) widget set. High-level
- Pop-11 libraries allow graph drawing, turtle graphics, and the simple
- creation of basic button/menu based interfaces.
-
- WINTERP is an Xlisp-based Motif toolkit (by Niels Mayer) allowing for rapid
- prototyping and interpretive programming. Its interactive application
- development and delivery environment features a high-level object-oriented
- interface to the OSF/Motif Widgets and Xtoolkit, a high-level object-oriented
- 2.5D graphics/animation widget based on Xtango's path-transition animation
- paradigm, and facilities for communicating with other Unix processes and
- data. WINTERP's interpreter is "serverized" so that other applications can
- communicate with WINTERP-based applications via unix domain sockets, or
- optionally, through internet domain sockets. WINTERP's built-in interpreter
- is based on XLISP-PLUS, which is a small, fast, portable, C-implemented
- interpreter providing a subset of Common-Lisp functionality and a
- Smalltalk-inspired object system. A major new release, WINTERP 2.03, is on
- the X11R6 contrib tapes; version 2.03 [7/94] is on ftp.x.org in
- contrib/devel_tools/. Info: winterp-source@netcom.com. See also
- http://www.eit.com/software/winterp/winterp.html .
-
- The SAIC Ada-X11 (for Ada 83) bindings are through anonymous ftp in /pub from
- stars.rosslyn.unisys.com (128.126.164.2) and
- falcon.stars.ballston.paramax.com (129.204.6.253).
-
- There is an X/Ada study team sponsored by NASA JSC, which apparently is
- working out bindings. Information: xada@ghg.hou.tx.us.
-
- Ada bindings to Motif, explicitly, will eventually be made available by the
- Jet Propulsion Laboratories, probably through the normal electronic means.
- Advance information can be obtained from dsouleles@dsfvax.jpl.nasa.gov, who
- may respond as time permits.
-
- AdaMotif is a complete binding to X and Motif for the Ada language (Ada 83?),
- for many common systems; it is based in part upon the SAIC/Unisys bindings
- and also includes a UIL to Ada translator. Info: Systems Engineering Research
- Corporation, 1-800-Ada-SERC (well!serc@apple.com).
-
- Free Ada95 X11 bindings were commissioned along with the 1995 update of the
- language definition and are now available as stable beta software from Mitch
- Gart of Intermetrics (mg@camb.inmet.com); they are due on the Intermetrics
- web site very soon. These offer complete thin bindings to Xlib, Xt and Motif.
- As thin bindings, the normal X documentation (e.g. the O'Reilly series)
- applies unchanged. Common problems such a string handling and variadic
- arguments to functions have been solved and are fully described in the
- accompanying documentation. [Thanks to Chris.Morgan@baesema.co.uk, 12/95.]
-
- There is a binding for X11 and Motif which is in the public domain and takes
- advantage of Ada 95 features. Although it is still [3/96] being fine tuned,
- it is largely complete, and is well on it way to becoming the de facto
- standard for Ada binding to X. Developers around the world are starting to
- churn out some very impressive demonstration programs, both original and
- ported from X and Motif demos. For general information on all varieties of
- Ada bindings including X, check
- http://lglwww.epfl.ch/Ada/Resources/Bindings.html
- The X11 Ada95 bindings in particular can be located at:
- http://www.inmet.com/~mg/x11ada/x11ada.html
- The home page for X/Ada development is at
- http://www.ocsystems.com/xada/
- [thanks to G. Vincent Castellano, gvc@ocsystems.com]
-
- The X Consortium, although not involved in producing Ada bindings for X,
- maintains a partial listing of people involved in X and Ada; information is
- available from Donna Converse, converse@x.org.
-
- ----------------------------------------------------------------------
- Subject: 117)! Where can I obtain alternate X toolkits?
-
- The Tk toolkit provides a Motif-like object set for use typically with tcl,
- an interpreted language. See the FAQ list for comp.lang.tcl. The main source
- area is sprite.berkeley.edu (128.32.150.27) in pub/tcl. Version 7.5 was
- released 5/96 along with version 4.1 of TK; see
- ftp://ftp.smli.com/pub/tcl for sources and
- http://www.sunlabs.com/research/tcl for information.
-
- Marx is an interpreted script language based on a C-like syntax. It
- provides a quick way of creating Graphical User Interfaces in X windows.
- Besides GUI building, marx also provides simplified schemes for UNIX
- process control, direct shell command/script execution and inter-client
- communication via sockets. Version 1.1b1 was released 6/96. See
- http://spock.ece.drexel.edu/marx for information.
-
- EZWGL, the EZ widget and graphics library, implements a few Motif like
- widgets and a few OpenGL like graphics commands. EZWGL is released under
- terms of the GPL. It can be found at
- ftp://ftp.x.org/contrib/widgets/EZWGL.tgz . Information: Maorong Zou
- (zou@math.arizona.edu) [8/96]
-
- ParcPlace (Pure Software?) is making freely available its popular
- ObjectBuilder and Object Interface (OI) products for the Linux operating
- system. ObjectBuilder is a GUI builder written completely in C++, that
- enables UNIX C++ developers to apply the principles of object-orientation to
- the development of user interfaces. OI, a C++ class library, provides the
- toolkit foundation for ObjectBuilder. OI implements the look-and-feel of both
- Motif 1.2 and OPEN LOOK. OI is built directly on top of Xlib and is
- unencumbered by runtime royalties to any party. ObjectBuilder and OI are
- very extensible, actively facilitating the use of subclassing to create new,
- reusable, user interface components. Sources are on tsx-11.mit.edu in
- /pub/linux/packages/OI and available from ParcPlace (+1 408 481 9090).
-
- Garnet is a Common Lisp-based GUI toolkit. Information is available from
- garnet@cs.cmu.edu.
-
- ----------------------------------------------------------------------
- Subject: 118) TOPIC: BUILDING THE X DISTRIBUTION [topic needs updating to R6]
- ----------------------------------------------------------------------
- Subject: 119) What's a good source of information on configuring the X build?
-
- This FAQ includes information on a number of "gotchas" that can bite
- you on particular system. However, the best source of general information on
- building the X11 release is found in the Release Notes. The file is bundled
- separately from the rest of the release, so if it's become separated from your
- sources you can FTP another copy separately: the file RELNOTES.[ms,PS,TXT] at
- the top of the distribution. The file RELNOTES is also available from the
- xstuff mail server.
- In addition, O'Reilly & Associates' Volume 8 on X Administration
- includes information on configuring and building X.
-
- ----------------------------------------------------------------------
- Subject: 120) Why doesn't X11R6 work on Solaris with GCC 2.7.0?
-
- There is a misfeature in gcc's handling of -R options; see the Solaris FAQ in
- ftp.fwi.uva.nl in directory /pub/solaris for details and for a fix.
-
- ----------------------------------------------------------------------
- Subject: 121) Why doesn't my Sun with a cg6 work with R5?
-
- Apparently gcc is the problem; it seems to produce fine code for all
- Sun displays except for the cgsix. The new sunGX.o distributed with fix-07
- may fix the problem (note: not known to work on Solaris).
-
- ----------------------------------------------------------------------
- Subject: 122) What are these build problems with Solaris 2.5?
-
- The problems with Solaris 2.5 are still rolling in. Known problems for now
- include:
-
- - a change to the signature for gettimeofday() which can be solved
- by setting -D_SVID_GETTOD in the build flags
-
- - use of longs with "L" suffixes in the header files, causing the
- R6 makedepend to fail; no known solution right now other than editing the
- top-level Makefile to omit the "make depend" step from "make World". Fixed
- in X11R6.1.
-
- ----------------------------------------------------------------------
- Subject: 123) Why doesn't my Sun with SunOS 4.1 know about _dlsym, etc.?
-
- If you get errors with _dlsym _dlopen _dlclose undefined, link with
- libdl.a. Add "-ldl" to your and eventually to your site.def. You may want to
- surround it with "-Bstatic -ldl -Bdynamic" if you add it to the EXTRA_LIBRARIES
- variable, since "syslibs" get added after EXTRA_LIBRARIES on the eventual
- compilation command; otherwise you may not have a shared libdl. (Or compile
- the stubs shared.)
-
- [thanks to Joe Backo (joe.backo@East.Sun.COM), 12/91]
-
- ----------------------------------------------------------------------
- Subject: 124) What is this "_get_wmShellWidgetClass undefined" error?
-
- In SunOS 4.1.2 Sun fixed a shared-library bug in ld which conflicts
- with the way X builds the shared Xmu library, causing these symbols, notably,
- to be undefined when building some X11 clients on SunOS 4.1.[23]:
- _get_wmShellWidgetClass
- _get_applicationShellWidgetClass
- Compiling "-Bstatic -lXmu -Bdynamic" is overkill; be sure to set
- OSTeenyVersion correctly in the config/sun.cf file and rebuild X11R5.
-
- To solve the problem if you are using OpenWindows 3.0 (X11R4-based Xt), please
- contact your local Sun office and request the following patches:
-
- Patch i.d. Description
- 100512-02 4.1.x OpenWindows 3.0 libXt Jumbo patch
- 100573-03 4.1.x OpenWindows 3.0 undefined symbols when using
- shared libXmu
-
- [Greg Earle, earle@Sun.COM; 7/92]
-
- A source patch for use with the X11R4 libraries was developed by Conrad
- Kimball (cek@sdc.boeing.com); it retrofits into R4 some fixes made in R5 to
- get around this problem. The patch is on ftp.x.org in [1/93]
- R5contrib/X11R4_sunos4.1.2_patch_version3.Z
-
- ----------------------------------------------------------------------
- Subject: 125) Why don't xterm or xinit work on Solaris 2.4?
-
- The Solaris FAQ describes a problem in which xinit dies with "user signal 1"
- and traces it to some changes to libc.so and libthread.so. The Solaris FAQ
- describes the necessary patch to obtain from Sun; the FAQ is available from
- ftp.fwi.uva.nl in directory /pub/solaris. The X fix is to apply fix-11
- to X11R6; the problem is fixed in the later patches to X11R6.
-
- ----------------------------------------------------------------------
- Subject: 126) What's this problem with undefined _X symbols on SunOS 4.1.3?
-
- Make sure to set the OSTeenyVersion in the mit/config/sun.cf file
- if you see that vast numbers of Xlib functions are undefined in your X11R5
- build:
-
- >cc -o bmtoa bmtoa.o -O -pipe -L../.././lib/Xmu -lXmu -L/work1/X11R5/lib
- >ld: Undefined symbol
- > _XGetVisualInfo
- > _XFree
- ...
-
- ----------------------------------------------------------------------
- Subject: 127) Why does cc get used when I build X11R5 with gcc?
-
- When X11R5 was written gcc (version 1.X) did not support shared
- libraries. Those parts requiring shared libraries are compiled with cc, those
- that don't are compiled with gcc.
-
- ----------------------------------------------------------------------
- Subject: 128) What are these I/O errors running X built with gcc?
- When I try to run xinit or the Xsun server I get the error
- "Getting interface configuration: Operation not supported on socket.
- Fatal server bug! no screens found."
-
- Running the gcc fixincludes script apparently didn't work. You can do
- this simple test:
-
- #include <sys/ioctl.h>
- SIOCGIFCONF
-
- Run that through cc -E and gcc -E. The last line of output is the piece of
- interest; it should be identical (modulo irrelevant differences like
- whitespace). If the gcc version has 'x' where the cc version has 'i', your
- fixincludes run didn't work for some reason or other; go back to your gcc
- sources and run `fixincludes`; then rebuild the X distribution. If they are
- identical, try running a make clean in mit/server and rebuilding, just to make
- sure everything gets compiled with the proper include files.
-
- [courtesy der Mouse, mouse@LARRY.MCRCIM.MCGILL.EDU; 9/90]
-
- ----------------------------------------------------------------------
- Subject: 129) What are these problems compiling the X11R5 server on SunOS 4.1.1?
- The file <sundev/cg6reg.h> isn't being found.
-
- Sun omitted <sundev/cg6reg.h> from SunOS 4.1.1. Remove the #include
- from sunCG6C.c and replace it with the line
- #define CG6_VADDR_COLOR 0x70016000
- The file has changed from earlier versions of SunOS and should not be copied
- from another distribution.
-
- ----------------------------------------------------------------------
- Subject: 130) Can OW 3.0 OLIT programs run with R5 Xt? (_XtQString undefined)
-
- This is a bug in the OLIT. _XtQString was an external symbol that existed in
- X11R4 (upon which OW 3.0's libXt is based). It wasn't documented and was
- removed in X11R5 (the Consoritum's guarantee of upward compatibility between
- the R4 and R5 libraries only applied to the documented interface).
-
- A workaround is to temporarily set your LD_LIBRARY_PATH to point to the X11R4
- or OpenWindows Xt library that you linked the program against.
-
- [10/92; from Barry Margolin (barmar@think.com); 3/93 from Jeff Francis
- (jpf@heliocentric.com)]
-
- ----------------------------------------------------------------------
- Subject: 131) How do I get around the SunOS 4.1 security hole?
-
- There is a security problem with certain R4 clients (xterm and xload)
- running under SunOS 4.1 that have been installed setuid root and are using
- shared libraries; to avoid the problem, do one of these:
- 1) make the program non-setuid. You should consult your system
- administrator concerning protection of resources (e.g. ptys and /dev/kmem) used
- by these programs, to make sure that you do not create additional security
- problems at your site.
- 2) relink the programs statically (using -Bstatic).
- 3) install the libraries before linking and link with absolute paths
- to the libraries.
-
- [from rws@x.org (Bob Scheifler), 12/90]
-
- Newer versions of xterm (R5/R6) do this automatically by rebuilding xterm
- against the newly-installed libraries when xterm is being installed; this
- prevents an suid program from being built with libraries specified
- relatively. Note that this may cause an inconvenience when doing the
- installation from NFS-mounted disks. Xload has been rewritten to avoid the
- problem.
-
- ----------------------------------------------------------------------
- Subject: 132) How do I get around the frame-buffer security hole?
-
- On many systems the frame-buffer is unsecured by default; this permits
- anyone who can log into your workstation to peek at your windowing session by
- accessing the frame-buffer directly, or, as less of a privacy issue but perhaps
- more annoying, to [accidentally] start up a second X session on your console
- display. Check the man page for fbtab(5).
-
- [Thanks to Art Mulder (art@cs.ualberta.ca); 2/93.]
-
- ----------------------------------------------------------------------
- Subject: 133) TOPIC: BUILDING X PROGRAMS
- ----------------------------------------------------------------------
- Subject: 134) What is Imake?
-
- Imake is not a replacement for the make program; instead, it is a
- makefile-generator that takes advantages of the include-file and macro-
- processing capabilities of the C preprocessor cpp to generate makefiles
- suitable for building software on a particular system. Although it is not
- specific to X, the X release uses it to help solve a number of the
- configuration issues that arise in making such a large system widely
- portable.
-
- Imake is difficult to understand, in part because the process by which the
- system-specific configuration files, system-independent configuration files,
- and individual Imakefiles are melded to produce a Makefile is not obvious.
-
- There have been several different versions of imake; the R3, R4, R5 and R6
- versions are different.
-
- You can obtain information on imake from these sources:
- - the release notes and imake man page include information on using
- Imake to build X
- - the R6 file xc/config/cf/README contains a list of imake variables
- - the R4 and R5 release notes and imake man page include information on
- using Imake to build X
- - the R4 and R5 file mit/config/README also contains useful information
- - on the R4 tapes, contrib/doc/imake/imake.tex is Mark Moraes' R3/R4
- guide to imake.
- - the R5 mit/doc/config/usenixws/paper.ms contains a paper by Jim
- Fulton on an early version of Imake
-
- - Paul DuBois (dubois@primate.wisc.edu) has written a useful
- explanation of how Imake works and how to use it in configuring X for non-
- supported systems; the document is available from
- http://www.primate.wisc.edu/software/imake-stuff , or try ftp.primate.wisc.edu
- in the directory ~ftp/pub/imake-stuff; look for config-X11R4.ms (troff) and
- config-X11R4.ps (PostScript). Some supplemental appendices are nearby.
- [7/91: document version is now 1.06] They are also available by gopher to
- gopher.primate.wisc.edu under "Primate Center Software Archives".
- - see "System Administration - Imake: Friend or Foe?" by Dinah McNutt
- in the November 1991 issue of SunExpert.
- - German readers should look for "Das Meta-Make / I make, you make /
- Schwerelos" by Rainer Klute in the June 1992 "iX
- Multiuser-Multitasking-Magazin", directed at application programmers needing to
- write Imakefiles. An English-language derivative of this article is in The
- X Journal, issue 2:1.
- - The O'Reilly X Resource issue #2 contains Paul Davey's article on
- demystifying Imake.
- - Alain Brossard's working document full of tips on Imake is in
- sunline.epfl.ch:pub/imakefile.1.Z.
- - O'Reilly has published (7/93) "Software Portability with imake" by
- Paul DuBois; ISBN 1-56592-055-4. The book's electronic examples and
- additional software are on ftp.primate.wisc.edu in pub/imake-book;
- imake.tar.Z is a stand-alone imake installation. Also try
- http://www.primate.wisc.edu/software/imake-book .
-
- [1/91;12/91;5/92;8/92;7/93; 12/95]
-
- ----------------------------------------------------------------------
- Subject: 135) Where can I get imake?
-
- Versions are distributed with the R4, R5, and R6 releases. An earlier version
- is distributed with the X11R3 release; some third-party toolkits redistribute
- versions of imake along with their own implementations of the template and
- configuration files. There are no real standards for such configuration
- files, although most *current* contributed software expects the templates
- distributed with X11R5 or X11R6.
-
- ftp.x.org contains the R5 distribution unpacked, so you can pick up imake
- without picking up the entire distribution.
-
- A stand-alone version of Imake, but one stemming from X11R5, is in
- ftp.germany.eu.net:pub/X11/misc/imake/imake-pure.tar.Z (192.76.144.75).
-
- A stand-alone version of Imake, but one stemming from X11R5, is in
- ftp.primate.wisc.edu:pub/imake-book/imake.tar.Z.
-
- ----------------------------------------------------------------------
- Subject: 136) I have a program with an Imakefile but no Makefile. What to do?
-
- If you have R4 or later installed on your system, run "xmkmf". This
- is a script which runs imake for you with the correct arguments. The output
- is a Makefile configured for your system and based on the Imakefile. Then
- run make, which will use that new Makefile to compile the program.
-
- ----------------------------------------------------------------------
- Subject: 137) Why can't I link to the Xlib shape routines?
- When I try to compile certain programs, I get the following link error:
- Undefined:
- _XShapeQueryExtension
- _XShapeCombineMask
-
- These routines are actually part of the Shape Extension to X (SHAPE)
- which was introduced in the X11R4 distribution and allows non-rectangular
- windows. Like the other sample server extensions, the shape extension will
- only run on a server which supports it. Pre-X11R4 servers, as well as many
- vendor-supplied servers, do not support the shape extension, in which case
- they will display rectangular windows anyway.
-
- In order to use the shape extension, you must link to the library
- libXext.a. In the X11 distribution, this library and the associated includes
- will be in the mit/extensions directory. If you do not have these files, do
- not despair: many freeware programs which use the shape extension can also be
- compiled without it by removing the -DSHAPE define from the Makefile; you can
- probably do this and compile successfully against your older vendor-supplied X
- libraries.
-
- [from John B. Melby, melby%yk.fujitsu.co.jp@uunet.uu.net, 3/91]
-
- ----------------------------------------------------------------------
- Subject: 138) What are these problems with "_XtInherit not found" on the Sun?
- When I link a X program that I wrote on a SunOS 4.0.3 or 4.1 machine I get the
- error "ld.so: symbol not found _XtInherit".
-
- What you are seeing is a side-effect of a kludge in the R4 libXt.a to
- get Sun shared libraries working. Apparently, you can't share a function that
- is both called and compared, as _XtInherit is. This was handled by putting
- _XtInherit in the same file as a function that is always used, thereby
- guaranteeing that it would be loaded -- that is, in Initialize.c, where
- XtToolkitInitialize() and XtInitialize() reside. These routines would normally
- be called.
-
- You are probably seeing this error because your program is not a normal
- Xt-based program and does not call XtToolkitInitialize() anywhere.
- 1) it may be a program that uses Xt functions but never opens a
- connection to the X server. [OSF/Motif's 1.1.0 UIL had this problem; it called
- XtMalloc() and other Xt functions.] The solution is to add the call to your
- program; the function does not have to be executed, just linked in.
- 2) alternatively, your program doesn't need any Xt functions and is
- correct in not calling XtToolkitInitialize() -- it may be an Xlib or XView
- program. In this case, you can remove -lXt from your link command.
-
- It should not be necessary to link the shared libraries statically,
- although this will certainly solve the problem.
-
- [from Jordan Hayes (now jordan@Thinkbank.COM) and Danny Backx (db@sunbim.be);
- 11/90]
-
- You may also see this error compiling X11R5 programs on a SunOS 4.1.3 machine;
- be sure to set OSTeenyVersion to 3 in the config/sun.cf file.
-
- ----------------------------------------------------------------------
- Subject: 139) TOPIC: PROGRAMMING PROBLEMS AND PUZZLES
- ----------------------------------------------------------------------
- Subject: 140) Why doesn't my program get the keystrokes I select for (sic)?
-
- The window manager controls how the input focus is transferred from one
- window to another. In order to get keystrokes, your program must ask the
- window manager for the input focus. To do this, you must set up what are
- called "hints" for the window manager. If your applications is Xlib-based, you
- can use something like the following:
-
- XWMHints wmhints;
- ...
- wmhints.flags = InputHint;
- wmhints.input = True;
- XSetWMHints(dpy, window, &wmhints)
-
- If your application is based on the Xt Intrinsics, you can set the XtNinput
- resource to be True (as you probably want to in any case); if you don't have
- source, you can start up the application with the resource '*input:True'.
-
- Certain window managers, notably dxwm and olwm, are very picky about having
- this done.
-
- If you are using Sun's OpenWindows olwm, you can also add this resource
- to your defaults file to use clients that aren't ICCCM-compliant.
- OpenWindows.FocusLenience: true
-
- [mostly courtesy Dave Lemke of NCD and Stuart Marks of Sun]
-
- ----------------------------------------------------------------------
- Subject: 141) How do I deiconify a window?
-
- To de-iconify a window, map it with XMapWindow(). To iconify a window, use
- XIconifyWindow().
-
- ----------------------------------------------------------------------
- Subject: 142) How do I figure out what window manager is running?
-
- You can't reliably tell; whatever mechanism you could use could be spoofed in
- any case.
-
- For most cases, you shouldn't care which window manager is running, so long
- as you do things in an ICCCM-conformant manner. There are some cases in which
- particular window managers are known to do things wrong; checking for
- particular hints placed on the window by the window manager so that you can
- sidestep the problem may be appropriate in these cases. Alternatively, it may
- be appropriate to determine which window manager is running in order to take
- advantage of specific *added* features (such as olwm's push-pin menus) in
- order to give your program *added* functionality. Beware of usurping the
- window manager's functions by providing that functionality even when it is
- missing; this surely leads to future compatibility problems.
-
- ----------------------------------------------------------------------
- Subject: 143) Is there a skeleton X program available?
-
- There is no general framework such as the TransSkel program for the Macintosh
- which handles lots of the odds and ends and overhead of development under a
- window system and which can be used as a platform for additional development.
- In X, the problem is typically solved by using an interactive application
- builder tool or by using cut&paste on existing X applications. Good
- applications which you might look to manipulate when you want to "test just
- this one little thing" include contrib/clients/xskel, a simple R4 program
- that puts up a window and allows sketching in it and offers a starting point
- for quick hacks, the Xaw examples in the examples/ directory in the X
- distributions, and the Xlib "Hello World" example in the R3 doc/HelloWorld
- and R4 doc/tutorials/HelloWorld; an updated version of this program which
- uses R4 Xlib calls and current ICCCM conventions was posted in 2/90 to
- comp.windows.x by Glenn Widener of Tektronix. [3/90]
-
- In addition, a sample Xt program (for Xaw or Xm) by Rainer Klute showing how
- to open multiple displays and how to catch a broken display connection is
- available on ftp.x.org in R5contrib/mdisp.tar.Z. [4/92]
-
- A sample multi-display Xt/Xaw program by Oliver Jones is on ftp.x.org in
- R5contrib/MultiUserVote.tar.Z. (See also his article in The X Resource, Issue
- 3, "Multi-User Application Software Using Xt".)
-
- ----------------------------------------------------------------------
- Subject: 144) How can I incorporate an Xlib program in my Xt program?
-
- As older Xlib programs are ported to Xt it often makes sense to preserve
- their Xlib-ness while still having Xt-based menus, scrollbars, and other
- GUIisms of current Xt toolkits. The basic problem in merging the two models
- is in the event-delivery mechanism. In an Xt program, the application enters
- an infinite loop in XtAppMainLoop() and Xt thereafter dispatches events to
- widgets without the application's intervention; in contrast, Xlib programs
- typically track the set of events they are interested in and the possible
- windows on which those events can occur and hence call XNextEvent directly
- and then determine what action to take on the event received.
-
- One possible solution may be to widgetize the Xlib application. A faster
- solution is probably to break XtAppMainLoop() into its components (R5 version
- shown):
-
- void XtAppMainLoop(app)
- XtAppContext app;
- {
- XEvent event;
-
- for (;;) {
- XtAppNextEvent(app, &event);
- XtDispatchEvent(&event);
- }
- }
-
- and then change the dispatch call to be something like
-
- if (!XtDispatchEvent(&event))
- my_dispatch_xlib_event(&event);
-
- That is, if Xt isn't interested in dispatching the event, it must be an event
- on one of the windows created via the code incorporated from the Xlib program
- and can be dispatched in the same way as in the original program.
-
- You can also use this technique in Xt programs in order to handle events not
- normally handled well by Xt; there is support in the translation/action
- mechanism for being notified of PropertyNotify events, but it may be easier
- to dispatch the event yourself, perhaps to receive a message from another
- application on a window whose ID your application has made available.
-
- ----------------------------------------------------------------------
- Subject: 145) Why does XtGetValues not work for me (sic)?
-
- The XtGetValues interface for retrieving resources from a widget is
- sensitive to the type of variable. Your code may be doing something like this:
- {
- Arg args[3];
- int i;
- int sensitive; /* oops; wrong data type */
- i=0;
- XtSetArg (args[i], XtNsensitive, &sensitive); i++;
- XtGetValues(widget, args, i );
- ...
- }
-
- But XtNsensitive is a Boolean, which on most machines is a single byte;
- declaring the variable "sensitive" as Boolean works properly. This problem
- comes up often when using particular toolkits that redefine the Xt types
- Dimension and Position; code that assumes they are int will have similar
- problems if those types are actually short. In general: you are safe if you
- use the actual type of the resource, as it appears in the widget's man page.
- [11/90]
-
- ----------------------------------------------------------------------
- Subject: 146) Why don't XtConfigureWidget/XtResizeWidget/XtMoveWidget work?
-
- You're probably trying to use these functions from application code. They
- should be used only internally to widgets; these functions are for a parent
- Composite widget to change the geometry of its children. An application
- which calls XtMoveWidget, for example, effectively defeats geometry
- negotiation and the Composite parent's internal state (if any) will no longer
- be correct. (The Xt specification goes into more detail.)
-
- The only way for your application to request a geometry change for a widget
- is to issue an XtSetValues call setting some of the geometry resources.
- Although this call will result in the widget-internal functions' being
- called, your application code must use the standard XtSetValues interface or
- risk the widgets' data becoming corrupted.
-
- Note that functions defined in <X11/IntrinsicP.h>, as these are, are
- typically reserved for use by widgets.
-
- Other promising functions, XtMakeGeometryRequest() and XtMakeResizeRequest(),
- are also for use only by widgets, in this case by a child to request a change
- from its parent.
-
- The Xlib calls XMoveWindow() and XResizeWindow() should similarly be avoided;
- they shouldn't be used to change XtNx, XtNy, XtNwidth, or XtNheight.
-
- ----------------------------------------------------------------------
- Subject: 140)+ How do I check whether an Xt widget is still valid?
-
- You may be tempted to use a check like this one to determine whether the
- widget has yet to be destroyed:
-
- (XtWindowToWidget(XtDisplay(toplevel), XtWindow(widget)) == widget)
-
- However, this is not a robust solution. It depends on assumptions about how
- Xt uses memory allocation and how that memory allocation works; in addition,
- it assumes that no subsequent widgets are created with the same handle and
- window id.
-
- In addition, XtIsWidget() simply checks whether an existing, valid object
- is a widget or a gadget. It can't be used to check for current existence.
-
- In general, you should track destruction, possibly by using
- XtNdestroyCallback callbacks.
-
- ----------------------------------------------------------------------
- Subject: 147) Why can't I get data back in my callback procedure?
-
- You may hit a situation in which using XtAddCallback(button, XtNcallback,
- CBproc, pointer) doesn't work to retrieve "pointer".
-
- Almost certainly, what you are seeing is the effect of using local variables
- after they are no longer in existence. In the above line of code, "pointer"
- is probably a local variable declared within the block of code making the call
- to XtAddCallback; it is valid only within the scope of the callback, and is
- not valid by the time the callback CBproc gets called. Within CBproc, the
- client_data argument is pointing to somewhere on the stack -- whereever
- pointer was when it was used.
-
- Short of using global or static data, the best solution is to allocate a
- pointer to the data you need and free it in the callback routine.
-
- Short values such as integers can be passed directly without resorting to
- this code; nor do you need to do allocations for other data which will be in
- existence when the callback is called, such as other widgets which haven't
- been destroyed.
-
- ----------------------------------------------------------------------
- Subject: 148) Why isn't there an XtReparentWidget call like XReparentWindow?
-
- Although there are various details of the current implementation of the Xt
- internals which make reparenting difficult, the major reason that no such
- call exists is that it remains undefined what the set of resources for the
- "new" widget should be. Resources are typically set based on the location in
- the instance hierarchy; what resources should change if the instance moves?
- What should happen to the widget's children? And by the time such semantics
- are defined, there would probably be little advantage over destroying the old
- widget and creating a new widget in the correct location with the desired
- resources, as setting the resources correctly is the majority of work in
- creating a new widget.
-
- Note that reparenting is possible in the OI toolkit.
-
- ----------------------------------------------------------------------
-
- David B. Lewis faq%craft@uunet.uu.net
-
- "Just the FAQs, ma'am." -- Joe Friday
-