Some of the advanced aspects of programming the Motif toolkit, and its interactions with the underlying X Window System, are covered. The book’s purpose is to describe some of the subtle interactions between three separate programming models, and how experienced programmers can take advantage of them.
The book consists of two parts. The first part (chapters 3 through 9) is a review of the main components of the Motif toolkit. The second part (chapters 10 through 20) describes various techniques that relate to either Motif individually or (more often) to the interactions among levels mentioned above. Chapter 2 provides an extremely brief overview of some of the basic Motif concepts; this overview is so concise that it will not really help someone with little previous exposure.
The first part is the weakest. It is clearly meant for experienced Motif programmers who are totally familiar with the environment and need to solve specific problems. As such, it is at best viewed as a reference manual. The lack of context and introductory explanations makes this part virtually useless for someone who only has a general understanding of the toolkit’s operations. This is unfortunate, because the contents are interesting and useful, and could have been made much more accessible with relatively little added material. As it is, most readers will be lost in the mass of programming details.
The second part is considerably more structured and easy to follow; while not exactly a tutorial, it presents concepts in a logical progression and follows a reasonable line of development. Forward and backward pointers keep the narrative linear, while allowing further details to be presented separately. This part contains specific details about areas of the toolkit that are seldom presented in introductory terms, including input events, translators, and internationalization. Most of the techniques presented in this part are useful and will add to most Motif programmers’ repertoires.
The intended audience, as the authors make clear in the introduction, consists of experienced Motif programmers. Intimate knowledge of the C language is also essential. The first part of the book can only be used as a reference, whereas the second part could be used as part of an advanced Motif tutorial. The book contains abundant code fragments, although no complete programs are presented (it would have been nice to have at least a couple of complete examples). The code fragments are available via anonymous FTP.
The bibliography is minimal. The index and the typography are good. Mixing the British spelling of the word “colour” with the American spelling of the same word (as part of a Motif function name) within one sentence is likely to result in confusion.
Overall, I recommend this book as a useful tool only for a restricted audience. Had the first part used the same style of presentation as the second, the audience might have been considerably broader. As it is, interested readers will have to turn elsewhere for a more general introduction to Motif programming.