Feb 99 Online
Volume Number: 15 (1999)
Issue Number: 2
Column Tag: MacTech Online
by Jeff Clites <email@example.com>
Last September we took a look at MacZoop, a medium-sized, general-purpose framework designed as a tool for those learning to program the Macintosh in C++. This month we are going to look at several smaller frameworks and shells, some general but lightweight and some designed to fulfill a specific purpose.
Moof (which stands for The Minimal Object-Oriented Framework, and is also the sound made by the famous dogcow) is a tiny C++ framework for Mac applications, written by Joe Strout. It consists of only five files (2 source and 3 header). Because of its size, it can serve as a non-intimidating introduction to the way frameworks work in general and as a reference source for some standard bits of Macintosh code. It would be a good place for beginners to get their feet wet. Moof can also be enhanced using the author's pane classes, which are self-contained and framework-neutral, and can be used with Moof, PowerPlant, MacZoop, with another framework, or by themselves.
YAAF (Yet Another Application Framework) is a cross-platform C++ framework from The PandaWave, supporting programming for the Macintosh, Windows 95 and Windows NT, and X Windows. It is freeware, released under the GPL Library License, which allows you to sell applications built using YAAF (check the license for the specific terms). According to its web site, "YAAF provides a basic core framework for working with windows, views, menus, and controls in a portable fashion." The most interesting thing about YAAF is that it is used by its authors to produce all of their software, including the commercial BugLink bug-tracking application.
CPLAT is another cross-platform C++ framework, supporting both Macintosh and Windows development. Based on its web site, it supports a wide range of user interface elements. CPLAT is not free, although it is low-cost and is priced based on the number of developers - there is no licensing fee for the applications you build.
MADE (Macintosh Application Development Essentials) is a shareware C++ code collection from Sig Software and it forms the basis of several of their products. Not a complete framework per se, its goal is to ease the drudgery of writing the low-level code needed for Mac applications and to help the developer deal with the more tricky aspects, rather than to handle all of the higher-level and user interface issues. Notably, MADE includes code to help with the bug-hunting (or bug-avoiding) process, including support for assertions and memory trashing, with the goal of forcing bugs to manifest themselves reproducibly and as early as possible, rather than laying dormant until encountered by unsuspecting users. (These features were inspired by Steve Maguire's book Writing Solid Code, by the way.)
DropShell is a small, free shell for writing "droplet" applications-programs which do most of their work by performing some action on items dropped onto their icon in the Finder. Written in C by Leonard Rosenthol, Marshall Clow, and Stephan Somogyi, the shell provides all of the code needed to run the application and handle the necessary AppleEvents-all you have to do is add the code to process the files as they are handed to you by the shell, which can optionally omit folders or recurse through them. It will even manage a splash-screen for you, on the theory that it's good to give users visual feedback that your application is running. It's really very handy.
DropUNIX is an adaptation of the above-described DropShell. It's raison d'être is to provide programmers with a quick and easy way to port UNIX and DOS command-line applications to the Mac. Essentially, it takes the dropped files and passes them to a modified main() as though their paths were passed on the command line. It's a simple idea, but it can save you a lot of time and effort.
For readers who are using the MacZoop framework, M. Uli Kusterer has written ZDropletApp. It functions almost exactly like DropShell, but it is based on MacZoop and is intended to give users of that framework a quick and easy way to create a droplet application. Uli has several other MacZoop classes here, including an extensive set of pane classes to help you build sophisticated user interfaces.
- Uli's MacZoop Classes
Cream is the creation of Marco Piovanelli, author of the immensely popular WASTE text editing library. It is unique in that it is a lightweight C++ framework whose goal is to help you create scriptable applications that comply with the Apple Event Object Model (AEOM). It replaces Apple's Object Support Library, and lets you handle AppleEvents in a manner which fits very naturally with the C++ object model. It even purports to simplify "whose clause" resolution, which can be a nightmare. Check it out and make your applications scriptable-or Cal Simone will come after you.
If you've ever wanted to create system-wide floating windows or Faceless Background-Only applications, then look no further-AppeWin by Matt Slot will show you all you need to know, including all of the nastiness necessary to get color floating windows under previous OS versions. It's useful for its stated purpose, but also for demonstrating a number of sophisticated techniques, including creating a jGNEFilter and using the Drag Manager.
Contextual Menu Manager plugins were a great addition to MacOS 8. They are useful and easy to write, and they give you an excuse to use the SOM Objects mechanism which was orphaned when OpenDoc left town. They can also force you to keep up your AppleEvent skills, since AEs are the best way to boss around a variety of applications, including the Finder. Trygve Isaacson of Bombay Digital has written a widely-used CMM plug-in framework to make this process even easier. If you are a PowerPlant user, then you should also check out David Thoreau Catmull's CCMArea, which is a set of C++ classes for enhancing PowerPlant's support for contextual menus within your application.
- CMM Plug-In Framework
These and oceans of other links are available from the MacTech Online web pages at www.mactech.com/online/.