Programmer's Guide

*HyperReader

  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