CONTENTS Title Page Copyright Page Preface 1 Introduction to the User Interface Language 1.1 Overview of UIL 1.2 Advantages to Using UIL 1.3 Features of UIL 1.4 Where to Find More Information 2 UIL Language Syntax 2.1 Character Set and Punctuation Characters 2.1.1 Punctuation Characters 2.1.2 Spaces, Tabs, Form-Feed Characters, and Comments 2.2 Names 2.3 Keywords 2.4 Literals 2.4.1 String Literals 2.4.1.1 Compound String Literals 2.4.1.2 Character Sets for String Literals 2.4.1.3 Concatenated String Literals 2.4.1.4 Data Storage Consumption for String Literals 2.4.2 Integer Literals 2.4.3 Boolean Literals 2.4.4 Floating-Point Literals 2.5 Value-Generating Functions 2.5.1 COLOR Function 2.5.2 Functions for Specifying Pixmaps 2.5.2.1 COLOR_TABLE Function 2.5.2.2 ICON Function 2.5.2.3 XBITMAPFILE Function 2.5.3 FONT Function 2.5.4 FONT_TABLE Function 2.5.5 CLASS_REC_NAME Function 2.5.6 COMPOUND_STRING Function 2.5.6.1 Specifying Multiline Compound Strings 2.5.7 COMPOUND_STRING_TABLE Function 2.5.8 ASCIZ_STRING_TABLE Function 2.5.9 INTEGER_TABLE Function 2.5.10 ARGUMENT Function 2.5.11 REASON Function 2.5.12 TRANSLATION_TABLE Function 2.6 ANY Data Type 2.7 Include File for Useful Constants 2.8 Compile-Time Value Expressions 2.8.1 Operators 2.8.2 Data Type Conversion in Expressions 3 UIL Module Structure 3.1 Structure of a UIL Module 3.1.1 Version Clause 3.1.2 Case-Sensitivity Clause 3.1.3 Default Character Set Clause 3.1.4 Default Object Variant Clause 3.2 Scope of References to UIL Objects and Values 3.3 Structure of a Value Section 3.4 Structure of a Procedure Section 3.5 Structure of a List Section 3.5.1 Arguments List Structure 3.5.2 Callbacks List Structure 3.5.3 Multiple Procedures per Callback Reason 3.5.4 Controls List Structure 3.6 Structure of an Object Section 3.6.1 Specifying Object Variant in the Module Header 3.6.2 Specifying Object Variant in the Object Declaration 3.7 Structure of an Identifier Section 3.8 The UIL Include Directive 3.9 Definitions for Constraint Arguments 3.10 Symbolic References to Widget Identifiers 4 Using the UIL Compiler 4.1 Invoking the UIL Compiler 4.1.1 /LIST Qualifier 4.1.2 /MACHINE_CODE Qualifier 4.1.3 /OUTPUT Qualifier 4.1.4 /VERSION Qualifier 4.1.5 /WARNINGS Qualifier 4.2 Getting Online Help for the UIL Compiler 4.3 Interpreting Compiler Diagnostics 4.4 Interpreting the Compiler Listing 4.4.1 Listing Title 4.4.2 Source Line 4.4.3 Diagnostics 4.4.4 Summaries A UIL Diagnostic Messages B UIL Built-In Tables B.1 Attached Dialog Box B.2 Caution Box B.3 Color Mix B.4 Command Window B.5 Compound String Text Widget B.6 Dialog Box B.7 File Selection B.8 Help Box B.9 Label Widget B.10 Label Gadget B.11 List Box B.12 Main Window B.13 Menu Bar B.14 Message Box B.15 Option Menu B.16 Popup Attached Dialog Box B.17 Popup Dialog Box B.18 Popup Menu B.19 Pulldown Menu Entry Widget B.20 Pulldown Menu Entry Gadget B.21 Pulldown Menu B.22 Push Button Widget B.23 Push Button Gadget B.24 Radio Box B.25 Scale B.26 Scroll Bar B.27 Scroll Window B.28 Selection B.29 Separator Widget B.30 Separator Gadget B.31 Simple Text B.32 Toggle Button Widget B.33 Toggle Button Gadget B.34 User Defined B.35 Window B.36 Work Area Menu B.37 Work-in-progress Box B.38 UIL Arguments EXAMPLES 2-1 Using the COLOR Function 2-2 Using the COLOR Function to Define Monochrome Mapping for a Color 2-3 Using the COLOR_TABLE Function 2-4 Using the ICON Function 2-5 Using the XBITMAPFILE function 2-6 Using the FONT Function 2-7 Using the CLASS_REC_NAME Function 2-8 Using the COMPOUND_STRING_TABLE Function 2-9 Using the ASCIZ_STRING_TABLE Function 2-10 Using the INTEGER_TABLE Function 2-11 Using the ARGUMENT Function 2-12 Using the REASON Function 2-13 Using the TRANSLATION_TABLE Function 2-14 Compile-Time Expressions in a UIL Module 3-1 UIL Module Structure 3-2 UIL Value Declaration 3-3 UIL Procedure Declaration 3-4 UIL Arguments List Declaration 3-5 UIL Callbacks List Declaration 3-6 Specifying Multiple Procedures per Callback Reason 3-7 UIL Controls List Declaration 3-8 UIL Object Declaration 3-9 Specifying User Interface Object Variants 3-10 Using Identifiers in a UIL Module 3-11 UIL Include Directive 3-12 Defining Constraint Arguments 3-13 Using Symbolic References in a UIL Module 4-1 Sample UIL Compiler Listing File 4-2 Diagnostics on a UIL Compiler Listing 4-3 Summaries on a UIL Compiler Listing TABLES 2-1 UIL Character Set 2-2 UIL Punctuation Characters 2-3 Reserved UIL Keywords 2-4 Nonreserved UIL Keywords 2-5 Examples of String Literal Syntax 2-6 UIL Escape Sequences for String Values 2-7 UIL-Supported Character Sets 2-8 Parsing Rules for Character Sets 2-9 Data Storage Consumption for String Literals 2-10 Data Storage Consumption for Integer Literals 2-11 Valid and Invalid Floating-Point Notation 2-12 Values for ARGUMENT Function 2-13 Specifying Callbacks Using the REASON Function 2-14 UIL Include File Bindings 2-15 UIL Operators 2-16 Automatic Data Type Conversions in UIL 2-17 UIL Data Type Conversion Functions 3-1 Rules for Case Sensitivity in a UIL Module 3-2 UIL Value Types 3-3 UIL Compiler Rules for Checking Argument Type and Count 3-4 UIL Coupled Arguments 4-1 Command Line Qualifiers for the UIL Compiler 4-2 Values for the /WARNINGS Qualifier 4-3 Levels of Diagnostic Messages B-1 UIL Object Types B-2 Attached Dialog Box B-3 Caution Box B-4 Color Mix B-5 Command Window B-6 Compound String Text Widget B-7 Dialog Box B-8 File Selection B-9 Help Box B-10 Label Widget B-11 Label Gadget B-12 List Box B-13 Main Window B-14 Menu Bar B-15 Message Box B-16 Option Menu B-17 Popup Attached Dialog Box B-18 Popup Dialog Box B-19 Popup Menu B-20 Pulldown Menu Entry Widget B-21 Pulldown Menu Entry Gadget B-22 Pulldown Menu B-23 Push Button Widget B-24 Push Button Gadget B-25 Radio Box B-26 Scale B-27 Scroll Bar B-28 Scroll Window B-29 Selection B-30 Separator Widget B-31 Separator Gadget B-32 Simple Text B-33 Toggle Button Widget B-34 Toggle Button Gadget B-35 User Defined B-36 Window B-37 Work Area Menu B-38 Work-in-progress Box B-39 UIL Arguments