From: al862@cleveland.Freenet.Edu (Brent D. McLean)
Newsgroups: comp.sys.mac.apps,comp.sys.mac.programmer,comp.sys.mac.misc
Subject: Re: Your experience with AppMaker
Date: 12 Dec 1992 13:38:18 GMT
Organization: Case Western Reserve University, Cleveland, OH (USA)
Reply-To: al862@cleveland.Freenet.Edu (Brent D. McLean)
NNTP-Posting-Host: hela.ins.cwru.edu


In a previous article, omar@kahlua.cc.vanderbilt.edu (Omar Patino-Siliceo) says:

>Hello fellow netters,
>
>I'd like to hear your comments (pros and cons) about AppMaker. Are there any  
>other interface builders worth looking into? How do they compare?
>
>Many Thanks in advance.
>

	My experiences with AppMaker have been mixed. AppMaker certainly
does what it says. It will produce almost all the interface elements of
your program as long as you don't stray too far from Apple guidelines.
Noteably it allows you to create a number of custom controls such as
slide bars, multiple position switches, and graphic buttons that are not
standard resource types. It will create code for Think C 5.0, Think
Pascal 4.0, MPW C 3.2, and MPW Pascal 3.2. It supports the Think class
libraries (object oriented) if you desire.
	While it does the job there are a number of bad points. First is
speed. The program is quick enough while creating the resources, but
converting to actual code is slow, a couple minutes being normal for a
moderate sized program on my LC. Second, the interface of AppMaker
itself could use some improvement. AppMaker had its interface created
with AppMaker (just a C is written in C) and this limits it somewhat.
The controls are generally sufficient, but I liked the custom editors in
RedEdit better for the resources that ResEdit has editors for. As an
example, when you create a dialog box each element is numbered (text
edit boxes, check boxes, buttons, etc.). In AppMaker the only way to
reorder the elements is cut the element (removing it from the sequence)
and then paste it (putting it at the end of the sequence). When you have
40 elements on a window this becomes very tedious.
	Another qualm was the naming scheme AppMaker uses. For ease of
use the program names variables dealing with a dialog element by the
text used in the interface. For example if you have static text that
says 'Volume' then all variables dealing with that static text element
will contain 'Volume'. This is good to keep variables straight in your
head. Unfortunately, if you have multiple elements by the same name,
like I did with multple labels of 'Hz' the AppMaker will call all those
variables HzText, not HzText1, HzText2, etc. Obviously if its calling
all these seperate elements by the same name, you are going to have
problems. 
	A real problem I had on occasion was AppMaker confusing
resources. The program I was working on required me to change the
interface numerous times. On occasion, it had confused elements of
different dialog windows, requiring me to reenter them if I wanted to
recompile the new interface.
	My last comment is not a fault of AppMaker, its the inevitable
consequence of program of this type. AppMaker generates most all the
code you will need. The code it generates will handle multi-tasking,
cut-and-paste, balloon help, etc. That's a lot of code and you have to
sort through it to find the points where to insert your code that
actually does something. The way they accomplish tasks may not be the
way you would have and the code will be divided into many segments.
Especially if you are new to Mac programming, as I am, this can be very
confusing.
	Despite its problems, AppMaker does deliver on its promise to
generate the complete working interface for you. It certainly saved time
over doing the resources and the associated code by hand. It just needs
a update to make it a fabulous program. Unfortunately, you don't have
many choices in this field and you have to take what you can get to
some extent.
	Hope my rambling on has proved of some worth to you.
 
-- 
 Brent D. McLean                     -  "I'm at the corner of Walk and 
 al862@cleveland.freenet.edu         -       Don't Walk..."