Motif is still the dominant language used in developing applications for the X Window System, but most Motif books feature an "everything but the kitchen sink" approach, often times giving developers too much information. This book distills Motif's complexity into just the concepts, toolkits, widgets, and SLib routines developers need to get results quickly. .
"synopsis" may belong to another edition of this title.
On Tutorials and Weight Lifting
I have just recently started working out again. I had taken a couple of years off just due to lack of time. It does take a great deal of consistency and devotion.
It doesn't bother me that after working out for a couple of months, I can still only curl about 20-25 pounds per arm. What does disturb me is the fact the some tutorials on GUI program development weigh more than I can curl. OK, that's a slight exaggeration. My intention in writing this book is to present a subset of X programming and the Motif widget set. The book presents sufficient information to allow you to produce useful Motif applications. It does not exhaustively cover the topics mentioned in order to keep the book from becoming too imposing. The information presented will include some X and Motif internals, so you will not be left with too shallow an understanding of the topic. My motivations and desire to write this book originated in seeing many good tutorials and references published on the topic. Many of these are well-written, informative books. What I noticed, however, was the following:
Most tutorials range from 400-800 pages with appendices filling another 200-300 pages.
Most reference manuals total 1000 pages. Each reference manual covers only one of the following aspects of X programming: Xlib, the X toolkit, or the CDE/Motif widget set.
One multivolume set covering Xlib, the toolkit, and Motif spans a daunting eight volumes—over 4000 pages! Consider reading just three tutorials (one on Motif, one on the X toolkit intrinsics, and one on Xlib); you are looking forward to at least 1000 pages of reading. Most people would find that a bit intimidating, especially when your management may be requiring you to come up to speed very quickly on X/Motif and graphical user interface (GUI) programming.
Thus came the idea for this book: a book that would present most of the Motif widgets and only the most essential toolkit and Xlib routines necessary to competently develop Motif applications. Here, I weighed not what was important and what was not, but rather what was essential and what was not.
This book will NOT teach you about every resource, callback, and convenience function available for every Motif widget. It will NOT leave you with a thorough knowledge of Xlib and the toolkit. It will, however, leave you with a solid grounding in the basics from which you can move on to other information sources (on an as-needed basis). The book covers:
The client/server paradigm
X/Motif and GUI terminology
Usage of the most important widgets in Motif
Essential CDE application programming interfaces
Essential toolkit and Xlib functions
A small dose of internals and efficiency considerations
This is a from-the-ground-up Motif book. I expect, however, that the reader has been programming for a few years, has some knowledge of data structures, and is familiar with C. The last of these requirements is essential to following the text.
I have tried to cover the various topics in a logical order. Even with the best ordering possible, it is hard to explain one widget or concept without referring to another that has not yet been explained. So there will be some minor hand-waving at points to say “This code here is magic-like but we will explain it in a later section.” The hope is that in about 300 pages you will be programming Motif applications at an intermediate level.
This book is based on MIT's X Window System version 11, release 6.2, and The Open Group's CDE/Motif version 2.1. Since things change from one version to the next, I have tried to note where things are done differently in previous versions of Motif. I have included slightly longer descriptions of the 1.2 programming methods when the Open Group's endorsed method has totally changed for the new version. This does two things:
If you do not have CDE/Motif 2.1, it tells you how to perform a task with version 1.2 or 2.0 routines.
When you move to CDE/Motif 2.1, you will know the new endorsed method and how to port from old to new. The Open Group has retained the old routines for backward compatibility, so nothing really breaks when moving to 2.1. However, they have clearly marked certain routines as obsolete and strongly recommend using the newer techniques for any new code. For the purposes of brevity, I have written example code to create and manipulate widgets in small, inline code snippets. I do this because including the complete example code blimps out the text of the book and sometimes detracts from the points being made. The complete sample code is included on diskette in tar-relative format.
Moving from OSF/Motif version 1.2 to CDE/Motif 2.1 should just require a recompilation of the source. Moving from OSF/Motif 2.0 to CDE/Motif 2.1 should require the same. However, CDE/Motif 2.1 dropped support for the XmCSText widget (compound string text widget) and the C++ glue routines. Any application using these will have to be rewritten to perform their tasks without the use of these features. If you take advantage of the features of mwm (the Motif window manager), they should still work because dtwm provides support for the older mwm resources. However, in the future, CDE/Motif applications should assume they are operating under dtwm, the window manager of choice.
Here is a preview of what lays ahead. Chapter 1 lays out basic concepts and terminology. I recommend that you read this chapter thoroughly. If you are already familiar with GUI terminology, at least skim the chapter for X and Motif related terminology and naming conventions.
Chapter 2 covers the basic structure of a Motif application. It discusses initializing the toolkit, building the widgets that make up the interface, registering the necessary callbacks, and entering the main loop. It looks at a simple Motif application to illustrate these concepts.
Chapter 3 starts presenting the button and label widget classes along with a discussion of compound strings. Chapter 4 talks about various manager widgets. Chapter 5 discusses various types of menus and how to build a menu system. Chapter 6 talks about text widgets. Chapter 7 focuses on dialogs. Chapter 8 discusses the various shell widgets available in the X toolkit and Motif. Chapter 9 covers a potpourri of widgets that do not fall into any of the above categories. Chapter 10 discusses some key APIs provided by CDE including:
The Workspace Manager
The Session Manager
dtwm—The Desktop Window Manager
The Print Manager
Chapter 11 jumps into advanced uses of the X toolkit such as work procedures, timeout procedures, and event handlers. Chapter 12 discusses graphics in X. Chapter 13 gives a light overview of Drag-and-Drop, which was a new feature in version 1.2 of Motif and was enhanced as well as simplified in CDE/Motif 2.1. Chapter 14 talks about User Interface Language (UIL). Hints are given throughout the text concerning internals, efficiency, and good programming design.
Appendix A is a short widget reference. Appendix B is a short Xlib, X toolkit, and Motif function reference. Appendix C is a brief data type reference. Appendix D lists where to get information on X and Motif, including web sites, news groups, and training. This book uses the following conventions:
Terms being defined are printed bold.
Library related routines and symbols as well as inline example program text are printed in Helvetica.
Inline example code and input data for example programs are printed in Courier.
Symbols from example programs that are not toolkit- or Motif-related will be in Helvetica italics.
Italics are used for emphasis.
I thank my Lord and Savior Jesus Christ. “For I can do everything through Him who gives me strength” (Philippians 4:13). I also thank my beloved wife, Kristie Mione, who was widowed for a time while I wrote this book. Despite her state of “widowed mother of four children,” she still helped me schedule my writing time and made numerous suggestions on the manuscript. I thank my “brother,” Matthew J. Lecin, for his review of the manuscript and his insights and encouragement, and Rex Jaeschke, without whom I would never have started to write. Next, I thank Don Marks, former Editor-in-Chief of DEC Professional. Without his encouragement, I might never have had the confidence to try writing a book. I appreciate the help of my friend Keith Sproul, who supplied me with ongoing support for my Mac. I also appreciate the help I received from Simon Cooper and Bob Mende in setting up Linux and X on my Intel machine. I thank TP Brisco for his work reviewing the manuscript. I am in deep debt to Mark Sproul for lending assistance in fixing problems with the TIFF screen shots for the book. I would also like to thank the very professional staff at CBM books (the original intended book publisher), especially Karen Provencher and Laura Derr. I would add that Laura Derr was not only professional, but always polite and helpful. I would like to thank Mike Meehan of Prentice Hall for providing good contacts from the Open Group and for providing a reasonable schedule in which to deliver the manuscript. I would also like to thank the editing staff working on this book at Prentice Hall for their professionalism and helpful attitude. I am very much in debt to Ken Flowers from the Open Group who provided me with a veritable forest of pre-release CDE/Motif documentation. I thank David Brooks, formerly of the Open Group, for technical support on issues that were unclear from the documentation. I also thank Kevin Samborn for the same support, and for his review of the CDE-relevant sections of the manuscript. I would like to thank Bill Masek and Chinmay Nanavati of the Open Group for generating some screen shots that I had no way of generating myself. Finally, I would like to thank my many brothers and sisters in Christ, including Arnie Larsen, Bob Welch, Kim Avelino, Timothy Ramteke, and Beth Binde. These people were a great source of encouragement to me during this project.
You don't have to wade through a thousand-page book to start developing Motif applications! This book distills all of Motif's complexity into just the concepts, widgets, toolkit and Xlib routines you need to get results.Start by understanding Motif's fundamental concepts, terminology, and client/server architecture. Quickly learn how to build interface widgets, use Motif's basic button and label widget classes, build Motif menu systems, and work with text widgets, dialogs and shell widgets. Then, discover the key APIs that make up the Common Desktop Environment (CDE), including: Workspace Manager, Actions, Data Types, Session Manager, Desktop Window Manager, and Print Manager. This book presents advanced X toolkit techniques, including work procedures, timeout procedures, event handling, and X graphics. It also introduces the CDE User Interface Language (UIL) -- with expert tips and hints for designing fast, efficient code. You'll find concise Xlib, X toolkit, Motif function and data type references, and much more. All code samples are provided on diskette. This book is based on the widely used X Window System Version 11 Release 6.2 and The Open Group's CDE/Motif Version 2.1, with coverage that's also applicable to CDE 1.2 and 2.0.For all UNIX programmers who want to work with Motif or the Common Desktop Environment.
"About this title" may belong to another edition of this title.
Book Description Prentice Hall PTR, 1997. Textbook Binding. Book Condition: New. Pap/Dsk. Bookseller Inventory # DADAX0137608284