home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / html / faqs / faq / x-faq / part5 < prev    next >
Encoding:
Text File  |  1995-07-25  |  48.9 KB  |  1,048 lines

  1. Subject: comp.windows.x Frequently Asked Questions (FAQ) 5/6
  2. Newsgroups: comp.windows.x,news.answers,comp.answers
  3. From: dbl@ics.com (David B. Lewis)
  4. Date: 23 Oct 1994 23:08:52 GMT
  5.  
  6. Archive-name: x-faq/part5
  7. Last-modified: 1994/10/23
  8.  
  9. ----------------------------------------------------------------------
  10. Subject:  96)  Where can I get a WYSIWYG interface builder (or other shortcuts)?
  11.  
  12.     A release of the DIRT interface builder by Richard Hesketh works with
  13. X11R5 and includes some support for the Motif widget set. It generates
  14. WCL-1.1 code. DIRT is known to be outdated. It is available through
  15. comp.sources.x archives.
  16.  
  17.     The InterViews 3.0.1 C++ toolkit contains a WYSIWIG interface builder 
  18. called ibuild. ibuild generates code for an InterViews application complete 
  19. with Imakefile and an X-resource file. Documentation is /pub/papers/ibuild.ps 
  20. on interviews.stanford.edu (36.22.0.175).
  21.     Quest Windows's (408-496-1900) ObjectViews C++ package includes an
  22. interactive building tool. 
  23.  
  24.     Druid (Demonstrational Rapid User Interface Development) runs on SPARC 
  25. machines using OSF/Motif 1.0; it is intended eventually to be a full UIMS but 
  26. apparently now has only support for creating the presentation components, for 
  27. which it generates C/UIL code. Info: Singh G, Kok CH, Ngan TY, "Druid: A System
  28. for Demonstrational Rapid User Interface Development". Proc. ACM SIGGRAPH Symp 
  29. on User Interface Software and Technology (UIST'90). ACM, NY, 1990, pp:167-177.
  30.  
  31.     The XF builder (version 2.3.n) is a TCL/Tk builder; versions are on
  32. harbor.ecn.purdue.edu. You may subscribe to a mailing list by sending
  33. "sub xf-l <Your name>" to listserv@tubvm.cs.tu-berlin.de.
  34.  
  35.     ADEW in the Andrew User Interface System supports WYSIWYG user
  36. interface construction with the full selection of AUIS insets, including text,
  37. rasters, tables, and the usual interactors.  Semantics can be coded in C or in
  38. Ness, the AUIS extension language.
  39.  
  40.     Camel, a generic IDT for Xt widget sets, is available from 
  41. R.N.Tearle@hertfordshire.ac.uk.
  42.  
  43. Also:
  44.     In addition, these commercial products (unsorted) are available in 
  45. final or prerelease form [the * following the product name indicates that the 
  46. product is known to allow the designer to specify for each widget whether a 
  47. particular resource is hard-coded or written to an application defaults file,
  48. for at least one form of output]. Some are much more than user-interface tools;
  49. some are full user interface management systems; information on most is not
  50. up-to-date:
  51.  
  52. Product Name        Look/Feel    Code Output        Vendor
  53.  
  54. HP Interface        Motif 1.1    C(Xm)            HP/Visual Edge
  55.  Architect/ UIMX    
  56. OPEN LOOK Express    OPEN LOOK    C(Xol+ helper lib)    AT&T /
  57.                                 Visual Edge
  58. UIMX 2.0 *        Motif 1.1    C(Xm + helper code)    Visual Edge
  59.                                 514-332-6430
  60.                                 & distributors
  61. X-Designer 3.2 *    Motif 1.2    C(Xm); C/UIL; C++    Imperial
  62.                                 Software
  63.                                 Technology, Ltd
  64.                                   (+44 734 587055)
  65.                                 sales@ist.co.uk
  66.                                     US:413-586-4144
  67. XFaceMaker2 (XFM2) *     Motif 1.0    C;C/script (C-like procedural 
  68.                     language);C/UIL
  69.                                  NSL 
  70.                             (33 1 43 36 77 50)
  71.                             requests@nsl.fr
  72. Builder Xcessory 3.1 *    Motif 1.2    C(Xm); C/UIL[r/w]    ICS 
  73.                     Ada; and reads GIL    (617-621-0060)
  74.                                 info@ics.com
  75. Builder Xcessory 2.6 *    Motif 1.1    C(Xm); C/UIL[r/w]    DEC
  76.                     [VMS; OSF/1]        (1-800-DIGITAL)
  77. iXBUILD            Motif 1.1    C(Xm); C/UIL        iXOS Software
  78.                                 karl@ixos.uucp
  79.                                 089/461005-69
  80. TeleUSE 2.1 *        Motif 1.1.5    C(Xm); C/UIL[r/w]    Alsys(TeleSoft)
  81.                                 (619-457-2700)
  82.                             gui_info@telesoft.com
  83.                             in Germany: in GmbH,
  84.                             +49 7531 65022, 
  85.                             gvr@in-gmbh.de
  86. ezX 3.2            Motif 1.1    C(Xm +helper lib);C/UIL;Ada
  87.                                 Sunrise
  88.                                 (401-847-7868)
  89.                                    info@sunrise.com
  90. Snapix            Motif        C/Xm            ADNT
  91.                                 +33 1 3956 5333
  92. OpenWindows Developers    OPEN LOOK     GIL [-> C/XView]    Sun
  93. Guide 3.0                GIL [-> C++/XView]
  94.                     GIL [-> C/OLIT]
  95.                     GIL [-> C/PostScript for TNT]
  96. ExoCode/SXM        Motif        C(Xm)            Expert Object
  97. ExoCode/Plus        OPEN LOOK    XView            708-676-5555
  98. TAE+ 5.3        Xw;Motif    C(Xw,Xm); C/TCL (TAE Control Language,
  99.                     like UIL[needs helper library]);
  100.                     VAX Fortran; Ada; C++
  101.                             Nasa Goddard
  102.                             301-286-6034
  103.                             Century Computing
  104.                             301-953-3330
  105. MOB, XSculptor        Motif; OpenLook    C/Xm,UIL; C/Xol        Kovi
  106.                                 408-982-3840
  107. PSM            PM, MSW 3.0,    C/UIL            Lancorp
  108.             Motif 1.1.2,Mac                Pty Ltd.
  109.                                 +61 3 629 4833
  110.                                 Fax:  629 1296
  111.                                 (Australia)
  112. MOTIFATION *        Motif 1.1.x|1.2    C(Xm)            PEM Stuttgart
  113.                                +49 (0) 0711/713045
  114.                                +49 (0) 0711/713047 fax
  115.                             basien@pem-stuttgart.de
  116. UIB            Open Look/Motif    C++(OI)            ParcPlace 
  117.                                 +1 303-678-4626
  118. ILOG BUILDER        Motif                    ILOG
  119.                                 1 415 390 9000
  120.                                 info@ilog.com
  121. XVT-Design        Motif,OL,Windows,&c            XVT
  122.                                 303-443-4223
  123.                                 info@xvt.com
  124. Mimex            Motif 1.2    C(Xm); C/UIL[r/w]    Kernex
  125.                                 408-441-7376
  126. Xad            Motif 1.2                ACC,
  127.                         800-546-7274, 203-454-5500,
  128.                         info@acc-corp.com
  129.  
  130.                                 
  131. Look for magazine reviews for more complete comparisons of meta-file formats,
  132. documentation, real ease-of-use, etc; Unix World and Unix Review often carry
  133. articles. See also SunExpert 5/93.
  134.  
  135. ParcPlace is making freely available its popular ObjectBuilder(tm) and Object
  136. Interface (OI(tm)) products for the Linux operating system.  ObjectBuilder is
  137. a GUI builder written completely in C++, that enables UNIX C++ developers to
  138. apply the principles of object-orientation to the development of user
  139. interfaces. OI, a C++ class library, provides the toolkit foundation for
  140. ObjectBuilder. OI implements the look-and-feel of both Motif 1.2 and OPEN
  141. LOOK. OI is built directly on top of Xlib and is unencumbered by runtime
  142. royalties to any party.  ObjectBuilder and OI are very extensible, actively
  143. facilitating the use of subclassing to create new, reusable, user interface
  144. components.  Sources are on tsx-11.mit.edu in /pub/linux/packages/OI and
  145. available from ParcPlace (+1 408 481 9090).
  146.  
  147. Neuron Data (1 415 321-4488) makes Open Interface, a
  148. window-system-independent object toolkit which supports interfaces which are
  149. or resemble (supersets of) Mac, Windows, and Motif and Open Look; the package
  150. includes an interface builder.
  151.  
  152. The GRAMMI builder supports the development of Ada/X applications using its
  153. own set of objects which have Motif look and feel.  GRAMMI is written in Ada
  154. and generates Ada specs and stub bodies.  Call 1-800-877-1815 or send mail to
  155. info_server@evb.com with subject "send grammi" [without quotes].
  156.  
  157. In addition, these non-WYSIWYG but related products may help for goals of
  158. rapid prototyping of the application interface:
  159.  
  160. WCL: the Widget Creation Library. Basically describes the widget hierarchy
  161. and actions in a resources file; available from fine archive servers
  162. everywhere, including devvax.jpl.nasa.gov (128.149.1.143) in pub/. Wcl
  163. provides a very thin layer over Xt without any internal tweaking. Version 2.6
  164. is in ftp.x.org:~ftp/contrib/devel_tools/Wcl-2.6.tar.Z [8/94]. (A tutorial on
  165. WCL is available by telnet'ing to techinfo.mit.edu and using "search
  166. iap292".)
  167.  
  168. TCL/TK: TK is a Motif-like object set for use with the TCL scripting
  169. language. There is also a package tclMotif on ftp.x.org which may be used to
  170. add TCL scripting to Motif programs; version 1.2 was released 6/94.
  171.  
  172. WAFE: Wafe is a package that implements a symbolic interface to the Athena
  173. widgets (X11R5) and OSF/Motif.  A typical Wafe application consists of two
  174. parts: a front-end (Wafe) and an application program which runs typically as
  175. a separate process. The application program can be implemented in an
  176. arbitrary programming language and talks to the front-end via stdio.  Since
  177. Wafe (the front-end) was developed using the extensible TCL shell, an
  178. application program can dynamically submit requests to the front-end to build
  179. up the graphical user interface; the application can also down-load
  180. application specific procedures into the front-end, which can be executed
  181. without interaction with the application program.  Wafe 1.0 is available from
  182. ftp.wu-wien.ac.at:pub/src/X11/wafe/wafe-1.0.tar.gz [7/94].
  183.  
  184. XGEN: a scripting language which can be used to prototype Motif environments;
  185. available on ftp.x.org.
  186.  
  187. WINTERP: an Xlisp-based Motif toolkit (by Niels Mayer) allows for rapid
  188. prototyping and interpretive programming. Its interactive application
  189. development and delivery environment features a high-level object-oriented
  190. interface to the OSF/Motif Widgets and Xtoolkit, a high-level object-oriented
  191. 2.5D graphics/animation widget based on Xtango's path-transition animation
  192. paradigm, and facilities for communicating with other Unix processes and
  193. data.  WINTERP's interpreter is "serverized" so that other applications can
  194. communicate with WINTERP-based applications via unix domain sockets, or
  195. optionally, through internet domain sockets. WINTERP's built-in interpreter
  196. is based on XLISP-PLUS, which is a small, fast, portable, C-implemented
  197. interpreter providing a subset of Common-Lisp functionality and a
  198. Smalltalk-inspired object system.  A major new release, WINTERP 2.03, is on
  199. the X11R6 contrib tapes; version 2.03 [7/94] is on ftp.x.org in
  200. /contrib/devel_tools. Info:  winterp-source@netcom.com. See also
  201. http://www.eit.com/software/winterp/winterp.html
  202.  
  203. The Serpent UIMS permits the building of user-interfaces without specific
  204. knowledge of coding but with an understanding of attributes being set on a
  205. particular [Motif] widget.  Beta Release 1.2 is available from
  206. ftp.sei.cmu.edu (128.237.1.13) and can be found in /pub/serpent.  Serpent is
  207. also available on ftp.x.org (18.24.0.11) in /contrib/serpent. Email questions
  208. can go to serpent@sei.cmu.edu. A commercial version of Serpent is available
  209. as "Agora" from ASET, 221 Woodhaven Drive, Pittsburgh, PA 15228.
  210.  
  211. Garnet is a Common Lisp-based GUI toolkit. Information is available from
  212. garnet@cs.cmu.edu.
  213.  
  214. MetaCard is a hypertext/Rapid Application Development environment similar to
  215. Apple/Claris Corporation's HyperCard (info@metacard.com). MetaCard is
  216. available via anonymous FTP from ftp.metacard.com, csn.org, or
  217. 128.138.213.21. (Mailing list: listserv@grot.starconn.com).
  218.  
  219. Articles comparing these tools include:
  220.     UnixWorld 5/92; SunWorld 12/92; LAN Computing 12/92; SunExpert 5/93.
  221.  
  222. ----------------------------------------------------------------------
  223. Subject:  97)  Where can I find X tools callable from shell scripts?
  224. I want to have a shell script pop up menus and yes/no dialog boxes if the user 
  225. is running X.
  226.  
  227.     Several tools in the R3 contrib/ area were developed to satisfy these
  228. needs: yorn pops up a yes/no box, xmessage displays a string, etc. There are
  229. several versions of these tools; few, if any, have made it to the R4 contrib/ 
  230. area, though they may still be available on various archive sites.
  231.     XScript, a collection of X shell scripts, is on csc.canberra.edu.au 
  232. under /pub/motif/xscript and also on ftp.x.org; it includes several stand-alone
  233. X applications which can be embedded in shell scripts. XScript requires 
  234. tclMotif 1.0 or later.
  235.     In addition, Richard Hesketh (rlh2@ukc.ac.uk) has posted the xmenu
  236. package to comp.sources.x ("v08i008: xmenu") for 1-of-n choices.  [7/90]
  237.     Two versions of XPrompt have been posted to comp.sources.x, the latter
  238. being an unauthorized rewrite. [R. Forsman (thoth@reef.cis.ufl.edu), 1/91]
  239.     There is a version of XMenu available from comp.sources.x; it is
  240. being worked on and will likely be re-released.
  241.     xp-1.1.tar.Z, xpick-1.0.tar.Z and xzap-1.0.tar.Z on ftp.x.org's 
  242. contrib/ are tools by Gerry.Tomlinson@newcastle.ac.UK which act as X versions
  243. of the simple display and choice-making tools in K&P. [4/92]
  244.     xtpanel lets the user build a panel containing interactive objects such
  245. as buttons, sliders, text fields, etc., either from the command line or using a
  246. simple scripting language. It is available for anonymous ftp from 
  247. hanauma.Stanford.EDU (36.51.0.16) as pub/X/xtpanel-3.01.tar.Z and may also be 
  248. found in the alt.sources archives.
  249.  
  250. ----------------------------------------------------------------------
  251. Subject:  98)  Where can I get an X-based debugger?
  252.  
  253. xdbx, an X interface to the dbx debugger, is available via ftp from
  254. ftp.x.org. The current [1/91] version is 2.1 patchlevel 2.
  255.  
  256. An X interface to gdb called xxgdb is more like xdbx 2.1.2. It is part of
  257. comp.sources.x volume 11 [2/91]; xxgdb-1.06.tar.Z is on ftp.x.org.
  258.  
  259. mxgdb is a Motif interface to gdb by Jim Tsillas (jtsillas@proteon.com);
  260. version 1.2 was released 11/93.
  261.  
  262. UPS is a source-level debugger which runs under the X11 (and SunView) window
  263. systems on Sun, DEC, and Linux platforms. It is available from ftp.x.org
  264. (18.24.0.11) as contrib/ups-2.45.tar.Z (also ups-2.45-to-2.45.2.patch.Z) and
  265. unix.hensa.ac.uk (129.12.21.7) in /pub/misc/unix/ups (or try mail to
  266. archive@unix.hensa.ac.uk). [10/92] Unofficial fixes by Rod Armstrong
  267. (rod@san-jose.ate.slb.com) are on unix.hensa.ac.uk in
  268. /misc/unix/ups/contrib/rod@san-jose.ate.slb.com; they were last updated
  269. 9/94.
  270.  
  271. Also:
  272.  
  273. MIPS produces a highly-customizable (WCL-based) Visual Debugger.
  274.  
  275. You should be able to use Sun's dbxtool with its X11/NeWS server.
  276.  
  277. The CodeCenter (617-498-3000) source-level debugger, available on most major
  278. platforms, includes an X-based interface.
  279.  
  280. AT&T offers the eXamine Graphical Interface, an X11 interface to dbx and C++
  281. dbx for Sun3 and Sun4 and sdb and sdb++ for 386 and 3B2 platforms. Call
  282. 1-508-960-1997 or contact examine@mvuxi.att.com for more information.
  283.  
  284. Solbourne (+1 303-678-4626) offers PDB, its X-based debugger for C, C++ and
  285. Fortran.  PDB uses the OI toolkit and runs in either Open Look or Motif
  286. mode.
  287.  
  288. SCO (info@sco.com) offers dbXtra as part of several development systems.
  289.  
  290. Lucid's Energize Programming System, a tightly integrated development
  291. environment for C and C++ programs, incorporates a graphical user interface
  292. on top of an extended version of gdb. Info:  lucid-info@lucid.com, or (800)
  293. 223-9322.
  294.  
  295. ----------------------------------------------------------------------
  296. Subject:  99)! How can I "tee" an X program identically to several displays? 
  297.  
  298. There are several protocol multiplexer tools which provide for the
  299. simultaneous display of X clients on any number of machines:
  300.  
  301. XMX (an X Protocol Multiplexor) is available from wilma.cs.brown.edu
  302. (128.148.33.66) as pub/xmx.tar.Z It works independently of the server and
  303. does not affect the application being shared; it was developed for use in the
  304. electronic classroom. An update is expected soon [5/93].
  305.  
  306. XTV is a conference program which can be used to duplicate the "chalkboard"
  307. on several displays. Release 1 is available on the X11R5 contrib tapes; a
  308. more recent version is on ftp.cs.odu.edu as pub/wahab/XTV.r2.tar.Z.
  309.  
  310. SHX from Michael Altenhofen of Digital Equipment GmbH CEC Karlsruhe is a
  311. "WYSIWIS" (What You See Is What I See) package in the context of a
  312. computer-based learning/training tool to provide online help from remote
  313. tutors but is also useful for general window sharing.  SHX was last found on
  314. found on ftp.x.org.
  315.  
  316. Modifications to SHX for color mapping and private color allocation by Mark
  317. J. Handley (M.Handley@cs.ucl.ac.uk) are on cs.ucl.ac.uk in
  318. car/shX.car.tar.Z.
  319.  
  320. XTrap is implemented as a server/library extension and can be used to record
  321. and then replay an x session. It is available as
  322. ftp.x.org:/contrib/XTrapV33_X11R5.tar.Z.
  323.  
  324. The XTEST and RECORD extensions in R6 provide input synthesis and protocol
  325. recording respectively.  Taken together, they provide functionality similar
  326. to XTrap.
  327.  
  328. wscrawl can be used as a "multi-person paint program". It's available on
  329. sax.stanford.edu as wscrawl.shar.Z. Binaries are on doppler.ncsc.org in
  330. pub/wscrawl.
  331.  
  332. Shdr implements a simple shared whiteboard, without a chalk-passing
  333. mechanism. It's available on parcftp.xerox.com as pub/europarc/shdr.tar.Z.
  334.  
  335. SketchPad 1.0 (3/93) is a distributed interactive graphical editor
  336. particularly designed for sketching. Sources have been posted to alt.sources
  337. and are available from ftp.igd.fhg.de (192.44.32.1) in
  338. ~ftp/incoming/sketchpad.
  339.  
  340. The NESTOR project is described in "Upgrading A Window System For Tutoring
  341. Functions", Michael Altenhofen et al., the proceedings of the EXUG Conference
  342. 11/90.
  343.  
  344. xmove actually moves a client from one server to another; it is on
  345. ftp.cs.columbia.edu in /pub/xmove. See The X Resource (Summer 1994) for an
  346. article on the motivation for and construction of xmove.
  347.  
  348. Also of use:
  349.  
  350. Hewlett-Packard Co. has a commercial product, "HP SharedX" which works under
  351. HP-UX currently on their 300, 400, and 700 series workstations and their HP
  352. 700/RX X Stations.  Machines receiving shared windows can be any X server.
  353. HP SharedX consists of a server extensions and a Motif based user interface
  354. process.  Contact your local HP sales rep. for more information.
  355.  
  356. IBM offers a commercial product.
  357.  
  358. Sun offers multi-user confering software called ShowMe.
  359.  
  360. InSoft (Mechanicsburg, PA, USA, 717-730-9501) offers multi-user conferencing
  361. software called Communique. Version 3.0 is available on Sun and HP
  362. platforms.
  363.  
  364. Vartalaap is a multiparty multimedia Conferencing System that works over Unix
  365. sockets; the interfaceis based on XView.  It's available at ftp.x.org under
  366. contrib/vartalaap.tar.Z.
  367.  
  368. Collage is a synchronous collaborative data analysis tool for use over the
  369. Internet.  Features include a shared whiteboard, screen capture/sharing, a
  370. shared text editor, and data-analysis tools.  Sources are on
  371. ftp.ncsa.uiuc.edu (141.142.20.50) in /UNIX/XCollage/Collage1.3.  
  372.  
  373. [Thanks in part to scott@spectra.com (Tim Scott), 5/91, and to Peter Cigehn
  374. (peter@lulea.trab.se), 8/92 ]
  375.  
  376. ----------------------------------------------------------------------
  377. Subject: 100)! Can I use C++ with X11? Motif? XView?
  378.  
  379. The X11R4 and later header files are compatible with C++. The Motif 1.1
  380. header files are usable as is inside extern "C" {...}. However, the
  381. definition of String in Intrinsic.h can conflict with the libg++ or other
  382. String class and needs to be worked around.
  383.  
  384. Some other projects which can help:
  385.  
  386. WWL, a set of C++ classes by Jean-Daniel Fekete to wrap X Toolkit widgets,
  387. available via anonymous FTP from ftp.x.org as contrib/WWL-1.2.tar.Z [7/92] or
  388. lri.lri.fr (129.175.15.1) as pub/WWL-1.2.tar.Z.  It works by building a set
  389. of C++ classes in parallel to the class tree of the widgets.
  390.  
  391. The C++ InterViews toolkit is obtainable via anonymous FTP from
  392. interviews.stanford.edu. InterViews uses a box/glue model similar to that of
  393. TeX for constructing user interfaces and supports multiple looks on the user
  394. interfaces. Some of its sample applications include a WYSIWIG document editor
  395. (doc), a MacDraw-like drawing program (idraw) and an interface builder
  396. (ibuild).
  397.  
  398. THINGS,  a class library written at the Rome Air Force Base by the Strategic
  399. Air Command, available as freeware on archive sites.
  400.  
  401. Motif++ is a public-domain library that defines C++ class wrappers for Motif
  402. 1.1 and 1.2; it adds an "application" class for, e.g., initializing X, and
  403. also integrates WCL and the Xbae widget set. This work was developed by
  404. Ronald van Loon <rvloon@motif.xs4all.nl> based on X++, a set of bindings done
  405. by the University of Lowell Graphics Research Laboratory. The current sources
  406. are available from decuac.dec.com (192.5.214.1) in
  407. /pub/X11/motif++.28.jul.93.tar.gz; in the UK check src.doc.ic.ac.uk. Send to
  408. motif++-request@motif.xs4all.nl to be added to the mailing list.
  409.  
  410. Xm++ is a user interface framework for C++ using the Motif and Athena
  411. toolkits.  Source is on ftp.x.org as contrib/Xm++.0.52.tar.Z; or email to
  412. xmplus@ani.univie.ac.at.
  413.  
  414. YACL, Yet Another Class Library, by M. A. Sridhar
  415. (sridhar@usceast.cs.scarolina.edu) implements a general-purpose programming
  416. library, using X/Motif and MSWindows for graphical-user-interface needs;
  417. sources are on ftp.cs.scarolina.edu (129.252.131.11), as  the  file
  418. /pub/sridhar/yacl.zip.
  419.  
  420. The Theseus++ User Interface Toolkit Release 2.5.2 is a copylefted C++
  421. user-interface toolkit for X and Motif. Sources are on archimedes.igd.fhg.de
  422. in /pub/Theseus++/theseus++-2.5.2.
  423.  
  424. The source code examples for Doug Young's "Object-Oriented Programming with
  425. C++ and OSF/Motif" [ISBN 0-13-630252-1] do not include "widget wrappers" but
  426. do include a set of classes that encapsulates higher-level facilities
  427. commonly needed by Motif- or other Xt-based applications; check ftp.x.org in
  428. ~ftp/contrib/young.c++.tar.Z.
  429.  
  430. Rogue Wave offers "View.h++" for C++ programmers using Motif; info:
  431. 1-800-487-3217 or +1 503 754 2311.
  432.  
  433. A product called "Commonview" by Glockenspiel Ltd, Ireland (??) apparently is
  434. a C++-based toolkit for multiple window systems, including PM, Windows, and
  435. X/Motif.
  436.  
  437. Xv++ is sold by Qualix (415-572-0200; fax -1300); it implements an interface
  438. from the GIL files that Sun's OpenWindows Developers Guide 3.0 produces to
  439. Xview wrapper classes in C++.
  440.  
  441. The Microsoft Foundation Class (MFC) library from Bristol (info@bristol.com)
  442. is a GUI class library for Windows, Mac, and Motif applications.
  443.  
  444. UIT is a set of C++ classes embedding the XView toolkit; it is intended for
  445. use with Sun's OpenWindows Developers Guide 3.0 builder tool. Sources are on
  446. ftp.x.org as UIT.tar.Z. Version 2 was released 5/28/92.
  447.  
  448. Also of likely use is ObjectCenter (Saber-C++). And a reasonable alternative
  449. to all of the above is ParcPlace's (formerly Solbourne's) Object Interface.
  450.  
  451. The DD++ library is a C++ wrapper for the Motif 1.2 drag and drop preregister
  452. protocol; sources are on ftp.x.org:contrib/libraries/DD++1.1.tar.Z.
  453.  
  454. [Thanks to Douglas S. Rand (dsrand@mitre.org) and George Wu (gwu@tcs.com);2/91]
  455.  
  456. ----------------------------------------------------------------------
  457. Subject: 101)  Where can I obtain alternate language bindings to X/Xt/Motif?
  458.  
  459.     Versions of the CLX Lisp bindings are part of the X11 core source 
  460. distributions. A version of CLX is on the R5 tape [10/91]; version 5.0.2 [9/92]
  461. is on ftp.x.org in /contrib/CLX.R5.02.tar.Z.
  462.  
  463.     The SAIC Ada-X11 bindings are through anonymous ftp in /pub from
  464. stars.rosslyn.unisys.com (128.126.164.2) [perhaps
  465. falcon.stars.ballston.paramax.com (129.204.6.253)?]
  466.     There is an X/Ada study team sponsored by NASA JSC, which apparently is
  467. working out bindings. Information: xada@ghg.hou.tx.us.
  468.     GNU SmallTalk has a beta native SmallTalk binding to X called STIX (by
  469. Steven.Byrne@Eng.Sun.COM). It is still in its beginning stages, and 
  470. documentation is sparse outside the SmallTalk code itself. The sources are 
  471. available as /pub/gnu/smalltalk-1.1.1.tar.Z on prep.ai.mit.edu (18.71.0.38) or 
  472. ugle.unit.no (129.241.1.97).
  473.     Prolog bindings (called "XWIP") written by Ted Kim at UCLA while
  474. supported in part by DARPA are available by anonymous FTP from
  475. ftp.x.org:contrib/xwip.tar.Z or ftp.cs.ucla.edu:pub/xwip.tar.Z.
  476. These prolog language bindings depend on having a Quintus-type foreign function
  477. interface in your prolog. The developer has gotten it to work with Quintus and 
  478. SICStus prolog. Inquiries should go to xwip@cs.ucla.edu. [3/90]
  479.     Scheme bindings to Xlib, OSF/Motif, and Xaw are part of the Elk
  480. distribution; version 1.5a on ftp.x.org obsoletes the version on the R5 contrib
  481. tape. 
  482.     TCL bindings to Motif 1.[12] by Jan Newmarch 
  483. (jan@pandonia.canberra.edu.au) are on csc.canberra.edu.au and ftp.x.org. 
  484. Version 0.8 became available 11/93.
  485.     x-scm, a bolt-on accessory for Aubrey Jaffer's "scm" Scheme interpreter
  486. that provides an interface to Xlib, Motif, and OpenLook, is now available via 
  487. FTP from altdorf.ai.mit.edu:archive/scm/xscm1.05.tar.Z and 
  488. nexus.yorku.ca:pub/scheme/new/xscm1.05.tar.Z.
  489.  
  490.     Poplog V14.2 is offered by Integral Solutions Ltd. (Phone +44 (0)256
  491. 882028; Fax +44 (0)256 882182; Email isl@integ.uucp); it is an integrated
  492. programming environment consisting of the programming languages Pop-11,
  493. Prolog, Standard ML, and Lisp which are compiled to machine code via a common
  494. virtual machine. Pop-11 provides an interface to the X Toolkit which can be
  495. accessed from all other Poplog languages. The OLIT, Motif, and Athena widget
  496. sets are supported, in addition to the custom Poplog (Xpw) widget set.
  497. High-level Pop-11 libraries allow graph drawing, turtle graphics, and the
  498. simple creation of basic button/menu based interfaces.
  499.  
  500.     Ada bindings to Motif, explicitly, will eventually be made available by
  501. the Jet Propulsion Laboratories, probably through the normal electronic
  502. means.  Advance information can be obtained from dsouleles@dsfvax.jpl.nasa.gov,
  503. who may respond as time permits.
  504.     AdaMotif is a complete binding to X and Motif for the Ada language, for
  505. many common systems; it is based in part upon the SAIC/Unisys bindings and also
  506. includes a UIL to Ada translator. Info: Systems Engineering Research 
  507. Corporation, 1-800-Ada-SERC (well!serc@apple.com).
  508.  
  509.     Also: the X Consortium, although not involved in producing Ada
  510. bindings for X, maintains a partial listing of people involved in X and Ada;
  511. information is available from Donna Converse, converse@x.org.
  512.  
  513. ----------------------------------------------------------------------
  514. Subject: 102)  TOPIC: BUILDING THE X DISTRIBUTION [topic needs updating to R6]
  515. ----------------------------------------------------------------------
  516. Subject: 103)  What's a good source of information on configuring the X build?
  517.  
  518.     This FAQ includes information on a number of "gotchas" that can bite 
  519. you on particular system. However, the best source of general information on 
  520. building the X11 release is found in the Release Notes. The file is bundled 
  521. separately from the rest of the release, so if it's become separated from your 
  522. sources you can FTP another copy separately: the file RELNOTES.[ms,PS,TXT] at 
  523. the top of the distribution. The file RELNOTES is also available from the 
  524. xstuff mail server.
  525.     In addition, O'Reilly & Associates' Volume 8 on X Administration
  526. includes information on configuring and building X.
  527.  
  528. ----------------------------------------------------------------------
  529. Subject: 104)  Why doesn't my Sun with a cg6 work with R5?
  530.  
  531.     Apparently gcc is the problem; it seems to produce fine code for all
  532. Sun displays except for the cgsix. The new sunGX.o distributed with fix-07 
  533. may fix the problem (note: not known to work on Solaris).
  534.  
  535. ----------------------------------------------------------------------
  536. Subject: 105)  Why doesn't my Sun with SunOS 4.1 know about _dlsym, etc.?
  537.  
  538.     If you get errors with _dlsym _dlopen _dlclose undefined, link with 
  539. libdl.a.  Add "-ldl" to your and eventually to your site.def.  You may want to 
  540. surround it with "-Bstatic -ldl -Bdynamic" if you add it to the EXTRA_LIBRARIES
  541. variable, since "syslibs" get added after EXTRA_LIBRARIES on the eventual 
  542. compilation command; otherwise you may not have a shared libdl.  (Or compile 
  543. the stubs shared.)
  544.  
  545. [thanks to Joe Backo (joe.backo@East.Sun.COM), 12/91]
  546.  
  547. ----------------------------------------------------------------------
  548. Subject: 106)  What is this "_get_wmShellWidgetClass undefined" error?
  549.  
  550.     In SunOS 4.1.2 Sun fixed a shared-library bug in ld which conflicts
  551. with the way X builds the shared Xmu library, causing these symbols, notably, 
  552. to be undefined when building some X11 clients on SunOS 4.1.[23]: 
  553.     _get_wmShellWidgetClass
  554.     _get_applicationShellWidgetClass
  555. Compiling "-Bstatic -lXmu -Bdynamic" is overkill; be sure to set
  556. OSTeenyVersion correctly in the config/sun.cf file and rebuild X11R5.
  557.  
  558. To solve the problem if you are using OpenWindows 3.0 (X11R4-based Xt), please 
  559. contact your local Sun office and request the following patches:
  560.  
  561. Patch i.d.      Description
  562. 100512-02       4.1.x OpenWindows 3.0 libXt Jumbo patch
  563. 100573-03       4.1.x OpenWindows 3.0 undefined symbols when using
  564.                         shared libXmu
  565.  
  566. [Greg Earle, earle@Sun.COM; 7/92] 
  567.  
  568. A source patch for use with the X11R4 libraries was developed by Conrad 
  569. Kimball (cek@sdc.boeing.com); it retrofits into R4 some fixes made in R5 to
  570. get around this problem. The patch is on ftp.x.org in [1/93]
  571.     contrib/X11R4_sunos4.1.2_patch_version3.Z
  572.  
  573. ----------------------------------------------------------------------
  574. Subject: 107)  What's this problem with undefined _X symbols on SunOS 4.1.3?
  575.  
  576.         Make sure to set the OSTeenyVersion in the mit/config/sun.cf file
  577. if you see that vast numbers of Xlib functions are undefined in your X11R5 
  578. build:
  579.  
  580.   >cc -o bmtoa bmtoa.o -O -pipe  -L../.././lib/Xmu -lXmu -L/work1/X11R5/lib
  581.   >ld: Undefined symbol
  582.   >   _XGetVisualInfo
  583.   >   _XFree
  584.     ...
  585.  
  586. ----------------------------------------------------------------------
  587. Subject: 108)  Why does cc get used when I build X11R5 with gcc?
  588.  
  589.     When X11R5 was written gcc (version 1.X) did not support shared 
  590. libraries. Those parts requiring shared libraries are compiled with cc, those 
  591. that don't are compiled with gcc.
  592.   
  593. ----------------------------------------------------------------------
  594. Subject: 109)  What are these I/O errors running X built with gcc?
  595. When I try to run xinit or the Xsun server I get the error 
  596.     "Getting interface configuration: Operation not supported on socket. 
  597.     Fatal server bug! no screens found."
  598.  
  599.     Running the gcc fixincludes script apparently didn't work. You can do 
  600. this simple test:
  601.  
  602.     #include <sys/ioctl.h>
  603.     SIOCGIFCONF
  604.  
  605. Run that through cc -E and gcc -E.  The last line of output is the piece of 
  606. interest; it should be identical (modulo irrelevant differences like 
  607. whitespace).  If the gcc version has 'x' where the cc version has 'i', your 
  608. fixincludes run didn't work for some reason or other; go back to your gcc
  609. sources and run `fixincludes`; then rebuild the X distribution. If they are 
  610. identical, try running a make clean in mit/server and rebuilding, just to make 
  611. sure everything gets compiled with the proper include files.  
  612.  
  613. [courtesy der Mouse, mouse@LARRY.MCRCIM.MCGILL.EDU; 9/90]
  614.  
  615. ----------------------------------------------------------------------
  616. Subject: 110)  What are these problems compiling the X server on SunOS 4.1.1?
  617. The file <sundev/cg6reg.h> isn't being found.
  618.  
  619.     Sun omitted <sundev/cg6reg.h> from SunOS 4.1.1. Remove the #include 
  620. from sunCG6C.c and replace it with the line 
  621.     #define CG6_VADDR_COLOR   0x70016000
  622. The file has changed from earlier versions of SunOS and should not be copied 
  623. from another distribution.
  624.  
  625. ----------------------------------------------------------------------
  626. Subject: 111)  Can OW 3.0 OLIT programs run with R5 Xt? (_XtQString undefined)
  627.  
  628. This is a bug in the OLIT.  _XtQString was an external symbol that existed in
  629. X11R4 (upon which OW 3.0's libXt is based).  It wasn't documented and was
  630. removed in X11R5 (the Consoritum's guarantee of upward compatibility between
  631. the R4 and R5 libraries only applied to the documented interface).
  632.  
  633. A workaround is to temporarily set your LD_LIBRARY_PATH to point to the X11R4
  634. or OpenWindows Xt library that you linked the program against.
  635.  
  636. [10/92; from Barry Margolin (barmar@think.com); 3/93 from Jeff Francis 
  637. (jpf@heliocentric.com)]
  638.  
  639. ----------------------------------------------------------------------
  640. Subject: 112)  How do I get around the SunOS 4.1 security hole?
  641.  
  642.     There is a security problem with certain R4 clients (xterm and xload)
  643. running under SunOS 4.1 that have been installed setuid root and are using 
  644. shared libraries; to avoid the problem, do one of these:
  645.     1) make the program non-setuid. You should consult your system
  646. administrator concerning protection of resources (e.g. ptys and /dev/kmem) used
  647. by these programs, to make sure that you do not create additional security 
  648. problems at your site.
  649.     2) relink the programs statically (using -Bstatic).
  650.     3) install the libraries before linking and link with absolute paths
  651. to the libraries.
  652.  
  653. [from rws@x.org (Bob Scheifler), 12/90]
  654.  
  655. Newer versions  of xterm (R5/R6) do this automatically by rebuilding xterm
  656. against the newly-installed libraries when xterm is being installed; this
  657. prevents an suid program from being built with libraries specified
  658. relatively. Note that this may cause an inconvenience when doing the
  659. installation from NFS-mounted disks.  Xload has been rewritten to avoid the
  660. problem.
  661.  
  662. ----------------------------------------------------------------------
  663. Subject: 113)  How do I get around the frame-buffer security hole?
  664.  
  665.     On many systems the frame-buffer is unsecured by default; this permits 
  666. anyone who can log into your workstation to peek at your windowing session by 
  667. accessing the frame-buffer directly, or, as less of a privacy issue but perhaps
  668. more annoying, to [accidentally] start up a second X session on your console 
  669. display. Check the man page for fbtab(5).
  670.  
  671. [Thanks to Art Mulder (art@cs.ualberta.ca); 2/93.]
  672.  
  673. ----------------------------------------------------------------------
  674. Subject: 114)  TOPIC: BUILDING X PROGRAMS 
  675. ----------------------------------------------------------------------
  676. Subject: 115)  What is Imake?
  677.  
  678.     Imake is not a replacement for the make program; instead, it is a
  679. makefile-generator that takes advantages of the include-file and macro-
  680. processing capabilities of the C preprocessor cpp to generate makefiles 
  681. suitable for building software on a particular system. Although it is not 
  682. specific to X, the X release uses it to help solve a number of the 
  683. configuration issues that arise in making such a large system widely portable.
  684.     Imake has a fairly steep learning curve, in part because the process by
  685. which the system-specific configuration files, system-independent configuration
  686. files, and individual Imakefiles are melded to produce a Makefile is not 
  687. obvious.
  688.     There have been several different versions of imake; the R3, R4, R5
  689. and R6 versions are different.
  690.  
  691.     You can obtain information on imake from these sources:
  692.     - - the release notes and imake man page include information on using
  693. Imake to build X
  694.     - The R6 file xc/config/cf/README contains a list of imake variables
  695.     - the R4 and R5 release notes and imake man page include information on
  696. using Imake to build X
  697.     - the R4 and R5 file mit/config/README also contains useful information
  698.     - on the R4 tapes, contrib/doc/imake/imake.tex is Mark Moraes' R3/R4
  699. guide to imake.
  700.     - the R5 mit/doc/config/usenixws/paper.ms contains a paper by Jim
  701. Fulton on an early version of Imake
  702.  
  703.     - Paul DuBois (dubois@primate.wisc.edu) has written a useful 
  704. explanation of how Imake works and how to use it in configuring X for non-
  705. supported systems; the document is available from ftp.primate.wisc.edu
  706. in the directory ~ftp/pub/imake-stuff; look for config-X11R4.ms (troff) and 
  707. config-X11R4.ps (PostScript). Some supplemental appendices are nearby. 
  708. [7/91: document version is now 1.06] These imake papers are available by email;
  709. mail a message body of "send imake-stuff help" to almanac@primate.wisc.edu.
  710. They are also available by gopher to gopher.primate.wisc.edu under "Primate 
  711. Center Software Archives".
  712.     - see "System Administration - Imake: Friend or Foe?" by Dinah McNutt
  713. in the November 1991 issue of SunExpert.
  714.     - German readers should expect in June 1992 an article "Das Meta-Make 
  715. / I make, you make / Schwerelos" by Rainer Klute in "iX 
  716. Multiuser-Multitasking-Magazin", directed at application programmers needing to
  717. write Imakefiles. An English-language derivative of this article is in The
  718. X Journal, issue 2:1.
  719.     - The O'Reilly X Resource issue #2 contains Paul Davey's article on
  720. demystifying Imake.
  721.     - Alain Brossard's working document full of tips on Imake is in 
  722. sasun1.epfl.ch:pub/imakefile.1.Z.
  723.     - O'Reilly has published (7/93) "Software Portability with imake" by
  724. Paul DuBois; ISBN 1-56592-055-4. The book's electronic examples and
  725. additional software are on ftp.primate.wisc.edu in pub/imake-book;
  726. imake.tar.Z is a stand-alone imake installation.
  727.  
  728. [1/91;12/91;5/92;8/92;7/93]
  729.  
  730. ----------------------------------------------------------------------
  731. Subject: 116)  Where can I get imake?
  732.  
  733.     Versions are distributed with the R4, R5, and R6 releases. An earlier 
  734. version is distributed with the X11R3 release; some third-party toolkits 
  735. redistribute versions of imake along with their own implementations of the 
  736. template and configuration files. There are no real standards for such 
  737. configuration files, although most *current* contributed software expects the 
  738. templates distributed with X11R5.
  739.     ftp.x.org contains the R5 distribution unpacked, so you can pick up 
  740. imake without picking up the entire distribution.
  741.     A stand-alone version of Imake, but one stemming from X11R5, is in
  742. ftp.germany.eu.net:pub/X11/misc/imake/imake-pure.tar.Z (192.76.144.75).
  743.     A stand-alone version of Imake, but one stemming from X11R5, is in
  744. ftp.primate.wisc.edu:pub/imake-book/imake.tar.Z.
  745.  
  746. ----------------------------------------------------------------------
  747. Subject: 117)  I have a program with an Imakefile but no Makefile. What to do?
  748.  
  749.     If you have R4 or later installed on your system, run "xmkmf". This
  750. is a script which runs imake for you with the correct arguments. The output
  751. is a Makefile configured for your system and based on the Imakefile.  Then
  752. run make, which will use that new Makefile to compile the program.
  753.  
  754. ----------------------------------------------------------------------
  755. Subject: 118)  Why can't I link to the Xlib shape routines?
  756. When I try to compile certain programs, I get the following link error:
  757.     Undefined:
  758.     _XShapeQueryExtension
  759.     _XShapeCombineMask
  760.  
  761.     These routines are actually part of the Shape Extension to X (SHAPE)
  762. which was introduced in the X11R4 distribution and allows non-rectangular
  763. windows.  Like the other sample server extensions, the shape extension will 
  764. only run on a server which supports it.  Pre-X11R4 servers, as well as many 
  765. vendor-supplied servers, do not support the shape extension, in which case 
  766. they will display rectangular windows anyway.
  767.  
  768.     In order to use the shape extension, you must link to the library 
  769. libXext.a.  In the X11R4 distribution, this library and the associated includes
  770. will be in the mit/extensions directory.  If you do not have these files, do 
  771. not despair:  many freeware programs which use the shape extension can also be 
  772. compiled without it by removing the -DSHAPE define from the Makefile; you can
  773. probably do this and compile successfully against your older vendor-supplied X 
  774. libraries.
  775.  
  776. [from John B. Melby, melby%yk.fujitsu.co.jp@uunet.uu.net, 3/91]
  777.  
  778. ----------------------------------------------------------------------
  779. Subject: 119)  What are these problems with "_XtInherit not found" on the Sun?
  780. When I link a X program that I wrote on a SunOS 4.0.3 or 4.1 machine I get the 
  781. error "ld.so: symbol not found _XtInherit".
  782.  
  783.     What you are seeing is a side-effect of a kludge in the R4 libXt.a to 
  784. get Sun shared libraries working.  Apparently, you can't share a function that 
  785. is both called and compared, as _XtInherit is. This was handled by putting 
  786. _XtInherit in the same file as a function that is always used, thereby 
  787. guaranteeing that it would be loaded -- that is, in Initialize.c, where 
  788. XtToolkitInitialize() and XtInitialize() reside. These routines would normally
  789. be called.
  790.  
  791.     You are probably seeing this error because your program is not a normal
  792. Xt-based program and does not call XtToolkitInitialize() anywhere. 
  793.     1) it may be a program that uses Xt functions but never opens a 
  794. connection to the X server.  [OSF/Motif's 1.1.0 UIL had this problem; it called
  795. XtMalloc() and other Xt functions.] The solution is to add the call to your 
  796. program; the function does not have to be executed, just linked in.
  797.     2) alternatively, your program doesn't need any Xt functions and is
  798. correct in not calling XtToolkitInitialize() -- it may be an Xlib or XView 
  799. program. In this case, you can remove -lXt from your link command. 
  800.  
  801.     It should not be necessary to link the shared libraries statically,
  802. although this will certainly solve the problem.
  803.     
  804. [from Jordan Hayes (now jordan@MooreNet.COM) and Danny Backx (db@sunbim.be); 
  805. 11/90]
  806.  
  807. You may also see this error compiling X11R5 programs on a SunOS 4.1.3 machine;
  808. be sure to set OSTeenyVersion to 3 in the config/sun.cf file.
  809.  
  810. ----------------------------------------------------------------------
  811. Subject: 120)  TOPIC: PROGRAMMING PROBLEMS AND PUZZLES
  812. ----------------------------------------------------------------------
  813. Subject: 121)  Why doesn't my program get the keystrokes I select for (sic)?
  814.  
  815.     The window manager controls how the input focus is transferred from one
  816. window to another.  In order to get keystrokes, your program must ask the
  817. window manager for the input focus.  To do this, you must set up what are
  818. called "hints" for the window manager.  If your applications is Xlib-based, you
  819. can use something like the following:
  820.  
  821.         XWMHints wmhints;
  822.         ...
  823.         wmhints.flags = InputHint;
  824.         wmhints.input = True;
  825.         XSetWMHints(dpy, window, &wmhints)
  826.  
  827. If your application is based on the Xt Intrinsics, you can set the XtNinput 
  828. resource to be True (as you probably want to in any case); if you don't have
  829. source, you can start up the application with the resource '*input:True'.
  830.  
  831. Certain window managers, notably dxwm and olwm, are very picky about having 
  832. this done. 
  833.  
  834.     If you are using Sun's OpenWindows olwm, you can also add this resource
  835. to your defaults file to use clients that aren't ICCCM-compliant.
  836.     OpenWindows.FocusLenience:       true
  837.  
  838. [mostly courtesy Dave Lemke of NCD and Stuart Marks of Sun]
  839.  
  840. ----------------------------------------------------------------------
  841. Subject: 122)  How do I deiconify a window?
  842.  
  843. To de-iconify a window, map it with XMapWindow().  To iconify a window, use 
  844. XIconifyWindow().
  845.  
  846. ----------------------------------------------------------------------
  847. Subject: 123)  How do I figure out what window manager is running?
  848.  
  849.     You can't reliably tell; whatever mechanism you could use could be
  850. spoofed in any case. 
  851.     For most cases, you shouldn't care which window manager is running, so 
  852. long as you do things in an ICCCM-conformant manner. There are some cases in 
  853. which particular window managers are known to do things wrong; checking for
  854. particular hints placed on the window by the window manager so that you can 
  855. sidestep the problem may be appropriate in these cases. Alternatively, it may 
  856. be appropriate to determine which window manager is running in order to take
  857. advantage of specific *added* features (such as olwm's push-pin menus) in order
  858. to give your program *added* functionality. Beware of usurping the window 
  859. manager's functions by providing that functionality even when it is missing;
  860. this surely leads to future compatibility problems.
  861.  
  862. ----------------------------------------------------------------------
  863. Subject: 124)  Is there a skeleton X program available?
  864.     
  865.     There is no general framework such as the TransSkel program for the 
  866. Macintosh which handles lots of the odds and ends and overhead of development 
  867. under a window system and which can be used as a platform for additional 
  868. development. In X, the problem is typically solved by using an interactive 
  869. application builder tool or by using cut&paste on existing X applications. Good
  870. applications which you might look to manipulate when you want to "test just 
  871. this one little thing" include contrib/clients/xskel, a simple R4 program that 
  872. puts up a window and allows sketching in it and offers a starting point for
  873. quick hacks, the Xaw examples in the examples/ directory in the R3 and R4 
  874. distributions, and the Xlib "Hello World" example in the R3 doc/HelloWorld and 
  875. R4 doc/tutorials/HelloWorld; an updated version of this program which uses R4 
  876. Xlib calls and current ICCCM conventions was posted in 2/90 to comp.windows.x  
  877. by Glenn Widener of Tektronix.     [3/90]
  878.  
  879.     In addition, a sample Xt program (for Xaw or Xm) by Rainer Klute 
  880. showing how to open multiple displays and how to catch a broken display 
  881. connection is available on ftp.x.org in contrib/mdisp.tar.Z. [4/92] 
  882.     A sample multi-display Xt/Xaw program by Oliver Jones is on ftp.x.org
  883. in contrib/MultiUserVote.tar.Z. (See also his article in The X Resource, Issue 
  884. 3, "Multi-User Application Software Using Xt".)
  885.  
  886. ----------------------------------------------------------------------
  887. Subject: 125)  Why does XtGetValues not work for me (sic)?
  888.  
  889.     The XtGetValues interface for retrieving resources from a widget is
  890. sensitive to the type of variable. Your code may be doing something like this:
  891.     {
  892.     Arg args[3];
  893.     int i;
  894.     int sensitive;        /* oops; wrong data type */
  895.     i=0;
  896.     XtSetArg (args[i], XtNsensitive, &sensitive); i++;
  897.     XtGetValues(widget, args, i );
  898.     ...
  899.     }
  900.  
  901. But XtNsensitive is a Boolean, which on most machines is a single byte; 
  902. declaring the variable "sensitive" as Boolean works properly. This problem 
  903. comes up often when using particular toolkits that redefine the Xt types 
  904. Dimension and Position; code that assumes they are int will have similar 
  905. problems if those types are actually short. In general: you are safe if you
  906. use the actual type of the resource, as it appears in the widget's man page.
  907. [11/90]
  908.  
  909. ----------------------------------------------------------------------
  910. Subject: 126)  Why don't XtConfigureWidget/XtResizeWidget/XtMoveWidget work?
  911.  
  912.     You're probably trying to use these functions from application code.
  913. They should be used only internally to widgets; these functions are for a
  914. parent Composite widget to change the geometry of its children.  An
  915. application which calls XtMoveWidget, for example, effectively defeats
  916. geometry negotiation and the Composite parent's internal state (if any) will
  917. no longer be correct. (The Xt specification goes into more detail.)
  918.     The only way for your application to request a geometry change for a
  919. widget is to issue an XtSetValues call setting some of the geometry
  920. resources.  Although this call will result in the widget-internal functions'
  921. being called, your application code must use the standard XtSetValues
  922. interface or risk the widgets' data becoming corrupted.
  923.     Note that functions defined in <X11/IntrinsicP.h>, as these are, are
  924. typically reserved for use by widgets.
  925.     Other promising functions, XtMakeGeometryRequest() and
  926. XtMakeResizeRequest(), are also for use only by widgets, in this case by a
  927. child to request a change from its parent.
  928.     The Xlib calls XMoveWindow() and XResizeWindow() should similarly be 
  929. avoided; they shouldn't be used to change XtNx, XtNy, XtNwidth, or XtNheight.
  930.  
  931. ----------------------------------------------------------------------
  932. Subject: 127)  Why isn't there an XtReparentWidget call like XReparentWindow?
  933.  
  934.     Although there are various details of the current implementation of
  935. the Xt internals which make reparenting difficult, the major reason that no
  936. such call exists is that it remains undefined what the set of resources for
  937. the "new" widget should be. Resources are typically set based on the location
  938. in the instance hierarchy; what resources should change if the instance moves?
  939. What should happen to the widget's children? And by the time such semantics are
  940. defined, there would probably be little advantage over destroying the old 
  941. widget and creating a new widget in the correct location with the desired 
  942. resources, as setting the resources correctly is the majority of work in 
  943. creating a new widget. 
  944.  
  945.     Note that reparenting is possible in the OI toolkit.
  946.  
  947. ----------------------------------------------------------------------
  948. Subject: 128)  I'm writing a widget and can't use a float as a resource value.
  949.  
  950. Float resources are not portable; the size of the value may be larger than
  951. the size of an XtPointer. Try using a pointer to a float instead; the Xaw
  952. Scrollbar float resources are handled in this way. 
  953.  
  954. ----------------------------------------------------------------------
  955. Subject: 129)  Is this a memory leak in the X11R4 XtDestroyWidget()?!
  956.  
  957. Yes. This is the "unofficial" fix-19 for the X11R4 Destroy.c:
  958.  
  959. *** Destroy.c.1.37    Thu Jul 11 15:41:25 1991
  960. --- lib/Xt/Destroy.c    Thu Jul 11 15:42:23 1991
  961. ***************
  962. *** 1,4 ****
  963. --- 1,5 ----
  964.   /* $XConsortium: Destroy.c,v 1.37 90/09/28 10:21:32 swick Exp $ */
  965. + /* Plus unofficial patches in revisions 1.40 and 1.41 */
  966.   
  967.   /***********************************************************
  968.   Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
  969. ***************
  970. *** 221,239 ****
  971.        */
  972.   
  973.       int i = 0;
  974. !     DestroyRec* dr = app->destroy_list;
  975.       while (i < app->destroy_count) {
  976.       if (dr->dispatch_level >= dispatch_level)  {
  977.           Widget w = dr->widget;
  978.           if (--app->destroy_count)
  979.           bcopy( (char*)(dr+1), (char*)dr,
  980. !                app->destroy_count*sizeof(DestroyRec)
  981.                 );
  982.           XtPhase2Destroy(w);
  983.       }
  984.       else {
  985.           i++;
  986. -         dr++;
  987.       }
  988.       }
  989.   }
  990. --- 222,245 ----
  991.        */
  992.   
  993.       int i = 0;
  994. !     DestroyRec* dr;
  995.       while (i < app->destroy_count) {
  996. +     /* XtPhase2Destroy can result in calls to XtDestroyWidget,
  997. +      * and these could cause app->destroy_list to be reallocated.
  998. +      */
  999. +     dr = app->destroy_list + i;
  1000.       if (dr->dispatch_level >= dispatch_level)  {
  1001.           Widget w = dr->widget;
  1002.           if (--app->destroy_count)
  1003.           bcopy( (char*)(dr+1), (char*)dr,
  1004. !                (app->destroy_count - i) * sizeof(DestroyRec)
  1005.                 );
  1006.           XtPhase2Destroy(w);
  1007.       }
  1008.       else {
  1009.           i++;
  1010.       }
  1011.       }
  1012.   }
  1013.  
  1014. [from Donna Converse, converse@x.org]
  1015.  
  1016. ----------------------------------------------------------------------
  1017. Subject: 130)  Is this a memory leak in the X11R4 deletion of work procs?!
  1018.  
  1019. Apparently the X11R4 NextEvent.c`CallWorkProc fails to properly replace
  1020. the work proc record back on the free list correctly.
  1021.  
  1022.         if (delete) {
  1023.             w->next = freeWorkRecs;
  1024.             freeWorkRecs = w->next;    /* should be  =w; */
  1025.         }
  1026.  
  1027. ----------------------------------------------------------------------
  1028. Subject: 131)  Why does the process size of my X programs go up,up,up?
  1029.  
  1030. Using "ps" may not show any decrease in memory size after a malloc/free pair. 
  1031. With most vendors' implementations of memory managers, the call to free does 
  1032. not return memory to the operating system; it is probably maintained on a free 
  1033. list for the process. In addition, ps may not be an accurate report of current
  1034. memory usage requirements.
  1035.  
  1036. ----------------------------------------------------------------------
  1037.  
  1038. David B. Lewis                     faq%craft@uunet.uu.net
  1039.  
  1040.         "Just the FAQs, ma'am." -- Joe Friday 
  1041.  
  1042. -- 
  1043. David B. Lewis            Temporarily at but not speaking for ICS
  1044. day: dbl@ics.com        evening: dbl%craft@uunet.uu.net
  1045.  
  1046.