|
Course Overview
This 3-day course begins with a review of the essential Xlib, Xt toolkit,
and Motif concepts upon which UIM/X 3.0 (and other versions) is built.
Then, the tool itself is broken down into its functional layers and presented
in a series of lectures and laboratory sessions. Students progress from
prototyping a simple interface, to properly supporting multiple shells,
to defining reusable interface components. Seventy percent of the course
is hands-on time: step-by-step tutorials led by the instructor, informal
exercises, and full laboratory sessions where they apply principles learned
to real-world examples.
Training Date(s) / Location
Call your Bluestone Consulting representative or 856-813-1100 for scheduling
information.
Key Benefits
- Layout widgets, set resources, and
test callbacks interactively.
- Use UIM/X for maximal GUI design and
implementation efficiency.
- Enforce corporate style guides.
- Link together multiple interfaces.
- Define parameterized, reusable components.
Audience
This course is designed for programmers, engineers, and managers needing
to understand the functional layers of UIM/X and how to use those layers
to build anything from rapid prototypes to full OSF/Motif and corporate
style guide compliant interfaces.
Prerequisites
- Motif Programming (recommended)
- Advanced C Programming
- UNIX Fundamentals
- vi or emacs
Course Content:
X and Motif Review
- Background History of X
- Software Layers
- The Client / Server Model
- Client and Server Communication
- Windows in an Interface
- Windows on the Server
- Window Clipping and Stacking Rules
- Window Geometry
- Pixels, Planes, and Colormaps
- Motif Widget Class Hierarchy
- Creating and Managing Widgets
- Accessing Resources Programmatically
- Callback Functions
UIM/X Project Operation
- UIM/X Development Steps
- GUI Source and Generated Files
- UIM/X Directory Structure
- Running UIM/X
- UIM/X Novice Mode
- UIM/X Main Project Window
- Creating A Topmost Widget
- Suggested Window Layout
- Interface Icons
- Saving A Project
- Project Components
- Project Files
- Project (.prj) File Format
- Interface (.i) File Format
- Loading A Project
- Showing and Hiding All Interfaces
- Selection Techniques
- Selected Interfaces Popup
- Options Menu
- Code Generation Options
- Generating Project Code
- Generated C Files
- Exiting Or Resetting UIM/X
Widget-Level Operations
- Selected Widgets Popup
- Creating Manager Widgets
- Raising a Browser
- Suggested Window Layout
- The Browser
- Browser File Menu
- Browser Create Menu
- Browser Edit Menu
- Browser View Options
- Browser Selected Widgets Popup
- Creating Primitive Widgets
- Duplicating Widgets
- Widget Move/Resize Rectangles
- Moving or Resizing Hidden Widgets
- Re-Creating Widgets
- Aligning Widgets
- Reparenting Widgets
- Changing Sibling Stacking Order
Property Editor
- Invoking a Property Editor
- The Property Editor
- Loading Widgets
- Options for Loading
- Removing Widgets from Property Editor
- Color Viewer
- Color Viewer Edit Menu and Color Map
- Color Editor
- Pixmap Viewer
- View Menu
- Property Sources
- Resource Categories
- Font Viewer
- Changing Widget Name And Scope
- Renaming An Interface
- Behavior Category
- Callback Editor
- Finding Parse Errors
- Design Time vs. Run Time
- Distinguishing C vs. C++ Code
- Sample Generated Callback Code
- Miscellaneous
Constraint Editor
- Motivation
- Invoking the Constraint Editor
- Constraint Editor
- Constraint Tools
- Applying Bolt Constraints
- Effect of Bolt Constraints
- Applying Dimension Constraints
- Effect of Dimension Constraint
- Applying Pushpin Constraints
- Effect of Pushpin Constraints
- Removing Constraints
Ux Library and Code Generation
- Ux Convenience Library
- C++ Convenience Library Bindings
- Dynamic Resource Manipulation
- Visibility Support Routines
- Widget/Swidget Conversions
- UIM/X Globals
- Disabling The Ux Library
- uxcgen
- Support Files
Declarations Editor
- Purpose of the Declarations Editor
- The Declarations Editor
- The Declarations Editor with C++
- Analysis Of .h Files
- Analysis Of .c Files
- Code Mapping of Declarations Editor
- Initial and Final Code
- Code Guidelines
Interpreter
- Invoking the Interpreter
- Executing C or C++ Code
- Viewing Interpreter Results
- Testing Initial and Final Code
- Translation Units
- Loading A File Into The Interpreter
- Clearing Interpreter Messages
- The cflags Resource
- Miscellaneous
Program Layout Editor
- Program Layout Editor
- Specifying The Application Class
- Specifying The Startup Interface
- Customizing the Main Program
- Analysis Of Main Program
- Customizing the Makefile
- Analysis Of Makefile
- Specifying The Event Loop Type
Menus and Main Windows
- A Main Window and Menubar
- Main Window Editor
- Accessing the Main Window Property
Editor
- Motif Menu Types
- Menu Components
- Menu Anatomy
- Invoking the Menu Editor
- The Menu Editor
- Entering Pane Information
- Creating An Item
- Editing An Item
- Changing an Item Name
- Creating A Pane
- Edit Menu Operations
- Cascading Submenus
- Attaching the Cascading Submenu
- Creating A Help Menu (Version 2.9+)
Context Support
- Multiple Instances of an Interface
- Motivation for Context Support
- Code Generated Without Context Support
- The Context Structure
- Context Creation
- Context Access
- Instance Specific Variables
- Implications of Context Support
- Context Support in C++ Mode
Linking Interfaces Together
- Styles Of Popping Up Interfaces
- Parenting Of Interfaces
- Creating and Popping Up Interfaces
- Adding Interface Function Arguments
- Creating Interfaces at Initialization
- Interface Function Types
- Modality Of Popup Dialogs
Actions and Translations
- Invoking The Translation Table List
- Creating Translation Tables
- Translation Table Editor Window Layout
- Defining Translation Tables
- Attaching A Translation Table To A
Widget
- Creating Action Tables
- Action Table Edit Menu
- Action Coding Conventions
Palettes (Optional Topic)
- The Ux Palette
- Showing and Hiding Palettes
- Changing The Palette View
- Creating a Palette
- Putting Items into a Palette
- Saving Your Palette
- Creating From Your Palette: Palette
Modes
- Creating Multiple Copies from the Palette
- Changing Item Attributes
- Palette Selected Objects Popup
- Changing the Category Name
- Creating New Categories
- Pros and Cons Of Palettes
Components (Optional Topic)
- Layout Object Types
- Components and Instances: Terminology
- Creating a Component
- Creating an Instance
- Instance Properties
- How Components and Instances Work
- Parameterizing a Component
- Multiple Instances and Context Support
- Using Components with Palettes
- Subclassing a Component
- Other Ways To Create A Component
- Other Ways to Instantiate A Component
- Distributing Components
- Pros and Cons of Components and Instances
Methods (Optional Topic)
- Conceptual Overview of Methods
- Predefined Methods
- Accessing The Methods Editor
- Creating a Method
- Calling A Method
- Methods Editor Menus
- Component Properties: Motivation
- Adding a Property: Get/Set Methods
- Setting Properties on Instances
- Adding a Callback Property
- Defining a Callback on an Instance
- Adding a Child Site Method
Connection Editor (Optional Topic)
- Motivation for Connection Editor
- Conceptual Model of Connection Editor
- Invoking the Connection Editor.
- Connection Editor
- Defining Connections
- Other Ways to Invoke the Connection
Editor
- Other Ways to Load the Source and Target
Augmenting UIM/X (Optional Topic)
- Conceptual Overview of Augmenting UIM/X
- Compiling Interfaces for Augmenting
UIM/X
- Steps in Augmenting UIM/X
- Course Objectives
- Related Bluestone Consulting Courses
Appendix: Subprocess Control
- Overview
- Initializing and Running the Subprocess
- Subprocess Input and Output
- Terminating The Subprocess
|