Synopses & Reviews
The Motif Programming Manual is a source for complete, accurate, and insightful guidance on Motif application programming. There is no other book that covers the ground as thoroughly or as well as this one. The book has been updated to Motif 1.2, but is still usable with Motif 1.1.The Motif Programming Manual describes how to write applications using the Motif toolkit from the Open Software Foundation (OSF). The book goes into detail on every Motif widget class, with useful examples that will help programmers to develop their own code. Anyone doing Motif programming who doesn't want to have to figure it out on their own needs this book.In addition to information on Motif, the book is full of tips about programming in general and about user interface design.Contents include:
- An introduction to the Motif programming model, how it is based on the X Toolkit Intrinsics, and how it differs from them.
- Chapters on each of the Motif widget classes, explaining them in depth, with useful examples that will help you to improve your own code. For example, the chapter on menus shows how to develop utility functions that generalize and simplify menu creation. All of the code shown in the book is available free of charge over the Internet or via UUCP.
- Coverage of the drag-and-drop mechanism for transferring data. Two extensive examples show how to implement custom drag source and drop site functionality in a Motif application.
- A tutorial on UIL. The chapters on UIL describe all of the techniques used to create an interface with this prototyping tool. The numerous examples cover the basics and explore ways to use UIL to facilitate rapid prototyping.
,/ul>The book assumes competence with the C programming language, as well as familiarity with fundamental X Window System concepts. The Motif Programming Manual is not only the most comprehensive guide to writing applications with Motif, it is an integral part of the most widely used series of books on X as a whole. It complements and builds upon the earlier books in the X Window System Series from O'Reilly & Associates, as well as on OSF's own Motif Style Guide. Best when paired with Volume 6B, Motif Reference Manual.
Synopsis
The "Motif Programming Manual is a source for complete, accurate, and insightful guidance on Motif application programming. There is no other book that covers the ground as thoroughly or as well as this one. The "Motif Programming Manual describes how to write applications using the Motif toolkit from the Open Software Foundation (OSF). The book goes into detail on every Motif widget class, with useful examples that will help programmers to develop their own code. Anyone doing Motif programming who doesn't want to have to figure it out on their own needs this book. In addition to information on Motif, the book is full of tips about programming in general and about user interface design. It includes a tutorial on UIL; coverage of drag-and-drop, tear-off menus, and internationalization as implemented in the Motif widgets such as Text and TextField; plus the entire book has been checked for accuracy with Motif 1.2 (while remaining usable with Motif 1.1). Complements Volume 6B, "Motif Reference Manual.
Synopsis
The Motif Programming Manual is a source for complete, accurate, and insightful guidance on Motif application programming. There is no other book that covers the ground as thoroughly or as well as this one. The book has bee
Synopsis
A source for complete, accurate and insightful guidance on Motif application programming, this book covers this ground like no other available. In addition to information on Motif, the book is full of tips about programming in general and about user-interface designand it includes material on using UIL.
About the Author
Dave Brennan is a senior software engineer at HaL Computer Systems, where he is a member of the On-Line Information Access System (OLIAS) group. He is responsible for the user interface of the on-line documentation browser, as well as a number of other insidious hacks to which he'll never admit. In addition, Dave maintains the Emacs lisp archive at Ohio State University.
Dan Heller has a degree in Computer and Information Sciences from the University of California, Santa Cruz. He has developed end-user applications, integrating various well-known user interface styles from SunView to Motif to Open Look, as well as the design of his own interface toolkit. Dan has started his own company, called Z-Code Software, which designs and develops X-based applications for the commercial market. Its first product is Z-Mail, an electronic mail package that runs under Motif, Open Look, and nongraphical displays. Dan is also the author of O'Reilly & Associates' Motif Programming Manual.
Paula Ferguson is the Executive Editor for O'Reilly Web and Scripting editorial group.
Table of Contents
Table of Contents
Preface
The Plot
Assumptions
How This Book Is Organized
Related Documents
Conventions Used in This Book
Request for Comments
Obtaining Motif
Obtaining the Example Programs
FTP
FTPMAIL
BITFTP
UUCP
Copyright
Compiling the Example Programs
Notes on Z-Mail
Acknowledgments
Chapter 1. Introduction to Motif
1.1 A True Story
1.2 Basic User-interface Concepts
1.3 What Is Motif?
1.4 Designing User Interfaces
Chapter 2. The Motif Programming Model
2.1 Basic X Toolkit Terminology and Concepts
2.2 The Xm and Xt Libraries
2.3 Programming With Xt and Motif
2.3.1 Header Files
2.3.2 Setting the Language Procedure
2.3.3 Initializing the Toolkit
2.3.4 Creating Widgets
2.3.5 Setting and Getting Widget Resources
2.3.6 Event Handling for Widgets
2.3.7 The Event Loop
Chapter 3. Overview of the Motif Toolkit
3.1 The Motif Style
3.2 Application Controls
3.2.1 The Primitive Widget Class
3.2.2 Gadgets
3.3 Application Layout
3.3.1 The Manager Widget Class
3.3.2 Geometry Management
3.3.3 Gadget Management
3.3.4 Keyboard Traversal
3.4 Putting Together a Complete Application
3.4.1 The Main Window
3.4.2 Menus
3.4.3 The Window Manager
3.4.4 Dialogs
3.4.5 Pixmaps
3.4.6 Color
3.5 Changes in Motif 1.2
3.5.1 General Toolkit Changes
3.5.2 Specific Widget Changes
3.5.3 Changes to the Example Programs
3.6 Summary
Chapter 4. The Main Window
4.1 Creating a MainWindow
4.2 The MenuBar
4.2.1 Creating a PulldownMenu
4.2.2 SimpleMenu Callback Routines
4.2.3 A Sample Application
4.3 The Command and Message Areas
4.4 Using Resources
4.5 Summary
4.6 Exercises
Chapter 5. Introduction to Dialogs
5.1 The Purpose of Dialogs
5.2 The Anatomy of a Dialog
5.3 Creating Motif Dialogs
5.3.1 Dialog Header Files
5.3.2 Creating a Dialog
5.3.3 Setting Resources
5.3.4 Dialog Management
5.3.5 Closing Dialogs
5.3.6 Generalizing Dialog Creation
5.4 Dialog Resources
5.4.1 The Default Button
5.4.2 Initial Keyboard Focus
5.4.3 Button Sizes
5.4.4 The Dialog Title
5.4.5 Dialog Resizing
5.4.6 Dialog Fonts
5.5 Dialog Callback Routines
5.6 Piercing the Dialog Abstraction
5.6.1 Convenience Routines
5.6.2 The DialogShell
5.6.3 Internal Widgets
5.7 Dialog Modality
5.7.1 Implementing Modal Dialogs
5.7.2 Forcing an Immediate Response
5.8 Summary
Chapter 6. Selection Dialogs
6.1 Types of SelectionDialogs
6.2 SelectionDialogs
6.2.1 Callback Routines
6.2.2 Internal Widgets
6.3 PromptDialogs
6.4 The Command Widget
6.5 FileSelectionDialogs
6.5.1 Creating a FileSelectionDialog
6.5.2 Internal Widgets
6.5.3 Callback Routines
6.5.4 File Searching
6.6 Summary
Chapter 7. Custom Dialogs
7.1 Modifying Motif Dialogs
7.1.1 Modifying MessageDialogs
7.1.2 Modifying SelectionDialogs
7.2 Designing New Dialogs
7.2.1 The Shell
7.2.2 The Manager Child
7.2.3 The Control Area
7.2.4 The Action Area
7.3 Building a Dialog
7.3.1 The Shell
7.3.2 The Manager Child
7.3.3 The Control Area
7.3.4 The Action Area
7.4 Generalizing the Action Area
7.5 Using a TopLevelShell for a Dialog
7.6 Positioning Dialogs
7.7 Summary
Chapter 8. Manager Widgets
8.1 Types of Manager Widgets
8.2 Creating Manager Widgets
8.3 The BulletinBoard Widget
8.3.1 Resources
8.3.2 Geometry Management
8.4 The Form Widget
8.4.1 Form Attachments
8.4.2 Attachment Offsets
8.4.3 Position Attachments
8.4.4 Additional Resources
8.4.5 Nested Forms
8.4.6 Common Problems
8.5 The RowColumn Widget
8.5.1 Rows and Columns
8.5.2 Homogeneous Children
8.5.3 Callbacks
8.6 The Frame Widget
8.7 The PanedWindow Widget
8.7.1 Pane Constraints
8.7.2 Sashes
8.8 Keyboard Traversal
8.8.1 Turning Traversal Off
8.8.2 Modifying Tab Groups
8.8.3 Handling Event Translations
8.8.4 Processing Traversal Manually
8.9 Summary
Chapter 9. ScrolledWindows and ScrollBars
9.1 The ScrolledWindow Design Model
9.1.1 The Automatic Scrolling Model
9.1.2 The Application-defined Scrolling Model
9.2 Creating a ScrolledWindow
9.2.1 Automatic Scrolling
9.2.2 Application-defined Scrolling
9.2.3 Additional Resources
9.2.4 An Automatic ScrolledWindow Example
9.3 Working Directly With ScrollBars
9.3.1 Resources
9.3.2 Orientation
9.3.3 Callback Routines
9.4 Implementing True Application-defined Scrolling
9.5 Working With Keyboard Traversal in ScrolledWindows
9.6 Summary
9.7 Exercises
Chapter 10. The DrawingArea Widget
10.1 Creating a DrawingArea Widget
10.2 Using DrawingArea Callback Functions
10.2.1 Handling Input Events
10.2.2 Redrawing a DrawingArea
10.3 Using Translations on a DrawingArea
10.4 Using Color in a DrawingArea
10.5 Summary
10.6 Exercises
Chapter 11. Labels and Buttons
11.1 Labels
11.1.1 Creating a Label
11.1.2 Text Labels
11.1.3 Images as Labels
11.1.4 Label Sensitivity
11.1.5 Label Alignment
11.1.6 Multi-line and Multi-font Labels
11.2 PushButtons
11.2.1 PushButton Callbacks
11.2.2 Multiple Button Clicks
11.3 ToggleButtons
11.3.1 Creating ToggleButtons
11.3.2 ToggleButton Resources
11.3.3 ToggleButton Pixmaps
11.3.4 ToggleButton Callbacks
11.3.5 RadioBoxes
11.3.6 CheckBoxes
11.4 ArrowButtons
11.5 DrawnButtons
11.6 Summary
11.7 Exercise
Chapter 12. The List Widget
12.1 Creating a List Widget
12.2 Using ScrolledLists
12.3 Manipulating Items
12.3.1 Adding Items
12.3.2 Finding Items
12.3.3 Replacing Items
12.3.4 Deleting Items
12.3.5 Selecting Items
12.3.6 An Example
12.4 Positioning the List
12.5 List Callback Routines
12.5.1 The Default Action
12.5.2 Browse and Single Selection Callbacks
12.5.3 Multiple Selection Callback
12.5.4 Extended Selection Callback
12.6 Summary
12.7 Exercises
Chapter 13. The Scale Widget
13.1 Creating a Scale Widget
13.2 Scale Values
13.3 Scale Orientation and Movement
13.4 Scale Callbacks
13.5 Scale Tick Marks
13.6 Summary
Chapter 14. Text Widgets
14.1 Interacting With Text Widgets
14.1.1 Inserting Text
14.1.2 Selecting Text
14.2 Text Widget Basics
14.2.1 The Textual Data
14.2.2 Single and Multiple Lines
14.2.3 Scrollable Text
14.2.4 Text Positions
14.2.5 Output-only Text
14.3 Text Clipboard Functions
14.3.1 Getting the Selection
14.3.2 Modifying the Selection Mechanisms
14.4 A Text Editor
14.5 Text Callbacks
14.5.1 The Activation Callback
14.5.2 Text Modification Callbacks
14.5.3 The Cursor Movement Callback
14.5.4 Focus Callbacks
14.6 Text Widget Internationalization
14.6.1 Text Representation
14.6.2 Text Output
14.6.3 Text Input
14.7 Summary
14.8 Exercises
Chapter 15. Menus
15.1 Menu Types
15.2 Creating Simple Menus
15.2.1 Popup Menus
15.2.2 Cascading Menus
15.2.3 Option Menus
15.3 Designing Menu Systems
15.3.1 Menu Titles
15.3.2 Menu Items
15.3.3 Mnemonics
15.3.4 Accelerators
15.3.5 The Help Menu
15.3.6 Sensitivity
15.3.7 Tear-Off Menus
15.4 General Menu Creation Techniques
15.4.1 Building Pulldown Menus
15.4.2 Building Cascading Menus
15.4.3 Building Popup Menus
15.4.4 Building Option Menus
15.5 Summary
15.6 Exercises
Chapter 16. Interacting With the Window Manager
16.1 Interclient Communication
16.2 Shell Resources
16.2.1 Shell Positions
16.2.2 Shell Sizes
16.2.3 The Shell's Icon
16.3 VendorShell Resources
16.3.1 Window Manager Decorations
16.3.2 Window Menu Functions
16.4 Handling Window Manager Messages
16.4.1 Adding New Protocols
16.4.2 Saving Application State
16.5 Customized Protocols
16.6 Summary
16.7 Exercises
Chapter 17. The Clipboard
17.1 Simple Clipboard Copy and Retrieval
17.1.1 Copying Data
17.1.2 Retrieving Data
17.1.3 Querying the Clipboard for Data Size
17.2 Copy by Name
17.3 Clipboard Data Formats
17.4 The Primary Selection and the Clipboard
17.4.1 Clipboard Functions With Text Widgets
17.4.2 The Owner of the Selection
17.5 Implementation Issues
17.6 Summary
Chapter 18. Drag and Drop
18.1 Using Drag and Drop
18.2 The Drag and Drop Model
18.2.1 The Drag Source
18.2.2 The Drop Site
18.2.3 The Drag Icon
18.2.4 Protocols
18.2.5 The Programming Model
18.3 Customizing Built-in Drag and Drop
18.3.1 Specifying the Drag Protocol
18.3.2 Turning Off Drag and Drop Functionality
18.3.3 Modifying the Visual Effects
18.4 Working With Drag Sources
18.4.1 Creating a Drag Source
18.4.2 Starting the Drag
18.4.3 Converting the Data
18.4.4 Modifying an Existing Drag Source
18.4.5 Providing Custom Drag-over Visuals
18.4.6 Cleaning Up
18.5 Working With Drop Sites
18.5.1 Creating a Drop Site
18.5.2 Modifying an Existing Drop Site
18.5.3 Handling the Drop
18.5.4 Providing Help
18.5.5 Providing Custom Drag-under Visuals
18.6 Summary
Chapter 19. Compound Strings
19.1 Internationalized Text Output
19.2 Creating Compound Strings
19.2.1 The Simple Case
19.2.2 Font List Tags
19.2.3 Compound String Segments
19.2.4 Multiple-font Strings
19.3 Manipulating Compound Strings
19.3.1 Compound String Functions
19.3.2 Compound String Retrieval
19.3.3 Compound String Conversion
19.4 Working With Font Lists
19.4.1 Creating Font Lists
19.4.2 Retrieving Font Lists
19.4.3 Querying Font Lists
19.5 Rendering Compound Strings
19.6 Summary
Chapter 20. Signal Handling
20.1 Handling Signals in Xlib
20.2 Handling Signals in Xt
20.3 An Example
20.4 Additional Issues
20.5 Summary
Chapter 21. Advanced Dialog Programming
21.1 Help Systems
21.1.1 Multi-level Help
21.1.2 Context-sensitive Help
21.2 Working Dialogs
21.2.1 Using Work Procedures
21.2.2 Using Timers
21.2.3 Processing Events
21.2.4 Updating the Display
21.2.5 Avoiding Forks
21.3 Dynamic Message Symbols
21.4 Summary
Chapter 22. Introduction to UIL
22.1 Overview of UIL and Mrm
22.1.1 Using UIL and Mrm
22.1.2 Advantages and Disadvantages of UIL
22.2 The Hello, World Application
22.3 Describing an Interface With UIL
22.3.1 Starting and Ending a Module
22.3.2 Specifying Module-wide Options
22.3.3 Include Files
22.3.4 Adding Comments
22.3.5 Overview of UIL Language Syntax
22.3.6 Sections of a UIL Module
22.4 Compiling the UIL Module
22.5 Structure of an Mrm Application
22.5.1 Initializing the Application
22.5.2 Creating the Interface
22.5.3 Displaying the Interface
22.6 Summary
Chapter 23. Using the UIL Compiler
23.1 Compiler Options
23.1.1 Output File
23.1.2 Include Path
23.1.3 Generate Listing
23.1.4 Set Locale
23.1.5 Suppress Warnings
23.1.6 Machine Listing
23.1.7 Use WML Description
23.2 Errors, Warnings, and Informational Messages
23.2.1 Severe Error Messages
23.2.2 Regular Error Messages
23.2.3 Warning Messages
23.2.4 Informational Messages
23.3 Summary
Chapter 24. Creating a User Interface With UIL
24.1 Viewing UIL Examples
24.2 Defining and Creating Widgets
24.2.1 Specifying Widget Attributes
24.2.2 Sharing Widgets Among Modules
24.2.3 The Widget Creation Process
24.3 Defining and Fetching Values
24.3.1 Sharing Values Between Modules
24.3.2 Fetching Values
24.3.3 Numeric Values
24.3.4 Text-related Values
24.3.5 Colors
24.3.6 Pixmaps
24.3.7 Widget Classes
24.3.8 Keysyms
24.3.9 Translation Tables
24.4 Working With Callbacks
24.5 Using Lists
24.6 Exporting Application Data
24.6.1 Declaring Identifiers in UIL
24.6.2 Exporting Identifiers From Application Code
24.7 Summary
Chapter 25. Building an Application With UIL
25.1 Defining the User Interface
25.1.1 The Main Application Window
25.1.2 The Menu System
25.1.3 Dialog Boxes
25.2 Creating the Application
25.2.1 Widget IDs
25.2.2 Callbacks
25.2.3 The Error Dialog
25.3 Summary
Chapter 26. Advanced UIL Programming
26.1 Using Non-Motif Widgets
26.1.1 The Widget Creation Procedure
26.1.2 Widget Include Files
26.1.3 Creating User-defined Widgets
26.2 Organizing UIL Modules
26.2.1 Using Separate Modules
26.2.2 Organizing Within a Module
26.2.3 Supporting Internationalization
26.2.4 Organizing With Include Files
26.2.5 Creating Reusable Components
26.3 Specifying Resource Values
26.3.1 Resource Name Checking
26.3.2 Resource Type Checking
26.3.3 Resource Type Support
26.3.4 Callback Specifications
26.3.5 Wildcard Specification
26.3.6 User Customization
26.3.7 Dynamic Updating
26.3.8 Guidelines for Setting Resources
26.4 Using Lists Effectively
26.4.1 Specifying Common Resources
26.4.2 Reusing Components
26.5 Prototyping an Interface With UIL
26.5.1 Managing Widgets
26.5.2 Creating Widgets
26.6 Summary
Appendix. Additional Example Programs
A.1 A Postcard Interface for Mail
A.2 A Bitmap Display Utility
A.3 A Memo Calendar
Index
Figures
1-1 A Motif application
2-1 User-interface library model
2-2 Output of hello.c
2-3 Event-handling using action routines and callbacks
3-1 The class hierarchy of the Motif widget set
3-2 The Primitive widget class hierarchy
3-3 A Label with multiple lines and fonts
3-4 PushButton widgets
3-5 DrawnButtons widgets
3-6 ToggleButtons in a CheckBox and a RadioBox
3-7 ArrowButton widgets
3-8 A List widget in an application
3-9 Horizontal and vertical ScrollBar widgets in a ScrolledWindow
3-10 Text and TextField widgets
3-11 The Gadget class hierarchy
3-12 The layout of a dialog box
3-13 The widget hierarchy of a dialog box
3-14 The Manager widget class hierarchy
3-15 Recommended layout for a main window
3-16 A MenuBar and an associated PulldownMenu
3-17 A cascading menu
3-18 An OptionMenu
3-19 Motif window manager decorations
3-20 The Shell widget class hierarchy
3-21 A QuestionDialog
3-22 A SelectionDialog
3-23 A PromptDialog
3-24 A FileSelectionDialog
3-25 A CommandDialog
3-26 A custom dialog
4-1 The main window of a Motif program
4-2 Output of show_pix xlogo64
4-3 Output of show_pix escherknot
4-4 A simple MenuBar
4-5 Output of dynapix.c
4-6 The Edit menu for dynapix.c
4-7 The FileSelectionDialog for dynapix.c
4-8 Output of cmd_area.c
4-9 The File menu for dynapix.c with accelerators
5-1 A message dialog
5-2 A question dialog
5-3 A custom dialog box
5-4 A sample dialog box
5-5 Output of hello_dialog.c
5-6 Output of WarningMsg()
5-7 MessageDialog with an unmanaged Cancel button and an insensitive
Help button
5-8 Output of modal.c
6-1 Output of select_dlg.c
6-2 Output of prompt_dlg.c
6-3 A typical FileSelectionDialog
7-1 Output of question.c
7-2 Output of modify_btn.c
7-3 Layout of a dialog
7-4 A custom dialog
7-5 Output of help_text.c
7-6 The XmNfractionBase resource divides the Form into equal units
7-7 Output of action_area.c
7-8 A message composition dialog from an e-mail application
8-1 Output of corners.c before and after a resize event
8-2 Attachments in a Form
8-3 XmNtopAttachment set to XmATTACH_FORM
8-4 XmNrightAttachment set to XmATTACH_WIDGET
8-5 XmNrightAttachment set to XmATTACH_OPPOSITE_WIDGET
8-6 Output of attach.c
8-7 Attachment offsets
8-8 Output of attach.c with offset resources set to 10
8-9 Output of attach.c with inappropriate offset resources
8-10 XmNleftAttachment set to XmATTACH_OPPOSITE_FORM with negative offse
8-11 Form with XmNfractionBase set to 5
8-12 Output of tictactoe.c
8-13 Output of text_form.c
8-14 Output of rowcol.c
8-15 Output of rowcol.c with a horizontal orientation
8-16 Output of spreadsheet.c
8-17 Output of text_entry.c
8-18 Frame widgets used to provide borders around RowColumn widgets
8-19 Output of frame.c
8-20 Output of paned_win1.c
8-21 Keyboard traversal for tictactoe.c
8-22 Output of proc_traversal.c
9-1 Design of an automatic ScrolledWindow
9-2 Output of getusers.c
9-3 Elements of a ScrollBar
9-4 Conceptual relationship between a ScrollBar and the object it scroll309
9-5 Output of simple_sb.c
9-6 Output of monitor_sb.c
9-7 Output of app_scroll.c
9-8 Output of app_scroll.c when the viewport is larger than the pixmap
10-1 Output of drawing.c
10-2 Output of free_hand.c.
10-3 Output of color_draw.c
11-1 Output of pixmaps flagup letters wingdogs xlogo64 calculator
tie_fighter
11-2 Output of xcal.c
11-3 ToggleButton widgets and gadgets
11-4 Output of toggle.c
11-5 Output of radio_box.c
11-6 Output of toggle_box.c
11-7 Output of toggle_box.c with radioBehavior set to True
11-8 The four ArrowButton directions
11-9 Output of arrow_timer.c
11-10 Output of drawn.c
12-1 A List widget with two selected items
12-2 Output of simple_list.c
12-3 Output of simple_list.c modified to use a ScrolledList
12-4 Output of alpha_list.c
12-5 Output of search_list.c
13-1 A Scale widget in an application
13-2 Output of simple_scale.c
13-3 Output of color_slide.c
13-4 Output of tick_marks.c
14-1 An editor application with two different styles of Text widgets
14-2 Output of simple_text.c
14-3 Output of file_browser.c
14-4 Output of search_text.c
14-5 Output of cut_paste.c
14-6 Output of editor.c
14-7 Output of text_box.c
14-8 Output of allcaps.c
14-9 Output of password.c
15-1 A PulldownMenu
15-2 A PopupMenu
15-3 An OptionMenu
15-4 A Pulldown Menu with tear-off functionality
15-5 Output of simple_popup.c
15-6 Output of simple_pullright.c
15-7 Output of simple_option.c
15-8 Output of file_menu.c
15-9 A Help menu from the MenuBar
15-10 A help index dialog
15-11 A PulldownMenu before and after being torn off
15-12 Output of build_menu.c
15-13 Output of popups.c
16-1 Motif window manager decorations
16-2 Output of wm_protocol.c
18-1 Drag and drop conceptual model
18-2 A drag icon
18-3 Default source icons
18-4 Default operation icons
18-5 Drag and drop programming model
18-6 Output of file_manager.c
18-7 Output of editor_dnd.c
18-8 A drag and drop help dialog
19-1 Output of string.c
19-2 Output of string.c with font list resources set
19-3 Output of string.c with multiple font list resources set
19-4 Output of string.c using a right-to-left string direction
19-5 Output of string.c using separators to render multiple lines
19-6 Output of string.c with \n not interpreted as a separator
19-7 Output of multi_font.c
20-1 Output of app_box.c
21-1 Output of simple_help.c
21-2 Displaying multiple levels of help text
21-3 Output of working.c
21-4 Output of warn_msg.c
22-1 User interface creation with UIL and Mrm
22-2 The Hello, World user interface
22-3 The Hello, World widget hierarchy
22-4 Structure of the hello_world.uil module
22-5 Structure of the hello_world.c Mrm application
24-1 Structure of a widget definition
24-2 User interface of trivial.uil
24-3 User interface of kids.uil
24-4 User interface of resource.uil
24-5 Widget creation algorithm
24-6 Relationships among strings, character sets, and fonts in UIL
24-7 Character set determination for compound strings
24-8 User interface of multiline.uil
24-9 User interface of joel.uil
24-10 User interface of bomb.uil
24-11 User interface of globe.uil
24-12 User interface of station.uil
25-1 The editor_uil application
25-2 The editor_uil ErrorDialog
26-1 User interface of tree.uil
26-2 User interface of i18n_dialog.uil using an English strings.uil
26-3 User interface of dialog.uil
26-4 User interface of quitbox.uil
A-1 Output of zcard.c
A-2 Output of xshowbitmap.c
A-3 Output of xmemo.c
Examples
2-1 The hello.c program
4-1 The show_pix.c program
4-2 The main_list.c program
4-3 The dynapix.c program
4-4 The cmd_area.c program
5-1 The hello_dialog.c program
5-2 The PostDialog() routine
5-3 The WarningMsg() function
5-4 The reason.c program
5-5 The modal.c program
5-6 The AskUser() routine
5-7 The ask_user.c program
6-1 The select_dlg.c program
6-2 The prompt_dlg.c program
6-3 The show_files.c program
6-4 The file_sel.c program
7-1 The question.c program
7-2 The modify_btn.c program
7-3 The help_text.c program
7-4 The action_area.c program
7-5 The map_dlg.c program
8-1 The corners.c program
8-2 The form_corners.c program
8-3 The attach.c program
8-4 The tictactoe.c program
8-5 The text_form.c program
8-6 The rowcol.c program
8-7 The spreadsheet.c program
8-8 The text_entry.c program
8-9 The entry_cb.c program
8-10 The frame.c program
8-11 The paned_win1.c program
8-12 The unit_types.c program
8-13 The paned_win2.c program
8-14 The pushed() routine
8-15 The TurnOffSashTraversal() routine
8-16 The proc_traversal.c program
9-1 The getusers.c program
9-2 The simple_sb.c program
9-3 The monitor_sb.c program
9-4 The app_scroll.c program
9-5 The traversal.c program
10-1 The drawing.c program
10-2 The draw2.c program
10-3 The free_hand.c program
10-4 The color_draw.c program
11-1 The pixmaps.c program
11-2 The xcal.c program
11-3 The pushb.c program
11-4 The multi_click.c program
11-5 The toggle.c program
11-6 The radio_box.c program
11-7 The simple_radio.c program
11-8 The toggle_box.c program
11-9 The arrow.c program
11-10 The arrow_timer.c program
11-11 The drawn.c program
12-1 The simple_list.c program
12-2 The alpha_list.c program
12-3 The search_list.c program
12-4 The MakePosVisible() routine
12-5 The MakeItemVisible() routine
12-6 The browse.c program
12-7 The sel_callback() routine for a multiple selection List
12-8 The sel_callback() routine for an extended selection List
13-1 The simple_scale.c program
13-2 The color_slide.c program
13-3 The tick_marks.c program
14-1 The simple_text.c program
14-2 The file_browser.c program
14-3 The search_text.c program
14-4 The search_and_replace() function
14-5 The wprint() function
14-6 The x_error() and xt_error() functions
14-7 The cut_paste.c program
14-8 The editor.c program
14-9 The text_box.c program
14-10 The allcaps.c program
14-11 The check_zip() function
14-12 The password.c program
14-13 The prompt_phone.c program
14-14 The new check_phone() routine
15-1 The simple_popup.c program
15-2 The simple_pullright.c program
15-3 The simple_option.c program
15-4 The file_menu.c program
15-5 The BuildHelpMenu() routine
15-6 The reset_sensitive() and open_callback() routines
15-7 The BuildPulldownMenu() routine
15-8 The CreateMenuBar() function
15-9 The build_menu.c program
15-10 The BuildMenu() routine
15-11 The popups.c program
15-12 The build_option.c program
16-1 The resize_shell.c program
16-2 The set_minimum.c program
16-3 The icon_pixmap.c program
16-4 The SetIconWindow() routine
16-5 The wm_delete.c program
16-6 The wm_save.c program
16-7 The wm_protocol.c program
17-1 The copy_retrieve.c program
17-2 The from_clipbd_incr() routine
17-3 The from_clipbd_query() routine
17-4 The copy_by_name.c program
18-1 The file_manager.c program
18-2 The UpdateDrag() routine
18-3 The editor_dnd.c program
18-4 The HandleDropLabel(), HandleDropOK(), and HandleDropCancel() routines
19-1 The string.c program
19-2 The ConvertFileToXmString() routine
19-3 The multi_font.c program
19-4 The PrintLabel() routine
19-5 The fontlist.c program
20-1 The app_box.c program
21-1 The simple_help.c program
21-2 The help_callback() and help_done() routines for multi-level help
21-3 The query_for_help() routine
21-4 The working.c program
21-5 The busy.c program
21-6 The ForceUpdate() routine
21-7 The warn_msg.c program
22-1 The hello_world.uil module
22-2 The hello_world.c application program
23-1 The buggy.uil module
23-2 The mistakes.uil module
23-3 The infos.uil module
24-1 The showuid.c program
24-2 The trivial.uil module
24-3 The kids.uil module
24-4 The resource.uil module
24-5 The cb.uil module
24-6 The first.uil module
24-7 The second.uil module
24-8 The Message() routine
24-9 The multiline.uil module
24-10 The joel.uil module
24-11 The bomb.uil module
24-12 The globe.uil module
24-13 The simple_lst.uil module
24-14 The station.uil module
25-1 The editor.uil module
25-2 The procedures.uih include file
25-3 The identifiers.uih include file
25-4 The menubar.uil module
25-5 The dialogs.uil module
25-6 The editor_uil.c application
26-1 The tree.c program
26-2 The XawTree.uih include file
26-3 The XawPanner.uih include file
26-4 The tree.uil module
26-5 The i18n_dialog.uil module
26-6 The strings.uih include file
26-7 The strings.uil module
26-8 The btn_panel.uih include file
26-9 The three_btn.uih include file
26-10 The dialog.uil module
26-11 The manage() and unmanage() routines
26-12 The quitbox.uil module
26-13 The create() routine
26-14 The modified manage() and unmanage() routines
26-15 The quitmain.uil module
26-16 The quitdialog.uil module
A-1 The zcard.c program
A-2 The xshowbitmap.c program
A-3 The xmemo.c program
Tables
3-1 Predefined Image Names in the Motif Toolkit
9-1 Callback Resources for the ScrollBar Widget
10-1 Callback Reasons and Event Types
14-1 Default Selection Actions for Multiple Clicks
14-2 Phone Number Input Interaction
16-1 Some Window Manager Properties
16-2 Protocol Atoms Defined by the ICCCM
17-1 Predefined Format Names and Lengths
18-1 Target Types Defined by ICCCM
18-2 Drag Protocol Resolution
22-1 UIL Reserved Keywords
22-2 UIL Unreserved Keywords
23-1 UIL Compiler Options
24-1 Automatically-created Children of Motif Widgets
24-2 Automatic Type Conversions Performed by UIL
24-3 Coupled Resources in UIL
24-4 UIL Data Types and Their Return Types
24-5 UIL Numeric Expression Operators
24-6 The Built-in UIL Character Sets
24-7 UIL String Types
24-8 UIL String Escape Sequences
26-1 Comparison of Resource Setting Options