home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 4 / AACD04.ISO / CDTools / ClassAct / ClassActFAQ.doc < prev    next >
Text File  |  1997-07-09  |  20KB  |  445 lines

  1.         CLASSACT FAQ
  2.  
  3.  
  4. THIS DOCUMENT
  5.  
  6.         This document was written to answer to frequently asked questions
  7.         about the ClassAct GUI toolkit. It addresses both user and developer
  8.         questions.  Sorry, some information is not quite up-to-date for 
  9.         ClassAct 2.0 yet.
  10.  
  11.  
  12. MAINTAINER
  13.  
  14.         This FAQ is maintained by Osma Ahvenlampi <Osma.Ahvenlampi@hut.fi>
  15.  
  16.  
  17. CONTENTS
  18.  
  19.         1.1 What is ClassAct?
  20.         1.2 What's the availability?
  21.         1.3 Why is it better than the other GUI toolkits?
  22.         1.4 Where can I get ClassAct?
  23.         1.5 Is there a mailing list?
  24.         1.6 What uses ClassAct?
  25.  
  26.         2.1 What is in ClassAct?
  27.         2.2 How about the developer support stuff?
  28.         2.3 How does writing ClassAct applications differ from GadTools?
  29.         2.4 From other toolkits?
  30.  
  31.         3.1 Can I change the way ClassAct looks?
  32.         3.2 Is there a preferences editor?
  33.         3.3 Can ClassAct use background patterns?
  34.  
  35.         4.1 What is this deferred refresh thing?
  36.         4.2 How does it work?
  37.         4.3 How do the gadgets interconnect?
  38.         4.4 How does ClassAct support keyboard control?
  39.  
  40. THE FAQ
  41.  
  42.     1.1 What is ClassAct?
  43.  
  44.         ClassAct is a GUI toolkit for the Amiga, implemented as a set of
  45.         easy to use shared BOOPSI class libraries.
  46.  
  47.         ClassAct provides object-oriented building blocks for your
  48.         application in the form of Intuition BOOPSI classes available as
  49.         either shared run-time libraries.  As they are standard classes,
  50.         they may be used with any application environment supporting
  51.         BOOPSI. However, ClassAct is a complete GUI system in its own right,
  52.         supporting everything from simple buttons to an advanced listview
  53.         class supporting multi-select, images, multi-column and more.
  54.         In addition, a complete GUI fast window and layout system class that
  55.         lets you create font-sensitive and resizable interfaces quickly
  56.         and easily.
  57.  
  58.     1.2 What's the availability?
  59.  
  60.         Programs that use ClassAct can be made freely distributable,
  61.         shareware, commercial, etc. as there is no fee for users!  When you
  62.         purchase ClassAct, users of your software get to use all the
  63.         functions/preferences of our classes.  This not only makes ClassAct
  64.         a powerful and time-saving choice for software developers, but an
  65.         affordable and convenient one as well.
  66.  
  67.         ClassAct is a commercial toolkit with a developer kit available for
  68.         $69.95. This kit contains the latest ClassAct libraries, the C
  69.         headers, and the programmer documentation, plus many example programs
  70.         with source. The kit also includes a distribution license for the
  71.         class libraries, which means that they can be distributed free of
  72.         charge with the applications using them. For inclusion with software
  73.         to be bundled and/or distributed with the AmigaOS, a special license
  74.         is available.
  75.         
  76.         For freeware and shareware developers there is a special deal of the
  77.         toolkit for only $39.95. The package is exactly the same and entitles
  78.         the buyer to the same support, but the distribution license restricts
  79.         the use of the toolkit to non-commercial programs. That means public
  80.         domain, freeware, shareware and similar applications.
  81.  
  82.     1.3 Why is it better than other GUI toolkits?
  83.  
  84.         Since ClassAct all classes are BOOPSI, they automatically support all
  85.         sorts of great features, such as window relativity (resizability),
  86.         3.x gadgethelp, notification, and interconnections with other BOOPSI
  87.         classes (which do not necessarily have to be ClassAct classes).
  88.         ClassAct classes are totally standard BOOPSI objects, just like the
  89.         colorwheel and gradient sliders that come with release 3.x of the
  90.         Amiga's operating system.  ClassAct classes are built for speed,
  91.         power and efficiency. Many systems are cumbersome or limited in
  92.         ability, and user preference, often the result of trying to build
  93.         on top of the limited GadTools system. Many people think BOOPSI and
  94.         get scared off, this is only because until now, there have not been
  95.         many BOOPSI objects to work with. Making a BOOPSI interface often
  96.         requiers writing your own gadget classes since AmigaOS does not
  97.         provide anything beyond the basic button, string and scroller.
  98.  
  99.         ClassAct provides all of the ground work, over 25 font adaptive
  100.         feature rich classes, letting you concentrate on your application,
  101.         and its GUI, not how to implement it or work around short comings
  102.         of lesser systems.
  103.  
  104.         All ClassAct classes are compatible with 2.04 (V37) thru 3.1 (V40)
  105.         releases of the Amiga operating system and take advantage of
  106.         performance increases available in release 3.x.
  107.  
  108.     1.4 Where can I get ClassAct?
  109.  
  110.         ClassAct is availble NOW only from for just $39.95 USD for public
  111.         domain and sharware authors, and $69.95 USD for commercial
  112.         developers.  It can be ordered directly from Finale Development, Inc:
  113.  
  114.             Finale Development, Inc.
  115.             P.O. Box 6905
  116.             West Palm Beach, FL. 33405
  117.             USA
  118.  
  119.             Phone: 1 203 235 7518
  120.             Fax: 1 203 237 8459
  121.  
  122.              E-Mail: caldi@ct1.nai.net
  123.  
  124.         Demos and maintenance updates are available via FTP from:
  125.  
  126.         FTP: ftp.warped.com 
  127.              /pub/amiga/classact/ClassActDemo.lha
  128.              /pub/amiga/classact/Classes-##-XXX-##.lha
  129.  
  130.              Where ##-XXX-## prepresents the date of the update release,
  131.              for example: Classes-8-May-97.lha
  132.  
  133.         The ClassAct web site is at:
  134.              WWW: http://www.warped.com/~timmer/classact/
  135.  
  136.     1.5 Is there a mailing list?
  137.     
  138.         Yes. To subscribe, send a message to;
  139.  
  140.         majordomo@warped.com
  141.  
  142.         with the line,
  143.         
  144.         subscribe classact <your-email-address>
  145.         
  146.         in the BODY of the message. For example,
  147.         
  148.         subscribe classact joe@bob.com
  149.         
  150.         This mailing list is the primary form of support for the toolkit. 
  151.         All of the developers read it and answer questions.
  152.  
  153.     1.6 What uses ClassAct?
  154.  
  155.         Several ClassAct applications are being developed. A few
  156.         have already been, or are very near release;
  157.  
  158.         Excelsior BBS - The lastest version of E! BBS now usess ClassAct.
  159.  
  160.         SysInspector  - System Inspector, simular in purpose to Xoper
  161.                         with a very attractive ClassAct GUI.
  162.  
  163.         EnPrint       - Epson Stylus printer driver/control software
  164.                         Available from Endicor Technologies.
  165.  
  166.         IW225 Pro     - IW225 Professional TCP/IP Stack is now using
  167.                         ClassAct for point & click GUI QuickPrefs
  168.                         configuration as well as bundled with the
  169.                         new DaFTP. Available from InterWorks.
  170.  
  171.         NewYork       - An NNTP News Reader, styled after Voodoo. In
  172.                         beta stages of development, and like Voodoo,
  173.                         this is being written by one one of the ClassAct
  174.                         co-authors. Email caldi@ct1.nai.net for more info.
  175.  
  176.         NewIcons 3.0  - Recently release version of NewIcons, uses
  177.                         ClassAct for NI3 prefs.
  178.  
  179.         AmiFTP        - AmiFTP, another popular GUI FTP client has been
  180.                         re-implemented with ClassAct. More info at:
  181.  
  182.                         http://www.lysator.liu.se/~lilja/AmiFTP.html
  183.  
  184.         DaFTP'96      - The popular DaFTP has been re-implemented
  185.                         using ClassAct.
  186.  
  187.         Voodoo        - A multithreaded mail reader with MIME support,
  188.                         Rexx interface for OS 3.x, and  included
  189.                         in the Amiga Technologies Surfer bundle.
  190.  
  191.                         http://www.niksula.cs.hut.fi/~oahvenla/voodoo/
  192.  
  193.         Thor 2.5      - The popular THOR news/email offline/tcp reader
  194.                         is being ported to ClassAct. Available Soon!
  195.  
  196.                         Note, V2.5 beta/preview is available now for
  197.                         registered users.
  198.  
  199.         Grapevine2    - A greatly enhanced version of the original GUI IRC
  200.                         client is in the hands of a small group of
  201.                         testers now - and a year later now, it still is. <g>
  202.  
  203.         CompactPlayer - A SCSI-2 audio CD player implemented as an early
  204.                         demo of using ClassAct is available with source
  205.                         from:
  206.  
  207.                         Aminet: /disk/cdrom/CompactPlayer.lha
  208.  
  209.         Asokoban3     - Amiga version xsokoban, a very impressive game.
  210.  
  211.         AmiLights     - A puzzel game, playable on the Workbench screen,
  212.                         from Doug Dyer - author of the popular AmiCheck.
  213.  
  214.         A list with links to respective software is also on the ClassAct
  215.         web page. And there is much more to come!
  216.  
  217.  
  218.     2.1 What is in ClassAct?
  219.  
  220.         ClassAct is an expanding project. Currently over 30 different classes,
  221.         and the number is expanding all the time. ClassAct also has some tools
  222.         to aid in building user interfaces.  And here is a list of classes;
  223.  
  224.         Gadget Classes:
  225.          * Button gadget class
  226.             - powerful button class with many of options including built-in
  227.               arrow glyphs, tab-cycle support, custom images and more.
  228.  
  229.          * CheckBox gadget class
  230.             - for checkbox gadgets, very much like GadTools CHECKBOX_KIND.
  231.  
  232.          * Chooser gadget class
  233.             - for pop-up and drop-down menus similar in purpose to GadTools
  234.               CYCLE_KIND.
  235.  
  236.          * Clicktab gadget class
  237.             - for file-folder tabs gadgets. May used in conjunction with
  238.               the Page gadget to "flip" the virtual pages.
  239.  
  240.          * Fuel Gauge gadget class
  241.             - for progress indication, several features including optional
  242.               tick marks, and orientation settings.
  243.  
  244.          * Integer gadget class
  245.             - an integer gadget with optional arrows.
  246.  
  247.          * Layout gadget class
  248.             - for laying out gadgets and images in a font-sensitive and
  249.               resizable hierarchical group fashion.
  250.  
  251.          * ListBrowser gadget class
  252.             - a listview supporting multiple columns, images, multi-select,
  253.               hierarchical lists, etc.
  254.               
  255.          * Page gadget class
  256.             - a virtual page class for hiding groups of gadgets from view.
  257.  
  258.          * Palette gadget class
  259.             - for color selection, like GadTools PALETTE_KIND.
  260.  
  261.          * RadioButton gadget class
  262.             - for radio button gadgets, like GadTools MX_KIND.
  263.  
  264.          * Scroller gadget class
  265.             - a proportional scrollbar with arrows, and slider mode.
  266.  
  267.          * SpeedBar gadget class
  268.             - for button tool bars (horizontal or vertical orientations) with
  269.               optional window title bar help messages.
  270.  
  271.          * String gadget class
  272.             - a simple string gadget with bevel frame, compatible with
  273.               strgclass.
  274.  
  275.         Image Classes:
  276.          * Bevel image class
  277.             - for drawing bevel grouping boxes
  278.             - supports all kinds of standard bevels, including titled grouping.
  279.               bevels, drop-box bevels, optional inner fill color and text, etc.
  280.  
  281.          * Draw List image class
  282.             - for designing custom colorized and scaled vector/areafill images.
  283.  
  284.          * Glyph image class
  285.             - for standard scalable system images
  286.             - includes many images: arrows, get file, get font, etc.
  287.  
  288.          * Label image class
  289.             - makes multi-line labels mixing text, colors, images, styles, etc.
  290.  
  291.          * Penmap image class
  292.             - for pen-remapped images.
  293.  
  294.         Other Support Classes:
  295.          * Window class
  296.             - deferred layout & gadget refresh support.
  297.             - automatic gadget keyboard control support with visual feedback.
  298.             - iconification.
  299.             - greatly simplified IDCMP processing.
  300.  
  301.          * ARexx class
  302.             - simplifies creation and handling of ARexx ports.
  303.  
  304.  
  305.     2.2 How about the developer support stuff?
  306.  
  307.         Here is some of what is included with ClassAct:
  308.  
  309.          - The complete set of ClassAct BOOPSI classes.
  310.          - Autodocs in text and AmigaGuide format telling you how to use each
  311.            class.
  312.          - classact.lib (with source) which includes SAS/C and DICE autoopen
  313.            support for ClassAct classes, plus useful support routines.
  314.          - SBGen which allows you to quickly generate SpeedBar gadget source
  315.            code and image data.
  316.          - PMGen for creating penmap.image source data from pictures.
  317.          - Examples programs in C for using each of the classes.
  318.          - C includes that you will need for writing programs that use ClassAct.
  319.          - Technical support from Phantom Development.
  320.  
  321.     2.3 How does writing ClassAct applications differ from GadTools?
  322.  
  323.         The first and foremost difference is that designing a GUI is much
  324.         easier. Even with GUI builders such as GadToolsBox, making a GadTools
  325.         GUI includes a lot of pixel-level tweaking to make it look right
  326.         for font sensitivity, notably with various locales, and prop fonts.
  327.  
  328.         With ClassAct the GUI is described as a layout hierarchy, and the
  329.         layout engine will take care of sizing and positioning gadgets. The
  330.         developer need not, and should not, try to place objects in absolute
  331.         positions. Resizability needs no extra work, because layout.gadget
  332.         will scale the hierarchy to fit any size.
  333.  
  334.         Second, of course, is that the GadTools counterparts of ClassAct
  335.         gadgets are much more restricted, if they in fact even exist at all.
  336.  
  337.         GadTools may be harder to use because many operations require that
  338.         the gadgets be destroyed and recreated in some instances, eg resize,
  339.         changing fonts/screens, etc. With ClassAct they don't even have to be
  340.         detached from the window before modifying - they are BOOPSI objects.
  341.  
  342.     2.4 From other toolkits?
  343.  
  344.         Many available GUI toolkits are based on GadTools. While they make
  345.         creating a GUI easier, they can not fix some deficiencies of
  346.         GadTools. Because ClassAct is BOOPSI, these deficiencies often do
  347.         not exist. In addition, ClassAct provides many gadgets and abilities
  348.         absent from some other packages.
  349.  
  350.         In some ways, ClassAct resembles MUI. However, there are many big
  351.         differences. ClassAct can be used at many levels. The simplest
  352.         applications might only need a single gadget, such as the fuelgauge
  353.         progress indicator. ClassAct allows putting single gadgets such as
  354.         this into existing GadTools interfaces, because the gadgets are
  355.         as useful independantly as they are when part of the whole. The
  356.         gadgets send normal IDCMP messages back to the application, and do
  357.         not require special front end event handlers. Exec and Intuition
  358.         functions are enough to deal with ClassAct. On the other hand, the
  359.         whole GUI can be quickly created using ClassAct gadgets, the
  360.         ClassAct Window Class can even provide completely transparent
  361.         keyboard shortcuts with no additional effort by the programmer.
  362.         This is the prefered and recommended usage.
  363.  
  364.  
  365.     3.1 Can I change the way ClassAct looks?
  366.  
  367.         ClassAct has a number of system-wide default settings. While we
  368.         accept that some GUI features have to be user configurable, the
  369.         common methods of providing this configurability have until now been
  370.         sub-optimal. We are working on giving application-level
  371.         configurability to ClassAct with a method that differs from the
  372.         usual approaches to the problem. Suggestions welcome!
  373.  
  374.     3.2 Is there a preferences editor?
  375.  
  376.         Yes. An editor for setting global GUI preferences for things such as
  377.         bevel styles, default window backfill patterns, fallback font label
  378.         pen settings and built-in gadget imagery and so on is constantly
  379.         being worked on. The current version is available in the demo and
  380.         update archives and is provided free to all ClassAct users.
  381.  
  382.     3.3 Can ClassAct use background patterns?
  383.  
  384.         The layout system accepts both a simple RectFill pattern and a
  385.         backfill hook for more complicated patterns (such as a background
  386.         picture). It is very simple to use a generic backfill hook with
  387.         ClassAct. Examples are provided on how to override the default hook.
  388.  
  389.  
  390.     4.1 What is this deferred refresh thing?
  391.  
  392.         Normally, when a window requires refreshing, Intuition will
  393.         automatically refresh the "damaged" regions in the window's borders
  394.         and gadgets. However, with complex gadgets, this can take time, and
  395.         that time is taken by input.device. Unfortunately input.device is
  396.         responsible for other things too, such as moving the mouse pointer.
  397.         A refresh of a window filled with complex BOOPSI gadgets can make the
  398.         mouse pointer "freeze" for a second. Not only that, but since
  399.         input.device runs at a high priority, the whole machine appears to
  400.         stop for a fraction of a second while the refresh is taking place.
  401.  
  402.         This is even worse when the window is resized. Not only do the
  403.         gadgets have to be redrawn, but also their size has to be
  404.         recalculated. Resizing a window can stop input.device for even a
  405.         couple of seconds at worst.
  406.  
  407.         ClassAct's window and layout classes work together to eliminate this
  408.         problem. When using the deferred refresh feature of these classes,
  409.         input.device can continue while the relayout and refresh are done by
  410.         the application task.
  411.  
  412.     4.2 How does it work?
  413.  
  414.         The concept is quite simple. When a layout gadget receives a command
  415.         to refresh itself and notices that it was dispatched by input.device,
  416.         it will check whether it had been instructed to defer refreshes. If
  417.         that is the case, it will, instead of refreshing itself, notify the
  418.         window class that it should restart the refresh in the application
  419.         context. Windowclass will then decide on the exact method of refresh
  420.         based on the refresh type (smart or simple, possibly nocare) and send
  421.         another refresh command to the layout gadget. Meanwhile, input.device
  422.         can do something else.
  423.  
  424.     4.3 How do the gadgets interconnect?
  425.  
  426.         You can use the normal BOOPSI ICA_MAP and ICA_TARGET tags and the
  427.         ic and model classes built in the OS. All of the ClassAct classes
  428.         provide state information through the OM_NOTIFY method. In addition,
  429.         the layout.gadget automatically connects objects to their labels,
  430.         groups to each other, etc.
  431.  
  432.     4.4 How does ClassAct support keyboard control?
  433.  
  434.         The ClassAct window class, together with the layout class, will make
  435.         keyboard control completely transparent to applications. As long as
  436.         the gadget label contains a shortcut character (normally the
  437.         character after a '_' character), the gadget will have a keyboard
  438.         shortcut. Gadgets provide visual feedback through two custom gadget
  439.         methods (documented in case you want to make your own custom gadget),
  440.         ie. a button will "depress" when you press the shortcut key, and
  441.         release when you release the key. The message you get afterwards is
  442.         identical to a normal mouse button triggered gadget event. Window
  443.         class can deal with several keys pressed down and other such special
  444.         case events.
  445.