Software Skills Training, Inc.
978-250-4983
Catalog Course Schedules In House Training Registration Student Feedback
Cost Effective Training Solutions



Register Now

Discount Programs

X/Motif Programming


Price: $2495
Duration: 5 days  |  X/Motif Programming Course Schedule

Prerequisites: C Programming Experience

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.

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
Handling Events
  • Types of Events
  • Event Data Structures
  • Event Handlers, Actions, and Callbacks
  • Xlib Routines for Getting Events
  • Keyboard Focus
  • Pointer and Keyboard Grabs
Motif Primitive Widgets
  • Fundamental Characteristics of XmPrimitive
  • XmPrimitive Derived Classes
  • Widget Behavior, Resources, and Callbacks
    • Labels and Buttons
    • Text
    • Scrollbars
    • List
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
Dialog Boxes
  • Classes of Dialogs
  • TransientShell
  • Mode Settings
  • Single Reply Dialogs
  • Multiple Reply Dialogs
  • FileSelectionBox
  • Custom Dialogs
  • Application Design Issues
Using Pixmaps
  • When to Use Pixmaps
  • Creating Bitmaps and Pixmaps
  • Stippling and Tiling On Screen versus Off Screen Drawing
  • Off Screen Drawing 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
Basic Color Techniques
  • Fundamental Color Concepts
  • Virtual Colormaps
  • Colorname Mapping
  • Allocating Sharable Colorcells
  • Allocating Nonsharable Colorcells
  • Storing Colors
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
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

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
The Translation Manager
  • Translating Events to Actions
  • Translation Table Syntax
  • Setting Translations Externally
  • Setting Translations Within an Application
  • Adding Your Own Actions
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
Motif Menus
  • Types of Menus
    • MenuBar
    • OptionMenu
    • PulldownMenu
    • PopupMenu
  • MenuShell
  • Menu Placement
  • Tearoff Menus
  • Application Design Issues
  • UIL Considerations
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
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
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
Advanced Color Techniques
  • Querying and Using Visuals
  • Creating Private Colormaps
  • Drawing on Separate Planes
  • Setting Up for Occlusion
  • Dynamic Graphics Techniques
Advanced Application Design Techniques
  • Work Procedures
  • Alternate Input
  • Timeouts
  • Connecting to Multiple Displays
  • Use of Multiple Top Level Shells
  • Designing for Good Interactive Response
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