[comp.sys.mac.programmer] AppMaker 1.1 Review

ech@cbnewsk.ATT.COM (ned.horvath) (04/13/90)

As promised, a short review.  I've used Prototyper 2.1; I've recently
acquired AppMaker 1.1 but don't have any experience with earlier versions.
Henceforth, AM=AppMaker, PT=Prototyper.

Basics: AM resembles PT in providing a point-and-click interface for
generating the resources and code for the graphical elements of a
Macintosh application.  I won't debate the specifics of what elements
the two allow you to manage, or of the user interface itself: both are
very usable.

AM's layout has a much nicer feel to it than PT or ResEdit, particularly
with the grid on (default).  The grid is fairly fine -- feels like 4
pixels or so.  Items like Static Text expand as you type: you just give
the upper-left point, and start typing.  Icons and most other elements
are also placed by specifying only topLeft, with the source object
(picture, icon, etc) providing the bottomRight implicitly from its size.
The graphic elements can all be arbitrarily resized, but the defaults
are well-chosen so you'll rarely need to do this.

AM lacks many of the "linking" options of PT, but will link a menu command
to a window/dialog of the same name.  The New command in the File menu is
automatically linked to the window called MainWindow; Open links through
SFGetFile to MainWindow.  A nice touch is that AM automatically provides
the command numbers on menu commands that Think C expects, and allows
you to enter command numbers on your own menu commands.

BTW, there's a gotcha the manual doesn't really emphasize: for TCL
code generation, the menu-command-to-window linking ONLY works if you
supply those command numbers.

AM does support some "cute" graphical elements, notably tool palettes in
windows or as menus, icon-groups that act like radio-button groups.
When a dialog contains exactly one palette, it gets special "one-shot
modal dialog" treatment -- the brush shapes choice in MacPaint is the
inspiration and example here.

Where AM 1.1 really shines is in code generation.  There are built-in
choices for MPW C and pascal, Think C 3.0 and Think pascal 2.0, and
Think C 4 + TCL, Think pascal 3.0 + TCL.

In general, the code generation is all from "templates," ascii strings
embedded in resources.  With a copy of ResEdit (or: more convenient in
this case, MPW's rez/derez) you can modify the code generated.  I've
made one tweak: TC 4.0.1 changed the itsSupervisor argument to IDirector
and IDocument to take a CApplication*, formerly a CBureaucrat*.  AM's
code was keyed to the older definition, but a moment with ResEdit
allowed me to correct it.  The templates are a fantastic hacker's tool
-- you could generate COBOL with this if you wanted to [sound of
thousands of developers upchuqing deleted...]

I also like the way AM builds resourceID #defines from the names of
the graphical elements, as opposed to the 'radioButton5' sorts of symbols
PT generates.

Even more important, and here AM shines: when AM generates code for the
TCL, it writes four files for each window: Window.h, Window.c, zWindow.h,
zWindow.c.  The z.h is the interface for a CWindow subclass; the z.c
is the implementation of that window class.  The other two files define
a subclass of the z set that just call inherited::whatever().  You put
your code in these two.  Then, when you change the AM source, only the
z-files are regenerated -- your changes don't get overwritten.

Thus: you put your own code into Window.[ch], and when you add or
change elements of the window, you don't have to re-merge your code:
the new AM code goes into the z-files, and you modify the overridden
stuff as needed.

Negatives:
There's still a rough edge here and there in the interface.  And I
don't have any intuition for what files MUST be regen'd when I make
a change, so I wind up regen'ing everything, every time.  Code
generation is SLOW even on a IIci, and does not switch into background
under Multifinder when generating code.  So the rebuild cycle is not real
quick: slowly rebuild code in foreground, switch to TC4 and remake
everything, again in foreground.  On the other hand, I don't have to
remerge my code, which is a good deal more painful...

The other negative is that AppMaker is pretty well available only from
the developer (Bowers Development, (508) 369-8175), and at $295, costs
about twice the street price of Prototyper.  In my opinion the package
is worth the difference: my feelings about PT is that it will get you
started, but the code ain't wonderful and you can't use it when you
want to change your mind.  AppMaker wins on both points, at least when
you use the TCL: you can change what it generates (neat!) and you can
continue to use AM when the requirements change at the eleventh hour
(which they always do).

In summary, I'm a happy camper.  I'll update the net in a couple of
months...

=Ned Horvath=

Disclaimer: my only relationship with Bowers Development is as a
customer.