VMS DECwindows Guide to Application Programming

*HyperReader

  CONTENTS

  Title Page

  Copyright Page

  Preface

  1      Overview of the XUI Toolkit

  1.1     Overview of XUI Toolkit Components
    1.1.1      User Interface Objects
    1.1.2      X Toolkit Routines
    1.1.3      Cut and Paste Routines
    1.1.4      Application Development Tools

  1.2     Programming Concepts
    1.2.1      Creating the Form of Your Application
    1.2.2      Associating Function with Form

  1.3     Widgets in the XUI Toolkit

  1.4     Widget Attributes
    1.4.1      Size and Position Attributes
    1.4.2      Appearance Attributes
    1.4.3      Callback Attributes
    1.4.4      Assigning Values to Widget Attributes

  2      Creating a VMS DECwindows Application

  2.1     Overview of a VMS DECwindows Application

  2.2     Symbol Definition Files

  2.3     Initializing the XUI Toolkit
    2.3.1      Application Shell Widget
    2.3.2      Using Multiple Shell Widgets

  2.4     Creating the Widgets in the Interface
    2.4.1      Using Low-Level Widget Creation Routines
      2.4.1.1      Using Low-Level Routines to Define the Parent/Child Relationship of a Widget
      2.4.1.2      Using Low-Level Routines to Define the Initial Appearance of a Widget
      2.4.1.3      Using Low-Level Routines to Associate Callback Routines with a Widget
    2.4.2      Using High-Level Widget Creation Routines
      2.4.2.1      Using High-Level Routines to Define the Parent/Child Relationship of a Widget
      2.4.2.2      Using High-Level Routines to Define the Initial Appearance of a Widget
      2.4.2.3      Using High-Level Routines to Associate Callback Routines with a Widget
    2.4.3      Using UIL and DRM to Create Widgets
      2.4.3.1      Using UIL to Define the Parent/Child Relationship of a Widget
      2.4.3.2      Using UIL to Define the Initial Appearance of a Widget
      2.4.3.3      Using UIL to Associate Callbacks with a Widget

  2.5     Managing the Widgets in the Interface
    2.5.1      Managing a Single Child Widget
    2.5.2      Managing Multiple Child Widgets

  2.6     Realizing the Widgets in the Interface

  2.7     Main Input Loop

  2.8     Creating a Callback Routine
    2.8.1      Identifying the Widget Performing the Callback
    2.8.2      Associating Application-Specific Data with a Widget
    2.8.3      Widget-Specific Callback Data
    2.8.4      Guidelines for Creating Callback Routines

  2.9     Manipulating the Interface at Run Time
    2.9.1      Standard Widget Manipulation Routines
    2.9.2      Widget-Specific Manipulation Routines

  2.10    Complete Listing of the Hello World!  Sample Application
    2.10.1     Using Low-Level Routines to Create the Hello World!  User Interface
    2.10.2     Using High-Level Routines to Create the Hello World!  User Interface
    2.10.3     Using UIL and DRM to Create the Hello World!  User Interface
    2.10.4     The Hello World!  Sample Application Main Input Loop and Callback Routine

  3      Creating a User Interface Using UIL and DRM

  3.1     Overview of UIL and DRM

  3.2     Specifying a User Interface Using UIL-A Sample Program
    3.2.1      Recommended UIL Coding Techniques
      3.2.1.1      Naming Values and Objects
      3.2.1.2      Declaring Values, Identifiers, and Procedures
      3.2.1.3      Declaring Objects
      3.2.1.4      Using Local Definitions for Objects
    3.2.2      Creating a UIL Specification File
    3.2.3      Structure of a UIL Module
    3.2.4      Declaring the UIL Module
    3.2.5      Using the UIL Constants Include File
    3.2.6      Declaring Procedures in UIL
    3.2.7      Declaring Values in UIL
      3.2.7.1      Defining Arguments for Attached Dialog Box Widgets
      3.2.7.2      Defining Integer Values
      3.2.7.3      Defining String Values
      3.2.7.4      Specifying Multiline Compound Strings
      3.2.7.5      Defining String Table Values
      3.2.7.6      Defining Font Values
      3.2.7.7      Defining Color Values
      3.2.7.8      Defining Pixmap Values
    3.2.8      Declaring Interface Objects in a UIL Module
      3.2.8.1      Specifying Arguments in an Object Declaration
      3.2.8.2      Specifying Children in an Object Declaration
      3.2.8.3      Specifying Callbacks in an Object Declaration
    3.2.9      Specifying an Icon as a Widget Label

  3.3     Creating a User Interface at Run Time Using DRM
    3.3.1      Accessing the UID File at Run Time
    3.3.2      Deferring Fetching
    3.3.3      Retrieving Literal Values from UID Files
    3.3.4      Setting Values at Run Time Using UID Resources
    3.3.5      Using an Object Definition as a Template

  3.4     Customizing a VMS DECwindows Interface Using UIL and DRM
    3.4.1      Designing an International Application Using UIL and DRM
    3.4.2      Specifying the User Interface for an International Application
    3.4.3      Creating the User Interface for an International Application

  3.5     Using Identifiers in UIL

  3.6     Using Symbolic References to Widget Identifiers in UIL

  3.7     Developing and Testing Prototypes Using UIL
    3.7.1      Setting Up the UIL Module for Prototype Testing
    3.7.2      Setting Up the Application Program for Prototype Testing

  3.8     Using UIL on Large Projects

  3.9     Working with User-Defined Widgets in UIL
    3.9.1      Defining Arguments and Reasons for a User-Defined Widget
    3.9.2      Using a User-Defined Widget in an Interface Specification
    3.9.3      Accessing a User-Defined Widget at Run Time

  4      Creating a Main Window Widget

  4.1     Overview of Window Widgets

  4.2     Children of a Main Window Widget
    4.2.1      Menu Bar Widget
    4.2.2      Command Window Widget
    4.2.3      Scroll Bar Widgets
    4.2.4      Work Area Widget

  4.3     Creating a Main Window Widget
    4.3.1      Adding Children to a Main Window Widget
      4.3.1.1      Using SET VALUES to Add Children to a Main Window Widget
      4.3.1.2      Using the MAIN WINDOW SET AREAS Routine
      4.3.1.3      Accepting Main Window Widget Defaults
    4.3.2      Customizing the Main Window Widget
    4.3.3      Associating Callback Routines with a Main Window Widget

  4.4     Creating a Scroll Window Widget
    4.4.1      Adding Children to a Scroll Window Widget
      4.4.1.1      Using SET VALUES to Add Children to a Scroll Window Widget
      4.4.1.2      Using the SCROLL WINDOW SET AREAS Support Routine
      4.4.1.3      Accepting Scroll Window Widget Defaults

  4.5     Creating a Window Widget
    4.5.1      Drawing Graphics in a Window Widget
    4.5.2      Associating Callback Routines with a Window Widget

  4.6     Creating a Command Window Widget
    4.6.1      Command Window Widget Support Routines
    4.6.2      Specifying the Contents of the Command Line
    4.6.3      Displaying Error Messages in the Command Window Widget
    4.6.4      Defining Accelerators for the Command Window Widget
    4.6.5      Customizing the Appearance of the Command Window Widget
      4.6.5.1      Specifying the Command Line Prompt
      4.6.5.2      Specifying the Size and Content of the Command History Window
    4.6.6      Associating Callback Routines with the Command Window Widget

  5      Using the Label, Separator, and Button Widgets

  5.1     Overview of Label, Separator, and Button Widgets and Gadgets

  5.2     Creating a Label Widget or Gadget
    5.2.1      Customizing a Label Widget
      5.2.1.1      Specifying the Size and Position of a Label Widget
      5.2.1.2      Specifying the Alignment in a Label Widget
      5.2.1.3      Specifying Margins in a Label Widget
      5.2.1.4      Specifying the Content of a Label Widget
    5.2.2      Customizing a Label Gadget

  5.3     Creating a Separator Widget or Gadget
    5.3.1      Customizing a Separator Widget or Gadget

  5.4     Creating a Push Button Widget or Gadget
    5.4.1      Customizing a Push Button Widget
      5.4.1.1      Specifying Highlighting Behavior
      5.4.1.2      Specifying Shadowing
      5.4.1.3      Specifying the Insensitive Pixmap
    5.4.2      Customizing a Push Button Gadget
    5.4.3      Associating Callback Routines with a Push Button Widget or Gadget

  5.5     Creating a Toggle Button Widget or Gadget
    5.5.1      Specifying the State of a Toggle Button Widget or Gadget
    5.5.2      Customizing a Toggle Button Widget
      5.5.2.1      Specifying the Appearance of the Indicator
      5.5.2.2      Specifying On and Off Pixmaps
    5.5.3      Customizing a Toggle Button Gadget
    5.5.4      Associating Callback Routines with a Toggle Button Widget or Gadget

  5.6     Working with Compound Strings
    5.6.1      Creating a Compound String
    5.6.2      Creating Compound Strings with Multiple Segments
    5.6.3      Manipulating a Compound String
    5.6.4      Retrieving Information About a Compound String
    5.6.5      Specifying Fonts

  5.7     Defining Accelerators for Button Widgets and Gadgets
    5.7.1      Defining the Accelerator Key or Key Combination
    5.7.2      Adding an Accelerator to a Widget or Gadget
    5.7.3      Installing an Accelerator in an Application
    5.7.4      Specifying an Accelerator Label
    5.7.5      Adding an Accelerator to the Hello World!  Sample Application

  6      Creating Menu Widgets

  6.1     Overview of Menu Widgets

  6.2     Menu Widgets in the XUI Toolkit
    6.2.1      Creating Menu Items
    6.2.2      Nesting Menu Widgets

  6.3     Creating a Work Area Menu Widget
    6.3.1      Customizing a Work Area Menu Widget
      6.3.1.1      Specifying the Size of a Work Area Menu Widget
      6.3.1.2      Specifying the Arrangement of Menu Items
      6.3.1.3      Specifying Margins and Spacing
      6.3.1.4      Determining Menu Item Alignment
      6.3.1.5      Specifying Radio Button Exclusivity
      6.3.1.6      Restricting Menu Items to Classes of Widgets
    6.3.2      Associating Callback Routines with a Work Area Menu Widget

  6.4     Creating a Pull-Down Menu Widget
    6.4.1      Customizing the Appearance of a Pull-Down Menu Widget
    6.4.2      Associating Callback Routines with a Pull-Down Menu Widget

  6.5     Creating a Menu Bar Widget
    6.5.1      Customizing a Menu Bar Widget

  6.6     Creating an Option Menu Widget
    6.6.1      Customizing an Option Menu Widget
      6.6.1.1      Specifying the Initial Value of an Option Menu Widget
      6.6.1.2      Specifying the Label in an Option Menu Widget

  6.7     Creating a Pop-Up Menu Widget
    6.7.1      Creating an Action Procedure
    6.7.2      Adding an Action Procedure to a Widget
    6.7.3      Customizing a Pop-Up Menu Widget
    6.7.4      Associating Callback Routines with a Pop-Up Menu Widget

  7      Creating Dialog Box Widgets

  7.1     Overview of the Dialog Box Widget

  7.2     Dialog Box Widgets in the XUI Toolkit
    7.2.1      Generic Dialog Box Widgets
      7.2.1.1      Dialog Box Widget
      7.2.1.2      Attached Dialog Box Widget
    7.2.2      Standard Dialog Box Widgets
      7.2.2.1      Message Box Widget
      7.2.2.2      Selection Box Widget

  7.3     Styles of Dialog Box Widgets

  7.4     Creating a Dialog Box Widget
    7.4.1      Specifying the Layout of Children in a Dialog Box Widget
    7.4.2      Customizing the Dialog Box Widget
      7.4.2.1      Sizing and Resizing a Dialog Box Widget
      7.4.2.2      Positioning a Dialog Box Widget
      7.4.2.3      Selecting the Unit of Measure Used in a Dialog Box Widget
      7.4.2.4      Defining Translations for Simple Text Widgets
      7.4.2.5      Assigning Accelerators to Child Widgets
      7.4.2.6      Grabbing the Input Focus
    7.4.3      Associating Callback Routines with a Dialog Box Widget

  7.5     Creating an Attached Dialog Box Widget
    7.5.1      Defining Attachments in an Attached Dialog Box Widget
      7.5.1.1      Attaching an Edge to the Attached Dialog Box
      7.5.1.2      Attaching an Edge to Another Child Widget
      7.5.1.3      Attaching an Edge to a Position in the Attached Dialog Box Widget
      7.5.1.4      Accepting Default Attachments
    7.5.2      Using Attachment Attributes
    7.5.3      Customizing an Attached Dialog Box Widget
      7.5.3.1      Specifying the Default Spacing Between Child Widgets
      7.5.3.2      Defining the Default Denominator Used in Fraction Positioning
      7.5.3.3      Controlling Resizing Behavior of Child Widgets
    7.5.4      Associating Callback Routines with an Attached Dialog Box Widget

  8      Creating a List Box Widget

  8.1     Overview of the List Box Widget

  8.2     Creating a List Box Widget
    8.2.1      Creating an Item List
      8.2.1.1      Creating an Item List as an Array of Compound Strings
      8.2.1.2      Creating an Item List Using the UIL STRING TABLE Function
    8.2.2      Selecting and Canceling Selections of List Items

  8.3     List Box Widget Support Routines
    8.3.1      Adding and Deleting List Items at Run Time
      8.3.1.1      Using SET VALUES to Add or Delete List Items
      8.3.1.2      Using a Support Routine to Add an Item to an Item List
      8.3.1.3      Using a Support Routine to Delete an Item from an Item List
    8.3.2      Selecting and Canceling the Selection of List Items at Run Time
      8.3.2.1      Using the SET VALUES Intrinsic Routine to Select List Items
      8.3.2.2      Using a Support Routine to Select a List Item
      8.3.2.3      Canceling the Selection of Items in an Item List
    8.3.3      Customizing the Appearance of a List Box Widget
      8.3.3.1      Specifying the Size of a List Box Widget
      8.3.3.2      Specifying List Items to Be Visible
      8.3.3.3      Specifying Margins and Spacing in a List Box Widget
    8.3.4      Associating Callbacks with a List Box Widget

  9      Handling Text

  9.1     Overview of Text Widgets

  9.2     Creating Text Widgets
    9.2.1      Manipulating the Text Contents of the Text Widgets
      9.2.1.1      Placing Text in a Text Widget
      9.2.1.2      Retrieving Text from a Text Widget
      9.2.1.3      Disabling Text Editing
      9.2.1.4      Limiting the Length of the Text
    9.2.2      Customizing the Appearance of the Text Widgets
      9.2.2.1      Specifying Size
      9.2.2.2      Specifying Margins
      9.2.2.3      Controlling Resizing Behavior
      9.2.2.4      Controlling Text Cursor Appearance
      9.2.2.5      Positioning the Insertion Point
      9.2.2.6      Specifying Border Visibility and Color
      9.2.2.7      Identifying the Current Writing and Editing Directions
    9.2.3      Handling Text Selections
      9.2.3.1      Selecting Text
      9.2.3.2      Retrieving Selected Text
      9.2.3.3      Canceling the Selection of Text
    9.2.4      Associating Callbacks with Text Widgets

  10     Using the Scale and the Scroll Bar Widgets

  10.1    Overview of the Scale Widget

  10.2    Creating a Scale Widget
    10.2.1     Determining the Range of Values
    10.2.2     Customizing the Appearance of a Scale Widget
      10.2.2.1     Specifying the Size of a Scale Widget
      10.2.2.2     Specifying the Orientation of the Scale Widget
      10.2.2.3     Specifying the Title of the Scale Widget
      10.2.2.4     Specifying the Color of the Slider
      10.2.2.5     Representing the Value of the Scale
      10.2.2.6     Adding Labeled Tick Marks to a Scale Widget
    10.2.3     Associating Callbacks with a Scale Widget

  10.3    Overview of the Scroll Bar Widget

  10.4    Creating a Scroll Bar Widget
    10.4.1     Determining the Range of a Scroll Bar Widget
    10.4.2     Specifying the Size of the Slider in a Scroll Bar Widget
    10.4.3     Defining the Size of Increment and Decrement
    10.4.4     Modifying the Action of the Stepping Arrows
    10.4.5     Customizing the Appearance of the Scroll Bar Widget
    10.4.6     Associating Callbacks with a Scroll Bar Widget

  11     Using the Color Mixing Widget

  11.1    Overview of the Color Mixing Widget
    11.1.1     Color Models
    11.1.2     Components of the Color Mixing Widget
      11.1.2.1     Color Display Subwidget
      11.1.2.2     Color Model Option Menu Subwidget
      11.1.2.3     Color Mixer Subwidget
      11.1.2.4     Push Button Subwidgets
      11.1.2.5     Label Subwidgets
      11.1.2.6     Work Area Subwidget

  11.2    Creating a Color Mixing Widget
    11.2.1     Setting and Retrieving New Color Values
    11.2.2     Customizing the Color Mixing Widget
      11.2.2.1     Specifying the Size
      11.2.2.2     Specifying Margins
      11.2.2.3     Labeling the Color Mixing Widget
      11.2.2.4     Defining the Background Color of the Color Display Subwidget
      11.2.2.5     Adding a Work Area to the Color Mixing Widget

  11.3    Supporting Other Color Models
    11.3.1     Replacing the Color Display Subwidget
    11.3.2     Replacing the Color Mixer Subwidget

  11.4    Associating Callbacks with a Color Mixing Widget

  12     Using Help

  12.1    Overview of the Help Widget
    12.1.1     Help Widget Terminology

  12.2    Help Library Information
    12.2.1     VMS Help Library Enhancements

  12.3    Modifying Help Widget Appearance
    12.3.1     Help Widget Topic Information

  12.4    Using the Help Widget

  12.5    Context-Sensitive Help

  13     Using the Cut and Paste Routines

  13.1    Overview of the Cut and Paste Routines
    13.1.1     Communicating with Other Applications
    13.1.2     Implementing the Copy, Cut, and Paste Functions

  13.2    Copying Data to the Clipboard
    13.2.1     Copying Data to the Clipboard by Name
    13.2.2     Creating a Clipboard Callback Routine
    13.2.3     Deleting Data from the Clipboard
    13.2.4     Specifying Clipboard Data Formats

  13.3    Copying Data from the Clipboard

  13.4    Inquiring About Clipboard Contents

  13.5    QuickCopy Implementation
    13.5.1     QuickCopy Message Types
    13.5.2     Selection Threshold Resource
    13.5.3     Implementing the QuickCopy Function
      13.5.3.1     CopyFrom and MoveFrom Operations
      13.5.3.2     CopyTo and MoveTo Operations

  14     Communicating with the Window Manager

  14.1    Overview

  14.2    Making Requests of the Window Manager
    14.2.1     Using Window Properties
      14.2.1.1     Predefined Window Properties
      14.2.1.2     Vendor-Specific Window Properties
    14.2.2     Using Shell Widget Attributes

  14.3    Setting and Retrieving Predefined Window Manager Properties

  14.4    Setting and Retrieving Vendor-Specific Window Manager Properties

  14.5    Setting and Retrieving Shell Widget Attributes
    14.5.1     Setting Shell Widget Attributes at Widget Creation Time
    14.5.2     Setting Shell Widget Attributes After Creation Time

  14.6    Receiving Messages from the Window Manager

  14.7    Customizing Your Application Using Window Manager Hints
    14.7.1     Customizing Your Main Application Window
      14.7.1.1     Associating a Name with Your Main Application Window
      14.7.1.2     Specifying the Initial Size and Position of Your Application
      14.7.1.3     Customizing the Title Bar
      14.7.1.4     Including Shrink-to-Icon, Push-to-Back, and Resize Buttons in the Title Bar
    14.7.2     Getting Information About Your Main Application Window
    14.7.3     Customizing Your Application Icon
      14.7.3.1     Specifying the Text in the Icon
      14.7.3.2     Specifying the Pixmap Used in Your Application Icon
      14.7.3.3     Using a Window in Your Icon
      14.7.3.4     Positioning Your Icon on the Display
    14.7.4     Specifying the Initial State of Your Application
    14.7.5     Creating Transient and Sticky Windows
    14.7.6     Bypassing the Window Manager

  A   Using the DECTERM PORT Routine

  DECTERM PORT

  B   Using the VAX Bindings

  B.1     Using the DECwindows Ada Programming Interfaces
    B.1.1     Using the Ada Packages
      B.1.1.1      Package CDA
      B.1.1.2      Package DDIF
      B.1.1.3      Package DTIF
      B.1.1.4      Package DWT
      B.1.1.5      Package X
    B.1.2     Callbacks
    B.1.3     Tasking Considerations
    B.1.4     Ada Examples

  B.2     Using the FORTRAN Bindings

  B.3     Using the VAX Pascal Bindings

  C   International Version of the DECburger Application

  D   Building Your Own Widgets

  D.1     Overview of Widgets
    D.1.1     Building a Widget
    D.1.2     Building a Sample Widget

  D.2     Widget Class Definitions
    D.2.1     Core Widgets
      D.2.1.1      CoreClassPart Structure
      D.2.1.2      CorePart Structure
      D.2.1.3      CorePart Default Values
    D.2.2     Composite Widgets
      D.2.2.1      CompositeClassPart Structure
      D.2.2.2      CompositePart Structure
      D.2.2.3      CompositePart Default Values
    D.2.3     Constraint Widgets
      D.2.3.1      ConstraintClassPart Structure
      D.2.3.2      ConstraintPart Structure

  D.3     Widget Classing
    D.3.1     Widget Naming Conventions
    D.3.2     Widget Subclassing in Public .h Files
    D.3.3     Widget Subclassing in Private .h Files
    D.3.4     Widget Subclassing in .c Files
    D.3.5     Superclass Chaining
    D.3.6     Class Initialization
    D.3.7     Inheritance of Superclass Operations
    D.3.8     Invocation of Superclass Operations

  D.4     Creating Instances of Widgets to Build a User Interface
    D.4.1     Widget Instance Initialization
    D.4.2     Constraint Widget Instance Initialization
    D.4.3     Nonwidget Data Initialization
    D.4.4     Widget Instance Window Creation
    D.4.5     Dynamic Data Deallocation
    D.4.6     Dynamic Constraint Data Deallocation

  D.5     Composite Widgets and Their Children
    D.5.1     Addition of Children to a Composite Widget
    D.5.2     Insertion Order of Children
    D.5.3     Deleting Children
    D.5.4     Constrained Composite Widgets

  D.6     Geometry Management
    D.6.1     Initiating Geometry Changes
    D.6.2     General Geometry Manager Requests
    D.6.3     Resize Requests
    D.6.4     Potential Geometry Changes
    D.6.5     Child Geometry Management
    D.6.6     Widget Placement and Sizing
    D.6.7     Obtaining the Preferred Geometry
    D.6.8     Managing Size Changes

  D.7     Event Management
    D.7.1     X Event Filters
      D.7.1.1      Pointer Motion Compression
      D.7.1.2      Enter/Leave Compression
      D.7.1.3      Exposure Compression
    D.7.2     Widget Exposure and Visibility
      D.7.2.1      Redisplay of a Widget
      D.7.2.2      Widget Visibility
    D.7.3     X Event Handlers

  D.8     Resource Management
    D.8.1     Resource Lists
    D.8.2     Superclass to Subclass Chaining of Resource Lists
    D.8.3     Retrieving Subresources
    D.8.4     Obtaining Application Resources
    D.8.5     Resource Conversions
      D.8.5.1      Predefined Resource Converters
      D.8.5.2      New Resource Converters
    D.8.6     Reading and Writing Widget Resource Fields
      D.8.6.1      Widget Subpart Resource Data
    D.8.7     Setting Widget Resource Fields
      D.8.7.1      Specifying Widget State
      D.8.7.2      Specifying Widget Geometry Values
      D.8.7.3      Specifying Widget Constraint Information
      D.8.7.4      Specifying the Widget Subpart Resources

  D.9     Translation Management
    D.9.1     Action Tables
    D.9.2     Translating Action Names to Procedures
    D.9.3     Translation Tables
      D.9.3.1      Event Sequences
      D.9.3.2      Action Sequences
    D.9.4     Translation Table Syntax
      D.9.4.1      Modifier Names in a Translation Table
      D.9.4.2      Event Types
      D.9.4.3      Canonical Representation
    D.9.5     Translation Table Management
    D.9.6     Using Accelerators
    D.9.7     Key Code to Key Symbol Conversions

  Glossary
    accelerator . . . bit gravity
    bitmap . . . case-sensitivity clause
    caution dialog box . . . clipboard
    close . . . control panel
    controls list . . . disable
    discontinuous selection . . . event mask
    exit . . . gadget
    ghost image . . . hotspot
    icon . . . input device
    input focus . . . maximum slider
    MB1, MB2, MB3, ..., MBn . . . name
    null-terminated string . . . parent
    passive grab . . . pointing device button
    pop-up menu . . . pull-down menu
    push button . . . reply
    resize . . . scope
    scroll bar . . . size
    slider . . . substructure redirect
    symbolic reference . . . toggle button
    toggle indicator . . . User Interface Definition file
    User Interface Language . . . widget hierarchy
    widget identifier . . . XUI Resource Manager

  EXAMPLES

  2-1        Including the XUI Toolkit Symbol Definition File in an Application

  2-2        Initializing the XUI Toolkit

  2-3        Creating Your Own Application Context

  2-4        Creating a User Interface Using Low-Level Routines

  2-5        Creating a User Interface Using High-Level Routines

  2-6        Using UIL to Define a Widget

  2-7        Creating the Interface at Run Time Using DRM

  2-8        Managing a Single Widget

  2-9        Managing a Group of Child Widgets

  2-10       Realizing a Widget Hierarchy

  2-11       Entering the Main Input Loop

  2-12       Hello World!  Application Callback Routine

  2-13       Adding a Work Procedure

  2-14       Setup Section of the Hello World!  Application Using Low-Level Routines

  2-15       Setup Section of the Hello World!  Application Using High-Level Routines

  2-16       Hello World!  Application UIL Specification File

  2-17       Hello World!  Application Using UIL

  2-18       Main Input Loop and Callback Routine of the Hello World! Application

  3-1        Widget Hierarchy in the DECburger UIL Module

  3-2        UIL Module Structure

  3-3        Module Declaration in the DECburger UIL Module

  3-4        Constants from Include File in the DECburger UIL Module

  3-5        Procedure Declaration in the DECburger UIL Module

  3-6        Defining Integer Values in the DECburger UIL Module

  3-7        Defining String Values in the DECburger UIL Module

  3-8        Defining a String Table Value in the DECburger UIL Module

  3-9        Declaring a Font Value in the DECburger UIL Module

  3-10       Defining Colors in the DECburger UIL Module

  3-11       Defining a Color Table in the DECburger UIL Module

  3-12       Defining an Icon in the DECburger UIL Module

  3-13       Declaring an Object in the DECburger UIL Module

  3-14       Specifying Children in the DECburger UIL Module

  3-15       Specifying Multiple Procedures per Callback Reason

  3-16       Using an Icon as a Label in the DECburger UIL Module

  3-17       Initializing DRM and the XUI Toolkit in the DECburger Application

  3-18       Declaring the UID Hierarchy for the DECburger Application

  3-19       Opening the UID Hierarchy for the DECburger Application

  3-20       Declaring a Vector of Names to Register for DRM in the DECburger Application

  3-21       Registering Names for DRM in the DECburger Application

  3-22       DECburger UIL Module Setup for Deferred Fetching

  3-23       Title Bar String for DECburger Application

  3-24       Getting a Value from the UID File for the DECburger Application

  3-25       UIL Module for the FETCH SET VALUES Application

  3-26       C Program for the FETCH SET VALUES Application

  3-27       UIL Module Setup for the FETCH WIDGET OVERRIDE Routine

  3-28       Using the FETCH WIDGET OVERRIDE Routine in a C Program

  3-29       French UIL Module for the International DECburger Application

  3-30       C Program for the International DECburger Application

  3-31       Using Identifiers in a UIL Module

  3-32       Using Symbolic References in a UIL Module

  3-33       Declarations in the DECburger UIL Module for Prototype Testing

  3-34       Declaring an Unimplemented Object in the DECburger UIL Module

  3-35       Definition of the Activate Routine in the DECburger Application

  3-36       Sample Main UIL File

  3-37       User-Defined XYZ Widget

  3-38       Declaring the User-Defined XYZ Widget in a UIL Module

  3-39       C Program for Displaying the XYZ User-Defined Widget

  4-1        Main Window Created in the DECburger UIL Module

  4-2        Performing Graphics Operations in a Window Widget

  5-1        Push Button Gadgets in the DECburger Option Menu

  5-2        Push Button Callback Procedure in the DECburger Application

  5-3        Creating the Radio Box Widget in the DECburger Application

  5-4        Setting the Initial State of a Toggle Button

  5-5        Toggle Button Callback Procedure in the DECburger Application

  5-6        Creating a Compound String

  5-7        Creating a Compound String with Multiple Segments

  5-8        Extracting the Text Content from a Compound String

  5-9        Specifying a Font

  5-10       Adding an Accelerator to a Push Button Widget or Gadget

  5-11       Adding an Accelerator to the Hello World!  Application

  6-1        Building a Work Area Menu

  6-2        Creating the Menu Bar Widget in the DECburger Application

  6-3        Creating the Option Menu Widget in the DECburger Application

  6-4        Creating an Option Menu Widget with an Item Selected

  6-5        Action Procedure to Pop Up a Pop-Up Menu Widget

  6-6        Creating a Pop-Up Menu Widget

  7-1        Creating the Dialog Box Widget in the DECburger Application

  7-2        Creating the Children of the Dialog Box Widget in the DECburger Application

  7-3        Positioning Children in an Attached Dialog Box Widget

  8-1        Creating an Item List as an Array of Compound Strings

  8-2        Creating an Item List Using the UIL STRING TABLE Function

  8-3        Selecting an Item in an Item List

  8-4        Adding an Item to a List Box Widget

  8-5        Specifying the Size of the DECburger List Box Widget

  8-6        Associating a Callback Routine with a List Box Widget

  8-7        Callback Routine DECburger Associates with the List Box Widget

  9-1        Defining the Simple Text Widget in the DECburger Sample Application

  9-2        Using the S TEXT GET STRING Support Routine in the DECburger Sample Application

  10-1       Determining the Range of Values

  10-2       Setting Appearance Attributes of the Scale Widget in the DECburger Sample Application

  10-3       Labeling Points Along a Scale in a Scale Widget

  10-4       Associating a Callback Routine with a Scale Widget

  10-5       Scale Widget Callback Routine in the DECburger Application

  10-6       Specifying the Range of Values in a Scroll Bar Widget

  11-1       Creating a Color Mixing Widget

  12-1       Sample Help File

  12-2       Creating a Help Widget

  12-3       UIL Help Widget Implementation

  13-1       Copying Data to the Clipboard

  13-2       Copying Data from the Clipboard

  13-3       Calling the OWN SELECTION Routine

  13-4       Notifying the Receiving Application that Data Is Available

  13-5       Getting the Selection Value

  13-6       Getting the Secondary Selection Data

  13-7       QuickCopy Callback Routine

  13-8       Sending a KILL_SELECTION Message

  14-1       Assigning Values to Predefined Window Manager Properties

  14-2       Setting Vendor-Specific Window Manager Properties

  14-3       Setting Shell Widget Attributes at Widget Creation Time

  14-4       Using the SET VALUES Intrinsic Routine to Set Shell Widget Attributes

  14-5       Specifying the Shrink-to-Icon Pixmap Using the CHANGE PROPERTY Xlib Routine

  14-6       Using Shell Widget Attributes to Specify Your Application Icon

  A-1        Creating a DECterm on a Remote Node

  A-2        Command Procedure to Compile, Link, and Run a DECterm on a Remote Node

  B-1        Hello World!  Application in VAX Ada

  B-2        Hello World!  Application in VAX FORTRAN

  B-3        Hello World!  Application in VAX Pascal

  C-1        C Program for the International Version of DECburger

  D-1        Sample Widget

  D-2        Modifying the Hello World! Application to Use the Sample Widget

  D-3        Compiling and Linking the Sample Widget

  D-4        The .c File for a Label Widget

  FIGURES

  1-1        XUI Layered Architecture

  1-2        Hello World!  Application User Interface

  1-3        Application Widget Hierarchy of the Hello World!  Application

  1-4        DECburger User Interface

  2-1        Structure of an XUI Application

  2-2        Relationship of Shell Widget to Application

  2-3        Argument Data Structure (VAX Binding)

  2-4        Callback Routine Data Structure (VAX Binding)

  2-5        Widget Callback Data Structure (VAX Binding)

  3-1        Setting Up a User Interface Specified with UIL

  3-2        Radio Box with Toggle Buttons in the DECburger Application

  3-3        Widget Hierarchy for the DECburger Radio Box Widget

  3-4        Using an Icon in the DECburger Application Interface

  3-5        Widget Creation in a DRM Fetch Operation

  3-6        Sample Application Using the FETCH SET VALUES Routine

  3-7        Using UID Hierarchies to Provide Alternatives or Refinements to an Interface

  4-1        Main Window Widget

  5-1        Attributes for Setting Margins

  5-2        Radio Box with Toggle Button Gadgets in the DECburger Application

  5-3        Hello World!  Application with an Accelerator

  6-1        Menu Widget

  6-2        Relationship of Pull-Down Menu Widget and Pull-Down Menu Entry Widget or Gadget

  6-3        Widget Hierarchy of Nested Pull-Down Menu Widgets

  6-4        Widget Hierarchy of a Work Area Menu

  6-5        Laying Out Menu Items

  6-6        DECburger Menu Bar with a Pull-Down Menu Selected

  6-7        Widget Hierarchy of the DECburger Menu Bar Widget

  6-8        Option Menu Widget

  6-9        Pop-Up Menu Widget

  7-1        Resizing a Dialog Box Widget

  7-2        Layout of the DECburger Dialog Box Widget

  7-3        Attaching an Edge of a Child Widget to the Attached Dialog Box Widget

  7-4        Attaching an Edge of a Child Widget to Another Child Widget in an Attached Dialog Box Widget

  7-5        Attaching an Edge to a Position in an Attached Dialog Box

  8-1        List Box Widget

  8-2        List Box Widget Used in the DECburger User Interface

  8-3        Margins and Spacing in a List Box Widget

  9-1        Text Widgets

  9-2        Default Configuration of the Text Widgets

  10-1       Scale Widget

  10-2       Scale Widget Sizing Attributes

  10-3       Scroll Bar Widget

  11-1       Components of the Color Mixing Widget (HLS Color Model)

  11-2       Components of the Color Mixing Widget (RGB Color Model)

  11-3       Labels in the Color Mixing Widget (HLS Color Model)

  11-4       Labels in the Color Mixing Widget (RGB Color Model)

  12-1       Sample XUI Toolkit Help Widget

  13-1       Edit Menu

  14-1       DEC WM Hints Data Structure (VAX Binding)

  14-2       WM Decoration Geometry Data Structure (VAX Binding)

  14-3       Appearance of an Application Running Under the DECwindows Window Manager

  14-4       Customizable Aspects of the Main Application Window

  14-5       Informational Attributes Provided by the Window Manager

  14-6       Customizable Aspects of Your Application Icon

  TABLES

  1-1        Summary of XUI Toolkit Widgets

  1-2        Widget Size and Position Attributes

  1-3        Callback Attributes Supported by the Push Button Widget

  2-1        Symbol Definition Files

  2-2        Widget Creation Mechanisms

  2-3        Standard Arguments Used with Low-Level Routines

  2-4        Arguments Used with the High-Level Routine PUSH BUTTON

  2-5        Standard Widget Manipulation Routines

  3-1        Optional UIL Module Header Clauses

  3-2        UIL Compiler Rules for Checking Argument Type and Count

  3-3        UIL Value Types

  3-4        DRM Routines and Functions

  4-1        Main Window Widget Creation Mechanisms

  4-2        Widget Attributes Accessible Using the High-Level Routine MAIN WINDOW

  4-3        Child Widget Attributes of the Main Window Widget

  4-4        Scroll Window Widget Creation Mechanisms

  4-5        Widget Attributes Accessible Using the High-Level Routine SCROLL WINDOW

  4-6        Child Widget Attributes of the Scroll Window Widget

  4-7        Window Widget Creation Mechanisms

  4-8        Widget Attributes Accessible Using the High-Level Routine WINDOW

  4-9        Command Window Widget Creation Mechanisms

  4-10       Widget Attributes Accessible Using the High-Level Routine COMMAND WINDOW

  4-11       Command Window Widget Support Routines

  4-12       Command Window Widget Callbacks

  5-1        Label Widget and Gadget Creation Mechanisms

  5-2        Attributes Accessible Using the High-Level Routine LABEL

  5-3        Separator Widget and Gadget Creation Mechanisms

  5-4        Attributes Accessible Using the High-Level Routine SEPARATOR

  5-5        Push Button Widget and Gadget Creation Mechanisms

  5-6        Attributes Accessible Using the High-Level Routine PUSH BUTTON

  5-7        Push Button Widget and Gadget Callbacks

  5-8        Toggle Button Widget and Gadget Creation Mechanisms

  5-9        Attributes Accessible Using the High-Level Routine TOGGLE BUTTON

  5-10       Toggle Button Widget and Gadget Callbacks

  5-11       Compound String Routines

  6-1        Work Area Menu Widget Creation Mechanisms

  6-2        Attributes Accessible Using the High-Level Routine MENU

  6-3        XUI Toolkit Widget and Gadget Class Names

  6-4        Pull-Down Menu Widget Creation Mechanisms

  6-5        Pull-Down Menu Entry Widget and Gadget Creation Mechanisms

  6-6        Attributes Accessible Using the High-Level Routine MENU

  6-7        Menu Bar Widget Creation Mechanisms

  6-8        Attributes Accessible Using the High-Level Routine MENU BAR

  6-9        Option Menu Widget Creation Mechanisms

  6-10       Attributes Accessible Using the High-Level Routine OPTION MENU

  6-11       Pop-Up Menu Widget Creation Mechanisms

  6-12       Attributes Accessible Using the High-Level Routine MENU

  7-1        Dialog Box Widget Creation Mechanisms

  7-2        Attributes Accessible Using the High-Level Routine DIALOG BOX

  7-3        Attached Dialog Box Widget Creation Mechanisms

  7-4        Attributes Accessible Using the High-Level Routine ATTACHED DIALOG BOX

  7-5        Attachment Attributes

  7-6        Attachment Constants for the Attached Dialog Box Widget

  8-1        List Box Widget Creation Mechanisms

  8-2        Attributes Accessible Using the High-Level Routine LIST BOX

  8-3        List Box Widget Support Routines

  8-4        List Box Widget Callbacks

  9-1        Text Widget Support Routines

  9-2        Mechanisms for Creating Text Widgets

  9-3        Attributes Accessible Using the High-Level Routines S TEXT and CS TEXT

  9-4        Text Widget Callbacks

  10-1       Scale Widget Creation Mechanisms

  10-2       Attributes Accessible Using the High-Level Routine SCALE

  10-3       Horizontal and Vertical Orientation Constants

  10-4       Scale Widget Callbacks

  10-5       Scroll Bar Widget Creation Mechanisms

  10-6       Attributes Accessible Using the High-Level Routine SCROLL BAR

  10-7       Scroll Widget Callbacks

  11-1       Color Model Constants

  11-2       Mechanisms for Creating the Color Mixing Widget

  11-3       Support Routines for the Color Mixing Widget

  11-4       Color Mixing Widget Label Attributes

  11-5       Color Mixing Widget Callbacks

  12-1       Help Widget Terminology

  12-2       VMS Librarian Utility Extensions

  12-3       Help Widget Appearance Attributes

  12-4       Help Widget Topic Attributes

  12-5       Help Widget Creation Routines

  13-1       Cut and Paste Routines

  13-2       Edit Menu Functions

  13-3       QuickCopy Operations

  14-1       Predefined Window Manager Properties

  14-2       Members of the WM Hints Data Structure

  14-3       Properties Defined by the DECwindows Window Manager

  14-4       Members of the DEC WM Hints Data Structure

  14-5       Members of the WM Decoration Geometry Data Structure

  14-6       Xlib Routines for Setting and Retrieving Predefined Window Manager Properties

  14-7       Common Tasks Performed with the Window Manager

  14-8       Information Provided by the Window Manager

  B-1        Subtype Definitions-Package DWT

  B-2        Subtype Definitions-Package X

  D-1        Default Values for the CorePart Structure

  D-2        Default Values for the CompositePart Structure

  D-3        Resource Types

  D-4        Translation Table Modifiers

  D-5        Event Types

  D-6        Event Type Abbreviations for Translation Tables