X/Motif Programming

Duration: 5 days | Price: $2495 | Class Dates:

Students Will Learn:
  • X Window Attributes and Properties
  • Drawing Graphics
  • Color Control
  • Event Handling & the Translation Manager
  • User Interface Design
  • Manager and Primitive Widgets
  • Top Level Shells
  • Menus and Dialogs

Description: This hands on X/Motif programming course presents Motif GUI implementation using the X Window toolkit intrinsics along with Xlib and Motif function library calls, with an emphasis on event-driven programming. The extensive hands on exercises are hierarchically structured to build complex skills in a very short time. The course provides a thorough introduction to the Xt toolkit functions used in application programming, including those used for managing resources, handling events, and manipulating widgets. Students will learn how to effectively utilize primitive, manager, and shell widgets from the Motif library. Special emphasis is placed on designing for good interactive response and adhering to proper Motif style. Students also receive extensive practice using the Xlib application programming interface for window management, graphics and text display, event handling, interprocess communication, colormap creation and control, pixmap creation and management, and image processing. Use of UIL as well as C is integrated throughout, both as a learning tool and as an application development and prototyping skill useful after the class. Students will take home a versatile set of X/Motif clients to use as templates for their own work.

Prerequisites: C Programming Experience

X/Motif Programming Course Overview:

Fundamentals of Widgets and Resources
  • Resource Inheritance
  • Xt Widget Classes
  • Motif Widget Classes
  • Gadgets
  • Resource Naming Conventions
  • The Resource Database
  • Setting Resources Externally
  • Setting Resources Within an Application
  • Creating Your Own Application Resources
  • Parsing Resources from Command Line Options
  Designing a User Interface
  • Motif Style Guidelines
  • Human Engineering and Usability Testing
  • Techniques for Enhancing Visual Design
  • Keyboard Traversal and Tab Groups
  • Controlling Keyboard Focus from Within the Application
  • Direct Manipulation Techniques
  • Motif Drag and Drop
Handling Events
  • Types of Events
  • Event Data Structures
  • Event Handlers, Actions, and Callbacks
  • Xlib Routines for Getting Events
  • Keyboard Focus
  • Pointer and Keyboard Grabs
  The Translation Manager
  • Translating Events to Actions
  • Translation Table Syntax
  • Setting Translations Externally
  • Setting Translations Within an Application
  • Adding Your Own Actions
Motif Primitive Widgets
  • Fundamental Characteristics of XmPrimitive
  • XmPrimitive Derived Classes
  • Widget Behavior, Resources, and Callbacks
    • Labels and Buttons
    • Text
    • Scrollbars
    • List
  Motif Manager Widgets
  • Fundamental Characteristics of XmManager
  • XmManager Derived Classes
  • Bulletin Board
    • Use as a Work Area
    • Use with Dialogs
  • RowColumn
    • Control Panel Layout
    • Radio Box
    • Menus
    • Check Box
  • Form
    • Attachment Constraints
Using UIL
  • Uses, Advantages, and Disadvantages of UIL
  • UIL File Structure and Syntax
  • Compiling a UIL File
  • Runtime Calls
  • Structure of an Application Using UIL
  • Deferred Fetching
  • Use of the Create Callback
  • Internationalization Using Environment Variables
  Motif Menus
  • Types of Menus
    • MenuBar
    • OptionMenu
    • PulldownMenu
    • PopupMenu
  • MenuShell
  • Menu Placement
  • Tearoff Menus
  • Application Design Issues
  • UIL Considerations
Dialog Boxes
  • Classes of Dialogs
  • TransientShell
  • Mode Settings
  • Single Reply Dialogs
  • Multiple Reply Dialogs
  • FileSelectionBox
  • Custom Dialogs
  • Application Design Issues
  Drawing Into Widgets
  • DrawingArea Widget
  • Scrolling Considerations
  • Retrieving X Resource IDs for Drawing
  • Resizing and Scaling Considerations
  • Use of XEvent Structure
  • Using Graphics Effectively in GUI Design
Using Pixmaps
  • When to Use Pixmaps
  • Creating Bitmaps and Pixmaps
  • Stippling and Tiling On Screen versus Off Screen Drawing
  • Off Screen Drawing Techniques
  XLib Drawing Routines
  • Creating a Graphics Context
  • GC Elements
  • Setting and Using GC Elements
  • Xlib Drawing Routines
  • XCopyArea
  • Erasure
  • Scaling Graphics
  • Using Regions
  • Window Refresh Techniques
Presenting Text
  • Introduction to Graphics Text and Text Fonts
  • Loading and Querying Font Information
  • Locating Text in a Window
  • Resizing Text
  • Checking for Availability of Fonts
  • Advantages of Using a Text Widget
  • Text Widget Translations and Callbacks
  • Convenience Functions
  Compound Strings and Font Lists
  • Purpose of Compound Strings
  • String Segment Components
  • Compound String Library Components
  • Use of Font Lists
  • Setting Font Lists Externally
  • Setting Font Lists Within an Application
Basic Color Techniques
  • Fundamental Color Concepts
  • Virtual Colormaps
  • Colorname Mapping
  • Allocating Sharable Colorcells
  • Allocating Nonsharable Colorcells
  • Storing Colors
  Advanced Color Techniques
  • Querying and Using Visuals
  • Creating Private Colormaps
  • Drawing on Separate Planes
  • Setting Up for Occlusion
  • Dynamic Graphics Techniques
Window Properties
  • Property IDs and Types
  • Creating and Destroying Properties
  • Setting and Getting Properties
  • Standard Properties for Top Level Windows
  • Using Properties for Interclient Communication
  Advanced Application Design Techniques
  • Work Procedures
  • Alternate Input
  • Timeouts
  • Connecting to Multiple Displays
  • Use of Multiple Top Level Shells
  • Designing for Good Interactive Response
Introduction to X Windows and the X Toolkit
  • Client/Server Design Model
  • X Software Architecture
  • Introduction to the X Toolkit
  • Widget Libraries
  • Windowing Concepts
  • Window Manager Interaction
  Motif Application Structure
  • Event Driven Programming
  • Introduction to X Events
  • Toolkit and Resource Initialization
  • Creating Widgets
  • Managing Widgets
  • Registering Callbacks
  • Callback Function Arguments
  • Realizing Widgets
  • Event Loop Processing

Student Testimonials

"Excellent class! Good instructor! [He] covered a lot of important topics I see at my job, and have wondered about for years."
- W.M., Robins AFB


"This was the best instructor I've ever had for the last 15 years of post-college technical training. Wonderful! The instructor knew his material, was very excited about it (which motivated us) and easily adapted the info to all of our questions."
- M.S., General Dynamics Advanced Information Systems


"The instructor did an excellent job in presenting the material in such a way that is most applicable. Highly informative. Can't wait to implement this."
- G.C., Endura Products Inc


Hands On Technology Transfer, Inc.
1 Village Square, Suite 8
14 Fletcher Street
Chelmsford, MA 01824
1-800-413-0939 | 1-978-250-4299

Copyright© 2008 Hands On Technology Transfer, Inc.