CONTENTS Title Page Copyright Page Preface Audience Contents Typographical Conventions Chapter 1. Introduction to the OSF/Motif Toolkit 1.1 The OSF/Motif Toolkit and the X Window System 1.2 Widget Classes and Hierarchy 1.3 Compiling Sample Programs Chapter 2. Widgets, Gadgets, and Convenience Functions 2.1 Widgets 2.1.1 Shell Widgets 2.1.2 Display Widgets 2.1.3 Container Widgets 2.1.4 Dialog Widgets 2.1.5 Dialog Widget Descriptions 2.1.6 Convenience Dialogs 2.1.7 Menu Widgets 2.2 Gadgets 2.3 Convenience Functions Chapter 3. Using Motif Widgets in Programs 3.1 Introduction to the xmbutton Program 3.1.1 Widget Tree Diagram for the xmbutton Program 3.1.2 Program Listing for xmbutton.c 3.1.3 Defaults File XMdemos Partial Listing 3.1.4 Output Produced by the xmbutton Program 3.2 Including Header Files 3.3 Initializing the Xt Intrinsics 3.4 Creating Argument Lists for Widgets 3.5 Adding Callback Procedures 3.5.1 Writing a Callback Procedure 3.5.2 Adding Callbacks 3.5.3 Setting Widgets' Callback Resources 3.6 Creating the Widget 3.7 Making the Widget Visible 3.8 Linking Libraries 3.9 Creating Defaults Files 3.9.1 Application Defaults Files 3.9.2 User Defaults Files 3.9.3 Defaults File Example 3.10 Using Color 3.10.1 Visual Capabilities and Attributes 3.10.2 Using the Capabilities 3.11 Advanced Programming Techniques 3.11.1 Setting Argument Values 3.11.1.1 Assigning Argument Values 3.11.1.2 Static Initializing 3.11.1.3 Combining Static Initialization with Run-Time Assignments 3.11.2 Manipulating Created Widgets 3.11.2.1 Retrieving and Modifying Arguments 3.11.2.2 Adding Callbacks and Translations 3.11.2.3 Separating Widget Creation and Management 3.12 An Advanced Sample Program 3.12.1 Windows Used in xmfonts 3.12.1.1 Main Window 3.12.1.2 Help Window 3.12.1.3 Font Display Window 3.12.2 Widget Hierarchy 3.12.3 Source Code 3.12.3.1 The Program 3.12.3.2 The Defaults File Chapter 4. Shell Widgets 4.1 Descriptions of Shell Widgets 4.2 Shell Widget Appearance Chapter 5. Dialog Widgets and Functions 5.1 Dialog Widgets and Menus 5.2 A List of the Dialog Widgets 5.3 Convenience Dialogs 5.4 Using Dialogs and Convenience Functions 5.4.1 XmDialogShell 5.4.2 XmBulletinBoard 5.4.3 XmCommand 5.4.4 XmFileSelectionBox 5.4.5 XmForm 5.4.6 XmMessageBox 5.4.7 XmSelectionBox Chapter 6. Menus 6.1 Overview of the Motif Menu System 6.1.1 Convenience Functions and Widgets Used to Create Menus 6.1.2 Introducing the Three Menu Types 6.1.2.1 Popup Menu System 6.1.2.2 Pulldown Menu System 6.1.2.3 Option Menu System 6.2 Creating Popup Menu Systems 6.2.1 Popup MenuPane Convenience Function 6.2.2 Event Handlers for Popup Menu Systems 6.2.3 Procedure for Creating a Popup Menu 6.2.4 Interacting with Popup Menus 6.2.4.1 Mouse Input 6.2.4.2 The Keyboard Interface 6.2.5 Sample Program 6.3 Creating a Pulldown Menu System 6.3.1 MenuBar Create Function 6.3.2 Pulldown MenuPane Create Function 6.3.3 Creating a Help Button 6.3.4 Procedure for Creating a Pulldown Menu 6.3.5 Interacting with Pulldown Menus 6.3.5.1 Mouse Input 6.3.5.2 The Keyboard Interface 6.3.6 Sample Program 6.4 Creating Submenus 6.4.1 Procedure for Creating Submenus 6.4.2 Interacting with Submenus 6.4.3 Sample Program 6.5 Creating Option Menu Systems 6.5.1 Option MenuPane Create Function 6.5.2 Procedure for Creating an Option Menu 6.5.3 Interacting with Option Menus 6.5.3.1 Mouse Input 6.5.3.2 The Keyboard Interface 6.5.4 Sample Program 6.6 Selecting a Menu Cursor 6.7 Creating Menus Without Convenience Functions 6.7.1 Functions for Creating Menus 6.7.2 Parenting Relationships 6.7.3 Sample Program Chapter 7. Specialized Widgets 7.1 List Widget 7.1.1 List Functions 7.1.2 Using the List Widget 7.1.2.1 Callback 7.1.2.2 Selection Policies 7.2 RowColumn Widget 7.2.1 RowColumn Types 7.2.2 RowColumn Functions 7.2.3 Layout 7.2.3.1 Sizing 7.2.3.2 Orientation 7.2.3.3 Packing 7.2.3.4 Spacing Between Children 7.2.3.5 Margin Spacings 7.3 Text Widget 7.3.1 Text Functions 7.3.2 Using the Text Widget in a Program 7.3.2.1 The File Menu 7.3.2.2 The Edit Menu 7.3.2.3 Accelerators and Mnemonics 7.3.2.4 Primary Selection 7.3.2.5 Cutting Text 7.3.2.6 Pasting Text 7.3.2.7 Copying Text Chapter 8. Additional Functionality 8.1 Compound Strings 8.1.1 Components of a Compound String 8.1.2 Compound String Functions 8.1.2.1 XmFontListAdd 8.1.2.2 XmFontListCreate 8.1.2.3 XmFontListFree 8.1.2.4 XmStringBaseline 8.1.2.5 XmStringByteCompare 8.1.2.6 XmStringCompare 8.1.2.7 XmStringConcat 8.1.2.8 XmStringCopy 8.1.2.9 XmStringCreate 8.1.2.10 XmStringCreateLtoR 8.1.2.11 XmStringDirectionCreate 8.1.2.12 XmStringDraw 8.1.2.13 XmStringDrawImage 8.1.2.14 XmStringDrawUnderline 8.1.2.15 XmStringEmpty 8.1.2.16 XmStringExtent 8.1.2.17 XmStringFree 8.1.2.18 XmStringFreeContext 8.1.2.19 XmStringGetLtoR 8.1.2.20 XmStringGetNextComponent 8.1.2.21 XmStringGetNextSegment 8.1.2.22 XmStringHeight 8.1.2.23 XmStringInitContext 8.1.2.24 XmStringLength 8.1.2.25 XmStringLineCount 8.1.2.26 XmStringNConcat 8.1.2.27 XmStringNCopy 8.1.2.28 XmStringPeekNextComponent 8.1.2.29 XmStringSegmentCreate 8.1.2.30 XmStringSeparatorCreate 8.1.2.31 XmStringWidth 8.1.3 A Sample Program 8.1.3.1 Program Listing 8.1.3.2 Defaults File 8.2 Cut and Paste Functions 8.2.1 Clipboard Copy Functions 8.2.1.1 XmClipboardStartCopy 8.2.1.2 XmClipboardCopy 8.2.1.3 XmClipboardCopybyName 8.2.1.4 XmClipboardCancelCopy 8.2.1.5 XmClipboardUndoCopy 8.2.1.6 XmClipboardEndCopy 8.2.2 Clipboard Inquire Functions 8.2.2.1 XmClipboardInquireCount 8.2.2.2 XmClipboardInquireFormat 8.2.2.3 XmClipboardInquireLength 8.2.2.4 XmClipboardInquirePendingItems 8.2.3 Clipboard Retrieve Functions 8.2.3.1 XmClipboardStartRetrieve 8.2.3.2 XmClipboardRetrieve 8.2.3.3 XmClipboardEndRetrieve 8.2.4 Miscellaneous Clipboard Functions 8.2.4.1 XmClipboardLock 8.2.4.2 XmClipboardRegisterFormat 8.2.4.3 XmClipboardUnlock 8.2.4.4 XmClipboardWithdrawFormat 8.3 Dynamic Resource Defaulting 8.4 Localization 8.5 Pixmap Caching Functions 8.6 Resolution Independence 8.6.1 The Resolution Independence Mechanism 8.6.2 Setting the Font Units 8.6.3 Converting Between Unit Types 8.7 Interacting With the Motif Window Manager 8.7.1 Protocol Management 8.7.1.1 _MOTIF_WM_MESSAGES 8.7.1.2 WM_PROTOCOLS 8.7.2 Protocol Manager Functions 8.7.2.1 Add and Remove Functions 8.7.2.2 Protocol State 8.7.2.3 Protocol Callbacks 8.7.3 Atom Management 8.8 Motif Version Number 8.9 Motif Window Manager Presence Chapter 9. Keyboard Interface 9.1 Keyboard Focus Models 9.2 Grouping Widgets Into Tab Groups 9.3 Traversal Within and Between Tab Groups 9.4 Keyboard Input Processing to a Widget Chapter 10. Introduction to the OSF/Motif Window Manager 10.1 Conventions 10.2 Some Window Manager Precautions Chapter 11. Understanding the Principles of Window Management 11.1 Getting User Input 11.1.1 Using a Pointer 11.1.2 Using a Keyboard 11.1.3 Modifying Default Behavior 11.2 Using Focus Policies: Keyboard Input and Colormaps 11.2.1 Setting the Colormap Focus Policy 11.3 Distinguishing Windows by Type 11.3.1 Choosing the Right Type of Client Window 11.3.2 Input Modes 11.3.3 Understanding Window Manager Windows 11.4 Understanding the Parts of the MWM Window Frame 11.4.1 Coloring Frame Components 11.4.2 Understanding Frame Components and Their Behavior 11.4.2.1 Resize Handles 11.4.2.2 The Title Area 11.4.2.3 The Title Bar 11.4.2.4 Window Menu Button 11.4.2.5 Minimize Button 11.4.2.6 Maximize Button 11.4.2.7 Manipulating the Window Frame with a Mouse or a Keyboard 11.4.3 Selecting From the Window Menu 11.4.3.1 Looking at the Contents of the Window Menu 11.4.3.2 Selecting with the Mouse 11.4.3.3 Selecting with the Keyboard 11.4.3.4 Accelerators and Mnemonics 11.4.3.5 Closing Your Client's Window 11.5 Placing and Sizing Windows 11.5.1 Stacking Windows 11.6 Introduction to Icons Chapter 12. Communicating Between MWM and Clients: MWM Properties 12.1 MWM Programmatic Interface Standards 12.2 Inter-Client Communication Conventions 12.2.1 Programming Client Actions 12.2.1.1 Creating a Top-Level Window 12.2.1.2 Working with Client Properties 12.2.1.3 Working with Window Manager Properties 12.2.1.4 Changing Window States 12.2.1.5 Configuring the Window 12.2.1.6 Changing Window Attributes 12.2.1.7 Controlling Input Focus 12.2.1.8 Establishing Colormaps 12.2.2 Client Responses to MWM Actions 12.2.2.1 Window Size and Position 12.2.2.2 Window and Icon Mapping 12.2.2.3 Colormap Changes 12.2.2.4 Input Focus 12.2.2.5 ClientMessage Events 12.3 MWM Specific Information 12.3.1 The _MOTIF_WM_HINTS Property 12.3.1.1 The flags Field 12.3.1.2 The decorations Field 12.3.1.3 The functions Field 12.3.1.4 The input_mode Field 12.3.1.5 The _MOTIF_WM_MENU Property 12.3.1.6 The _MOTIF_WM_MESSAGES Property 12.3.1.7 The _MOTIF_WM_INFO Property 12.3.2 Window Management Calls 12.3.2.1 Xlib Routines Chapter 13. Managing Windows With MWM 13.1 Starting Up MWM 13.2 Using Resources to Configure MWM 13.2.1 The Hierarchy of Resource Configuration Files 13.2.2 Classification of Resources 13.2.2.1 Component Appearance Resources 13.2.2.2 Specific Appearance and Behavior Resources 13.2.2.3 Client Specific Resources 13.2.3 Order of Precedence 13.2.4 The Syntax for Declaring Resources 13.3 Managing Screens 13.4 Setting Focus Policies for Active Windows 13.4.1 Colormap Focus Policy 13.4.1.1 Using Multiple Colormaps 13.4.2 Keyboard Focus Policy 13.4.3 The Syntax of Focus Policy Resources 13.5 Managing Clients 13.6 Managing the Appearance and Behavior of Window Frames and Mattes 13.7 Specifying a Different Font for the Window Manager 13.8 Coloring Window Frames 13.8.1 Coloring Individual Frame Elements 13.8.2 Syntax for Resources Controlling Frame Appearance Element 13.9 Making Window Frame Pixmaps 13.10 Specifying a Matte for Client Windows 13.10.1 Coloring Individual Matte Elements 13.10.2 Changing the Pixmap of Mattes 13.10.3 The Syntax for Matte Resources 13.11 Using Frameless or Reduced- Element Windows 13.11.1 Adding or Removing Elements 13.11.2 The Syntax for clientDecoration and transientDecoration Resources 13.12 Controlling Window Size and Position 13.12.1 Window Size Resources 13.12.2 Window Position Resources 13.12.3 Other Resources 13.12.4 The Syntax for Size and Position Refinement Resources Chapter 14. Managing Menus, Mouse Buttons, and Keyboard Bindings 14.1 MWM Resource Description File 14.2 Modifying Menus and Default Menus 14.3 Making New Menus 14.3.1 Menu Titles 14.3.2 Menu Items 14.3.3 Mnemonics and Accelerators 14.3.4 MWM Functions 14.3.4.1 Functions and Clients 14.3.5 Size of Menu Window 14.3.6 Binding a Menu to a Mouse Button or Key 14.4 Changing the Menu Associated with the Window Menu Button 14.5 Mouse Button Bindings 14.5.1 Default Button Bindings 14.5.2 Button Binding Syntax and Modifying Button Bindings 14.5.3 Making a New Button Binding Set 14.5.4 Modifying Button Click Timing 14.6 Keyboard Bindings 14.6.1 Default Keyboard Bindings 14.6.2 Keyboard Binding Syntax and Modifying Keyboard Bindings 14.6.3 Making a New Keyboard Binding Set Chapter 15. Working with Icons 15.1 Studying Icon Anatomy 15.1.1 The Image 15.1.2 The Label 15.2 Manipulating Icons 15.2.1 Controlling Icon Placement 15.2.2 The Syntax for Icon Placement Resources 15.3 Controlling Icon Appearance and Behavior 15.3.1 Selecting Icon Decoration 15.3.2 Sizing Icons 15.3.3 The Syntax for Resources that Control Icon Appearance 15.4 Coloring Icons 15.4.1 The Syntax for Icon Coloring Resources 15.5 Using the Icon Box to Hold Icons 15.5.1 Controlling Icon Box Appearance and Behavior 15.5.1.1 The Icon Box Window Menu 15.5.2 Controlling Icons in the Icon Box Chapter 16. Quick Reference Tables 16.1 Syntax for Resources 16.2 Resource Tables 16.2.1 Coloring Windows, Icons, Menus, and Mattes 16.2.2 Shading 16.2.3 Window Decorations 16.2.4 Focus Policies 16.2.5 Controlling Windows 16.2.6 Controlling Window Size and Position 16.2.7 Configuring Icons 16.2.8 Configuring the Icon Box 16.3 MWM Functions Chapter 17. Introduction to the User Interface Language 17.1 Overview of UIL and MRM 17.2 Benefits of Using UIL and MRM 17.2.1 Easier Coding 17.2.2 Earlier Error Detection 17.2.3 Separation of Form and Function 17.2.4 Faster Prototype Development 17.2.5 Interface Customization 17.3 Features of UIL 17.3.1 Named Values 17.3.2 Compile-Time Expressions 17.3.3 Identifiers 17.3.4 Lists 17.3.5 Support for Compound Strings Chapter 18. UIL Language Syntax 18.1 Character Set 18.1.1 Punctuation Characters 18.2 Names 18.3 Keywords 18.4 Literals 18.4.1 String Literals 18.4.2 Concatenated String Literals 18.4.2.1 Compound String Literals 18.4.2.2 Character Sets for String Literals 18.4.2.3 Data Storage Consumption for String Literals 18.4.3 Integer Literals 18.4.4 Boolean Literals 18.4.5 Floating-Point Literals 18.5 Value-Generating Functions 18.5.1 The CHARACTER_SET Function 18.5.2 The KEYSYM Function 18.5.3 Functions for Specifying Colors 18.5.3.1 The COLOR Function 18.5.3.2 The RGB Function 18.5.4 Functions for Specifying Pixmaps 18.5.4.1 The COLOR_TABLE Function 18.5.4.2 The ICON Function 18.5.4.3 The XBITMAPFILE Function 18.5.5 The SINGLE_FLOAT Function 18.5.6 The FLOAT Function 18.5.7 The FONT Function 18.5.8 The FONT_TABLE Function 18.5.9 The COMPOUND_STRING Function 18.5.10 The COMPOUND_STRING_TABLE Function 18.5.11 The ASCIZ_STRING_TABLE Function 18.5.12 The INTEGER_TABLE Function 18.5.13 The ARGUMENT Function 18.5.14 The REASON Function 18.5.15 The TRANSLATION_TABLE Function 18.6 The any Data Type 18.7 Compile-Time Value Expressions Chapter 19. UIL Module Structure 19.1 Structure of a UIL Module 19.1.1 Version Clause 19.1.2 Case-Sensitivity Clause 19.1.3 Default Character Set Clause 19.1.4 Default Object Variant Clause 19.2 Scope of References to Values and Objects 19.3 Structure of a Value Section 19.4 Structure of a Procedure Section 19.5 Structure of a List Section 19.5.1 Arguments List Structure 19.5.2 Callbacks List Structure 19.5.3 Controls List Structure 19.5.4 Procedures List Structure 19.6 Structure of an Object Section 19.6.1 Specifying the Object Variant in the Module Header 19.6.2 Specifying the Object Variant in the Object Declaration 19.7 Structure of an Identifier Section 19.8 Include Directive 19.9 Definitions for Constraint Arguments 19.10 Symbolic Referencing of Widget IDs Chapter 20. Using the UIL Compiler 20.1 Invoking the Compiler 20.1.1 Invoking the Compiler by Command 20.1.2 Invoking the Compiler by Function 20.2 Default Character Set for String Literals 20.3 Interpreting Diagnostics Issued by the Compiler 20.4 Reading the Compiler Listing 20.4.1 Title 20.4.2 Source Line 20.4.3 Diagnostics 20.4.4 Summaries Chapter 21. Motif Resource Manager Functions 21.1 Setting Up Storage and Data Structures 21.2 Obtaining UID Database File IDs 21.3 Closing a MRM Search Hierarchy 21.4 Registering MRM Information and Callbacks 21.4.1 Registering MRM Information 21.4.2 Registering a Vector of Callback Functions 21.5 Fetching Widgets 21.5.1 Fetching Values Stored in UID Files 21.5.2 Fetching Indexed Application Widgets 21.5.3 Overriding MrmFetchWidget Arguments 21.6 Fetching Literals 21.6.1 Fetching a Named Color Literal 21.6.2 Fetching an Icon Literal 21.6.3 Fetching a Literal Value Chapter 22. Creating User Interfaces with UIL and MRM 22.1 Specifying a User Interface Using UIL 22.1.1 Creating a UIL Specification File 22.1.2 Declaring the UIL Module 22.1.3 Using Constants Defined in the Motif Toolkit 22.1.4 Declaring Procedures 22.1.5 Declaring Values 22.1.5.1 Defining Integer Values 22.1.5.2 Defining String Values 22.1.5.3 Defining String Table Values 22.1.5.4 Defining Font Values 22.1.5.5 Defining Color Values 22.1.5.6 Defining Pixmap Values 22.1.6 Declaring Interface Objects in a UIL Module 22.1.6.1 Specifying Arguments in an Object Declaration 22.1.6.2 Specifying Children in an Object Declaration 22.1.6.3 Specifying Callbacks in an Object Declaration 22.1.7 Using an Icon as a Widget Label 22.1.8 Recommended Coding Techniques 22.1.8.1 Naming Values and Objects Meaningfully 22.1.8.2 Grouping Value, Identifier, and Procedure Declarations 22.1.8.3 Ordering Object Declarations to Reflect the Widget Tree 22.1.8.4 Using Local Definitions for Certain Objects 22.2 Creating a User Interface at Run Time with MRM 22.2.1 Accessing the UID File at Run Time 22.2.2 Deferring Fetching 22.2.3 Getting Literal Values from UID Files 22.2.4 Setting Values at Run Time Using UID Resources 22.2.5 Using an Object Definition as a Template 22.3 Customizing a Motif Interface Using UIL and MRM 22.4 Using UIL on Large Projects 22.5 Working with User-Defined Widgets in UIL 22.5.1 Defining Arguments and Reasons for a User-Defined Widget 22.5.2 Using a User-Defined Widget in an Interface Specification 22.5.3 Accessing a User-Defined Widget at Run Time Chapter 23. The Widget Meta-Language Facility 23.1 Using WML 23.1.1 Building WML 23.1.2 Running WML 23.1.3 Installing UIL 23.1.4 Building UIL 23.2 Modifying WML files 23.2.1 WML Syntax 23.2.1.1 Comments 23.2.1.2 Data Type Definitions 23.2.1.3 Character Set Definitions 23.2.1.4 Enumeration Set Definitions 23.2.1.5 Control List Definitions 23.2.1.6 Class Definitions 23.2.1.7 Resource Definitions Appendix A. Constraint Arguments Appendix B. UIL Built-In Tables Appendix C. UIL Arguments Appendix D. UIL Diagnostic Messages Glossary Figures 1-1: User Interface Development Model 1-2: Basic Widget Class Hierarchy 1-3: Primitive Class Widgets 1-4: Shell Widgets 1-5: Manager Widgets 1-6: Dialog Widgets 1-7: Gadgets 2-1: Widget Application Screen 2-2: ArrowButtons 2-3: List Widget 2-4: ScrollBars 2-5: Text Widget 2-6: ToggleButtons 2-7: RowColumn Widget 2-8: Scale Widget 2-9: ScrolledWindow Widget 2-10: ScrolledWindow After Scrolling 2-11: PanedWindow Widget 2-12: PanedWindow Widget After Pane Resiz - ing 3-1: xmbutton Widget Tree 3-2: Sample Program xmbutton Screen Display 3-3: Widget Drawing Areas 3-4: Program xmfonts Main Window 3-5: Program xmfonts Help Display Window 3-6: Program xmfonts Font Display Window 3-7: xmfonts Widget Tree 4-1: Shell Widget Hierarchy 5-1: XmCommand Widget 5-2: XmCommand Widget with Scrolled His - tory Region 5-3: Results of XmCommandAppendValue Operation 5-4: XmFileSelectionBox 5-5: Form Widget With ArrowButtons 5-6: Form Widget After Resizing 5-7: MessageBox Examples 5-8: SelectionBox Widget 6-1: Top Level of a Popup Menu System 6-2: Submenu of a Popup Menu System 6-3: Popup Menu System with Two Cascading Submenus 6-4: MenuBar of a Pulldown Menu System 6-5: Displaying a Pulldown MenuPane 6-6: Top Level of an Option Menu System 6-7: The Pulldown MenuPane in an Option Menu System 6-8: Creating a Popup Menu System with Convenience Functions 6-9: Creating a Pulldown Menu System With Convenience Functions 6-10: Creating Submenus With Convenience Functions 6-11: Creating Option Menu Systems Conveni - ence Functions 6-12: Creating a Popup Menu System Without Convenience Functions 6-13: Creating a Pulldown Menu System Without Convenience Functions 6-14: Creating Submenus Without Convenience Functions 6-15: Creating an Option Menu System Without Convenience Functions 7-1: Example of a List Widget 7-2: List Widget Before Selection Action 7-3: List Widget After Selecting Five Visible 7-4: List Widget Multiple Selection 7-5: List Widget Extended Selection 7-6: Column-Major Orientation (XmVERTI - CAL) 7-7: Row-Major Orientation (XmHORIZON - TAL) 7-8: XmRowColumn Widget 7-9: XmPACK_TIGHT with XmHORIZON - TAL Orientation 7-10: XmPACK_COLUMN With XmVERTI - CAL Orientation and XmNnumColumns = 3 7-11: XmPACK_COLUMN With XmHOR - IZONTAL Orientation and XmNnumColumns = 3 7-12: XmNmarginHeight and XmNmar - ginWidth 7-13: Text Widget 7-14: Text Demonstration File Menu 7-15: Text Demonstration Edit Menu 7-16: Selecting Text for Removal 7-17: Pasting Text 10-1: Two- and Three-Button Mice 10-2: Mouse Buttons and Their Locations 11-1: MWM Surrounds a Client's Window with a Frame 11-2: Resize Handles Have Distinctive Cursor Shapes 11-3: OSF/Motif Default Window Menu 13-1: MWM Frame Showing Frame Elements and Matte 13-2: Illustrations of Valid Pixmap Values 15-1: Icons Have Two Parts 15-2: Appearance of an Icon with the Input Focus 15-3: The System Menu for the Icon Box 22-1: Using an Icon in the Motifburger Appli - cation Interface 22-2: Radio Box with Toggle Buttons in the Motifburger Application 22-3: Widget Tree for the Motifburger Radio Box 22-4: Widget Creation in an MRM Fetch Operation 22-5: Setting Up a User Interface Specified with UIL 22-6: Sample Application Using the MrmFetchSetValues Function Tables 2-1: Categories of Widgets 2-2: Gadgets 3-1: Steps in Writing Widget Programs 5-1: Convenience Dialogs 7-1: List Widget Functions 7-2: Text Widget Functions 8-1: Compound String Functions 8-2: Cut and Paste Functions 8-3: Preinstalled Images 10-1: Special Purpose Keys and Their Substitu - tions. 11-1: Mouse Actions and Their Effects 11-2: MWM Resource Configuration Files 11-3: MWM Default Keyboard Input Focus with a Mouse 11-4: MWM Default Keyboard Input Focus with a Keyboard 11-5: Window Frame Parts and What They Do 11-6: Where to Grab an MWM Resize Handle 11-7: Default Mouse Operations 11-8: Default Keyboard Operations 11-9: The Window Menu Selections 11-10: Interactive Placement Using the Key - board. 12-1: Contents of _MOTIF_WM_HINTS Pro - perty 12-2: Values of the flags Field 12-3: Values of the decorations Field 12-4: Values of the functions Field 12-5: Values of the input_mode Field 12-6: Contents of the _MOTIF_WM_INFO Property 12-7: Values for the flags Field 13-1: Default Values for Appearance on a Color Display 13-2: Default Values for Appearance on a Monochrome Display 13-3: MWM Color Resources and What They Color 13-4: Creating a Pixmap for Window Frames 13-5: Valid Pixmap Values 13-6: MWM Matte Resources and What They Color 13-7: MWM Resources for Creating a Pixmap 13-8: Valid MWM Frame Elements 13-9: Feedback Options 14-1: Valid Window Manager Functions 14-2: Key Binding for f.set_behavior 14-3: Client Functions 14-4: Default Button Bindings 14-5: Replaceable Default Button Binding 14-6: Button Binding Modifier Keys 14-7: Button Actions for Button Bindings 14-8: Contexts for Mouse Button Bindings 14-9: Default Keyboard Bindings 14-10: Contexts for Key Bindings 15-1: Manipulating Icons with a Mouse 15-2: Manipulating Icons with the Keyboard 15-3: Options for iconPlacement Values 15-4: The Values for Controlling Icon Appear - ance 15-5: Icon Size Affects Treatment of Icon 15-6: MWM Color Resources and What They Color 15-7: Coloring Icon Images with MWM Resources 15-8: Controlling Icons in the Icon Box with a Mouse 16-1: Coloring 16-2: Shading 16-3: Configuring Window Decorations 16-4: Configuring Focus Policies 16-5: Controlling Windows 16-6: Controlling Window Size and Position 16-7: Configuring Icons 16-8: Configuring the Icon Box 16-9: Valid Window Manager Functions 18-1: UIL Legal Character Set 18-2: Punctuation Characters 18-3: Reserved Keywords 18-4: Nonreserved Keywords 18-5: Examples of String Literal Syntax 18-6: Escape Sequences 18-7: Supported Character Sets 18-8: Parsing Rules for Character Sets 18-9: Data Storage for String Literals 18-10: Data Storage for Integer Literals 18-11: Floating-Point Notation 18-12: Operators 18-13: Automatic Data Type Conversions 18-14: Conversion Functions 19-1: Rules for Case Sensitivity in a UIL Module 19-2: Value Types 19-3: Rules for Checking Argument Type and Count 19-4: Coupled Arguments 20-1: UIL Command Line Options 20-2: Levels of Diagnostic Messages 22-1: Optional UIL Module Header Clauses 22-2: UIL Compiler Rules for Checking Argu - ment Type and Count