[comp.windows.x] Books on X Programming

erc@pai.UUCP (Eric F. Johnson) (06/19/91)

X Book List                                        18 June 91

Here is a list of X-related books broken down into useful categories.
Please send me corrections and updated information.


Motif

Berlage, Thomas, OSF/Motif: Concepts and Programming, Addison-Wesley,
UK, 1991. ISBN 0-201-55792-4.

Johnson, Eric F. and Kevin Reichard, Power Programming Motif,
MIS: Press, Portland, OR, 1991. ISBN 1-55828-059-6. Book with disk,
ISBN 1-55828-061-8.

Nye, Adrian and Tim O'Reilly, X Toolkit Intrinsics Programming Manual,
Motif Edition, O'Reilly and Assoc., Sebastopol, CA, 1991. ISBN 0-937175-62-5.

Open Software Foundation, Application Environment Specification (AES): User
Environment Volume, Rev. B, Prentice Hall, Englewood Cliffs, NJ, 1991. 
ISBN 0-13-043530-9.

Open Software Foundation, OSF/Motif Programmer's Reference, Revision 1.1,
Prentice Hall, Englewood Cliffs, NJ, 1991. ISBN 0-13-640681-5.

Open Software Foundation, OSF/Motif Style Guide, Revision 1.1,
Prentice Hall, Englewood Cliffs, NJ, 1991. ISBN 0-13-640616-5.

Open Software Foundation, OSF/Motif Programmer's Guide, Revision 1.1
Prentice Hall, Englewood Cliffs, NJ, 1991. ISBN 0-13-640673-4.

Young, Douglas A., The X Window System: Programming and Applications
with Xt, OSF/Motif Edition, Prentice Hall, Englewood Cliffs, NJ, 1990.
ISBN 0-13-497074-8.


X Toolkit

Asente, Paul J. and Ralph R. Swick, X Window System Toolkit,
Digital Press, Bedford, MA, 1990 (distributed by Prentice Hall).
ISBN (Digital Press) 1-55558-051-3, (Prentice Hall) 0-13-972191-6.

Keller, Brian J., A Practical Guide to X Window Programming, CRC Press,
1990. ISBN 0-8493-7406-5.

McCormack, Joel, Paul Asente and Ralph R. Swick, X Toolkit Intrinsics:
C Language Interface, X11 Release 4 version, 1989, MIT X Consortium.
This document comes with the X Window System Release 4, from MIT.

Nye, Adrian and Tim O'Reilly, X Toolkit Intrinsics Programming Manual, 
O'Reilly and Assoc., Sebastopol, CA, 1990. ISBN 0-937175-33-1.

O'Reilly, Tim (editor), X Toolkit Intrinsics Reference Manual, O'Reilly
and Assoc., Sebastopol, CA, 1990. ISBN 0-937175-35-8.

Smith, Jerry D., Object-Oriented Programming with the X Window System
Toolkits, John Wiley, New York, NY, 1991. ISBN 0-471-53259-2.


X Library

Barkakati, Nabajyoti, X Window System Programming, SAMS, 1991. ISBN 
0-672-22750-9. 

Johnson, Eric F. and Kevin Reichard, X Window Applications Programming,
MIS: Press, Portland, OR, 1989. ISBN 1-55828-016-2. Book with disk ISBN
1-55828-035-9.

Johnson, Eric F. and Kevin Reichard, Advanced X Window Applications 
Programming, MIS: Press, Portland, OR, 1990. ISBN 1-55828-029-4. Book with 
disk ISBN 1-55828-054-5.

Jones, Oliver, Introduction to the X Window System, Prentice Hall,
Englewood Cliffs, NJ, 1989. ISBN 0-13-499997-5.

Nye, Adrian, Xlib Programming Manual, vol. 1, 2nd ed., O'Reilly and Assoc.,
Sebastopol, CA, 1990. ISBN 0-937175-11-0.

Nye, Adrian (editor), Xlib Reference Manual, vol. 2, 2nd ed., O'Reilly and 
Assoc., Sebastopol, CA, 1990. ISBN 0-937175-12-9.

Scheifler, Robert W. and James Gettys, with Jim Flowers, Ron Newman
and David Rosenthal, 2nd ed., X Window System: The Complete Reference
to Xlib, X Protocol, ICCCM, XLFD, Digital Press, Bedford, MA, 1990.
ISBN (Digital Press) 1-5558-050-5, (Prentice Hall) 0-13-972050-2.


Open Look 

AT&T, UNIX System V Release 4 Programmer's Guide: OPEN LOOK Graphical User
Interface, Prentice Hall, Englewood Cliffs, NJ, 1989. ISBN 0-13-931908-5.

Heller, Dan, XView Programming Manual, O'Reilly and Assoc., Sebastopol, CA, 
1990. ISBN 0-937175-52-8.

Miller, John David, An OPEN LOOK at UNIX: A Developer's Guide to X, M&T
Books, 1990. ISBN 1-55-851057-5. 

Sun Microsystems, OPEN LOOK: Graphical User Interface Fucntional 
Specification, Addison-Wesley, Reading, MA, 1990. ISBN 0-201-52365-5.

Sun Microsystems, OPEN LOOK: Graphical User Interface Application Style 
Guidelines, Addison-Wesley, Reading, MA, 1990. ISBN 0-201-52364-7.


Quick Reference Guides

Mikes, Steven, X Window System Technical Reference, Addison-Wesley, 1990.
ISBN 0-201-52370-1. 

O'Reilly and Assoc., The X Window System in a Nutshell, O'Reilly and
Associates, 1990. ISBN 0-937175-24-2. 

Rost, Randi J., X and Motif Quick Reference Guide, Digital Press, Bedford, MA,
1990 (distributed by Prentice Hall). ISBN (Digital Press) 1-55558-052-1,
(Prentice Hall) 0-13-972209-2.

Young, Douglas A., OSF/Motif Reference Guide, Prentice Hall, Englewood Cliffs,
NJ, 1990. ISBN 0-13-642786-3.


X User Guides

Mansfield, Niall, The X Window System: A User's Guide, Addison-Wesley, 
Amsterdam, 1989. ISBN 0-201-51341-2. 

Quercia, Valerie and Tim O'Reilly, X Window System User's Guide, O'Reilly 
and Assoc., 1990. ISBN 0-937175-14-5.

Hope this helps,
-Eric

-- 
Eric F. Johnson                                         BTI: Industrial
Boulware Technologies, Inc.   fax:   +1 612 894 0316    automation systems
415 W. Travelers Trail        email: erc@pai.mn.org     and services
Burnsville, MN 55337 USA

johnston@plains.NoDak.edu (jeff w. johnston) (06/21/91)

In article <1806@pai.UUCP> erc@pai.UUCP (Eric F. Johnson) writes:

>X Toolkit
>
>Asente, Paul J. and Ralph R. Swick, X Window System Toolkit,
>Digital Press, Bedford, MA, 1990 (distributed by Prentice Hall).
>ISBN (Digital Press) 1-55558-051-3, (Prentice Hall) 0-13-972191-6.

How good is this book?  I just ordered it from my local Dalton's
because it had "Toolkit" in its title.  Also, does anyone know
whether this is available with diskette?

If anyone has high praise for a specific Xtoolkit book, please
mail me the title.

Thanks,

--Jeff

-- 
Jeff W. Johnston    (the X-Disciple) |  "J'aime deux choses dans la vie:
SysAdm,  Computer Engineering        |      toi et la rose.
North Dakota State University        |      la rose pour un jours,
EEE Building, Engineering Cmplx      |      et tois pour toujours."

quanbook@world.std.com (William J Szabo) (06/27/91)

In article <10907@plains.NoDak.edu> johnston@plains.NoDak.edu (jeff w. johnston) writes:
>>X Toolkit
>>
>>Asente, Paul J. and Ralph R. Swick, X Window System Toolkit,
>>Digital Press, Bedford, MA, 1990 (distributed by Prentice Hall).
>>ISBN (Digital Press) 1-55558-051-3, (Prentice Hall) 0-13-972191-6.
>
>How good is this book? 

>If anyone has high praise for a specific Xtoolkit book, please
>mail me the title.
>

The Asente and Swick book has sold quite well here...don't know from personal
experience how good it is, but can try to get more information for you, if
you want.

Our best-selling book(s) on the Xtoolkit are the two-volume set from O'Reilly
and Associates.  Well written and clear.  One is the _Programming Manual_,
Volume 4, and Volume 5 is the _Reference Manual_.  There is a Motif edition
of volume 4 available as well...

Email us if you want more information

George





-- 
Quantum Books          We are moving to Four Cambridge Center,
One Kendall Square     Cambridge, MA  02142.  Phone numbers remain
Cambridge, MA  02139   the same.  The move is July 4&5.
Phone: 617-494-5042    Fax: (617) 577-7282     quanbook@world.std.com

ackerman@athena.mit.edu (Mark S. Ackerman) (06/27/91)

>>>Asente, Paul J. and Ralph R. Swick, X Window System Toolkit,
>>>Digital Press, Bedford, MA, 1990 (distributed by Prentice Hall).
>>>ISBN (Digital Press) 1-55558-051-3, (Prentice Hall) 0-13-972191-6.
>>
>>How good is this book? 
>
>>If anyone has high praise for a specific Xtoolkit book, please
>>mail me the title.
>>

I recommend this book highly.  The examples are clear, and I haven't
found any mistakes.  I'd recommend using the O'Reilley books or Doug
Young's for triangulation.

				Mark Ackerman
				("Ack")
				Coordination Technology Group
				MIT/Center for Coordination Science

wiseb@turing.cs.rpi.edu (G. Bowden Wise) (06/28/91)

>>
>>Asente, Paul J. and Ralph R. Swick, X Window System Toolkit,
>>Digital Press, Bedford, MA, 1990 (distributed by Prentice Hall).
>>ISBN (Digital Press) 1-55558-051-3, (Prentice Hall) 0-13-972191-6.
>>
>>How good is this book? 

> The Asente and Swick book has sold quite well here...don't know from personal
> experience how good it is, but can try to get more information for you, if
> you want.

Can someone post a description of the table of contents for this book?
Is it up-to-date?  What toolkits are covered?
--
--------------------------------------------------------------------
- Bowden Wise
  Computer Science Dept, Rensselaer Polytechnic Inst, Troy, NY 12180
  internet: wiseb@cs.rpi.edu                 bitnet: bowden@rpitsmts

klee@wsl.dec.com (Ken Lee) (06/29/91)

In article <gkgl1=+@rpi.edu>, wiseb@turing.cs.rpi.edu (G. Bowden Wise) writes:
|> >>Asente, Paul J. and Ralph R. Swick, X Window System Toolkit,
|> >>Digital Press, Bedford, MA, 1990 (distributed by Prentice Hall).
|> >>ISBN (Digital Press) 1-55558-051-3, (Prentice Hall) 0-13-972191-6.
|> 
|> Can someone post a description of the table of contents for this book?
|> Is it up-to-date?  What toolkits are covered?

This is the best X Toolkit book by far.  It is current (X11R4) and
includes both a tutorial and a complete specification.  The tutorial is
geared towards serious programmers.  The section on writing your own
widgets is excelent, and contains much information not found
elsewhere.  There is also tutorial info on writing applications, though
this concentrates on generic X Toolkit use, not particular widget
sets.

If you're interested in Motif programming, Thomas Berlage's book
*OSF/Motif: Concepts and Programming* is a good tutorial.  It's not as
complete as the OSF manuals, but does cover the complex subjects pretty
well.  If you're doing production-quality applications, you'll probably
want the Asente & Swick book as well, for it's superior coverage of
generic X Toolkit matters.

-- 
Ken Lee
DEC Western Software Laboratory, Palo Alto, Calif.
Internet: klee@wsl.dec.com
uucp: uunet!decwrl!klee

asente@adobe.com (Paul Asente) (06/29/91)

>>>Asente, Paul J. and Ralph R. Swick, X Window System Toolkit,
>>>Digital Press, Bedford, MA, 1990 (distributed by Prentice Hall).
>>>ISBN (Digital Press) 1-55558-051-3, (Prentice Hall) 0-13-972191-6.

>Can someone post a description of the table of contents for this book?
>Is it up-to-date?  What toolkits are covered?

The book completely covers the R4 Xt toolkit.  It does not discuss any 
widget sets.

The table of contents is at the end of this message.

	-paul asente
		asente@adobe.com	...decwrl!adobe!asente

    Ratz put a bucket of liquid in front of me.
   "I wanted a glass of docs, Ratz.  What the hell is this?" I barked.
   "Motif don't fit in a glass anymore," he barked back.
    I looked at the liquid.  It was totally opaque to me.

TABLE OF CONTENTS

    Introduction

    PART I PROGRAMMER'S GUIDE

    Chapter 1. Applications
	Writing Applications
	    1.1. Structure of Toolkit Applications
	    1.2. What Is a Widget?
	    1.3. Object-Oriented Programming
	    1.4. Terminology
	    1.5. Intrinsics Data Types
	    1.6. The Callback Model
	    1.7. Error Handling
	    1.8. The Application User Interface
	    1.9. A  Simple Application -- "Goodbye, world"
	    1.10. Application Contexts
	    1.11. Initializing the Toolkit
	    1.12. Exiting Applications
	    1.13. Writing Applications
	    1.14. Writing a New Widget
	    1.15. Debugging Toolkit Applications
	    1.16. Procedures and Macros
	    1.17. Procedure Types
	Writing Widgets
	    1.18. More on Header Files
	    1.19. Designing Widget Sets

    Chapter 2. Widgets
	Writing Applications
	    2.1. Common Widget Classes
	    2.2. The Class Hierarchy
	    2.3. Initializing Widget Classes
	    2.4. Widget Naming Conventions
	    2.5. Widget Resources
	    2.6. The Base Widget Classes
	    2.6.1. The Core Widget and Its Resources
	    2.6.2. The Composite Widget and Its Resources
	    2.6.3. The Constraint Widget
	    2.7. Visuals, Colormaps, and Window Depths
	    2.8. Creating Widget Instances
	    2.9. Realizing Widgets
	    2.10. Unrealizing Widgets
	    2.11. Destroying Widgets
	    2.12. Widget Information Functions
	Writing Widgets
	    2.13. Widget Data Structures
	    2.14. Structure Naming Conventions
	    2.15. Writing Header Files
	    2.15.1. Writing Private Header Files
	    2.15.2. Writing Public Header Files
	    2.15.3. Internal Header Files
	    2.16. The Base Widget Classes
	    2.16.1. The Core Class Structure
	    2.16.2. The Core Instance Structure
	    2.16.3. The Composite Class Structure
	    2.16.4. The Composite Instance Structure
	    2.16.5. The Constraint Class Structure
	    2.16.6. The Constraint Instance Structure
	    2.17. Declaring the Class Record
	    2.18. Class Methods
	    2.19. Class Information Functions
	    2.20. Class Initialization
	    2.21. Extension Records
	    2.22. Anticipating Subclassing
	    2.23. Initializing Widgets
	    2.24. Realizing Widgets
	    2.25. Destroying Widgets
	    2.26. Designing Class Methods
	    2.27. New Widget Methods

    Chapter 3. Resources and Callbacks
	Writing Applications
	    3.1. What Is a Resource?
	    3.2. Resource Naming Conventions
	    3.3. Resource Types
	    3.4. Resource Specifications
	    3.5. Resource Files
	    3.6. Parsing the Command Line
	    3.7. Resource Conversions
	    3.8. Argument Lists
	    3.9. Variable Argument Procedures
	    3.10. Resource Files versus Argument Lists
	    3.11. Application Resources
	    3.12. Finding Out about a Widget's Resources
	    3.13. Resources at Widget Creation
	    3.14. Getting Widget Resources
	    3.15. Setting Widget Resources
	    3.16. Callback Procedures
	Writing Widgets
	    3.17. Resource Lists
	    3.18. Designing Resources
	    3.19. The Conversion Cache
	    3.20. Resource Converters
	    3.21. Adding New Type Converters
	    3.22. Reference Counting
	    3.23. Providing Resource Values
	    3.24. Setting Resource Values
	    3.25. Subresources
	    3.26. Callbacks

    Chapter 4. Composite Widgets and Geometry Management
	Writing Applications
	    4.1. Geometry
	    4.2. Order of Children
	    4.3. Managed and Unmanaged Widgets
	    4.4. Mapping and Unmapping
	    4.5. Realized, Unrealized, Managed, and Unmanaged Widgets
	    4.6. Using Constraint Widgets
	Writing Widgets
	    4.7. Composite Widgets
	    4.8. Inserting and Deleting Children
	    4.9. Data Caching
	    4.10. Notification of Managed Set Changing
	    4.11. Control Flow for Widget Creation
	    4.12. Geometry Changes
	    4.13. Making Geometry Requests
	    4.14. Geometry Managers
	    4.15. Changing Geometry from Above
	    4.16. Responding to Geometry Changes
	    4.17. Querying Geometry
	    4.18. Writing Constraint Widgets

    Chapter 5. Shell Widgets and Pop-Ups
	Writing Applications
	    5.1. Shell Widgets
	    5.2. Shell Widget Resources
	    5.3. Shells and Geometry
	    5.4. Children of Shells
	    5.5. Creating a New Widget Tree
	    5.6. Pop-Up Shells and Pop-Up Children
	    5.7. Creating Pop-Up Shells
	    5.8. Types of Pop-Up Widgets
	    5.9. Controlling Pop-Ups
	Writing Widgets
	    5.10. The Shell Class Hierarchy
	    5.10.1. The Shell Widget
	    5.10.2. The Override Shell Widget
	    5.10.3. The Window Manager Shell Widget
	    5.10.4. The Vendor Shell Widget
	    5.10.5. The Transient Shell Widget
	    5.10.6. The Top-Level Shell Widget
	    5.10.7. The Application Shell Widget
	    5.11. What Shells Do
	    5.11.1. Setting Properties
	    5.11.2. Iconification and Deiconification
	    5.11.3. Changing Size and Position
	    5.11.4. External Geometry Changes
	    5.11.5. Size and Window Manager Hints
	    5.12. Vendor Shells

    Chapter 6. Event Handling
	Writing Applications
	    6.1. X Events
	    6.2. The Application Main Loop
	    6.3. Alternate Input Sources
	    6.4. Timers
	    6.5. The Grab List
	    6.6. Setting Window Manager Protocols
	    6.7. Handling Focus
	    6.8. Getting Events
	    6.9. Dispatching Events
	    6.10. Custom Event-Dispatching Loops
	    6.11. Background Work Procedures
	    6.12. Using Xlib Event Routines
	    6.13. Pointer and Keyboard Grabs
	    6.14. Sensitivity
	Writing Widgets
	    6.15. Event Filters
	    6.16. Handling Exposures
	    6.17. Visibility
	    6.18. Implementing Sensitivity
	    6.19. Accepting Input Focus
	    6.20. More on the Grab List
	    6.21. Pointer and Keyboard Grabs
	    6.22. X Event Handlers
	    6.23. Getting the Current Event Mask

    Chapter 7. Translation Management
	Writing Applications
	    7.1. Translation Tables
	    7.2. Setting the Multi-Click Timeout
	    7.3. Translation Tables in the Program
	    7.4. Translation Tables in Resource Files
	    7.5. Action Tables
	    7.6. Adding Application Actions
	    7.7. Writing Action Procedures
	    7.8. XtMenuPopup and XtMenuPopdown
	    7.9. Resolving Action Names
	    7.10. Registering Grab Actions
	    7.11. A Translation Example
	    7.12. Calling Action Procedures Directly
	    7.13. Handling the Keyboard
	    7.14. Action Hooks
	    7.15. Defining Accelerators
	    7.16. Installing Accelerators
	    7.17. An Accelerator Example
	    7.18. Using a Widget as a Window
	Writing Widgets
	    7.19. More on Translation Tables
	    7.20. Default Translations and Action Tables
	    7.21. Displaying Accelerators
	    7.22. Getting a Keysym from a Keyboard Event
	    7.23. Keycodes and Keysyms:  Here Be Dragons

    Chapter 8. Nonwidget Objects
	Writing Applications
	    8.1. Background
	    8.2. The Base Object Classes
	    8.2.1. The Object and Its Resource
	    8.2.2. The Rectangle Object and Its Resources
	    8.2.3. Resources Not Defined for Objects
	    8.3. Types and Intrinsic Routines
	    8.4. Object Information Functions
	    8.5. Using Objects in Applications
	    8.6. Using Gadgets
	Writing Widgets
	    8.7. The Base Object Classes
	    8.7.1. The Object Class Structure
	    8.7.2. The Object Instance Structure
	    8.7.3. The Rectangle Object Class Structure
	    8.7.4. The Rectangle Object Instance Structure
	    8.7.5. The Unnamed Class
	    8.7.6. Object and Rectangle Object Declarations
	    8.8. Using Objects in Widgets
	    8.9. Writing Composite Widgets to Support Gadgets
	    8.10. Writing Gadgets

    Chapter 9. Odds and Ends
	Writing Applications
	    9.1. Toolkit Version
	    9.2. The Size of Arrays
	    9.3. Finding Widgets
	    9.4. Memory Management
	    9.5. Translating Coordinates
	    9.6. Error Handling
	    9.7. Setting Colormap Windows
	    9.8. Finding Files
	    9.9. Selections
	    9.10. Getting the Most Recent Timestamp
	Writing Widgets
	    9.11. Graphics Contexts
	    9.12. Merging Exposures
	    9.13. Selections
	    9.13.1. Getting the Selection Value
	    9.13.2. Providing the Selection
	    9.14. Incremental Selections
	    9.14.1. Getting the Selection Value Incrementally
	    9.14.2. Providing the Selection Incrementally
	    9.15. Getting the Selection Request Event
	    9.16. Selection Timeouts

    Chapter 10. Pulling It All Together
	Writing Applications
	    10.1. The Sample Widgets
	    10.1.1. The Label Widget
	    10.1.2. The Pubutton Widget
	    10.1.3. The MenuItem Widget
	    10.1.4. The Box Widget
	    10.1.5. The MinMax Widget
	    10.1.6. The Confirm Widget
	    10.1.7. The Menu Widget
	    10.1.8. The Label Gadget
	    10.1.9. The Graph Widget
	    10.1.10. The GraphDisplay Object
	    10.1.11. The BarDisplay Object
	    10.2. A Desktop Calculator
	    10.2.1. The Implementation
	    10.2.2. The Application Defaults File
	    10.2.3. Suggested Programming Exercises
	    10.3. A Mail Notifier
	    10.3.1. The Implementation
	    10.3.2. The Application Defaults File
	    10.3.3. Suggested Programming Exercises
	    10.4. A System Monitor
	    10.4.1. The Implementation
	    10.4.2. The Application Defaults File
	    10.4.3. Suggested Programming Exercises
	Writing Widgets
	    10.5. The Label Widget
	    10.5.1. The Public Header File
	    10.5.2. The Private Header File
	    10.5.3. The Implementation
	    10.5.4. Suggested Programming Exercises
	    10.6. The Pubutton Widget
	    10.6.1. The Public Header File
	    10.6.2. The Private Header File
	    10.6.3. The Implementation
	    10.6.4. Suggested Programming Exercises
	    10.7. The MenuItem Widget
	    10.7.1. The Public Header File
	    10.7.2. The Private Header File
	    10.7.3. The Implementation
	    10.7.4. Suggested Programming Exercises
	    10.8. The Box Widget
	    10.8.1. The Public Header File
	    10.8.2. The Private Header File
	    10.8.3. The Implementation
	    10.8.4. Suggested Programming Exercises
	    10.9. The MinMax Widget
	    10.9.1. The Public Header File
	    10.9.2. The Private Header File
	    10.9.3. The Implementation
	    10.9.4. Suggested Programming Exercises
	    10.10. The Confirm Widget
	    10.10.1. The Public Header File
	    10.10.2. The Private Header File
	    10.10.3. The Implementation
	    10.10.4. Suggested Programming Exercises
	    10.11. The Confirm Widget, Alternative Implementation
	    10.11.1. The Public Header File
	    10.11.2. The Private Header File
	    10.11.3. The Implementation
	    10.12. The Menu Widget
	    10.12.1. The Public Header File
	    10.12.2. The Private Header File
	    10.12.3. The Implementation
	    10.12.4. Suggested Programming Exercises
	    10.13. The Label Gadget
	    10.13.1. The Public Header File
	    10.13.2. The Private Header File
	    10.13.3. The Implementation
	    10.13.4. Suggested Programming Exercises
	    10.14. The Graph Widget
	    10.14.1. The Public Header File
	    10.14.2. The Private Header File
	    10.14.3. The Implementation
	    10.14.4. Suggested Programming Exercises
	    10.15. The GraphDisplay Object
	    10.15.1. The Public Header File
	    10.15.2. The Private Header File
	    10.15.3. The Implementation
	    10.16. The BarDisplay Object
	    10.16.1. The Public Header File
	    10.16.2. The Private Header File
	    10.16.3. The Implementation
	    10.16.4. Suggested Programming Exercises

    PART II SPECIFICATION

    Chapter 1. Intrinsics and Widgets
	    1.1. Intrinsics
	    1.2. Languages
	    1.3. Procedures and Macros
	    1.4. Widgets
	    1.4.1. Core Widgets
	    1.4.1.1. CoreClassPart Structure
	    1.4.1.2. CorePart Structure
	    1.4.1.3. Core Resources
	    1.4.1.4. CorePart Default Values
	    1.4.2. Composite Widgets
	    1.4.2.1. CompositeClassPart Structure
	    1.4.2.2. CompositePart Structure
	    1.4.2.3. Composite Resources
	    1.4.2.4. CompositePart Default Values
	    1.4.3. Constraint Widgets
	    1.4.3.1. ConstraintClassPart Structure
	    1.4.3.2. ConstraintPart Structure
	    1.4.3.3. Constraint Resources
	    1.5. Implementation-Specific Types
	    1.6. Widget Classing
	    1.6.1. Widget Naming Conventions
	    1.6.2. Widget Subclassing in Public .h Files
	    1.6.3. Widget Subclassing in Private .h Files
	    1.6.4. Widget Subclassing in .c Files
	    1.6.5. Widget Class and Superclass Lookup
	    1.6.6. Widget Subclass Verification
	    1.6.7. Superclass Chaining
	    1.6.8. Class Initialization: class_initialize and
		   class_part_initialize Procedures
	    1.6.9. Initializing a Widget Class
	    1.6.10. Inheritance of Superclass Operations
	    1.6.11. Invocation of Superclass Operations
	    1.6.12. Class Extension Records

    Chapter 2. Widget Instantiation
	    2.1. Initializing the X Toolkit
	    2.2. Loading the Resource Database
	    2.3. Parsing the Command Line
	    2.4. Creating Widgets
	    2.4.1. Creating and Merging Argument Lists
	    2.4.2. Creating a Widget Instance
	    2.4.3. Creating an Application Shell Instance
	    2.4.4. Convenience Procedure to Initialize an Application
	    2.4.5. Widget Instance Initialization: the initialize Procedure
	    2.4.6. Constraint Instance Initialization:  the
		   ConstraintClassPart initialize Procedure
	    2.4.7. Nonwidget Data Initialization: the initialize_hook Procedure
	    2.5. Realizing Widgets
	    2.5.1. Widget Instance Window Creation: the realize Procedure
	    2.5.2. Window Creation Convenience Routine
	    2.6. Obtaining Window Information from a Widget
	    2.7. Unrealizing Widgets
	    2.8. Destroying Widgets
	    2.8.1. Adding and Removing Destroy Callbacks
	    2.8.2. Dynamic Data Deallocation: the destroy Procedure
	    2.8.3. Dynamic Constraint Data Deallocation:  the
		   ConstraintClassPart destroy Procedure
	    2.9. Exiting from an Application

    Chapter 3. Composite Widgets and Their Children
	    3.1. Addition of Children to a Composite Widget:  the
		 insert_child Procedure
	    3.2. Insertion Order of Children: the insert_position Procedure
	    3.3. Deletion of Children: the delete_child Procedure
	    3.4. Adding and Removing Children from the Managed Set
	    3.4.1. Managing Children
	    3.4.2. Unmanaging Children
	    3.4.3. Determining If a Widget Is Managed
	    3.5. Controlling When Widgets Get Mapped
	    3.6. Constrained Composite Widgets

    Chapter 4. Shell Widgets
	    4.1. Shell Widget Definitions
	    4.1.1. ShellClassPart Definitions
	    4.1.2. ShellPart Definition
	    4.1.3. Shell Resources
	    4.1.4. ShellPart Default Values

    Chapter 5. Pop-Up Widgets
	    5.1. Pop-Up Widget Types
	    5.2. Creating a Pop-Up ell
	    5.3. Creating Pop-Up Children
	    5.4. Mapping a Pop-Up Widget
	    5.5. Unmapping a Pop-Up Widget

    Chapter 6. Geometry Management
	    6.1. Initiating Geometry Changes
	    6.2. General Geometry Manager Requests
	    6.3. Resize Requests
	    6.4. Potential Geometry Changes
	    6.5. Child Geometry Management: the geometry_manager Procedure
	    6.6. Widget Placement and Sizing
	    6.7. Preferred Geometry
	    6.8. Size Change Management: the resize Procedure

    Chapter 7. Event Management
	    7.1. Adding and Deleting Additional Event Sources
	    7.1.1. Adding and Removing Input Sources
	    7.1.2. Adding and Removing Timeouts
	    7.2. Constraining Events to a Cascade of Widgets
	    7.2.1. Requesting Key and Button Grabs
	    7.3. Focusing Events on a Child
	    7.4. Querying Event Sources
	    7.5. Dispatching Events
	    7.6. The Application Input Loop
	    7.7. Setting and Checking the Sensitivity State of a Widget
	    7.8. Adding Background Work Procedures
	    7.9. X Event Filters
	    7.9.1. Pointer Motion Compression
	    7.9.2. Enter/Leave Compression
	    7.9.3. Exposure Compression
	    7.10. Widget Exposure and Visibility
	    7.10.1. Redisplay of a Widget: the expose Procedure
	    7.10.2. Widget Visibility
	    7.11. X Event Handlers
	    7.11.1. Event Handlers That Select Events
	    7.11.2. Event Handlers That Do Not Select Events
	    7.11.3. Current Event Mask

    Chapter 8. Callbacks
	    8.1. Using Callback Procedures and Callback List Definitions
	    8.2. Identifying Callback Lists
	    8.3. Adding Callback Procedures
	    8.4. Removing Callback Procedures
	    8.5. Executing Callback Procedures
	    8.6. Checking the Status of a Callback List

    Chapter 9. Resource Management
	    9.1. Resource Lists
	    9.2. Byte Offset Calculations
	    9.3. Superclass-to-Subclass Chaining of Resource Lists
	    9.4. Subresources
	    9.5. Obtaining Application Resources
	    9.6. Resource Conversions
	    9.6.1. Predefined Resource Converters
	    9.6.2. New Resource Converters
	    9.6.3. Issuing Conversion Warnings
	    9.6.4. Registering a New Resource Converter
	    9.6.5. Resource Converter Invocation
	    9.7. Reading and Writing Widget State
	    9.7.1. Obtaining Widget State
	    9.7.1.1. Widget Subpart Resource Data: the get_values_hook
		     Procedure
	    9.7.1.2. Widget Subpart State
	    9.7.2. Setting Widget State
	    9.7.2.1. Widget State: the set_values Procedure
	    9.7.2.2. Widget State: the set_values_almost Procedure
	    9.7.2.3. Widget State: the ConstraintClassPart set_values Procedure
	    9.7.2.4. Widget Subpart State
	    9.7.2.5. Widget Subpart Resource Data: the set_values_hook
		     Procedure
    Chapter 10. Translation Management
	    10.1. Action Tables
	    10.1.1. Action Table Registration
	    10.1.2. Action Names to Procedure Translations
	    10.1.3. Action Hook Registration
	    10.2. Translation Tables
	    10.2.1. Event Sequences
	    10.2.2. Action Sequences
	    10.2.3. Multi-Click Time
	    10.3. Translation Table Management
	    10.4. Using Accelerators
	    10.5. KeyCode-to-KeySym Conversions
	    10.6. Obtaining a KeySym in an Action Procedure
	    10.7. KeySym-to-KeyCode Conversions
	    10.8. Registering Button and Key Grabs For Actions
	    10.9. Invoking Actions Directly

    Chapter 11. Utility Functions
	    11.1. Determining the Number of Elements in an Array
	    11.2. Translating Strings to Widget Instances
	    11.3. Managing Memory Usage
	    11.4. aring Graphics Contexts
	    11.5. Managing Selections
	    11.5.1. Setting and Getting the Selection Timeout Value
	    11.5.2. Using Atomic Transfers
	    11.5.2.1. Atomic Transfer Procedures
	    11.5.2.2. Getting the Selection Value
	    11.5.2.3. Setting the Selection Owner
	    11.5.3. Using Incremental Transfers
	    11.5.3.1. Incremental Transfer Procedures
	    11.5.3.2. Getting the Selection Value Incrementally
	    11.5.3.3. Setting the Selection Owner for Incremental Transfers
	    11.5.4. Retrieving the Most Recent Timestamp
	    11.6. Merging Exposure Events into a Region
	    11.7. Translating Widget Coordinates
	    11.8. Translating a Window to a Widget
	    11.9. Handling Errors
	    11.10. Setting WM_COLORMAP_WINDOWS
	    11.11. Finding File Names

    Chapter 12. Nonwidget Objects
	    12.1. Data Structures
	    12.2. Object Objects
	    12.2.1. ObjectClassPart Structure
	    12.2.2. ObjectPart Structure
	    12.2.3. Object Resources
	    12.2.4. ObjectPart Default Values
	    12.2.5. Object Arguments To Intrinsics Routines
	    12.2.6. Use of Objects
	    12.3. Rectangle Objects
	    12.3.1. RectObjClassPart Structure
	    12.3.2. RectObjPart Structure
	    12.3.3. RectObj Resources
	    12.3.4. RectObjPart Default Values
	    12.3.5. RectObj Arguments to Intrinsics Routines
	    12.3.6. Use of Rectangle Objects
	    12.4. Undeclared Class
	    12.5. Widget Arguments To Intrinsics Routines

    Chapter 13. Evolution of the Intrinsics
	    13.1. Determining Specification Revision Level
	    13.2. Release 3 to Release 4 Compatibility
	    13.2.1. Additional Arguments
	    13.2.2. Set_values_almost Procedures
	    13.2.3. Query Geometry
	    13.2.4. UnrealizeCallback Callback List
	    13.2.5. Subclasses of WMell
	    13.2.6. Resource Type Converters
	    13.2.7. KeySym Case Conversion Procedure
	    13.2.8. Nonwidget Objects

    PART III APPENDICES

    Appendix A. Resource File Format

    Appendix B. Translation Table Syntax
	    B.1. Notation
	    B.2. Syntax
	    B.3. Modifier Names
	    B.4. Event Types
	    B.5. Canonical Representation
	    B.7. Examples

    Appendix C. Compatibility Functions

    Appendix D. Intrinsics Error Messages
	    D.1. Error Messages
	    D.2. Warning Messages

    Appendix E. StringDefs.h Header File

    Appendix F. Parameter and Return Types

    Appendix G. Naming Conventions
	    G.1. File Name Conventions
	    G.2. Widget Name Conventions
	    G.3. Resource Name Conventions
	    G.4. Constraint Name Conventions
	    G.5. Extension Name Conventions

    Appendix H. The X Registry and the Examples
	    H.1. The X Registry
	    H.2. Getting the Example Programs

    INDEX
	    
LIST OF FIGURES

	1.1. The  structure of a toolkit application
	1.2. Mapping  user actions to application functions
	1.3. A  sample application's interface and its widget tree
	1.4. Layout  policies of various composite widgets
	1.5. The  widgets in the sample application with a pop-up
	2.1. An  example widget class hierarchy
	2.2. The  class linkage of several widgets
	2.3. The  instance linkage of several widgets
	3.1. "Goodbye,  world" with customizations
	4.1. Managed,  mapped, and unmanaged widgets
	4.2. Geometry  propagation at realization
	4.3. The  same MinMax widget at different sizes
	5.1. A  widget tree with several shells
	5.2. The  shell class hierarchy
	6.1. Toolkit  event handling
	6.2. Focus  redirection
	6.3. Keyboard  forwarding and grabs
	7.1. "Goodbye,  world" with an installed accelerator
	8.1. The  Intrinsics class hierarchy
	8.2. Exposures  and gadget children
	9.1. A  sample widget tree
	10.1. Pushbuttons  in various states
	10.2. A  menu with an inverted item
	10.3. The  same MinMax widget at different sizes
	10.4. A  Confirm widget
	10.5. The  calculator
	10.6. The  calculator's widget tree
	10.7. The  mail notifier and its widget tree
	10.8. The  system monitor and its widget tree

LIST OF EXAMPLES

	1.1. The  "Goodbye, world" program
	1.2. "Goodbye,  world" using explicit initialization
	2.1. The  Label private header file
	2.2. The  Label public header file
	2.3. The  Label class record declaration
	2.4. The  Label class initialization procedure
	2.5. A  sample extension initialization routine
	2.6. Utility  procedures for the Label initialize procedure
	2.7. The  Label initialize procedure
	2.8. The  Label destroy procedure
	2.9. The  Label select text method
	2.10. The  Label class part initialization procedure
	3.1. "Goodbye,  world" using a defaults file
	3.2. The  "Goodbye, world" defaults file
	3.3. Fallback  resources for "Goodbye, world"
	3.4. Fetching  application resources
	3.5. The  Label resource list
	3.6. The  Pushbutton resource list
	3.7. The  string-to-justification converter
	3.8. The  string-to-justification converter using quarks
	3.9. The  string-to-widget converter
	3.10. The  string-to-string-list converter
	3.11. The  string-to-string-list destructor
	3.12. The  Label set_values procedure
	3.13. Subresources  for millimeter dimension resources
	3.14. Initializing  the subresources
	3.15. Providing  subresource values
	3.16. Modifying  subresource values
	4.1. The  Box change_managed procedure
	4.2. The  Box geometry manager
	4.3. A  complex Box geometry manager
	4.4. The  Label resize procedure
	4.5. A  sample use of XtQueryGeometry
	4.6. Another  use of XtQueryGeometry
	4.7. The  Label query_geometry procedure
	4.8. Part  of the MinMax private header file
	4.9. The  MinMax public header file
	4.10. The  MinMax constraint resources
	4.11. Part  of the MinMax class declaration
	4.12. The  MinMax constraint initialize procedure
	4.13. The  MinMax constraint set_values procedure
	5.1. The  sample Vendor.h header file
	5.2. The  sample VendorP.h header file
	5.3. The  sample vendor shell resources
	5.4. Fetching  an atom using type conversion
	5.5. The  sample vendor shell realize procedure
	5.6. The  sample vendor shell initialize procedure
	5.7. The  sample vendor shell set_values procedure
	6.1. Setting  the window manager protocols
	6.2. Responding  to window manager protocols
	6.3. A  work procedure to create pop-up widgets
	6.4. The  Label expose procedure
	6.5. The  Pushbutton expose procedure
	6.6. Part  of the Pushbutton set_values procedure
	6.7. The  Box widget's accept_focus procedure
	6.8. The  Menu widget's initialize procedure
	7.1. A  translation example
	7.2. An  accelerator example
	7.3. The  resources for the accelerator example
	7.4. A  program that uses a widget as a window
	7.5. The  Pushbutton default translations and actions
	7.6. The  Pushbutton action procedures
	7.7. The  display_accelerator method for Pushbutton
	7.8. Mapping  from keysyms to ISO Latin-1 characters
	8.1. The  Box insert_child procedure
	8.2. The  Box expose procedure
	8.3. The  LabelGadget expose procedure
	9.1. The  Label selection handling procedures
	9.2. The  Label select text method
	
LIST OF TABLES

    PART I PROGRAMMER'S GUIDE
	Core widget resources
	Composite widget resources
	Chaining for widget methods
	Resource types
	Predefined command line options
	Shell widget resources
	Nonoverride shell widget resources
	Transient shell widget resources
	Top-level and application shell widget resources
	Application shell widget resources
	Shell resources that come in pairs
	Translation events and synonyms
	Translation events and synonyms
	Translation modifiers
	Synonyms for events with modifiers
	Synonyms for events with details
	Toolkit equivalents for Xlib key-handling routines
	Object resource
	RectObj object resources
	Core resources not defined for objects
	XtNameToWidget examples
	Label widget resources
	Pushbutton widget resources
	Box widget resource
	MinMax widget constraint resources
	Confirm widget resources
	Menu widget constraint resource
	Label gadget resources
	Graph widget resources
	GraphDisplay object resources
	BarDisplay object resources
	Mail notifier application resources
	Mail notifier command line options
	System monitor application resources
	System monitor command line option

    PART II SPECIFICATION
	Core widget resources
	CorePart default values
	Composite widget resources
	CompositePart default values
	Predefined command line options
	Shell types and variables
	Shell widget resources
	WMShell widget resources
	TransientShell widget resources
	TopLevelShell widget resources
	ApplicationShell widget resources
	ShellPart default values
	WMShellPart default values
	Shell resources that come in pairs
	TransientShellPart default values
	TopLevelShellPart default values
	ApplicationShellPart default values
	Resource types
	Object resources
	RectObj object resources

    PART III APPENDICES
	Translation modifiers
	Translation events and synonyms
	Abbreviations for events with modifiers and details
	Detail fields for events
	Standard error messages
	Standard warning messages
	Widget parameter types for Intrinsics routines
	Widget class parameter types for Intrinsics routines
	Widget file name conventions
	Widget name conventions for application programmers
	Widget name conventions for widget writers
	Resource name conventions
	Constraint name conventions
	Extension name conventions
	Where to get the example programs
	

quanbook@world.std.com (William J Szabo) (06/29/91)

>
>Can someone post a description of the table of contents for this book?
>Is it up-to-date?  What toolkits are covered?

Here is the TOC for the Asente and Swick _X Window System Toolkit_:

PART 1: PROGRAMMER'S GUIDE

-Chapter 1: Applications
-Chapter 2: Widgets
-Chapter 3: Resources and Callbacks
-Chapter 4: Composite Widgets and Geometry Management
-Chapter 5: Shell Widgets and Pop-Ups
-Chapter 6: Event Handling
-Chapter 7: Translation Management
-Chapter 8: Nonwidget Objects
-Chapter 9: Odds and Ends
-Chapter 10: Pulling it all together

PART 2: SPECIFICATION

-Chapter 1: Intrinsics and Widgets
-Chapter 2: Widget Instantiation
-Chapter 3: Composite Widgets and Their Children
-Chapter 4: Shell Widgets
-Chapter 5: Pop-Up Widgets
-Chapter 6: Geometry Management
-Chapter 7: Event Management
-Chapter 8: Callbacks
-Chapter 9: Resource Management
-Chapter 10: Translation Management
-Chapter 11: Utility Functions
-Chapter 12: Nonwidget Objects
-Chapter 13: Evolution of the Intrinsics

PART 3: APPEDICES

-Appendix A: Resource File Format
-Appendix B: Translation Table Syntax
-Appendix C: Compatibility Functions
-Appendix D: Intrinsics Error Messages
-Appendix E: StringDefs.h Header File
-Appendix F: Parameter and Return Types
-Appendix G: Naming Conventions
-Appendix H: The X Registry and the Examples

The actual, full TOC is 20 pages long.

Published by Prentice Hall, 1990, ISBN 0139721916 (Digital Press)
970 Pages, Paperback, $45.00

email us for more info or ordering

George
Quantum Books
Cambridge, MA
quanbook@world.std.com
PH: 617.494.5042


-- 
Quantum Books          We are moving to Four Cambridge Center,
One Kendall Square     Cambridge, MA  02142.  Phone numbers remain
Cambridge, MA  02139   the same.  The move is July 4&5.
Phone: 617-494-5042    Fax: (617) 577-7282     quanbook@world.std.com