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.