ClassAct/ClassActFAQ.doc

445 lines
19 KiB
Plaintext

CLASSACT FAQ
THIS DOCUMENT
This document was written to answer to frequently asked questions
about the ClassAct GUI toolkit. It addresses both user and developer
questions. Sorry, some information is not quite up-to-date for
ClassAct 2.0 yet.
MAINTAINER
This FAQ is maintained by Osma Ahvenlampi <Osma.Ahvenlampi@hut.fi>
CONTENTS
1.1 What is ClassAct?
1.2 What's the availability?
1.3 Why is it better than the other GUI toolkits?
1.4 Where can I get ClassAct?
1.5 Is there a mailing list?
1.6 What uses ClassAct?
2.1 What is in ClassAct?
2.2 How about the developer support stuff?
2.3 How does writing ClassAct applications differ from GadTools?
2.4 From other toolkits?
3.1 Can I change the way ClassAct looks?
3.2 Is there a preferences editor?
3.3 Can ClassAct use background patterns?
4.1 What is this deferred refresh thing?
4.2 How does it work?
4.3 How do the gadgets interconnect?
4.4 How does ClassAct support keyboard control?
THE FAQ
1.1 What is ClassAct?
ClassAct is a GUI toolkit for the Amiga, implemented as a set of
easy to use shared BOOPSI class libraries.
ClassAct provides object-oriented building blocks for your
application in the form of Intuition BOOPSI classes available as
either shared run-time libraries. As they are standard classes,
they may be used with any application environment supporting
BOOPSI. However, ClassAct is a complete GUI system in its own right,
supporting everything from simple buttons to an advanced listview
class supporting multi-select, images, multi-column and more.
In addition, a complete GUI fast window and layout system class that
lets you create font-sensitive and resizable interfaces quickly
and easily.
1.2 What's the availability?
Programs that use ClassAct can be made freely distributable,
shareware, commercial, etc. as there is no fee for users! When you
purchase ClassAct, users of your software get to use all the
functions/preferences of our classes. This not only makes ClassAct
a powerful and time-saving choice for software developers, but an
affordable and convenient one as well.
ClassAct is a commercial toolkit with a developer kit available for
$69.95. This kit contains the latest ClassAct libraries, the C
headers, and the programmer documentation, plus many example programs
with source. The kit also includes a distribution license for the
class libraries, which means that they can be distributed free of
charge with the applications using them. For inclusion with software
to be bundled and/or distributed with the AmigaOS, a special license
is available.
For freeware and shareware developers there is a special deal of the
toolkit for only $39.95. The package is exactly the same and entitles
the buyer to the same support, but the distribution license restricts
the use of the toolkit to non-commercial programs. That means public
domain, freeware, shareware and similar applications.
1.3 Why is it better than other GUI toolkits?
Since ClassAct all classes are BOOPSI, they automatically support all
sorts of great features, such as window relativity (resizability),
3.x gadgethelp, notification, and interconnections with other BOOPSI
classes (which do not necessarily have to be ClassAct classes).
ClassAct classes are totally standard BOOPSI objects, just like the
colorwheel and gradient sliders that come with release 3.x of the
Amiga's operating system. ClassAct classes are built for speed,
power and efficiency. Many systems are cumbersome or limited in
ability, and user preference, often the result of trying to build
on top of the limited GadTools system. Many people think BOOPSI and
get scared off, this is only because until now, there have not been
many BOOPSI objects to work with. Making a BOOPSI interface often
requiers writing your own gadget classes since AmigaOS does not
provide anything beyond the basic button, string and scroller.
ClassAct provides all of the ground work, over 25 font adaptive
feature rich classes, letting you concentrate on your application,
and its GUI, not how to implement it or work around short comings
of lesser systems.
All ClassAct classes are compatible with 2.04 (V37) thru 3.1 (V40)
releases of the Amiga operating system and take advantage of
performance increases available in release 3.x.
1.4 Where can I get ClassAct?
ClassAct is availble NOW only from for just $39.95 USD for public
domain and sharware authors, and $69.95 USD for commercial
developers. It can be ordered directly from Finale Development, Inc:
Finale Development, Inc.
P.O. Box 6905
West Palm Beach, FL. 33405
USA
Phone: 1 203 235 7518
Fax: 1 203 237 8459
E-Mail: caldi@ct1.nai.net
Demos and maintenance updates are available via FTP from:
FTP: ftp.warped.com
/pub/amiga/classact/ClassActDemo.lha
/pub/amiga/classact/Classes-##-XXX-##.lha
Where ##-XXX-## prepresents the date of the update release,
for example: Classes-8-May-97.lha
The ClassAct web site is at:
WWW: http://www.warped.com/~timmer/classact/
1.5 Is there a mailing list?
Yes. To subscribe, send a message to;
majordomo@warped.com
with the line,
subscribe classact <your-email-address>
in the BODY of the message. For example,
subscribe classact joe@bob.com
This mailing list is the primary form of support for the toolkit.
All of the developers read it and answer questions.
1.6 What uses ClassAct?
Several ClassAct applications are being developed. A few
have already been, or are very near release;
Excelsior BBS - The lastest version of E! BBS now usess ClassAct.
SysInspector - System Inspector, simular in purpose to Xoper
with a very attractive ClassAct GUI.
EnPrint - Epson Stylus printer driver/control software
Available from Endicor Technologies.
IW225 Pro - IW225 Professional TCP/IP Stack is now using
ClassAct for point & click GUI QuickPrefs
configuration as well as bundled with the
new DaFTP. Available from InterWorks.
NewYork - An NNTP News Reader, styled after Voodoo. In
beta stages of development, and like Voodoo,
this is being written by one one of the ClassAct
co-authors. Email caldi@ct1.nai.net for more info.
NewIcons 3.0 - Recently release version of NewIcons, uses
ClassAct for NI3 prefs.
AmiFTP - AmiFTP, another popular GUI FTP client has been
re-implemented with ClassAct. More info at:
http://www.lysator.liu.se/~lilja/AmiFTP.html
DaFTP'96 - The popular DaFTP has been re-implemented
using ClassAct.
Voodoo - A multithreaded mail reader with MIME support,
Rexx interface for OS 3.x, and included
in the Amiga Technologies Surfer bundle.
http://www.niksula.cs.hut.fi/~oahvenla/voodoo/
Thor 2.5 - The popular THOR news/email offline/tcp reader
is being ported to ClassAct. Available Soon!
Note, V2.5 beta/preview is available now for
registered users.
Grapevine2 - A greatly enhanced version of the original GUI IRC
client is in the hands of a small group of
testers now - and a year later now, it still is. <g>
CompactPlayer - A SCSI-2 audio CD player implemented as an early
demo of using ClassAct is available with source
from:
Aminet: /disk/cdrom/CompactPlayer.lha
Asokoban3 - Amiga version xsokoban, a very impressive game.
AmiLights - A puzzel game, playable on the Workbench screen,
from Doug Dyer - author of the popular AmiCheck.
A list with links to respective software is also on the ClassAct
web page. And there is much more to come!
2.1 What is in ClassAct?
ClassAct is an expanding project. Currently over 30 different classes,
and the number is expanding all the time. ClassAct also has some tools
to aid in building user interfaces. And here is a list of classes;
Gadget Classes:
* Button gadget class
- powerful button class with many of options including built-in
arrow glyphs, tab-cycle support, custom images and more.
* CheckBox gadget class
- for checkbox gadgets, very much like GadTools CHECKBOX_KIND.
* Chooser gadget class
- for pop-up and drop-down menus similar in purpose to GadTools
CYCLE_KIND.
* Clicktab gadget class
- for file-folder tabs gadgets. May used in conjunction with
the Page gadget to "flip" the virtual pages.
* Fuel Gauge gadget class
- for progress indication, several features including optional
tick marks, and orientation settings.
* Integer gadget class
- an integer gadget with optional arrows.
* Layout gadget class
- for laying out gadgets and images in a font-sensitive and
resizable hierarchical group fashion.
* ListBrowser gadget class
- a listview supporting multiple columns, images, multi-select,
hierarchical lists, etc.
* Page gadget class
- a virtual page class for hiding groups of gadgets from view.
* Palette gadget class
- for color selection, like GadTools PALETTE_KIND.
* RadioButton gadget class
- for radio button gadgets, like GadTools MX_KIND.
* Scroller gadget class
- a proportional scrollbar with arrows, and slider mode.
* SpeedBar gadget class
- for button tool bars (horizontal or vertical orientations) with
optional window title bar help messages.
* String gadget class
- a simple string gadget with bevel frame, compatible with
strgclass.
Image Classes:
* Bevel image class
- for drawing bevel grouping boxes
- supports all kinds of standard bevels, including titled grouping.
bevels, drop-box bevels, optional inner fill color and text, etc.
* Draw List image class
- for designing custom colorized and scaled vector/areafill images.
* Glyph image class
- for standard scalable system images
- includes many images: arrows, get file, get font, etc.
* Label image class
- makes multi-line labels mixing text, colors, images, styles, etc.
* Penmap image class
- for pen-remapped images.
Other Support Classes:
* Window class
- deferred layout & gadget refresh support.
- automatic gadget keyboard control support with visual feedback.
- iconification.
- greatly simplified IDCMP processing.
* ARexx class
- simplifies creation and handling of ARexx ports.
2.2 How about the developer support stuff?
Here is some of what is included with ClassAct:
- The complete set of ClassAct BOOPSI classes.
- Autodocs in text and AmigaGuide format telling you how to use each
class.
- classact.lib (with source) which includes SAS/C and DICE autoopen
support for ClassAct classes, plus useful support routines.
- SBGen which allows you to quickly generate SpeedBar gadget source
code and image data.
- PMGen for creating penmap.image source data from pictures.
- Examples programs in C for using each of the classes.
- C includes that you will need for writing programs that use ClassAct.
- Technical support from Phantom Development.
2.3 How does writing ClassAct applications differ from GadTools?
The first and foremost difference is that designing a GUI is much
easier. Even with GUI builders such as GadToolsBox, making a GadTools
GUI includes a lot of pixel-level tweaking to make it look right
for font sensitivity, notably with various locales, and prop fonts.
With ClassAct the GUI is described as a layout hierarchy, and the
layout engine will take care of sizing and positioning gadgets. The
developer need not, and should not, try to place objects in absolute
positions. Resizability needs no extra work, because layout.gadget
will scale the hierarchy to fit any size.
Second, of course, is that the GadTools counterparts of ClassAct
gadgets are much more restricted, if they in fact even exist at all.
GadTools may be harder to use because many operations require that
the gadgets be destroyed and recreated in some instances, eg resize,
changing fonts/screens, etc. With ClassAct they don't even have to be
detached from the window before modifying - they are BOOPSI objects.
2.4 From other toolkits?
Many available GUI toolkits are based on GadTools. While they make
creating a GUI easier, they can not fix some deficiencies of
GadTools. Because ClassAct is BOOPSI, these deficiencies often do
not exist. In addition, ClassAct provides many gadgets and abilities
absent from some other packages.
In some ways, ClassAct resembles MUI. However, there are many big
differences. ClassAct can be used at many levels. The simplest
applications might only need a single gadget, such as the fuelgauge
progress indicator. ClassAct allows putting single gadgets such as
this into existing GadTools interfaces, because the gadgets are
as useful independantly as they are when part of the whole. The
gadgets send normal IDCMP messages back to the application, and do
not require special front end event handlers. Exec and Intuition
functions are enough to deal with ClassAct. On the other hand, the
whole GUI can be quickly created using ClassAct gadgets, the
ClassAct Window Class can even provide completely transparent
keyboard shortcuts with no additional effort by the programmer.
This is the prefered and recommended usage.
3.1 Can I change the way ClassAct looks?
ClassAct has a number of system-wide default settings. While we
accept that some GUI features have to be user configurable, the
common methods of providing this configurability have until now been
sub-optimal. We are working on giving application-level
configurability to ClassAct with a method that differs from the
usual approaches to the problem. Suggestions welcome!
3.2 Is there a preferences editor?
Yes. An editor for setting global GUI preferences for things such as
bevel styles, default window backfill patterns, fallback font label
pen settings and built-in gadget imagery and so on is constantly
being worked on. The current version is available in the demo and
update archives and is provided free to all ClassAct users.
3.3 Can ClassAct use background patterns?
The layout system accepts both a simple RectFill pattern and a
backfill hook for more complicated patterns (such as a background
picture). It is very simple to use a generic backfill hook with
ClassAct. Examples are provided on how to override the default hook.
4.1 What is this deferred refresh thing?
Normally, when a window requires refreshing, Intuition will
automatically refresh the "damaged" regions in the window's borders
and gadgets. However, with complex gadgets, this can take time, and
that time is taken by input.device. Unfortunately input.device is
responsible for other things too, such as moving the mouse pointer.
A refresh of a window filled with complex BOOPSI gadgets can make the
mouse pointer "freeze" for a second. Not only that, but since
input.device runs at a high priority, the whole machine appears to
stop for a fraction of a second while the refresh is taking place.
This is even worse when the window is resized. Not only do the
gadgets have to be redrawn, but also their size has to be
recalculated. Resizing a window can stop input.device for even a
couple of seconds at worst.
ClassAct's window and layout classes work together to eliminate this
problem. When using the deferred refresh feature of these classes,
input.device can continue while the relayout and refresh are done by
the application task.
4.2 How does it work?
The concept is quite simple. When a layout gadget receives a command
to refresh itself and notices that it was dispatched by input.device,
it will check whether it had been instructed to defer refreshes. If
that is the case, it will, instead of refreshing itself, notify the
window class that it should restart the refresh in the application
context. Windowclass will then decide on the exact method of refresh
based on the refresh type (smart or simple, possibly nocare) and send
another refresh command to the layout gadget. Meanwhile, input.device
can do something else.
4.3 How do the gadgets interconnect?
You can use the normal BOOPSI ICA_MAP and ICA_TARGET tags and the
ic and model classes built in the OS. All of the ClassAct classes
provide state information through the OM_NOTIFY method. In addition,
the layout.gadget automatically connects objects to their labels,
groups to each other, etc.
4.4 How does ClassAct support keyboard control?
The ClassAct window class, together with the layout class, will make
keyboard control completely transparent to applications. As long as
the gadget label contains a shortcut character (normally the
character after a '_' character), the gadget will have a keyboard
shortcut. Gadgets provide visual feedback through two custom gadget
methods (documented in case you want to make your own custom gadget),
ie. a button will "depress" when you press the shortcut key, and
release when you release the key. The message you get afterwards is
identical to a normal mouse button triggered gadget event. Window
class can deal with several keys pressed down and other such special
case events.