Feb 99 Online
Volume Number: 15
Issue Number: 2
Column Tag: MacTech Online
Specialty Frameworks
by Jeff Clites <online@mactech.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
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.
Moof
http://www.strout.net/info/coding/macdev/intro.html
YAAF
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.
YAAF
http://www.pandawave.com/yaaf/index.html
CPLAT
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.
CPLAT
http://ksoft.net/CPLAT.html
MADE
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.)
MADE
http://www.sigsoftware.com/made/
DropShell
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.
DropShell
http://www.lazerware.com/software.html
DropUNIX
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.
DropUNIX
http://www.ZenSpider.com/ZSS/Products/DropUNIX/
ZDropletApp
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
http://www.weblayout.com/witness/ZoopClasses.shtml
Cream
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.
Cream
http://www.merzwaren.com/cream/index.html
AppeWin
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.
AppeWin
http://www.AmbrosiaSW.com/~fprefect/
CMM Plugins
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
http://www.bombaydigital.com/pages/software/cmm_plugins/framework.sht
ml
CCMArea
http://www.kagi.com/dathorc/ccmarea.html
These and oceans of other links are available from the MacTech Online web pages at
http://www.mactech.com/online/.