445 lines
19 KiB
Plaintext
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.
|