I started developing PowerPlant a little over five years ago. All along, PowerPlant has adapted to changes and new features in both the Mac OS and the C++ language. Managing the growth and increasing complexity of the framework is my greatest challenge.
PowerPlant began as a System 7 framework, with support for event handling, menus, files, windows, controls, and text editing. Over the years, it's expanded to support new Mac OS features such as the Drag-and-Drop, Open Transport networking, and the Appearance Manager.
Concurrently, the CodeWarrior compiler kept implementing additional C++ language features. I gradually began using template classes and runtime type identification. Despite having a syntax heavily laden with angle brackets that confuses new C++ programmers, I think they've made the code more robust and flexible.
In my foreword to the first edition of this book, I mentioned that PowerPlant encourages a "buffet" style of programming where you can pick out the classes that interest you. Although the buffet has many more selections now, Carl Constantine keeps everything in order in this second edition of the book. Carl's rich descriptions will entice you to dig in and sample what PowerPlant has to offer.
I started to write an application framework just a few months after buying my first Macintosh. I thought it would be a good way to learn Mac programming and that I could use the framework as the basis for the great software I would someday write.
Well, I couldn't come up with an idea for an indispensable utility program or an addictive game, so I just kept working on frameworks. I've written more than a dozen over the years. Some are just partial implementations to prove a concept. Others I used to write small programs. A couple, including PowerPlant of course, have been published.
With PowerPlant, I've tried to build a tool that enables you to create your own great software. In fact, PowerPlant is really a set of tools, because it contains families of classes that you can use together or separately. It's not an "all or nothing" framework. You can just use portions of PowerPlant, and can easily integrate specific classes into existing programs.
This design encourages what I call a "buffet" style of programming. You look over all the classes, pick the ones that look interesting, and then go back for more later. Furthermore, the wide variety of classes tempts you to experiment with features that you might not have tried on your own.
In this book, Jim Trudeau piles his plate high with PowerPlant's offerings and vividly describes the subtle flavors. Jim clearly explains not only the details but also the philosophy of programming with PowerPlant. I'm thrilled that he wrote this book because I know it will spur you to use PowerPlant to write great software.