home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d9xx / d911 / gadoutline.lha / GadOutline / Programmer / programmer.lha / Includes / GadOutline.doc next >
Text File  |  1993-07-28  |  151KB  |  3,911 lines

  1.  
  2.  
  3. TABLE OF CONTENTS
  4.  
  5. gadoutline.library/AllocGadOutlineA
  6. gadoutline.library/command_hooks
  7. gadoutline.library/DestroyGadOutlineA
  8. gadoutline.library/DimenGadOutlineA
  9. gadoutline.library/DrawGadOutlineA
  10. gadoutline.library/FreeGadOutline
  11. gadoutline.library/GO_AllocMem
  12. gadoutline.library/GO_AttachHotKey
  13. gadoutline.library/GO_BeginRefresh
  14. gadoutline.library/GO_CallCmdHookA
  15. gadoutline.library/GO_CallTransHookA
  16. gadoutline.library/GO_CloseLibrary
  17. gadoutline.library/GO_CloseScreen
  18. gadoutline.library/GO_CloseWindow
  19. gadoutline.library/GO_CmdAtPointA
  20. gadoutline.library/GO_ContCmdHookA
  21. gadoutline.library/GO_ContTransHookA
  22. gadoutline.library/GO_DupGOIMsg
  23. gadoutline.library/GO_EndRefresh
  24. gadoutline.library/GO_FilterGOIMsg
  25. gadoutline.library/GO_FreeMem
  26. gadoutline.library/GO_GetBoxAttr
  27. gadoutline.library/GO_GetCmdAttr
  28. gadoutline.library/GO_GetCmdAttrsA
  29. gadoutline.library/GO_GetCmdInfo
  30. gadoutline.library/GO_GetErrorCode
  31. gadoutline.library/GO_GetErrorObject
  32. gadoutline.library/GO_GetErrorText
  33. gadoutline.library/GO_GetGOFromGOIMsg
  34. gadoutline.library/GO_GetGOFromIMsg
  35. gadoutline.library/GO_GetGOIMsg
  36. gadoutline.library/GO_GetObjAttr
  37. gadoutline.library/GO_GetObjAttrsA
  38. gadoutline.library/GO_InterpretTypedSize
  39. gadoutline.library/GO_OpenLibrary
  40. gadoutline.library/GO_OpenScreenA
  41. gadoutline.library/GO_OpenWindowA
  42. gadoutline.library/GO_ParseGOIMsgA
  43. gadoutline.library/GO_ParseTypedSizeListA
  44. gadoutline.library/GO_PostFilterGOIMsg
  45. gadoutline.library/GO_ReplyGOIMsg
  46. gadoutline.library/GO_SetCmdAttrsA
  47. gadoutline.library/GO_SetCmdGrpAttrsA
  48. gadoutline.library/GO_SetErrorA
  49. gadoutline.library/GO_SetObjAttrsA
  50. gadoutline.library/GO_SetObjGrpAttrsA
  51. gadoutline.library/GO_ShowErrorA
  52. gadoutline.library/GO_UndupGOIMsg
  53. gadoutline.library/HookGadOutlineA
  54. gadoutline.library/RebuildGadOutlineA
  55. gadoutline.library/ResizeGadOutlineA
  56. gadoutline.library/translation_hooks
  57. gadoutline.library/UnhookGadOutlineA
  58. gadoutline.library/UpdateGadOutlineA
  59. gadoutline.library/AllocGadOutlineA       gadoutline.library/AllocGadOutlineA
  60.  
  61.                                                       15 Jul 1993    04:39:42
  62.   NAME
  63.         AllocGadOutlineA -- Create a new GadOutline.
  64.  
  65.  
  66.   SYNOPSIS
  67.         GadOutline = AllocGadOutlineA(Outline, TagList)
  68.                                       A0       A1       
  69.  
  70.         struct GadOutline *AllocGadOutlineA(ULONG *, struct TagItem *)
  71.  
  72.   FUNCTION
  73.         Allocates and initializes a new GadOutline based on the given
  74.         Outline array. This array is formatted as sequence of ULONG
  75.         command codes, each of which can have 0 to 7 ULONG parameters and
  76.         0 to 3 tag lists immediately following it.  The entire ULONG
  77.         command code is divided into a number of fields, including the
  78.         number of parameters and tag lists which follow it, the command
  79.         class, code, and subcode. See <libraries/gadoutline.h> for the
  80.         definitions of these fields and macros which supply an abstraction
  81.         from the actual creation of the command data.  The Outline array
  82.         is terminated by the special command code GO_ENDOUTLINE().
  83.  
  84.         The library first allocates and initializes a GadOutline structure
  85.         and then calls UpdateGadOutlineA() with the given tag list.  Then,
  86.         for each command code in the outline, the library will allocate a
  87.         CmdInfo structure, fill in the parameters supplied in the outline
  88.         and create copies of all of the supplied tag lists and attach them
  89.         to the CmdInfo.  All unspecified parameters will be set to 0, and
  90.         all unspecified tag lists will be initialized to a tag list
  91.         containing a single TAG_END.
  92.  
  93.         The library will then look for a GOCT_SetUserHook tag in the
  94.         command's first ("command") tag list and, if it exists, send a
  95.         CHM_TRANSCMDHOOK to the GadOutline's Translation Hook, attach it to
  96.         the command as the highest level hook, initialize ci_UserHookData to
  97.         either the value in GOCT_SetUserHookData or 0, and set
  98.         ci_UserHookState to 0. The library will then send to the
  99.         highest-level hook attached to the command the messages
  100.         CHM_INITIALIZE, CHM_INITCMDATTR, CHM_INITOBJATTR, in that order. 
  101.         This is the only time the library will ever send these messages, and
  102.         the hook is expected to perform any initialization/allocation of
  103.         resources and an initial parsing of its tag lists when it recieves
  104.         the respective messages.
  105.  
  106.         There are a couple of commands which get special treatment.  When
  107.         the command GO_OUTLINETAGS() is encountered in the outline, its
  108.         second ("object") tag list is passed to UpdateGadOutlineA() before
  109.         any of its hooks are called.  The command GO_COMMANDTAGS() will
  110.         cause evey command following it to have the tags in its object tag
  111.         list to be added to their command tag list if they are not already
  112.         in it.  If this command is specified multiple times, it overrides
  113.         the previous occurance.
  114.  
  115.         Finally, DimenGadOutline is called with the completed GadOutline.
  116.  
  117.   INPUTS
  118.         Outline - (ULONG *) List of commands to create outline.
  119.         TagList - (struct TagItem *) Global (GOA_*) outline tags.
  120.  
  121.   RESULT
  122.         GadOutline - (struct GadOutline *) The freshly created GadOutline.
  123.  
  124.   TAGS
  125.         Command tags -
  126.             GOCT_SetUserHook - Provide custom hook for command.
  127.             GOCT_SetUserHookData - Initialize ci_UserHookData field.
  128.             GOCT_SetHotKey - Attach a hotkey to the command.
  129.             GOCT_SetHotKeyCmd - Provide StdID of command which will receive
  130.                                 hotkey events attached to this command.
  131.  
  132.   EXAMPLE
  133.  
  134.         See example3.c
  135.  
  136.   NOTES
  137.         A user command hook must always pass through the messages
  138.         CHM_INITIALIZE, CHM_INITCMDATTR, CHM_INITOBJATTR and CHM_TERMINATE
  139.         to the library's internal hooks using GO_ContCmdHookA().
  140.  
  141.         While currently the tag list supplied in the CHM_INITCMDATTR and
  142.         CHM_INITOBJATTR messages are simply the identical tag lists within
  143.         the CmdInfo structure (ci_CmdTags and ci_ObjectTags), this may
  144.         change in the future.
  145.  
  146.         The order that the global tags are parsed is: first the list passed
  147.         directly to AllocGadOutlineA(), then any from the GO_OUTLINETTAGS()
  148.         commands, in the order that they appear in the outline.  When
  149.         DimenGadOutlineA() is called with the completed GadOutline, it is
  150.         passed an empty tag list.
  151.  
  152.         If an error occurs during DimenGadOutlineA(), the outline will be
  153.         free'd and a NULL will be returned.  This is important if you are
  154.         specifying a displaymode, screen or window within the initial tag
  155.         list -- if the layout will not fit, DimenGadOutlineA() will fail and
  156.         you will simply receive a NULL.  To avoid this, don't specify these
  157.         in AllocGadOutlineA() and instead call DimenGadOutlineA() afterwards
  158.         with these tags.
  159.  
  160.         Normally, errors in layout, allocating memory, etc. will result in
  161.         the library displaying a requester through GO_ShowError.  You can
  162.         turn off all errors by passing the tag { GOCT_ErrorReportLevel,0 }
  163.         to AllocGadOutlineA().  Putting this tag in an initial
  164.         GO_OUTLINETAGS() command within the outline will not work, as the
  165.         library has aleady allocated a large part of its resources by the
  166.         time this command is parsed.
  167.  
  168.         If you use GOA_BaseName to put the name of your program in the
  169.         library's error requesters, this name will not appear if the library
  170.         is unable to allocate the initial GadOutline structure.
  171.  
  172.   BUGS
  173.         .
  174.  
  175.   SEE ALSO
  176.         FreeGadOutline(), DimenGadOutlineA(), UpdateGadOutlineA(),
  177.         GO_GetCmdInfo()
  178.         
  179. gadoutline.library/command_hooks             gadoutline.library/command_hooks
  180.  
  181.                                                       18 Jul 1993    14:42:12
  182.   NAME
  183.         command_hooks -- Information on GadOutline command hooks.
  184.  
  185.  
  186.   SYNOPSIS
  187.         Result = command_hooks(Hook, Command, Message)
  188.                                A0    A2       A1       
  189.  
  190.         static ULONG command_hooks(struct Hook *, struct CmdInfo *, 
  191.                                    struct CmdHookMsg *)
  192.  
  193.   FUNCTION
  194.         The command hook provides an abstract interface between the library
  195.         and the actual creation and manipulation of the display's gadgets
  196.         and associated objects.  It is based on the standard utility.library
  197.         hook structure and the CmdHookMsg structure as defined in
  198.         gadoutline.h.
  199.         
  200.         The following messages must be sent to the standard hook with
  201.         GO_ContCmdHookA() before being processed:
  202.         
  203.         CHM_INITIALIZE - sent to the hook during the initial allocation and
  204.         initialization of all commands.  When sent, the library has already
  205.         allocated a CmdInfo structure, and BoxAttr if needed, and the hook
  206.         is expected to do any initialization it may need.  This may involve
  207.         such things as initializing its command's state tags or allocating a
  208.         block of memory and attaching it to ci_UserData.
  209.         
  210.         CHM_INITCMDATTR - provides the hook with a look at the initial
  211.         command tag list supplied in the outline.  Don't expect ci_CmdTags
  212.         to be valid until after this messages has been processed with
  213.         GO_ContCmdHookA().
  214.  
  215.         CHM_INITOBJATTR - provides the hook with a look at the initial
  216.         object tag list supplied in the outline.  Don't expect the secondary
  217.         tag list  to be valid until after this messages has been processed
  218.         with GO_ContCmdHookA().
  219.  
  220.         The following message must be sent to the standard hooks with
  221.         GO_ContCmdHookA() after being processed:
  222.         
  223.         CHM_TERMINATE - sent while a GadOutline is being deallocated.  The
  224.         hook should free any resources allocated in CHM_INITIALIZE.
  225.         [Although any memory allocated with GO_AllocMem() will automatically
  226.         be free'd by the library.]
  227.         
  228.         The following messages will almost always need to be processed by
  229.         the library with GO_ContCmdHookA() so that the command's tag lists
  230.         will remain updated:
  231.         
  232.         CHM_SETCMDATTR - update from the command tags supplied in the tag
  233.         list pointed to by the first argument.  After being processed by the
  234.         library, ci_CmdTags will have been updated to reflect the new
  235.         values and you may check for any user tags you have defined.
  236.         
  237.         CHM_SETOBJATTR - update from the object tags supplied in the tag
  238.         list pointed to by the first argument.  After being processed by the
  239.         library, the secondary tag list will have been updated to reflect
  240.         the new values.  The user hook's processing of this tag will
  241.         typically involve something like calling SetAttrsA() with the tag
  242.         list sent by the message.  Note that when updating a gadget's tags,
  243.         you should use go_HookedWin and NOT go_Window to find the window
  244.         that the gadget is attached to, so that you will correctly handle
  245.         things like the gadget being temporarily detached from the
  246.         GadOutline's window.  Be ready for this message to be sent when the
  247.         gadget is attached to the window, when the gadget is created but not
  248.         attached, and when the gadget isn't created at all.
  249.         
  250.         CHM_GETCMDATTR - fill in the tags supplied in the tag list pointed
  251.         to by the first argument with the current state of the command
  252.         tags.  After being processed by the library, the tags in ci_CmdTags
  253.         will have been copied to the tag list.
  254.         
  255.         CHM_GETOBJATTR - fill in the tags supplied in the tag list pointed
  256.         to by the first argument with the current state of the secondary
  257.         tags.  After being processed by the library, the tags in the
  258.         secondary tag list will have been copied to the message's tag list
  259.         and you may update them from there.  This will normally involve
  260.         calling something like GetAttr() for each tag in the list.
  261.         
  262.         The following are messages commonly processed completely by the user
  263.         hook:
  264.         
  265.         CHM_GETMINDIMENS - used by the library to query for the gadget's
  266.         standard dimensions during a layout.  This message is sent only to
  267.         group and box commands; you are expected to fill in the GODimensInfo
  268.         structure pointed to by the first argument with your desired
  269.         dimensions.  Note that these dimensions may be modified using
  270.         command tags in the outline.
  271.         
  272.         CHM_CREATEOBJ - ask hook to create its object.  The first argument
  273.         points to a NewGadget structure from which the hook may get its
  274.         dimension information, although looking at its BoxAttr is also
  275.         permissible.  What actually happens here is entirely up to the hook;
  276.         the only thing the library cares about is the value in ci_Object; a
  277.         non-NULL value indicates something was created, NULL means nothing
  278.         was created.  NULL is not a failure however; the hook is expected to
  279.         report its own failures and should set go_LastReqReturn to
  280.         GORET_FAIL if it really wants to stop everything with an error.  A
  281.         special ci_Object value of ~0 indicates that the hook didn't really
  282.         create an object, but it would like to be informed of CHM_DRAWSELF
  283.         and other events.  Note that you must _always_ give a gadget you
  284.         create the ng_GadgetID and ng_UserData values found in the NewGadget
  285.         structure; these are used internally by the library.  To add a
  286.         gadget to the window, it must be linked to one of the GadOutline's
  287.         gadget lists.  GadTools gadgets should always be attached to the
  288.         last GadTools gadget pointed to by go_LastGTools, and then set
  289.         go_LastGTools to now point to the new gadget; this list will be
  290.         automatically free'd by the library.  All other gadgets should
  291.         attach after the gadget pointed to by go_LastBoopsi and then set
  292.         themselves as the new last gadget.
  293.  
  294.         CHM_DESTROYOBJ - deallocate an object created with CHM_CREATEOBJ.
  295.         When receiving this message, you should deallocate anything created
  296.         during CHM_CREATEOBJ and save any final state information from the
  297.         object that you need to keep for a subsequent CHM_CREATEOBJ.  You
  298.         should always set ci_Object to NULL when receiving this command.  Be
  299.         prepared to receive this message even if your object is not created.
  300.         Any GadTools gadget added to the go_GToolsList will be automatically
  301.         free'd by the library after this message is sent and should not be
  302.         deallocated by the user hook - the hook should just set its
  303.         ci_Object to NULL.
  304.         
  305.         CHM_RESIZEOBJ and CHM_PRERESIZE - support for resizing objects which
  306.         do not have to be fully destroyed/created.  These are currently not
  307.         fully implemented and should always perform the identical operation
  308.         as CHM_CREATEOBJ and CHM_DESTROYOBJ, respectively.
  309.         
  310.         CHM_HOOKOBJ and CHM_UNHOOKOBJ - sent to inform hook of the attaching
  311.         a removal of the gadget lists from the window.
  312.         
  313.         CHM_MADELINK - sent to a hook after another object has been created
  314.         which has a TagLink to this one.  Typically used to reset any of the
  315.         object's state which may have been affected by the link.
  316.         
  317.         CHM_UPDATESTATE - sent to a hook when its gadget has been pressed or
  318.         released, or an event has occured between the gadget down and up
  319.         events.  The GOIMsg that occured is in the first argument; you may
  320.         modify this any way you please.  This message is typically used to
  321.         track the state of a gadget so that it is correctly reflected in the
  322.         command's object tag list.
  323.         
  324.         CHM_HOTKEY - perform hotkey operation for the command.  Sent when an
  325.         IDCMP_RAWKEY or IDCMP_VANILLAKEY event has occured which is attached
  326.         to the hook's command.  The hook should perform whatever action the
  327.         gadget should take for hotkeys and update the GOIMsg pointed to by
  328.         the first argument, which contains the event which triggered the
  329.         hotkey, to reflect the event that the gadget performed, ie a gadget
  330.         up event.
  331.         
  332.         CHM_DRAWSELF - sent when the hook needs to redraw its imagery.  This
  333.         message will only be sent when the command's ci_Object is non-NULL.
  334.         
  335.   INPUTS
  336.         Hook    - (struct Hook *) Your hook.
  337.         Command - (struct CmdInfo *) The command being sent the message.
  338.         Message - (struct CmdHookMsg *) The operation to perform.
  339.  
  340.   RESULT
  341.         Result - (static ULONG) Message-dependant return value.
  342.  
  343.   SEE ALSO
  344.         GO_CallCmdHookA(), GO_ContCmdHookA()
  345.  
  346.   LIBRARY HOOKS
  347.         These are the operations implemented by the library's built-in hooks:
  348.  
  349.         COMMANDS:
  350.         ~~~~~~~~
  351.           CHM_INITCMDATTR:
  352.           CHM_SETCMDATTR:
  353.               Updates command state tags from list.
  354.               Parses the following tags:
  355.                   GOCT_SetUserHook, GOCT_SetUserHookData,
  356.                   GOCT_SetHotKey, GOCT_SetHotKeyCmd.
  357.           CHM_GETCMDATTR:
  358.               Copies the current command tags into the supplied tag list.
  359.           CHM_INITOBJATTR:
  360.           CHM_SETOBJATTR:
  361.               Updates the current object tags from the given tag list.
  362.           CHM_GETOBJATTR:
  363.               Copies the current object state tags to the supplied tag list.
  364.    
  365.           BOX/IMAGE COMMANDS all COMMANDS operations plus:
  366.           ~~~~~~~~~
  367.           CHM_INITIALIZE:
  368.               Nothing.
  369.           CHM_TERMINATE:
  370.               Frees any previously allocated BoxPosInfo.
  371.           CHM_INITCMDATTR:
  372.           CHM_SETCMDATTR:
  373.               Updates flags from all box tags GOCT_IgnoreMinDimen, 
  374.               GOCT_IgnoreFinDimen, GOCT_IgnoreCreation.
  375.               Sets pointer for GOCT_BoxPosInfo; allocates the structure
  376.               if the tag's ti_Data is ~0.
  377.           CHM_GETCMDATTR:
  378.               Should parse above flags, but doesn't. :)
  379.    
  380.         GADTOOLS BOX COMMANDS all BOX COMMANDS operations plus:
  381.         ~~~~~~~~~~~~~~~~~~~~~
  382.           CHM_INITIALIZE:
  383.               All kinds - Translate GadTools label, sets ci_ObjIDCMP flags.
  384.               STRING_KIND - Allocate a memory buffer to hold string.
  385.           CHM_TERMINATE:
  386.               STRING_KIND - Free the previously allocated buffer.
  387.           CHM_RESIZEOBJ and
  388.           CHM_CREATEOBJ:
  389.               All kinds - Calls GadTools CreateGadgetA() to create the
  390.                           gadget; adds it to GadOutline.go_LastGadTools.
  391.                           Points ci_Object to the newly created gadget.
  392.                           Except for TEXT_KIND and NUMBER_KIND, Makes sure
  393.                           size is at least 4 x 2 pixels.
  394.               LISTVIEW_KIND - Modifies body size if there is a hooked string
  395.                               gad and sets GTLV_Top to GTLV_Selected.
  396.               MX_KIND - Adjusts border to only include radio buttons.
  397.               STRING_KIND - Sets activation flags under v37.
  398.               INTEGER_KIND - Sets activation flags under v37.
  399.           CHM_PRERESIZE and
  400.           CHM_DESTROYOBJ:
  401.               All kinds - Sets GadAttr.ga_Object to NULL
  402.               STRING_KIND - Copies current gadget string to buffer and
  403.                             points GTST_String to the buffer.
  404.               INTEGER_KIND - Updates GTIN_Number from gadget's buffer.
  405.               CHECKBOX_KIND - Updates GTCB_Checked from gadget.
  406.           CHM_UPDATESTATE:
  407.               Unless otherwise noted, all kinds only update on
  408.                 IDCMP_GADGETDOWN and IDCMP_GADGETUP events.
  409.               CHECKBOX_KIND - Toggles GTCB_Checked.
  410.               STRING_KIND - Copies current gadget string to buffer and
  411.                             points GTST_String to the buffer.
  412.               INTEGER_KIND - Updates GTIN_Number from gadget's buffer.
  413.               MX_KIND - Updates GTMX_Active from IntuiMessage.Code.
  414.               CYCLE_KIND - Updates GTCY_Active from IntuiMessage.Code.
  415.               SLIDER_KIND - Updates GTSL_Level from IntuiMessage.Code.  Also
  416.                             updates from IDCMP_MOUSEMOVE if this is the
  417.                             active cmd.
  418.               SCROLLER_KIND - Updates GTSC_Top from IntuiMessage.Code.  Also
  419.                             updates from IDCMP_MOUSEMOVE if this is the
  420.                             active cmd.
  421.               LISTVIEW_KIND - Updates GTLV_Selected from IntuiMessage.Code.
  422.               PALETTE_KIND - Updates GTPA_Color from IntuiMessage.Code.
  423.           CHM_HOTKEY:
  424.               All kinds - Ignores all upkey events and every event if the
  425.                           gadget is disabled.
  426.               BUTTON_KIND - Modifies GOIMSG to look like a GADGETUP event.
  427.               STRING_KIND - Activates the gadget.
  428.               INTEGER_KIND - Activates the gadget.
  429.               MX_KIND - Increments/decrements GTMX_Active with wrap-around &
  430.                         modifies the GOIMsg to look like a GADGETDOWN event.
  431.               All of these modify the GOIMsg to look like a GADGETUP event:
  432.               CHECKBOX_KIND - Toggles value of GTCB_Checked.
  433.               CYCLE_KIND - Increments/decrements GTCY_Active w/wrap-around.
  434.               SLIDER_KIND - Increments/decrements GTSL_Level w/wrap-around.
  435.               SCROLLER_KIND - Increments/decrements GTSC_Top w/wrap-around.
  436.               LISTVIEW_KIND - Inc/dec GTLV_Selected w/wrap-around.
  437.               PALETTE_KIND - Increments/decrements GTPA_Color w/wrap-around.
  438.           CHM_INITOBJATTR:
  439.               All kinds - Translates GTST_EditHook, if it is supplied.
  440.                           If GOCT_SetHotKey is in the command list with a
  441.                           zero for the low byte, and the gadget's label has
  442.                           an underline, set correct hotkey.
  443.               STRING_KIND - Translates GTST_String.
  444.               MX_KIND - Translates array in GTMX_Labels.
  445.               CYCLE_KIND - Translates array in GTCY_Labels.
  446.               SLIDER_KIND - Translates string in GTSL_LevelFormat.
  447.               TEXT_KIND - Translates string in GTTX_Text.
  448.               SLIDER_KIND - Translates string in GTSL_LevelFormat.
  449.           CHM_SETOBJATTR:
  450.               All kinds - Updates the current tags from the given tag list,
  451.                           then sends that tag list to GO_SetGadgetAttrs().
  452.               LISTVIEW_KIND - Sets GTLV_Top to GTLV_Selected, if GTLV_Top is
  453.                               included in the update tag list with a ti_Data
  454.                               of ~0.
  455.           CHM_GETOBJATTR:
  456.               All kinds - Copies the current state tags into the supplied
  457.                           tag list.
  458.               STRING_KIND - Copies current gadget string to buffer and
  459.                             points GTST_String, if supplied, to buffer.
  460.               INTEGER_KIND - Updates GTIN_Number, if supplied, from gadget
  461.                              string.
  462.           CHM_GETMINDIMENS:
  463.               All kinds - Determines the gadget's minimum dimens, based on
  464.                           the position and text of any labels.  Gives def.
  465.                           body height of text height + 2 pixels for borders.
  466.               STRING_KIND - Body height of text height + 4 pix for border.
  467.               INTEGER_KIND - Body height of text height + 4 pix for border.
  468.               TEXT_KIND - Reduces size if there is no border.
  469.               NUMBER_KIND - Reduces size if there is no border.
  470.               MX_KIND - Enlarges body to fit width and height of current
  471.                         labels; Removes all pad space from body.
  472.               CHECKBOX_KIND - Makes sure body is at least 26 x 11.
  473.               LISTVIEW_KIND - Makes sure body is at least one char width
  474.                               + 8 pixels + the width of the scroll bar.
  475.                               Makes height at least two lines and 4 pixels,
  476.                               three lines and 6 pixels if GTLV_ShowSelected.
  477.               PALETTE_KIND - Makes sure body is at least 4+(1 char width) x
  478.                              4+(1 char height), plus the indicator size.
  479.               SCROLLER_KIND - Makes sure body is 8+(1 char width) or
  480.                               4+(1 char height), plus space for arrows.
  481.               SLIDER_KIND - If GTSL_MaxLabelLen, adds in that times
  482.                             a numeric character width.
  483.               CYCLE_KIND - Makes sure all labels fit.
  484.           CHM_MADELINK:
  485.               STRING_KIND - Restores string from local buffer.
  486.    
  487.         BOOPSI BOX COMMANDS all BOX COMMANDS operations plus:
  488.         ~~~~~~~~~~~~~~~~~~~
  489.         CHM_INITIALIZE:
  490.             Translates the BOOPSI class name and private class.
  491.         CHM_RESIZEOBJ and
  492.         CHM_CREATEOBJ:
  493.             Calls NewObject() with the command's box text and value.  If
  494.             the subcode is GOSB_Image, GOSB_Gadget or GOSB_AddGad, the
  495.             following tags will automatically be filled in:
  496.                 IA_Left = ba_BodyLeft, IA_Top = ba_BodyTop,
  497.                 IA_Width = ba_BodyWidth, IA_Height = ba_BodyHeight,
  498.                 IA_Pens = go_DrI->dri_Pens,
  499.                 IA_Resolution = (go_DrI->X << 16) | go_DrI->Y,
  500.                 SYSIA_DrawInfo = go_DrI
  501.                 GA_ID = GETSTDID(ci_CmdID),
  502.                 GA_Left = ba_BodyLeft, GA_Top = ba_BodyTop,
  503.                 GA_Width = ba_BodyWidth, GA_Height = ba_BodyHeight,
  504.                 GA_UserData = private, GA_Previous = go_LastBoospsi,
  505.                 GA_DrawInfo = go_DrI
  506.             If the subcode is GODB_AddGad, the resulting object will be
  507.             added to the BOOPSI gadget list.
  508.         CHM_PRERESIZE and
  509.         CHM_DESTROYOBJ:
  510.             Calls DestroyObject() on the gadget.
  511.         CHM_HOTKEY:
  512.             propgclass - Increments/decrements PGA_Top with wrap-around and
  513.                          modifies the GOIMsg to look like a GADGETUP event.
  514.             strgclass - Activates the gadget.
  515.             buttongclass - Modifies GOIMSG to look like a GADGETUP event.
  516.             frbuttonclass - Modifies GOIMSG to look like a GADGETUP event.
  517.         CHM_INITOBJATTR:
  518.             Translates STRINGA_EditHook, if it is supplied.
  519.         CHM_SETOBJATTR:
  520.             Updates the current tags from the given tag list and
  521.             then sends that same tag list to SetGadgetAttrs() if the subcode
  522.             is GOSB_AddGad, else sends them to SetAttrs().
  523.         CHM_GETOBJATTR:
  524.             Copies the current state tags into the supplied tag list and
  525.             then calls GetAttr() for each tag in the list.
  526.  
  527.         DRAW BOX COMMANDS all BOX COMMANDS operations plus:
  528.         ~~~~~~~~~~~~~~~~~
  529.         CHM_INITIALIZE:
  530.             If the subcode is GOSD_BoopsiIm or GOSD_BoopsiGad, creates a
  531.             vector drawing image.
  532.         CHM_TERMINATE:
  533.             Free previously allocated image.
  534.         CHM_RESIZEOBJ and
  535.         CHM_CREATEOBJ:
  536.             If the subcode is GOSD_Normal, set ci_Object to ~0
  537.             If the subcode is GOSD_Button, create a generic GadTools kind
  538.                 and make it a button.
  539.             If the subcode is GOSD_BoopsiIm, set the previously created
  540.                 image's to the position and size of the command's box and
  541.                 point ci_Object to it.
  542.             If the subcode is GOSD_BoopsiGad, set the image's size to the
  543.                 command's size and create a BOOPSI buttongclass, attach it
  544.                 to the image and add it to the BOOPSI tag list.
  545.             NOTE: Standard GadTools and BOOPSI tags are not supported, in
  546.             particular GA_Disabled and GT_Underscore.  To get a button which
  547.             will disable itself, use a GOSD_BoopsiIm subcode and create a
  548.             BOOPSI box with a button which points to the image.
  549.         CHM_PRERESIZE:
  550.         CHM_DESTROYOBJ:
  551.             Set Object to null, free BOOPSI gadget.
  552.         CHM_INITOBJATTR:
  553.             Translates GODT_DrawText* commands and the ti_Data of the
  554.             tag pointed to by GODT_DrawText*Tag commands.
  555.         CHM_SETOBJATTR:
  556.             If subcode is GOSD_Normal or GOSD_Button, sends itself a
  557.                 CHM_DRAWSELF message.
  558.             If subcode is GOSD_BoopsiGad, redraws the gadget.
  559.         CHM_HOTKEY:
  560.             If subcode is GOSD_Button or GOSD_BoopsiGad, turn key event into
  561.             a button up.
  562.         CHM_DRAWSELF:
  563.             If subcode is GOSD_Normal or GOSD_Button, creates a drawing
  564.             environment based on its command box size and executes the
  565.             drawing commands in its object tag list.
  566.    
  567.         GROUP COMMANDS all BOX COMMANDS operations plus:
  568.         ~~~~~~~~~~~~~~
  569.           CHM_INITIALIZE:
  570.               Sets group to same type as parent, or GOCT_FrameGroup if none.
  571.           CHM_RESIZEOBJ and
  572.           CHM_CREATEOBJ:
  573.               Sets ci_Object to ~0.
  574.           CHM_PRERESIZE and
  575.           CHM_DESTROYOBJ:
  576.               Sets ci_Object to NULL.
  577.           CHM_INITCMDATTR and
  578.           CHM_SETCMDATTR:
  579.               Updates flags from all box tags plus GOCT_EvenDistGroup,
  580.               GOCT_FrameGroup, GOCT_FitToGroup, GOCT_AutoDistExtra.
  581.           CHM_GETCMDATTRS:
  582.               Should parse above flags, but doesn't.
  583.           CHM_INITOBJATTR:
  584.               Translates GODT_DrawText* object tags and the ti_Data of the
  585.               tag pointed to by GODT_DrawText*Tag commands.
  586.           CHM_SETOBJATTR:
  587.               Sends itself a CHM_DRAWSELF message.
  588.           CHM_DRAWSELF:
  589.               Creates a drawing environment with boundaries initialized to
  590.               its space frame size and executes the drawing commands in its
  591.               object tag list.
  592. gadoutline.library/DestroyGadOutlineA   gadoutline.library/DestroyGadOutlineA
  593.  
  594.                                                       16 Jul 1993    08:00:01
  595.   NAME
  596.         DestroyGadOutlineA -- Destroy all created objects.
  597.  
  598.  
  599.   SYNOPSIS
  600.         DestroyGadOutlineA(GadOutline, TagList)
  601.                            A0          A1       
  602.  
  603.         void DestroyGadOutlineA(struct GadOutline *, struct TagItem *)
  604.  
  605.   FUNCTION
  606.         Calls UpdateGadOutlineA() with the given tag list, unhooks the
  607.         gadgets using UnhookGadOutlineA() and then sends CHM_DESTROYOBJ to
  608.         all commands in the GadOutline.  This leaves the GadOutline in a
  609.         state where it is completely detached from its window, but note
  610.         that this does not in any way mean that you a free to do anything
  611.         with the window.  The only legal way to detach a window or screen
  612.         is to set { GOA_WindowAddr, NULL } or { GOA_ScreenAddr, NULL } or to
  613.         call GO_CloseWindowA() or GO_CloseScreenA().
  614.  
  615.         The window's original font will be restored if it had been changed
  616.         by RebuildGadOutlineA().
  617.  
  618.   INPUTS
  619.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  620.         TagList - (struct TagItem *) Global (GOA_*) outline tags, parsed
  621.                   before the actual unhook/destroy is performed.
  622.  
  623.   RESULT
  624.         Nothing returned from the function.
  625.         go_LastReqReturn is non-zero if an error occured.
  626.         (If an empty tag list is passed, an error should never be returned.)
  627.  
  628.   TAGS
  629.         
  630.  
  631.   EXAMPLE
  632.         
  633.  
  634.   NOTES
  635.         You should never need to call this function.
  636.  
  637.   BUGS
  638.         .
  639.  
  640.   SEE ALSO
  641.         UnhookGadOutlineA(), UpdateGadOutlineA()
  642.         
  643. gadoutline.library/DimenGadOutlineA       gadoutline.library/DimenGadOutlineA
  644.  
  645.                                                       15 Jul 1993    05:38:25
  646.   NAME
  647.         DimenGadOutlineA -- Perform a full layout of a GadOutline.
  648.  
  649.  
  650.   SYNOPSIS
  651.         DimenGadOutlineA(GadOutline, TagList)
  652.                          A0          A1       
  653.  
  654.         void DimenGadOutlineA(struct GadOutline *, struct TagItem *)
  655.  
  656.   FUNCTION
  657.         This is the primary part of the layout engine.  This routine will
  658.         try to find a layout of the gadgets that will fit within the
  659.         current bounds.  The only outline commands that are involved in
  660.         this layout are the groups and boxes that occur between the first
  661.         group command within the outline (GO_VERTGRP(), GO_HORIZGRP()) and
  662.         its associated GO_ENDGRP().  Each of these will be sent the
  663.         message CHM_GETMINDIMENS, with this data being used to find the
  664.         minimum size that the layout can be.  If a box or group has its
  665.         GOCT_IGNOREMINDIMENS tag set, it will still be layed out, but its
  666.         resulting dimensions will be ignored when computing its parent
  667.         group's dimensions - the group or box that follows it will
  668.         essentially be treated as if it had a width and height of zero.
  669.  
  670.         The total dimensions of a box or group is divided into 10
  671.         different areas, 5 each in both the horizontal vertical
  672.         directions. These are called:  SpaceLeft, TextLeft, BodyWidth,
  673.         TextRight and SpaceRight, and SpaceAbove, TextAbove, BodyHeight,
  674.         TextBelow and SpaceBelow.  The space areas are the spacing to put
  675.         between congruent boxes and groups, the text areas are the spacing
  676.         needed by anything outside the actual body [ie, GadTools labels],
  677.         and the body is the actual size of the gadget.
  678.  
  679.         These areas are further divided into three components each, called
  680.         Standard, Padding, and Variable (STD, PAD, VAR).  The standard
  681.         component is the amount of space that area must contain, the
  682.         padding component is any extra space it would like to have but
  683.         can be removed if needed to make the layout fit, and the variable
  684.         area is where extra space needed to expand the box is put. 
  685.         DimenGadOutline takes care of the STD and PAD components, but
  686.         ignores the VAR component, which is handled by
  687.         RebuildGadOutlineA().
  688.  
  689.         Before laying out the gadgets, UpdateGadOutlineA() is called with
  690.         the given tag list and DestroyGadOutline() is called to unhook and
  691.         deallocate any previously created gadgets.  In addition, all
  692.         GOCT_CopyFromTSize ... GOCT_CopyTSizeToTag command pairs are
  693.         executed to initialize the command's object tag list.
  694.  
  695.         To perform a layout, the list of boxes and groups within a group
  696.         is walked, and the minimum dimensions for each is computed.  The
  697.         minimum dimensions of a box are found by sending the box a
  698.         CHM_GETMINDIMENS and then parsing the TypedSize tags within the
  699.         box's command taglist to allow the outline to modify these
  700.         defaults.
  701.  
  702.         The minimum dimensions for the group is now based on the total of
  703.         the dimensions of each of the boxes and groups within a group and
  704.         the layout modes of the group.  There are two basic modes in the
  705.         group's static dimension [ie, the vertical dimension of a
  706.         horizontal group], body and strict, and two modes in the running
  707.         dimension - even distribution on and off.
  708.  
  709.         In body mode, the space used by all of the areas of the child
  710.         boxes and groups is assigned to the parent group's body size - ie,
  711.         the BodyHeight of a horizontal group is the maximum of the total
  712.         height of each box within it, and you are only guaranteed that all
  713.         of the boxes will be the same height; there is no guarantee that
  714.         their bodies will line up in any way.  In strict mode, the maximum
  715.         of each individual area is taken, so that all boxes and groups
  716.         have the same SpaceAbove, TextAbove, BodyHeight, TextBelow and
  717.         SpaceBelow.
  718.  
  719.         When even distribution is off, the width of a horizontal group
  720.         will simply be the sum of the minimum size of each of the boxes
  721.         and groups within it.  When even distribution is on, all of the
  722.         boxes and groups are forced to be the same size as the largest
  723.         within the group.
  724.  
  725.         The static dimension mode is controlled with three command tags. 
  726.         These tags are mutually exclusive; setting one TRUE makes the
  727.         others FALSE.
  728.         GOCT_FitToGroup - If true, turn on strict mode.
  729.         GOCT_AutoDistExtra - If true, turn on strict mode, but don't
  730.             expand boxes to group size until RebuildGadOutlineA().
  731.         GOCT_FrameGroup - If true, turn on body mode and reserve the
  732.             space area around the group to itself.  [By default this
  733.             area will be set to zero; this is normally used to reserve
  734.             area around it to draw a border.]
  735.  
  736.         There is one tag that controls the running dimension mode -
  737.         GOCT_EvenDistGroup.  Set to TRUE to turn on even distribution.
  738.  
  739.         After the group's initial minimum size is found, the TypedSize
  740.         tags within the command tag list are parsed to allow them to be
  741.         modified. These are usually used to specify the size of the frame
  742.         needed around a GOCT_FrameGroup using the GOCT_SizeSpace* tags.
  743.  
  744.         Once the layout's minimum dimensions have been found, they are
  745.         compared with the current layout bounds [ie, the size of the
  746.         screen or window.] If the layout is too big, the library will try
  747.         various things to make it fit, first attempting to use a smaller
  748.         font size, then trying to remove padding from the boxes and
  749.         groups, and finally falling back to the screen default font, the
  750.         system default font, and lastly topaz 8.  If none of these work,
  751.         an error will be reported; you can find out about this by checking
  752.         for a non-zero value in go_LastReqReturn, as usual.
  753.  
  754.         If the layout is successful and a window or screen is attached to
  755.         the GadOutline, RebuildGadOutlineA() is called with an empty tag
  756.         list.
  757.  
  758.   INPUTS
  759.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  760.         TagList - (struct TagItem *) Global (GOA_*) outline tags, parsed
  761.                   before the actual layout is performed.
  762.  
  763.   RESULT
  764.         Nothing returned from the function.
  765.         go_LastReqReturn is non-zero if an error occured.
  766.  
  767.   TAGS
  768.         Command tags -
  769.             GOCT_IgnoreMinDimens - ignore box's size when computing
  770.                 parent's minimum size.
  771.             GOCT_FrameGroup - reserve group's space area to itself
  772.             GOCT_FitToGroup - make every area of children boxes match
  773.             GOCT_AutoDistExtra - same as GOCT_FitToGroup, but extra space
  774.                 not distributed until RebuildGadOutlineA().
  775.             GOCT_EvenDistGroup - make all boxes same size in running
  776.                 dimension.
  777.                             
  778.   EXAMPLE
  779.         
  780.  
  781.   NOTES
  782.         If the library needs to remove padding from the layout, the PAD
  783.         component of the GOCT_SizeUser1 and GOCT_SizeUser2 variables will
  784.         be scaled by the same amount as the amount of scaling in the
  785.         box's width and height, respectively.
  786.  
  787.   BUGS
  788.         .
  789.  
  790.   SEE ALSO
  791.         RebuildGadOutlineA(), UpdateGadOutlineA(), DestroyGadOutline()
  792.         
  793. gadoutline.library/DrawGadOutlineA         gadoutline.library/DrawGadOutlineA
  794.  
  795.                                                       16 Jul 1993    08:12:56
  796.   NAME
  797.         DrawGadOutlineA -- Tell all commands to draw themselves.
  798.  
  799.  
  800.   SYNOPSIS
  801.         DrawGadOutlineA(GadOutline, TagList)
  802.                         A0          A1       
  803.  
  804.         void DrawGadOutlineA(struct GadOutline *, struct TagItem *)
  805.  
  806.   FUNCTION
  807.         Calls UpdateGadOutlineA() with the given tag list and then sends
  808.         CHM_DRAWSELF messages to all commands with a non-NULL ci_Object.
  809.         If a command doesn't actually create an object but still wants to
  810.         receive messages, it should set ci_Object to ~0 when it receives
  811.         a CHM_CREATEOBJ/CHM_RESIZEOBJ and to NULL when it gets a
  812.         CHM_DESTROYOBJ/CHM_PRERESIZE.
  813.  
  814.   INPUTS
  815.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  816.         TagList - (struct TagItem *) Global (GOA_*) outline tags, parsed
  817.                   before the actual drawing is performed.
  818.  
  819.   RESULT
  820.         Nothing returned from the function.
  821.         go_LastReqReturn is non-zero if an error occured.
  822.  
  823.   TAGS
  824.         
  825.  
  826.   EXAMPLE
  827.         
  828.  
  829.   NOTES
  830.         .
  831.  
  832.   BUGS
  833.         .
  834.  
  835.   SEE ALSO
  836.         UpdateGadOutlineA()
  837.         
  838. gadoutline.library/FreeGadOutline           gadoutline.library/FreeGadOutline
  839.  
  840.                                                       15 Jul 1993    04:10:30
  841.   NAME
  842.         FreeGadOutline -- Deallocate an entire GadOutline.
  843.  
  844.  
  845.   SYNOPSIS
  846.         FreeGadOutline(GadOutline)
  847.                        A0        
  848.  
  849.         void FreeGadOutline(struct GadOutline *)
  850.  
  851.   FUNCTION
  852.         Closes window, port and screen, and frees everything associated
  853.         with a GadOutline.  All memory attached to this GadOutline through
  854.         GO_AllocMem() will be free'd.  If a window has been opened with
  855.         GO_OpenWindowA(), it will be closed.  Depending on the current
  856.         state of the outline, the messages CHM_UNHOOKOBJ and CHM_DESTROYBJ
  857.         will be sent to the command hooks.  CHM_TERMINATE will always be
  858.         sent to the hooks.  This routine should be safe to call, and properly
  859.         cleanup resources, no matter what state the GadOutline is in.
  860.  
  861.   INPUTS
  862.         GadOutline - (struct GadOutline *) A previously allocated GadOutline.
  863.  
  864.   RESULT
  865.         nothing.
  866.  
  867.   EXAMPLE
  868.         
  869.  
  870.   NOTES
  871.         .
  872.  
  873.   BUGS
  874.         .
  875.  
  876.   SEE ALSO
  877.         AllocGadOutlineA(), GO_AllocMem()
  878.         
  879. gadoutline.library/GO_AllocMem                 gadoutline.library/GO_AllocMem
  880.  
  881.                                                       16 Jul 1993    15:03:59
  882.   NAME
  883.         GO_AllocMem -- Allocate memory and attach it to a GadOutline.
  884.  
  885.  
  886.   SYNOPSIS
  887.         Address = GO_AllocMem(GadOutline, ErrReport, Size, Flags)
  888.                               A0          D0         D1    D2     
  889.  
  890.         void *GO_AllocMem(struct GadOutline *, GOERR, ULONG, ULONG)
  891.  
  892.   FUNCTION
  893.         Allocates a block of memory of the given size and attaches it to
  894.         the given GadOutline to be tracked and automatically deallocated
  895.         when the GadOutline is free'd in FreeGadOutline().  If NULL is
  896.         supplied for the GadOutline, it will not be tracked.
  897.  
  898.         ErrReport specifies what to do if the memory can not be allocated.
  899.         If it is 0, the library will simply return NULL.  Otherwise, it
  900.         is interpreted as a standard error code and the library will call
  901.         GO_SetError() with the given error if unable to allocate the
  902.         memory.  If the selected error has a RETRY choice, the library
  903.         will attempt to allocate the memory again if it is selected; if
  904.         it is then able to get it, the caller will never know there was
  905.         a problem.
  906.  
  907.         A shortcut is provided in specifying the error.  If the error
  908.         type field is zero, the library will interpret the code field
  909.         as the type and automatically use the memory code - ie,
  910.         GO_MAKEERR(GETERRCODE(ErrReport),GOCODE_MEMORY).
  911.  
  912.   INPUTS
  913.         GadOutline - (struct GadOutline *) Allocated GadOutline or NULL.
  914.         ErrReport  - (GOERR) Error to report if the allocation fails.
  915.         Size       - (ULONG) Number of bytes to allocate.
  916.         Flags      - (ULONG) Standard Exec memory flags.
  917.  
  918.   RESULT
  919.         Address - (void *) Start address of the memory block or NULL.
  920.         go_LastReqReturn is non-zero if an error occured.
  921.  
  922.   TAGS
  923.         
  924.  
  925.   EXAMPLE
  926.         
  927.  
  928.   NOTES
  929.         .
  930.  
  931.   BUGS
  932.         .
  933.  
  934.   SEE ALSO
  935.         GO_SetErrorA(), GO_ShowErrorA(), FreeGadOutline(), GO_FreeMem()
  936. gadoutline.library/GO_AttachHotKey         gadoutline.library/GO_AttachHotKey
  937.  
  938.                                                       18 Jul 1993    10:40:46
  939.   NAME
  940.         GO_AttachHotKey -- Connects a hot key to a specific command.
  941.  
  942.  
  943.   SYNOPSIS
  944.         GO_AttachHotKey(GadOutline, KeyCode, CmdID)
  945.                         A0          D0       D1     
  946.  
  947.         void GO_AttachHotKey(struct GadOutline *, ULONG, CMDID)
  948.  
  949.   FUNCTION
  950.         Attaches the given CmdID to the requested hotkey, so that CHM_HOTKEY
  951.         messages will automatically be sent to the command whenever the
  952.         corresponding IDCMP_VANILLAKEY or IDCMP_RAWKEY event occurs.
  953.         
  954.         The key that this command will be attached to is not directly
  955.         specified by 'KeyCode.'  Rather, this ULONG code is sent to the
  956.         global translation hook using CHM_TRANSHOTKEY, and the resulting
  957.         ASCII code is the actual key which is used.  This message is sent
  958.         multiple times so that the code may be translated into more than one
  959.         actual hotkey; this allows you to, for example, attach the command
  960.         to both the shifted and unshifted ASCII code.
  961.         
  962.         The standard translation hook interprets the lower byte of the code
  963.         as the desired ASCII character and the upper bits are used as flags
  964.         to control the translation.  See GOCT_SetHotKey in
  965.         <libraries/gadoutline.h> for more details.
  966.  
  967.   INPUTS
  968.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  969.         KeyCode    - (ULONG) Code to be translated with CHM_TRANSHOTKEY.
  970.         CmdID      - (CMDID) Command to attach to hotkey.
  971.  
  972.   RESULT
  973.         Nothing returned.
  974.         go_LastReqReturn is non-zero if there was an error.
  975.  
  976.   TAGS
  977.         
  978.  
  979.   EXAMPLE
  980.         
  981.  
  982.   NOTES
  983.         To clear all hotkeys, do GO_AttachHotKey(GadOutline,0,0).
  984.  
  985.         This routine will report a level-2 notice if there is already a
  986.         command attached to the given hotkey.  To keep this from happening,
  987.         you must first clear the hotkey by setting it to a CmdID of 0 before
  988.         setting it to the actual key you want.
  989.         
  990.         Attaching multiple commands to one hotkey using a GrpID is not
  991.         currently supported.
  992.         
  993.   BUGS
  994.         .
  995.  
  996.   SEE ALSO
  997.         <libraries/gadoutline.h>
  998. gadoutline.library/GO_BeginRefresh         gadoutline.library/GO_BeginRefresh
  999.  
  1000.                                                       18 Jul 1993    14:33:40
  1001.   NAME
  1002.         GO_BeginRefresh -- Start library-compatible window refreshing.
  1003.  
  1004.  
  1005.   SYNOPSIS
  1006.         GO_BeginRefresh(GadOutline)
  1007.                         A0          
  1008.  
  1009.         void GO_BeginRefresh(struct GadOutline *)
  1010.  
  1011.   FUNCTION
  1012.         Begins window refreshing using GT_BeginRefresh and performs
  1013.         redrawing operations needed by the GadOutline.  This essentially
  1014.         involves calling DrawGadOutlineA() to send CHM_DRAWSELF messages to
  1015.         all of the commands.
  1016.  
  1017.   INPUTS
  1018.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  1019.  
  1020.   RESULT
  1021.         nothing.
  1022.         go_LastReqReturn is non-zero if there was an error.
  1023.  
  1024.   TAGS
  1025.         
  1026.  
  1027.   EXAMPLE
  1028.         
  1029.  
  1030.   NOTES
  1031.         .
  1032.  
  1033.   BUGS
  1034.         .
  1035.  
  1036.   SEE ALSO
  1037.         GO_EndRefresh(), DrawGadOutlineA(), gadtools/GT_BeginRefresh()
  1038. gadoutline.library/GO_CallCmdHookA         gadoutline.library/GO_CallCmdHookA
  1039.  
  1040.                                                       16 Jul 1993    08:50:20
  1041.   NAME
  1042.         GO_CallCmdHookA -- Send a message to a command.
  1043.  
  1044.  
  1045.   SYNOPSIS
  1046.         Result = GO_CallCmdHookA(Command, Message)
  1047.                                  A0       A1       
  1048.  
  1049.         ULONG GO_CallCmdHookA(struct CmdInfo *, struct CmdHookMsg *)
  1050.  
  1051.   FUNCTION
  1052.         Send a message to the hook(s) attached to the given command.  Command
  1053.         is a standard CmdInfo structure retrieved using GO_GetCmdInfo().
  1054.         If the command has a user hook attached to it, it will be sent there;
  1055.         otherwise, it will be sent to the command's default hook.
  1056.  
  1057.         Currently defined messages:
  1058.         CHM_INITIALIZE - initialize command.  Sent during AllocGadOutlineA().
  1059.         CHM_INITCMDATTR - set initial command tag values.
  1060.         CHM_INITOBJATTR - set initial object tag values.
  1061.         CHM_INITIALIZE - quit/free resources.  Sent during FreeGadOutline().
  1062.         CHM_GETMINDIMENS - query for object's minimum dimensions.
  1063.         CHM_CREATEOBJ - create command's object - set ci_Object.
  1064.         CHM_MADELINK - inform command that another command has linked to it.
  1065.         CHM_DESTROYOBJ - deallocate current object.
  1066.         CHM_HOOKOBJ - connect object to window.
  1067.         CHM_UNHOOKOBJ - detach object from window.
  1068.         CHM_PRERESIZE - get ready to resize current object.
  1069.         CHM_RESIZEOBJ - resize object.
  1070.         CHM_DRAWSELF - draw all visuals not connected to a gadget.
  1071.         CHM_UPDATESTATE - update internal tags/state from the given GOIMsg.
  1072.         CHM_SETCMDATTR - change command tags / refresh imagery if needed.
  1073.         CHM_GETCMDATTR - copy current state of command tags into tag list.
  1074.         CHM_SETOBJATTR - change object tags / refresh imagery if needed.
  1075.         CHM_GETOBJATTR - copy current state of object tags into tag list.
  1076.         CHM_HOTKEY - perform action for hotkey event.
  1077.  
  1078.         See <libraries/gadoutline.h> and supplemental command documentation
  1079.         under command_hooks() for more specific information on these
  1080.         messages.
  1081.  
  1082.   INPUTS
  1083.         Command - (struct CmdInfo *) Command to send message to.
  1084.         Message - (struct CmdHookMsg *) Message to send.
  1085.  
  1086.   RESULT
  1087.         Result - (ULONG) Hook's return code.  Meaning is message dependant.
  1088.         go_LastReqReturn is non-zero if an error occured.
  1089.  
  1090.   TAGS
  1091.         
  1092.  
  1093.   EXAMPLE
  1094.  
  1095.         /* Send our own CmdHookMsg to simulate a hot key event */
  1096.         
  1097.         ULONG do_hotkey(struct GadOutline *go,struct CmdInfo *cmd)
  1098.         {
  1099.             ULONG ret = 0;
  1100.             struct CmdHookMsg msg;
  1101.             struct GOIMsg *event;
  1102.  
  1103.             if( (event = GO_DupGOIMsg(go,NULL)) != NULL ) {
  1104.  
  1105.                 /* The standard hook will take anything that is
  1106.                    IDCMP_VANILLAKEY, so we can just set the Class field. */
  1107.                 event->StdIMsg.Class = IDCMP_VANILLAKEY;
  1108.  
  1109.                 /* Initialize the message. */
  1110.                 msg->chm_Message = CHM_HOTKEY;
  1111.                 msg->chm_NumArgs = 0;           /* Always set to zero */
  1112.                 msg->chm_KeyGOIMsg = event;
  1113.                 ret = GO_CallCmdHookA(cmd,msg)
  1114.  
  1115.                 /* You can now examine the modified message */
  1116.  
  1117.                 GO_UndupGOIMsg(event);
  1118.             }
  1119.  
  1120.             return ret;
  1121.         }
  1122.  
  1123.   NOTES
  1124.         The given message structure MUST be able to be modified.  This is
  1125.         no problem if you call the varargs version as it will automatically
  1126.         be created on the stack, but if you are passing a pointer to your
  1127.         own CmdHookMsg, it is a good idea to create it on the stack and fill
  1128.         it in.  If you absolutely must use a global structure, make sure you
  1129.         initialize _every_ field in it EACH TIME before using it.
  1130.  
  1131.         The default command hook will send any messages that it doesn't
  1132.         understand to the GadOutline's global translation hook by calling
  1133.         GO_CallTransHook(ci->ci_GadOutline,msg).
  1134.         
  1135.         This routine will repeatedly clear the GadOutline's error state and
  1136.         send the message until the hook returns without a go_LastReqReturn
  1137.         value of GORET_RETRY.
  1138.  
  1139.   BUGS
  1140.         .
  1141.  
  1142.   SEE ALSO
  1143.         GO_CallTransHookA(), GO_ContCmdHookA(), <libraries/gadoutline.h>
  1144.         
  1145. gadoutline.library/GO_CallTransHookA     gadoutline.library/GO_CallTransHookA
  1146.  
  1147.                                                       16 Jul 1993    14:21:13
  1148.   NAME
  1149.         GO_CallTransHookA -- Send message to global translation hook.
  1150.  
  1151.  
  1152.   SYNOPSIS
  1153.         Result = GO_CallTransHookA(GadOutline, Message)
  1154.                                    A0          A1       
  1155.  
  1156.         ULONG GO_CallTransHookA(struct GadOutline *, struct CmdHookMsg *)
  1157.  
  1158.   FUNCTION
  1159.         Sends a translation message to the global translation hook(s)
  1160.         attached to the given GadOutline.  This is very similar to
  1161.         GO_CallCmdHookA() - see the notes there about restrictions on how
  1162.         the given message may be passed.
  1163.  
  1164.         This hook is primarily used by the library to translate the text
  1165.         strings and other pointers within an outline while first allocating
  1166.         a GadOutline, although it is also used to translate hotkey codes.
  1167.         CHM_TRANSHOTKEY is the only translation message that will be sent
  1168.         by the library after the initial allocation of the GadOutline, but
  1169.         you are free to send other messages to do your own translations.
  1170.  
  1171.         Currently defined translation messages:
  1172.         CHM_TRANSCMDHOOK - return pointer to hook to attach to a CmdInfo
  1173.         CHM_TRANSEDITHOOK - return pointer to an intuition-style edit hook.
  1174.         CHM_TRANSTEXTPTR - return pointer to a null-terminated string.
  1175.         CHM_TRANSTEXTARRAY - return pointer to a null-terminated array
  1176.             of strings.
  1177.         CHM_TRANSTEXTFMT - return pointer to a null-terminated formatting
  1178.             string (ie, a standard C-style format specification).
  1179.         CHM_TRANSPUBCLASS - return a pointer to a string containing the
  1180.             name of a public BOOPSI class.
  1181.         CHM_TRANSPRIVCLASS - return a pointer to an actual instance of a
  1182.             BOOPSI private class.
  1183.         CHM_TRANSHOTKEY - return an ASCII character to use as a hotkey.
  1184.  
  1185.   INPUTS
  1186.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  1187.         Message    - (struct CmdHookMsg *) The message to send.
  1188.  
  1189.   RESULT
  1190.         Result - (ULONG) The result of the translation; message dependant.
  1191.         go_LastReqReturn is non-zero if an error occured.
  1192.  
  1193.   TAGS
  1194.         
  1195.  
  1196.   EXAMPLE
  1197.         
  1198.  
  1199.   NOTES
  1200.         See GO_CallCmdHookA() for message restrictions.
  1201.  
  1202.         Most of the translation messages that library sends are first sent
  1203.         to a command using GO_CallCmdHookA() and ultimately reach the global
  1204.         translation hook when they enter the root hook, which sends all
  1205.         messages it doesn't understand to the translation hook using
  1206.         GO_CallTransHookA().  This means that the translation hook will
  1207.         receive much more than just translation commands, and is allowed to
  1208.         do something with them, if it is able to without having the
  1209.         information about the CmdInfo they are intended for.
  1210.  
  1211.         This routine will repeatedly clear the GadOutline's error state and
  1212.         send the message until the hook returns without a go_LastReqReturn
  1213.         value of GORET_RETRY.
  1214.  
  1215.   BUGS
  1216.         .
  1217.  
  1218.   SEE ALSO
  1219.         GO_CallCmdHookA(), GO_ContTransHookA(), <libraries/gadoutline.h>
  1220.         translation_hooks()
  1221. gadoutline.library/GO_CloseLibrary         gadoutline.library/GO_CloseLibrary
  1222.  
  1223.                                                       16 Jul 1993    15:47:11
  1224.   NAME
  1225.         GO_CloseLibrary -- Close a library opened with GO_OpenLibrary().
  1226.  
  1227.  
  1228.   SYNOPSIS
  1229.         GO_CloseLibrary(GadOutline, LibBase)
  1230.                         A0          A1       
  1231.  
  1232.         void GO_CloseLibrary(struct GadOutline *, struct Library *)
  1233.  
  1234.   FUNCTION
  1235.         Closes the given library which was previously opened with
  1236.         GO_OpenLibrary().  GadOutline must be exactly the same as what was
  1237.         supplied to GO_OpenLibrary().
  1238.  
  1239.   INPUTS
  1240.         GadOutline - (struct GadOutline *) Same as during GO_OpenLibrary().
  1241.         LibBase    - (struct Library *) Base return by GO_OpenLibrary().
  1242.  
  1243.   RESULT
  1244.         nothing.
  1245.  
  1246.   TAGS
  1247.         
  1248.  
  1249.   EXAMPLE
  1250.         
  1251.  
  1252.   NOTES
  1253.         ONLY use this with a library that was opened with GO_OpenLibrary().
  1254.  
  1255.   BUGS
  1256.         .
  1257.  
  1258.   SEE ALSO
  1259.         GO_OpenLibrary()
  1260. gadoutline.library/GO_CloseScreen           gadoutline.library/GO_CloseScreen
  1261.  
  1262.                                                       18 Jul 1993    04:34:02
  1263.   NAME
  1264.         GO_CloseScreen -- Detach current screen from GadOutline.
  1265.  
  1266.  
  1267.   SYNOPSIS
  1268.         GO_CloseScreen(GadOutline)
  1269.                        A0          
  1270.  
  1271.         void GO_CloseScreen(struct GadOutline *)
  1272.  
  1273.   FUNCTION
  1274.         Detaches the current screen from the given GadOutline.  If this
  1275.         screen was opened with GO_OpenScreenA(), it will automatically be
  1276.         closed. If the library has any locks on it, they will be released. 
  1277.         This is used by UpdateGadOutlineA() when a screen or window tag is
  1278.         specified which changes the GadOutline's screen.
  1279.          
  1280.   INPUTS
  1281.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  1282.  
  1283.   RESULT
  1284.         nothing.
  1285.  
  1286.   TAGS
  1287.         
  1288.  
  1289.   EXAMPLE
  1290.         
  1291.  
  1292.   NOTES
  1293.         GO_CloseWindowA() will be called if there is a window attached to
  1294.         the GadOutline.
  1295.         
  1296.   BUGS
  1297.         .
  1298.  
  1299.   SEE ALSO
  1300.         GO_OpenScreenA(), GO_CloseWindow()
  1301. gadoutline.library/GO_CloseWindow           gadoutline.library/GO_CloseWindow
  1302.  
  1303.                                                       18 Jul 1993    08:37:26
  1304.   NAME
  1305.         GO_CloseWindow -- Close / detach any window connected to GadOutline.
  1306.  
  1307.  
  1308.   SYNOPSIS
  1309.         GO_CloseWindow(GadOutline)
  1310.                        A0          
  1311.  
  1312.         void GO_CloseWindow(struct GadOutline *)
  1313.  
  1314.   FUNCTION
  1315.         Disassociates given GadOutline from any window currently attached to
  1316.         it.  If the window was opened using GO_OpenWindowA(), it will be
  1317.         detached from any menu strip and custom user port, have its position
  1318.         saved if GOA_SaveWinDimens is TRUE, and be closed.  This called by
  1319.         UpdateGadOutlineA() when GOA_WindowAddr is specified with a different
  1320.         address than the current window.
  1321.  
  1322.   INPUTS
  1323.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  1324.  
  1325.   RESULT
  1326.         nothing.
  1327.  
  1328.   TAGS
  1329.         
  1330.  
  1331.   EXAMPLE
  1332.         
  1333.  
  1334.   NOTES
  1335.         .
  1336.  
  1337.   BUGS
  1338.         .
  1339.  
  1340.   SEE ALSO
  1341.         GO_OpenWindowA(), GO_CloseScreen()
  1342. gadoutline.library/GO_CmdAtPointA           gadoutline.library/GO_CmdAtPointA
  1343.  
  1344.                                                       18 Jul 1993    12:03:13
  1345.   NAME
  1346.         GO_CmdAtPointA -- Determine command(s) covering a certain point
  1347.  
  1348.  
  1349.   SYNOPSIS
  1350.         Command = GO_CmdAtPointA(GadOutline, Message, PrevCmd, TagList)
  1351.                                  A0          A1       A2       A3       
  1352.  
  1353.         struct CmdInfo *GO_CmdAtPointA(struct GadOutline *, struct GOIMsg *, 
  1354.                                        struct CmdInfo *, struct TagItem *)
  1355.  
  1356.   FUNCTION
  1357.         Finds the commands whose boxes cover the given point within the
  1358.         message's MouseX and MouseY fields.  The operation is similar to
  1359.         GO_GetCmdInfo(), except that the x and y coordinates are used to
  1360.         filter the messages rather than a CmdID search pattern.  NULL is
  1361.         returned after all of the commands have been searched.
  1362.         
  1363.         The only fields which are looked at in the message are MouseX and
  1364.         MouseY, so you can do a search without already having a message by
  1365.         allocating a new message with GO_DupGOIMsg(GadOutline,NULL) and
  1366.         filling in those two fields with the point you wish to search for.
  1367.         
  1368.   INPUTS
  1369.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  1370.         Message    - (struct GOIMsg *) Message to take coordinates from.
  1371.         PrevCmd    - (struct CmdInfo *) Previously returned command.
  1372.         TagList    - (struct TagItem *) Control tags.  No tags defined.
  1373.  
  1374.   RESULT
  1375.         Command - (struct CmdInfo *) Command found at the point.
  1376.         go_LastReqReturn is non-zero if there was an error.
  1377.  
  1378.   TAGS
  1379.         
  1380.  
  1381.   EXAMPLE
  1382.         
  1383.  
  1384.   NOTES
  1385.         All commands which have a BoxAttr will be returned; this currently
  1386.         includes boxes, groups and images.  You will need to do more
  1387.         filtering yourself if you only want to look at specific kinds.
  1388.  
  1389.   BUGS
  1390.         .
  1391.  
  1392.   SEE ALSO
  1393.         GO_GetCmdInfo(), GO_GetBoxAttr(), GO_DupGOIMsg()
  1394. gadoutline.library/GO_ContCmdHookA         gadoutline.library/GO_ContCmdHookA
  1395.  
  1396.                                                       16 Jul 1993    09:39:23
  1397.   NAME
  1398.         GO_ContCmdHookA -- Continue a message within a hook.
  1399.  
  1400.  
  1401.   SYNOPSIS
  1402.          Result = GO_ContCmdHookA(Command, Message)
  1403.                                   A0       A1       
  1404.  
  1405.         ULONG GO_ContCmdHookA(struct CmdInfo *, struct CmdHookMsg *)
  1406.  
  1407.   FUNCTION
  1408.         Passes the processing of a message to the command's hook below
  1409.         the caller.  You will normally want to allow the standard message
  1410.         processing to occur by calling this function.
  1411.  
  1412.   INPUTS
  1413.         Command - (struct CmdInfo *) Command to send message to.
  1414.         Message - (struct CmdHookMsg *) Message to send.
  1415.  
  1416.   RESULT
  1417.         Result - (ULONG) Hook's return code.  Meaning is message dependant.
  1418.         go_LastReqReturn is non-zero if an error occured.
  1419.  
  1420.   TAGS
  1421.         
  1422.  
  1423.   EXAMPLE
  1424.         
  1425.  
  1426.   NOTES
  1427.         This function should only be called within a user hook.
  1428.         Never modify any of the fields within the message; you must pass
  1429.         the exact message that your hook received.
  1430.  
  1431.   BUGS
  1432.         .
  1433.  
  1434.   SEE ALSO
  1435.         GO_CallCmdHookA(), <libraries/gadoutline.h>
  1436.         
  1437. gadoutline.library/GO_ContTransHookA     gadoutline.library/GO_ContTransHookA
  1438.  
  1439.                                                       16 Jul 1993    14:52:09
  1440.   NAME
  1441.         GO_ContTransHookA -- Continue a message within a translation hook.
  1442.  
  1443.  
  1444.   SYNOPSIS
  1445.         Result = GO_ContTransHookA(GadOutline, Message)
  1446.                              A0          A1       
  1447.  
  1448.         ULONG GO_ContTransHookA(struct GadOutline *, struct CmdHookMsg *)
  1449.  
  1450.   FUNCTION
  1451.         Passes the processing of a message to the library's builtin
  1452.         translation hook.  You will usually only need to do this for
  1453.         messages that you do not understand or for which you are happy
  1454.         with the standard handling of the message.
  1455.  
  1456.   INPUTS
  1457.         GadOutline - (struct GadOutline *) A previously allocated GadOutline.
  1458.         Message - (struct CmdHookMsg *) Message to send.
  1459.  
  1460.   RESULT
  1461.         Result - (ULONG) Hook's return code.  Meaning is message dependant.
  1462.         go_LastReqReturn is non-zero if an error occured.
  1463.  
  1464.   TAGS
  1465.         
  1466.  
  1467.   EXAMPLE
  1468.         
  1469.  
  1470.   NOTES
  1471.         This function should only be called within a user hook.
  1472.         Never modify any of the fields within the message; you must pass
  1473.         the exact message that your hook received.
  1474.  
  1475.   BUGS
  1476.         .
  1477.  
  1478.   SEE ALSO
  1479.         GO_CallTransHookA(), <libraries/gadoutline.h>
  1480.         
  1481. gadoutline.library/GO_DupGOIMsg               gadoutline.library/GO_DupGOIMsg
  1482.  
  1483.                                                       18 Jul 1993    10:12:49
  1484.   NAME
  1485.         GO_DupGOIMsg -- Duplicate a GOIMsg or IntuiMessage.
  1486.  
  1487.  
  1488.   SYNOPSIS
  1489.         NewMessage = GO_DupGOIMsg(GadOutline, Message)
  1490.                                   A0          A1       
  1491.  
  1492.         struct GOIMsg *GO_DupGOIMsg(struct GadOutline *, struct GOIMsg *)
  1493.  
  1494.   FUNCTION
  1495.         Allocates a new GOIMsg and copies the given message into it.  There
  1496.         are three distinct operations that can be performed:
  1497.         
  1498.         If 'Message' is a GOIMsg, a direct copy will be performed.
  1499.         
  1500.         If 'Message' is an IntuiMessage, all of the IntuiMessage fields will
  1501.         be copied into the corresponding fields in the GOIMsg.
  1502.  
  1503.         If 'Message' is NULL, a brand new GOIMsg will be allocated and
  1504.         initialized.  You currently should not count on any of the fields of
  1505.         the new GOIMsg being set to sane values.
  1506.         
  1507.   INPUTS
  1508.         GadOutline - (struct GadOutline *) An allocated GadOutline.
  1509.         Message    - (struct GOIMsg *) Message to duplicate.
  1510.  
  1511.   RESULT
  1512.         NewMessage - (struct GOIMsg *) The newly allocated message or NULL
  1513.                                        if unable to allocate any memory.
  1514.         go_LastReqReturn is non-zero if there was an error.
  1515.  
  1516.   TAGS
  1517.         
  1518.  
  1519.   EXAMPLE
  1520.         
  1521.  
  1522.   NOTES
  1523.         The ExecMessage within the IntuiMessage part of the GOIMsg is
  1524.         reserved for private use by the library and should not touched or
  1525.         looked at in any way.
  1526.         
  1527.         This message is attached to the supplied GadOutline and will be
  1528.         free'd at the time that the GadOutline is free'd.
  1529.         
  1530.         Supplying a NULL GadOutline will result in first trying to use any
  1531.         GadOutline attached to the given message (ie, calling
  1532.         GO_GetGOFromGOIMsg) and, if that fails, not attaching it to any
  1533.         GadOutline.
  1534.         
  1535.         ReplyMsg() should never be called with a duplicated message.
  1536.  
  1537.   BUGS
  1538.         .
  1539.  
  1540.   SEE ALSO
  1541.         GO_UndupGOIMsg(), GO_GetGOFromGOIMsg()
  1542. gadoutline.library/GO_EndRefresh             gadoutline.library/GO_EndRefresh
  1543.  
  1544.                                                       18 Jul 1993    14:38:01
  1545.   NAME
  1546.         GO_EndRefresh -- Finishes window refreshing.
  1547.  
  1548.  
  1549.   SYNOPSIS
  1550.         GO_EndRefresh(GadOutline, Complete)
  1551.                       A0          D0        
  1552.  
  1553.         void GO_EndRefresh(struct GadOutline *, BOOL)
  1554.  
  1555.   FUNCTION
  1556.         Calls GT_EndRefresh() to finish window refreshing mode and does all
  1557.         special operations needed by library.
  1558.  
  1559.   INPUTS
  1560.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  1561.         Complete   - (BOOL) TRUE if this is really the end.
  1562.  
  1563.   RESULT
  1564.         nothing.
  1565.         go_LastReqReturn is non-zero if there was an error.
  1566.  
  1567.   TAGS
  1568.         
  1569.  
  1570.   EXAMPLE
  1571.         
  1572.  
  1573.   NOTES
  1574.         .
  1575.  
  1576.   BUGS
  1577.         .
  1578.  
  1579.   SEE ALSO
  1580.         GO_BeginRefresh(), DrawGadOutline(), gadtools/GT_EndRefresh()
  1581. gadoutline.library/GO_FilterGOIMsg         gadoutline.library/GO_FilterGOIMsg
  1582.  
  1583.                                                       18 Jul 1993    13:19:16
  1584.   NAME
  1585.         GO_FilterGOIMsg -- Send message to library for special processing.
  1586.  
  1587.  
  1588.   SYNOPSIS
  1589.         NewMsg = GO_FilterGOIMsg(GadOutline, Message)
  1590.                                  A0          A1       
  1591.  
  1592.         struct GOIMsg *GO_FilterGOIMsg(struct GadOutline *, 
  1593.                                        struct IntuiMessage *)
  1594.  
  1595.   FUNCTION
  1596.         Performs library-specific filtering and massaging of a raw
  1597.         IntuiMessage before being ready for the application to look at.
  1598.         This includes executing hot keys, tracking the gadgets' states,
  1599.         and watching for window resizing and resize verify events.
  1600.         
  1601.         Extended message information is supplied in the GOIMsg structure, in
  1602.         addition to that already provided by Intuition and GadTools.  If the
  1603.         message is a IDCMP_RAWKEY or IDCMP_VANILLAKEY event, the KeyPress
  1604.         field will contain the translated key event.  For IDCMP_VANILLAKEY
  1605.         this is just a string with a single character corresponding to the
  1606.         message's code.  IDCMP_RAWKEY events will be translated using
  1607.         MapRawKey(), with the resulting string stored in KeyPress.  The high
  1608.         bit of the raw key codes is cleared before mapping so that both key
  1609.         down and up events will have a KeyPress.
  1610.                 
  1611.         The UserData field of the message is free to be used by the user's
  1612.         custom hook or whatever else.
  1613.         
  1614.         The returned message may be NULL if the library ate it, in which
  1615.         case you will still need to call GO_PostFilterGOIMsg() to retrieve
  1616.         the original message.  After you have called GO_PostFilterGOIMsg(),
  1617.         you should call GO_FilterGOIMsg() with a NULL message to retrieve
  1618.         any additional messages that have been generated, and then release
  1619.         them with GO_PostFilterGOIMsg().
  1620.         
  1621.         This is similar to GadTools' GT_FilterIMsg().
  1622.  
  1623.   INPUTS
  1624.         GadOutline - (struct GadOutline *) .
  1625.         Message    - (struct IntuiMessage *) .
  1626.  
  1627.   RESULT
  1628.         NewMsg - (struct GOIMsg *) The message you should use.
  1629.         go_LastReqReturn is non-zero if there was an error.
  1630.  
  1631.   TAGS
  1632.         
  1633.  
  1634.   EXAMPLE
  1635.         
  1636.  
  1637.   NOTES
  1638.         This function does not call GT_FilterIMsg().  You will need to do
  1639.         that before calling it.
  1640.  
  1641.   BUGS
  1642.         .
  1643.  
  1644.   SEE ALSO
  1645.         GO_PostFilterGOIMsg(), GO_GetGOIMsg(), gadtools/GT_FilterIMsg()
  1646. gadoutline.library/GO_FreeMem                   gadoutline.library/GO_FreeMem
  1647.  
  1648.                                                       16 Jul 1993    15:23:09
  1649.   NAME
  1650.         GO_FreeMem -- Free a block of memory allocated with GO_AllocMem().
  1651.  
  1652.  
  1653.   SYNOPSIS
  1654.         GO_FreeMem(Address)
  1655.                    A0
  1656.  
  1657.         void GO_FreeMem(void *)
  1658.  
  1659.   FUNCTION
  1660.         Frees the memory located at the given address and unlinks it if it
  1661.         was attached to a GadOutline.
  1662.  
  1663.   INPUTS
  1664.         Address - (void *) Memory base address returned by GO_AllocMem().
  1665.  
  1666.   RESULT
  1667.         nothing.
  1668.  
  1669.   TAGS
  1670.         
  1671.  
  1672.   EXAMPLE
  1673.         
  1674.  
  1675.   NOTES
  1676.         ONLY use this with memory that was allocated with GO_AllocMem().
  1677.  
  1678.   BUGS
  1679.         .
  1680.  
  1681.   SEE ALSO
  1682.         GO_AllocMem()
  1683. gadoutline.library/GO_GetBoxAttr             gadoutline.library/GO_GetBoxAttr
  1684.  
  1685.                                                       17 Jul 1993    02:52:53
  1686.   NAME
  1687.         GO_GetBoxAttr -- Find the given BoxAttr structure.
  1688.  
  1689.  
  1690.   SYNOPSIS
  1691.         Box = GO_GetBoxAttr(GadOutline, SearchID, PrevBox)
  1692.                             A0          D0        A1       
  1693.  
  1694.         struct BoxAttr *GO_GetBoxAttr(struct GadOutline *, CMDID, 
  1695.                                       struct BoxAttr *)
  1696.  
  1697.   FUNCTION
  1698.         This is identical to GO_GetCmdInfo() except that it limits the
  1699.         search to commands whose ci_CmdData points to a BoxAttr.  This
  1700.         currently includes all groups, boxes and images.
  1701.  
  1702.         See GO_GetCmdInfo() for more information.
  1703.  
  1704.   INPUTS
  1705.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  1706.         SearchID   - (CMDID) ID code(s) to search for.
  1707.         PrevBox    - (struct BoxAttr *) Previous box that was found.
  1708.  
  1709.   RESULT
  1710.         Box - (struct BoxAttr *) The box that was found.
  1711.  
  1712.   TAGS
  1713.         
  1714.  
  1715.   EXAMPLE
  1716.         /* Get only commands of type GOK_Box with the given size */
  1717.  
  1718.         struct BoxAttr *get_boxes(struct GadOutline *go,
  1719.                                   WORD width, WORD height,
  1720.                                   struct BoxAttr *prev)
  1721.         {
  1722.             while( (prev = GO_GetBoxAttr(go,0,prev)) != NULL ) {
  1723.  
  1724.                 if( prev->ba_BoxWidth == width
  1725.                  && prev->ba_BoxHeight == height ) {
  1726.  
  1727.                     if( GETCMDKIND(prev->ba_CmdInfo) == GOK_Box ) {
  1728.                         return prev;
  1729.                     }
  1730.                 }
  1731.             }
  1732.  
  1733.             return NULL;
  1734.         }
  1735.  
  1736.   NOTES
  1737.         .
  1738.  
  1739.   BUGS
  1740.         .
  1741.  
  1742.   SEE ALSO
  1743.         GO_GetCmdInfo()
  1744. gadoutline.library/GO_GetCmdAttr             gadoutline.library/GO_GetCmdAttr
  1745.  
  1746.                                                       18 Jul 1993    09:26:57
  1747.   NAME
  1748.         GO_GetCmdAttr -- Get the value of a single command tag.
  1749.  
  1750.  
  1751.   SYNOPSIS
  1752.         Value = GO_GetCmdAttr(GadOutline, StdID, Flags, GetTag, DefaultValue)
  1753.                               A0          D0     D1     D2      D3
  1754.  
  1755.         ULONG GO_GetCmdAttr(struct GadOutline *, CMDID, ULONG, Tag, ULONG)
  1756.  
  1757.   FUNCTION
  1758.         Calls GO_GetCmdAttrsA() to retrieve the given tag.
  1759.  
  1760.   INPUTS
  1761.         GadOutline   - (struct GadOutline *) Allocated GadOutline.
  1762.         StdID        - (CMDID) ID of command to retrieve from.
  1763.         Flags        - (ULONG) Reserved.  Always set to zero.
  1764.         GetTag       - (Tag) Tag to retrieve.
  1765.         DefaultValue - (ULONG) Default value to supply if not found.
  1766.  
  1767.   RESULT
  1768.         Value - (ULONG) Value in tag or DefaultValue if it doesn't exist.
  1769.         go_LastReqReturn is non-zero if there was an error.
  1770.  
  1771.   TAGS
  1772.         
  1773.  
  1774.   EXAMPLE
  1775.         
  1776.  
  1777.   NOTES
  1778.         .
  1779.  
  1780.   BUGS
  1781.         .
  1782.  
  1783.   SEE ALSO
  1784.         GO_SetCmdAttrsA()
  1785. gadoutline.library/GO_GetCmdAttrsA         gadoutline.library/GO_GetCmdAttrsA
  1786.  
  1787.                                                       18 Jul 1993    09:15:20
  1788.   NAME
  1789.         GO_GetCmdAttrsA -- Retrieve the given command tags from a command.
  1790.  
  1791.  
  1792.   SYNOPSIS
  1793.         GO_GetCmdAttrsA(GadOutline, StdID, Flags, TagList)
  1794.                         A0          D0     D1     A1       
  1795.  
  1796.         void GO_GetCmdAttrsA(struct GadOutline *, CMDID, ULONG, 
  1797.                              struct TagItem *)
  1798.  
  1799.   FUNCTION
  1800.         Fills in the given tag list with the current command tag state of the
  1801.         command which has the given ID.  This essentially involves finding
  1802.         the command using GO_GetCmdInfo() and sending it a CHM_GETCMDATTR
  1803.         message with the given tag list.
  1804.         
  1805.         While the actual action performed is command-dependant, the standard
  1806.         hook will fill in the given tag list from its local command tags and
  1807.         then fill in any tags it understands with its current state
  1808.         information.
  1809.  
  1810.   INPUTS
  1811.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  1812.         StdID      - (CMDID) The ID of a single command to get tags from.
  1813.         Flags      - (ULONG) Reserved.  Always set to zero.
  1814.         TagList    - (struct TagItem *) Tags to retrieve.
  1815.  
  1816.   RESULT
  1817.         No return value.
  1818.         go_LastReqReturn is non-zero if there was an error.
  1819.  
  1820.   TAGS
  1821.         
  1822.  
  1823.   EXAMPLE
  1824.         
  1825.  
  1826.   NOTES
  1827.         None of the standard hooks currently copy their state into the
  1828.         supplied tags, so the only values you will get are what is in the
  1829.         command's tag list.  This means that you must supply all tags whose
  1830.         state you want to track when you allocate the GadOutline.
  1831.  
  1832.   BUGS
  1833.         .
  1834.  
  1835.   SEE ALSO
  1836.         GO_GetCmdAttr(), GO_SetCmdAttrsA(), GO_GetCmdInfo()
  1837. gadoutline.library/GO_GetCmdInfo             gadoutline.library/GO_GetCmdInfo
  1838.  
  1839.                                                       16 Jul 1993    15:56:17
  1840.   NAME
  1841.         GO_GetCmdInfo -- Find the CmdInfo structure with the given CmdID.
  1842.  
  1843.  
  1844.   SYNOPSIS
  1845.         Command = GO_GetCmdInfo(GadOutline, SearchID, PrevCmd)
  1846.                                 A0          D0        A1       
  1847.  
  1848.         struct CmdInfo *GO_GetCmdInfo(struct GadOutline *, CMDID, 
  1849.                                       struct CmdInfo *)
  1850.  
  1851.   FUNCTION
  1852.         This is the only defined way to extract a CmdInfo from a GadOutline.
  1853.         It can be used to find either a single command, or a group of
  1854.         commands with simlar IDs.
  1855.  
  1856.         A CmdID is a long-word quantity divided into 2 fields.  The lower
  1857.         12 bits are the StdID, an ID number unique to this single command.
  1858.         The upper 20 bits are the GrpID, which is used to describe groupings
  1859.         between similar commands and is itself divided into 2 parts, an 8
  1860.         bit CODE field and a 12 bit MASK.
  1861.  
  1862.         All commands must have a unique StdID, except for the special value
  1863.         of 0, which means "don't care."  The StdID is the primary method
  1864.         used to refer to commands, so any commands with an ID of 0 will be
  1865.         unable to be the object of TagLinks, hot keys, etc.
  1866.  
  1867.         The exact meaning placed on the GrpID is program-dependant.
  1868.         Typically, it will be used to do things like assign a MASK bit to
  1869.         commands that need to be disabled at the same time, so that this
  1870.         can be accomplished with a single call to GO_SetObjGrpAttrsA().
  1871.  
  1872.         When extracting a single CmdInfo from a GadOutline, this function
  1873.         is called with the ID value in SearchID and a NULL PrevCmd.  The
  1874.         StdID and MASK and CODE GrpIDs within the SearchID are each treated
  1875.         as independant search components; a zero in any of them is given the
  1876.         special meaning "match anything" and will be ignored during the
  1877.         search.  For a complete match to occur, ALL non-zero fields must
  1878.         identically match the command's assigned CmdID.  [Note that in this
  1879.         case each bit of the GrpID MASK is treated as a separate field.]
  1880.  
  1881.         So, to find a command assigned to a StdID, the SearchID will simply
  1882.         be the StdID; the GrpID portion of the search will be 0 to ignore
  1883.         whatever the command's GrpID may be.
  1884.  
  1885.         When searching for multiple commands, this function is first called
  1886.         with PrevCmd NULL, and then repetatively called with PrevCmd set
  1887.         to the value the previous call returned.  A NULL will be returned
  1888.         when all of the matching commands have been found.  In this case,
  1889.         you will likely want to set the StdID to 0; otherwise, you will
  1890.         only be returned the single StdID that matches the given SearchID.
  1891.  
  1892.         When searching for multiple commands using the GrpIDs, the CODE
  1893.         field behaves identically to a StdID, except that multiple commands
  1894.         may have the same CODE and all of those that match will be returned.
  1895.         The MASK field is a little bit different; each bit in the SearchID
  1896.         can be set or cleared to identify which bits you want to look for
  1897.         This, a SearchID with GO_GRPID_A will match commands with GrpIDs of
  1898.         GO_GRPID_A, GO_GRPID_A | GO_GRPID_B, etc.
  1899.  
  1900.   INPUTS
  1901.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  1902.         SearchID   - (CMDID) ID code(s) to search for.
  1903.         PrevCmd    - (struct CmdInfo *) Previous command that was found.
  1904.  
  1905.   RESULT
  1906.         Command - (struct CmdInfo *) The command that was found.
  1907.  
  1908.   TAGS
  1909.         
  1910.  
  1911.   EXAMPLE
  1912.         Assuming you have three commands in your GadOutline assigned:
  1913.         Cmd1: GO_CMDID( 0, 1 )
  1914.         Cmd2: GO_CMDID( GO_GRPID_A, 2 )
  1915.         Cmd3: GO_CMDID( GO_GRPID_A | GO_GRPID_B, 3 )
  1916.         Cmd4: GO_CMDID( GO_GRPID_A | 100, 4 )
  1917.         Cmd5: GO_CMDID( GO_GRPID_B | 100, 5 )
  1918.         Cmd6: GO_CMDID( GO_GRPID_A | GO_GRPID_B | 100, 6 )
  1919.         Cmd7: GO_CMDID( 0, 0 )
  1920.  
  1921.         A SearchID of 1 will return only Cmd1, of 2 only Cmd2, etc.
  1922.  
  1923.         A SearchID of GO_CMDID(GO_GRPID_B,0) will return Cmd3, Cmd5, Cmd6.
  1924.  
  1925.         GO_CMDID(GO_GRPID_A|GO_GRPID_A,0) will return Cmd3 and Cmd6.
  1926.  
  1927.         GO_CMDID(GO_GRPID_A|100,0) will return Cmd4 and Cmd6.
  1928.  
  1929.         GO_CMDID(0,0) will return all commands, including Cmd7.
  1930.  
  1931.  
  1932.         /* Tell every command to draw itself. */
  1933.  
  1934.         void draw_all(struct GadOutline *go)
  1935.         {
  1936.             struct CmdInfo *ci;
  1937.  
  1938.             ci = NULL;
  1939.             while( (ci = GO_GetCmdInfo(go,0,ci)) != NULL ) {
  1940.                 GO_CallCmdHook(ci,CHM_DRAWSELF,0);
  1941.             }
  1942.         }
  1943.  
  1944.   NOTES
  1945.         If multiple commands within the GadOutline have the same StdID,
  1946.         this function's behaviour is undefined and will likely change.
  1947.  
  1948.         The order that multiple commands are returned to you is currently
  1949.         not defined; do not depend on getting them in any particular order.
  1950.  
  1951.         Never change the SearchID you are using in the middle of finding
  1952.         a group of commands.
  1953.  
  1954.         When a CmdInfo is returned, it will be set as the current command
  1955.         for GO_InterpretTypedSize() and GO_ParseTypedSizeListA().
  1956.  
  1957.   BUGS
  1958.         .
  1959.  
  1960.   SEE ALSO
  1961.         GO_GetBoxAttr()
  1962. gadoutline.library/GO_GetErrorCode         gadoutline.library/GO_GetErrorCode
  1963.  
  1964.                                                       17 Jul 1993    04:06:22
  1965.   NAME
  1966.         GO_GetErrorCode -- Get GadOutline's current error code.
  1967.  
  1968.  
  1969.   SYNOPSIS
  1970.         Error = GO_GetErrorCode(GadOutline)
  1971.                                 A0          
  1972.  
  1973.         GOERR GO_GetErrorCode(struct GadOutline *)
  1974.  
  1975.   FUNCTION
  1976.         Extracts the current ErrorCode from the given GadOutline and
  1977.         returns it.
  1978.  
  1979.   INPUTS
  1980.         GadOutline - (struct GadOutline *) An allocated GadOutline.
  1981.  
  1982.   RESULT
  1983.         Error - (GOERR) The current error.
  1984.  
  1985.   TAGS
  1986.         
  1987.  
  1988.   EXAMPLE
  1989.         
  1990.  
  1991.   NOTES
  1992.         .
  1993.  
  1994.   BUGS
  1995.         .
  1996.  
  1997.   SEE ALSO
  1998.         GO_SetErrorA(), GO_GetErrorText(), GO_GetErrorObject(),
  1999.         GO_ShowErrorA()
  2000. gadoutline.library/GO_GetErrorObject     gadoutline.library/GO_GetErrorObject
  2001.  
  2002.                                                       17 Jul 1993    04:11:39
  2003.   NAME
  2004.         GO_GetErrorObject -- Returns the object of the current error code.
  2005.  
  2006.  
  2007.   SYNOPSIS
  2008.         Object = GO_GetErrorObject(GadOutline)
  2009.                                    A0          
  2010.  
  2011.         void *GO_GetErrorObject(struct GadOutline *)
  2012.  
  2013.   FUNCTION
  2014.         Returns the object attached to the GadOutline's current error
  2015.         code.  What this value actual is depends on the error code;
  2016.         The currently defined codes are:
  2017.  
  2018.         GOCODE_MEMORY - (ULONG) - the memory size needed.
  2019.         GOCODE_OPENLIB - (UBYTE *) - the name of the library.
  2020.         GOCODE_OPENFONT - (struct TextAttr *) - font trying to open.
  2021.         GOCODE_INTERR - (ULONG) - Internal error identifier.  Private.
  2022.         GOCODE_BADARGS - (ULONG) - Internal error identifier.  Private.
  2023.         GOCODE_OUTBOUNDS - (ULONG) - Offset from start of outline array.
  2024.         GOCODE_MALFORMED - (struct CmdInfo *) - Pointer to current command.
  2025.         GOCODE_NOBOXGROUP - (struct CmdInfo *) - Pointer to current command.
  2026.         GOCODE_UNKNOWNCMD - (struct CmdInfo *) - Pointer to current command.
  2027.         GOCODE_BADENDGRP - (struct CmdInfo *) - Pointer to current command.
  2028.         GOCODE_NOGROUPS - (struct CmdInfo *) - Pointer to current command.
  2029.         GOCODE_EXTRAROOTGRP - (struct CmdInfo *) - Pointer to current cmd.
  2030.         GOCODE_BADGROUP - (struct CmdInfo *) - Pointer to current command.
  2031.         GOCODE_BADHKCMD - (struct CmdInfo *) - Pointer to current command.
  2032.         GOCODE_CREATEOBJ - (struct CmdInfo *) - Pointer to current command.
  2033.         GOCODE_BADCMDID - (CMDID) - The given CmdID.
  2034.         GOCODE_DUPSTDID - (CMDID) - The given CmdID.
  2035.         GOCODE_NOCMDID - (CMDID) - The given CmdID.
  2036.         GOCODE_DUPHOTKEY - (UBYTE) - The requested hot key.
  2037.         GOCODE_BADTYPEDSIZE - (TYPEDSIZE) - The given TypedSize.
  2038.         GOCODE_OPENPUBSCRN - (UBYTE *) - Name of the public screen.
  2039.         GOCODE_VISUALINFO - (struct Screen *) - Screen tried to get from.
  2040.         GOCODE_DRAWINFO - (struct Screen *) - Screen tried to get from.
  2041.         GOCODE_OPENWIN - (struct TagItem *) - Window's tag list.
  2042.  
  2043.   INPUTS
  2044.         GadOutline - (struct GadOutline *) An allocated GadOutline.
  2045.  
  2046.   RESULT
  2047.         Object - (void *) Object attached to the current error.
  2048.  
  2049.   TAGS
  2050.         
  2051.  
  2052.   EXAMPLE
  2053.         
  2054.  
  2055.   NOTES
  2056.         .
  2057.  
  2058.   BUGS
  2059.         .
  2060.  
  2061.   SEE ALSO
  2062.         GO_SetErrorA(), GO_GetErrorCode(), GO_GetErrorText(),
  2063.         GO_ShowErrorA()
  2064. gadoutline.library/GO_GetErrorText         gadoutline.library/GO_GetErrorText
  2065.  
  2066.                                                       17 Jul 1993    04:08:20
  2067.   NAME
  2068.         GO_GetErrorText -- Get GadOutline's current error text.
  2069.  
  2070.  
  2071.   SYNOPSIS
  2072.         Description = GO_GetErrorText(GadOutline)
  2073.                                       A0          
  2074.  
  2075.         UBYTE *GO_GetErrorText(struct GadOutline *)
  2076.  
  2077.   FUNCTION
  2078.         Returns a string describing the current error code of the given
  2079.         GadOutline.  This is the string that is printed in the second
  2080.         line of an error requester, without the trailing '.'.
  2081.  
  2082.   INPUTS
  2083.         GadOutline - (struct GadOutline *) An allocate GadOutline.
  2084.  
  2085.   RESULT
  2086.         Description - (UBYTE *) A string descriping the current error.
  2087.  
  2088.   TAGS
  2089.         
  2090.  
  2091.   EXAMPLE
  2092.         
  2093.  
  2094.   NOTES
  2095.         .
  2096.  
  2097.   BUGS
  2098.         .
  2099.  
  2100.   SEE ALSO
  2101.         GO_SetErrorA(), GO_GetErrorCode(), GO_GetErrorObject(),
  2102.         GO_ShowErrorA()
  2103. gadoutline.library/GO_GetGOFromGOIMsg   gadoutline.library/GO_GetGOFromGOIMsg
  2104.  
  2105.                                                       18 Jul 1993    10:00:14
  2106.   NAME
  2107.         GO_GetGOFromGOIMsg -- Find the GadOutline this message belongs to.
  2108.  
  2109.  
  2110.   SYNOPSIS
  2111.         MsgGO = GO_GetGOFromGOIMsg(Message)
  2112.                                    A0       
  2113.  
  2114.         struct GadOutline *GO_GetGOFromGOIMsg(struct GOIMsg *)
  2115.  
  2116.   FUNCTION
  2117.         Returns the GadOutline that owns this message, ie the one that
  2118.         allocated it using GO_DupGOIMsg().  Note that this may not be the
  2119.         GadOutline that the original IntuiMessage is associated with,
  2120.         although this situation should be avoided and the library will never
  2121.         create a message like this without being explicately told to.
  2122.         
  2123.         Passing this function an IntuiMessage rather than an actual GOIMsg
  2124.         is allowed and will result in it falling back to GO_GetGOFromImsg().
  2125.  
  2126.   INPUTS
  2127.         Message - (struct GOIMsg *) A valid GadOutline message.
  2128.  
  2129.   RESULT
  2130.         MsgGO - (struct GadOutline *) The message's GadOutline.
  2131.  
  2132.   TAGS
  2133.         
  2134.  
  2135.   EXAMPLE
  2136.         
  2137.  
  2138.   NOTES
  2139.         .
  2140.  
  2141.   BUGS
  2142.         .
  2143.  
  2144.   SEE ALSO
  2145.         GO_GetGOFromIMsg(), GO_DupGOIMsg(), GO_GetGOIMsg()
  2146. gadoutline.library/GO_GetGOFromIMsg       gadoutline.library/GO_GetGOFromIMsg
  2147.  
  2148.                                                       18 Jul 1993    09:55:21
  2149.   NAME
  2150.         GO_GetGOFromIMsg -- Find the GadOutline associated with this message.
  2151.  
  2152.  
  2153.   SYNOPSIS
  2154.         MsgGO = GO_GetGOFromIMsg(Message)
  2155.                                  A0       
  2156.  
  2157.         struct GadOutline *GO_GetGOFromIMsg(struct IntuiMessage *)
  2158.  
  2159.   FUNCTION
  2160.         Retrieves the GadOutline that owns the window from which this
  2161.         IntuiMessage came.  The library uses the window's UserData
  2162.         field as a back-pointer to the GadOutline that is attached to the
  2163.         window, but you should call this function rather than directly
  2164.         accessing the field yourself.
  2165.  
  2166.   INPUTS
  2167.         Message - (struct IntuiMessage *) An IntuiMessage from Intuition.
  2168.  
  2169.   RESULT
  2170.         MsgGO - (struct GadOutline *) This message's window's GadOutline.
  2171.  
  2172.   TAGS
  2173.         
  2174.  
  2175.   EXAMPLE
  2176.         
  2177.  
  2178.   NOTES
  2179.         .
  2180.  
  2181.   BUGS
  2182.         .
  2183.  
  2184.   SEE ALSO
  2185.         GO_GetGOFromGOIMsg()
  2186. gadoutline.library/GO_GetGOIMsg               gadoutline.library/GO_GetGOIMsg
  2187.  
  2188.                                                       18 Jul 1993    13:41:22
  2189.   NAME
  2190.         GO_GetGOIMsg -- Retrieves next available GOIMsg.
  2191.  
  2192.  
  2193.   SYNOPSIS
  2194.         Message = GO_GetGOIMsg(GadOutline)
  2195.                                A0          
  2196.  
  2197.         struct GOIMsg *GO_GetGOIMsg(struct GadOutline *)
  2198.  
  2199.   FUNCTION
  2200.         Returns next message which the application should process.  Standard
  2201.         intuition messages will be retrieved from the GadOutline's message
  2202.         port pointed to by go_MsgPort using GadTools' GT_GetIMsg() function.
  2203.         This message will then be sent to GO_FilterGOIMsg() for processing
  2204.         and the result returned by this function.
  2205.  
  2206.         See GO_FilterGOIMsg() for more information.
  2207.         
  2208.   INPUTS
  2209.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  2210.  
  2211.   RESULT
  2212.         Message - (struct GOIMsg *) Next message to process.
  2213.         go_LastReqReturn is non-zero if there was an error.
  2214.  
  2215.   TAGS
  2216.         
  2217.  
  2218.   EXAMPLE
  2219.         
  2220.  
  2221.   NOTES
  2222.         .
  2223.  
  2224.   BUGS
  2225.         .
  2226.  
  2227.   SEE ALSO
  2228.         GO_DupGOIMsg(), GO_ReplyGOIMsg(), GO_FilterGOIMsg(),
  2229.         gadtools/GT_GetIMsg()
  2230. gadoutline.library/GO_GetObjAttr             gadoutline.library/GO_GetObjAttr
  2231.  
  2232.                                                       18 Jul 1993    09:38:45
  2233.   NAME
  2234.         GO_GetObjAttr -- Get the value of a single object tag.
  2235.  
  2236.  
  2237.   SYNOPSIS
  2238.         Value = GO_GetObjAttr(GadOutline, StdID, Flags, GetTag, DefaultValue)
  2239.                               A0          D0     D1     D2      D3 
  2240.  
  2241.         ULONG GO_GetObjAttr(struct GadOutline *, CMDID, ULONG, Tag, ULONG)
  2242.  
  2243.   FUNCTION
  2244.         Calls GO_GetObjAttrsA() to retrieve the given tag.
  2245.  
  2246.   INPUTS
  2247.         GadOutline   - (struct GadOutline *) Allocated GadOutline.
  2248.         StdID        - (CMDID) ID of command to retrieve from.
  2249.         Flags        - (ULONG) Reserved.  Always set to zero.
  2250.         GetTag       - (Tag) Tag to retrieve.
  2251.         DefaultValue - (ULONG) Default value to supply if not found.
  2252.  
  2253.   RESULT
  2254.         Value - (ULONG) Value in tag or DefaultValue if it doesn't exist.
  2255.         go_LastReqReturn is non-zero if there was an error.
  2256.  
  2257.   TAGS
  2258.         
  2259.  
  2260.   EXAMPLE
  2261.         
  2262.  
  2263.   NOTES
  2264.         .
  2265.  
  2266.   BUGS
  2267.         .
  2268.  
  2269.   SEE ALSO
  2270.         GO_SetCmdAttrsA()
  2271. gadoutline.library/GO_GetObjAttrsA         gadoutline.library/GO_GetObjAttrsA
  2272.  
  2273.                                                       18 Jul 1993    09:33:50
  2274.   NAME
  2275.         GO_GetObjAttrsA -- Retrieve the given object tags from a command.
  2276.  
  2277.  
  2278.   SYNOPSIS
  2279.         GO_GetObjAttrsA(GadOutline, StdID, Flags, TagList)
  2280.                         A0          D0     D1     A1       
  2281.  
  2282.         void GO_GetObjAttrsA(struct GadOutline *, CMDID, ULONG, 
  2283.                              struct TagItem *)
  2284.  
  2285.   FUNCTION
  2286.         Fills in the given tag list with the current object tag state of the
  2287.         command which has the given ID.  This essentially involves finding
  2288.         the command using GO_GetCmdInfo() and sending it a CHM_GETOBJATTR
  2289.         message with the given tag list.
  2290.         
  2291.         While the actual action performed is command-dependant, the standard
  2292.         hook will fill in the given tag list from its local objects tags.
  2293.         Higher-level hooks may fill in the tags with more information; for
  2294.         example, a BOOPSI hook may call GetAttrs() for each tag in the list.
  2295.  
  2296.   INPUTS
  2297.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  2298.         StdID      - (CMDID) The ID of a single command to get tags from.
  2299.         Flags      - (ULONG) Reserved.  Always set to zero.
  2300.         TagList    - (struct TagItem *) Tags to retrieve.
  2301.  
  2302.   RESULT
  2303.         No return value.
  2304.         go_LastReqReturn is non-zero if there was an error.
  2305.  
  2306.   TAGS
  2307.         
  2308.  
  2309.   EXAMPLE
  2310.         
  2311.  
  2312.   NOTES
  2313.         .
  2314.  
  2315.   BUGS
  2316.         .
  2317.  
  2318.   SEE ALSO
  2319.         GO_GetObjAttr(), GO_SetObjAttrsA(), GO_GetCmdInfo()
  2320. gadoutline.library/GO_InterpretTypedSizegadoutline.library/GO_InterpretTypedSize
  2321.  
  2322.                                                       16 Jul 1993    13:13:14
  2323.   NAME
  2324.         GO_InterpretTypedSize -- Return the value of a single TypedSize.
  2325.  
  2326.  
  2327.   SYNOPSIS
  2328.         Value = GO_InterpretTypedSize(GadOutline, CurrentValue, TypedSize)
  2329.                                       A0          D0            D1         
  2330.  
  2331.         LONG GO_InterpretTypedSize(struct GadOutline *, LONG, TYPEDSIZE)
  2332.  
  2333.   FUNCTION
  2334.         Computes the actual value for a typed size.  A typed size is a
  2335.         single ULONG quantity composed of three fields - the mode, type
  2336.         and quantity. The type is one of the GOT_* values and describes
  2337.         how to interpret the number in quantity.  For example,
  2338.         GOT_PercCharW is a type which says that the quantity is units of
  2339.         percentages of a character width. These two fields combined
  2340.         produce an absolute number, and the mode field then describes an
  2341.         operation to perform between this computed number and the previous
  2342.         one passed in CurrentValue.
  2343.  
  2344.         The various types available can be broken down into three major
  2345.         groups. The first are miscellaneous units based on global layout
  2346.         information - character width and height, layout minimum and
  2347.         maximum dimensions. The type GOT_Pixels uses the value as an
  2348.         absolute number and GOT_PercScale is used to scale the given
  2349.         CurrentValue by a percentage in the value field.
  2350.  
  2351.         The next group operates on text strings.  Types are provided to
  2352.         find the width and height of a text string, and the minimum,
  2353.         maximum and addition of these dimensions for multiple strings.  In
  2354.         addition, the strings can also be viewed in terms of characters
  2355.         and lines.
  2356.  
  2357.         Finally, the largest group is based on the dimensions of a
  2358.         command. The more important types are GOT_PercBoxW and
  2359.         GOT_PercBoxH, which provide the current complete size of the box;
  2360.         GOT_PercUnusedW and GOT_PercUnusedH are the amount of extra
  2361.         spacing assigned to a box which it has not used yet.  See the
  2362.         header file for a complete description of these types.
  2363.         
  2364.         A special type is GOT_BoxSize.  Its value field is not intepreted as
  2365.         a number, but rather the lower 12 bits are interpreted as the StdID
  2366.         of a BoxAttr's command and the upper 4 bits are used to identify a
  2367.         particular dimension of the box to extract.
  2368.  
  2369.         There are currently six modes available.  GOM_Set simply returns
  2370.         the computed type and value, and ignores CurrentValue.  GOM_Max
  2371.         returns the larger of the computed and given values while GOM_Min
  2372.         returns the smaller.  GOM_Add adds the two values together,
  2373.         GOM_Mul multiplies them, and GOM_Div divides the given
  2374.         CurrentValue by the newly computed value.
  2375.  
  2376.   INPUTS
  2377.         GadOutline   - (struct GadOutline *) Previously allocated GadOutline.
  2378.         CurrentValue - (LONG) The value to start out with.
  2379.         TypedSize    - (TYPEDSIZE) The typed size to interpret.
  2380.  
  2381.   RESULT
  2382.         Value - (LONG) The final computed result.
  2383.  
  2384.   TAGS
  2385.         
  2386.  
  2387.   EXAMPLE
  2388.         Assuming the current font is Topaz 8:
  2389.  
  2390.         GO_InterpretTypedSize(go, 20, GO_TSIZE(GOM_Set,100,GOT_Pixels))
  2391.             ==> 100
  2392.         GO_InterpretTypedSize(go, 20, GO_TSIZE(GOM_Set,100,GOT_PercCharH))
  2393.             ==> 8
  2394.         GO_InterpretTypedSize(go, 20, GO_TSIZE(GOM_Add,100,GOT_PercCharH))
  2395.             ==> 28
  2396.         GO_InterpretTypedSize(go, 20, GO_TSIZE(GOM_Add,-100,GOT_PercCharH))
  2397.             ==> 12
  2398.         GO_InterpretTypedSize(go, 20, GO_TSIZE(GOM_Max,100,GOT_Pixels))
  2399.             ==> 100
  2400.         GO_InterpretTypedSize(go, 20, GO_TSIZE(GOM_Min,100,GOT_Pixels))
  2401.             ==> 20
  2402.  
  2403.   NOTES
  2404.         To do a subtraction, use GOM_Add and a negative value field.
  2405.  
  2406.         The upper bits of the mode field, which flag the particular SPC, PAD
  2407.         and VAR components to modify, are ignored by this function except
  2408.         when using complex units, which can have different values for each
  2409.         of the components.
  2410.  
  2411.         Many of the types depend on previously set state information.  In
  2412.         particular, all of the ones that refer to various dimensions of a
  2413.         command's BoxAttr need to know which command to look at.  If you
  2414.         are calling this function within a user hook, this value will
  2415.         always have been set to point to your command.  Otherwise, you can
  2416.         explicately set the current command by calling GO_GetCmdInfo()
  2417.         with the ID of the command you want to look at.
  2418.  
  2419.         The text size types - GOT_PercText* - need to have one or more
  2420.         text strings to refer to.  These can be set by calling
  2421.         GO_ParseTypedSizeListA() with the appropriate tags; they will
  2422.         remain in context for subsequent calls to GO_InterpretTypedSize().
  2423.  
  2424.   BUGS
  2425.         .
  2426.  
  2427.   SEE ALSO
  2428.         GO_ParseTypedSizeListA(), GO_GetCmdInfo(), <libraries/gadoutline.h>
  2429. gadoutline.library/GO_OpenLibrary           gadoutline.library/GO_OpenLibrary
  2430.  
  2431.                                                       16 Jul 1993    15:35:50
  2432.   NAME
  2433.         GO_OpenLibrary -- Open a standard system library.
  2434.  
  2435.  
  2436.   SYNOPSIS
  2437.         LibBase = GO_OpenLibrary(GadOutline, ErrReport, Name, Version)
  2438.                           A0          D0         A1    D1       
  2439.  
  2440.         struct Library *GO_OpenLibrary(struct GadOutline *, GOERR, UBYTE *, 
  2441.                                        ULONG)
  2442.  
  2443.   FUNCTION
  2444.         Opens the specified library and returns its base address.  This
  2445.         library is NOT currently tracked by the system; you will have to
  2446.         free it yourself.
  2447.  
  2448.         ErrReport specifies what to do if the library can not be opened.
  2449.         If it is 0, the library will simply return NULL.  Otherwise, it
  2450.         is interpreted as a standard error code and the library will call
  2451.         GO_SetError() with the given error if unable to open the library.
  2452.         If the selected error has a RETRY choice, the library will attempt
  2453.         to open it if this is selected; if it is then able to get it, the
  2454.         caller will never know there was a problem.
  2455.  
  2456.         A shortcut is provided in specifying the error.  If the error
  2457.         type field is zero, the library will interpret the code field
  2458.         as the type and automatically use the library code - ie,
  2459.         GO_MAKEERR(GETERRCODE(ErrReport),GOCODE_OPENLIB).
  2460.  
  2461.   INPUTS
  2462.         GadOutline - (struct GadOutline *) Allocate GadOutline or NULL.
  2463.         ErrReport  - (GOERR) Error to report if the allocation fails.
  2464.         Name       - (UBYTE *) Name of the library to open.
  2465.         Version    - (ULONG) Minimum version of the library.
  2466.  
  2467.   RESULT
  2468.         LibBase - (struct Library *) The base address of the library or NULL.
  2469.         go_LastReqReturn is non-zero if an error occured.
  2470.  
  2471.   TAGS
  2472.         
  2473.  
  2474.   EXAMPLE
  2475.         
  2476.  
  2477.   NOTES
  2478.         While the library is not currently tracked and closed when
  2479.         FreeGadOutline() is called, this may be added in the future, so
  2480.         always be sure to call GO_CloseLibrary() before freeing a
  2481.         GadOutline used with GO_OpenLibrary().
  2482.  
  2483.   BUGS
  2484.         .
  2485.  
  2486.   SEE ALSO
  2487.         GO_SetErrorA(), GO_ShowErrorA(), GO_CloseLibrary()
  2488. gadoutline.library/GO_OpenScreenA           gadoutline.library/GO_OpenScreenA
  2489.  
  2490.                                                       18 Jul 1993    04:27:18
  2491.   NAME
  2492.         GO_OpenScreenA -- GadOutline open screen interface.
  2493.  
  2494.  
  2495.   SYNOPSIS
  2496.         Screen = GO_OpenScreenA(GadOutline, TagList)
  2497.                                 A0          A1       
  2498.  
  2499.         struct Screen *GO_OpenScreenA(struct GadOutline *, struct TagItem *)
  2500.  
  2501.   FUNCTION
  2502.         Not currently implemented.
  2503.  
  2504.         The general algorithm for doing a font-sensitive OpenScreen() is:
  2505.  
  2506.         - AllocGadOutline()
  2507.         - DimenGadOutline() with the DisplayID and overscan mode you will be
  2508.           using, and any other information you care about such as font
  2509.           preferece.
  2510.         - OpenScreen() with the resulting font in go_TextAttr (NOTE: You
  2511.           must make a copy of this to use, as there is no guarantee that it
  2512.           will not change.)
  2513.         - GO_OpenWindow() on the new screen.
  2514.  
  2515.   INPUTS
  2516.         GadOutline - (struct GadOutline *) Allocate GadOutline.
  2517.         TagList    - (struct TagItem *) Standard screen tags (SA_*).
  2518.  
  2519.   RESULT
  2520.         Screen - (struct Screen *) A newly opened screen or NULL.
  2521.         go_LastReqReturn is non-zero if there was an error.
  2522.  
  2523.   TAGS
  2524.         
  2525.  
  2526.   EXAMPLE
  2527.         
  2528.  
  2529.   NOTES
  2530.         .
  2531.  
  2532.   BUGS
  2533.         .
  2534.  
  2535.   SEE ALSO
  2536.         GO_OpenWindowA(), GO_CloseScreen(), intuition/OpenScreen()
  2537. gadoutline.library/GO_OpenWindowA           gadoutline.library/GO_OpenWindowA
  2538.  
  2539.                                                       18 Jul 1993    04:38:30
  2540.   NAME
  2541.         GO_OpenWindowA -- GadOutline open window interface.
  2542.  
  2543.  
  2544.   SYNOPSIS
  2545.         Window = GO_OpenWindowA(GadOutline, TagList)
  2546.                                 A0          A1       
  2547.  
  2548.         struct Window *GO_OpenWindowA(struct GadOutline *, struct TagItem *)
  2549.  
  2550.   FUNCTION
  2551.         Opens a window and attaches it to the given GadOutline.  The tags
  2552.         passed to OpenWindow() are the combination of the tag list passed to
  2553.         the function and the object tags of a GO_WINDOWTAGS() command within
  2554.         the outline, if it is supplied.  If a tag appears in both the
  2555.         GO_OpenWindowA() list and GO_WINDOWTAGS() list, the former will
  2556.         override the later.
  2557.         
  2558.         The screen to open the window on is derived in the following way:
  2559.         
  2560.         WA_PubScreen will be sent to DimenGadOutlineA() as GOA_ScreenAddr;
  2561.         the resulting screen in go_Screen will be used in the WA_PubScreen
  2562.         tag.
  2563.  
  2564.         WA_CustomScreen will be sent to DimenGadOutlineA() as GOA_ScreenAddr;
  2565.         the resulting screen in go_Screen will be used in the
  2566.         WA_CustomScreen tag.
  2567.         
  2568.         WA_PubScreenName and WA_PubScreenFallBack will be sent to
  2569.         DimenGadOutlineA() as GOA_ScreenName and GOA_ScreenFallBack.  If
  2570.         WA_PubScreen is not supplied, GOA_ScreenFallBack will be FALSE.  The
  2571.         resulting screen will then be used in a WA_PubScreen tag and the
  2572.         original WA_PubScreenName is removed from the tag list.
  2573.  
  2574.         If none of these tags are present, the window will be opened on the
  2575.         current screen attached to the GadOutline.  If no screen is attached,
  2576.         DimenGadOutlineA() with { GOA_ScreenAddr, NULL } will be called to
  2577.         attempt to lock the default public screen.  In either case, the
  2578.         screen address will be passed using WA_PublicScreen if it is a
  2579.         public screen the library has a lock on, or WA_CustomScreen if it
  2580.         was attached to the GadOutline using a non-NULL GOA_ScreenAddr.
  2581.  
  2582.         If any error has occured at this point, any screen will be detached
  2583.         from the GadOutline and a NULL will be returned.
  2584.         
  2585.         The window's default dimensions are determined by the
  2586.         GOA_WindowRelative flag; if non-NULL the default width and height
  2587.         will be the current minimum inner width of the layout (or full width
  2588.         if WA_AutoAdjust is FALSE) and the left and top edges will be set
  2589.         such that the window is positioned within the screen's current
  2590.         viewable area and not obscuring its title bar.  Otherwise, they will
  2591.         all be initialized to zero.
  2592.         
  2593.         These default dimensions are then modified by the following tags:
  2594.         
  2595.         WA_InnerWidth will be added to the window's default width.  If not
  2596.         specified and GOA_SaveWinDimens is TRUE, the previous width of the
  2597.         window will be used.
  2598.         
  2599.         WA_InnerHeight will be added to the window's default height.  If not
  2600.         specified and GOA_SaveWinDimens is TRUE, the previous height of the
  2601.         window will be used.
  2602.         
  2603.         WA_Width and WA_Height will completely override the default width
  2604.         and height.
  2605.         
  2606.         WA_Left will be added to the window's default left edge.  If not
  2607.         specified and GOA_SaveWinDimens is TRUE, the previous left edge of
  2608.         the window will be used.
  2609.         
  2610.         WA_Top will be added to the window's default top edge.  If not
  2611.         specified and GOA_SaveWinDimens is TRUE, the previous top edge of
  2612.         the window will be used.
  2613.         
  2614.         The rest of the tags are passed as-is to OpenWindow(), except for
  2615.         the following modifications:
  2616.         
  2617.         WA_AutoAdjust will be TRUE by default.  You must explicately set it
  2618.         to FALSE if this is not what you want.
  2619.         
  2620.         WA_MinWidth and WA_MinHeight will, if not specified, be set to the
  2621.         minimum dimensions of the layout.
  2622.         
  2623.         WA_MaxWidth and WA_MaxHeight will, if not specified, be set to ~0.
  2624.         
  2625.         WA_IDCMP may will have additional flags added to it if
  2626.         GOA_AddOutlineIDCMP or GOA_AddObjectIDCMP are TRUE.  If a custom IDCMP
  2627.         has been requested with GOA_UserIDCMP, the window will be opened with
  2628.         this tag set to zero, then port attached to it, and ModifyIDCMP()
  2629.         then called to set the correct value.
  2630.         
  2631.         The window will then be opened and attached to the GadOutline using
  2632.         DimenGadOutlineA() and GOA_WindowAddr.  If either the window can not
  2633.         be opened or there is an error when attaching it, it will be closed
  2634.         and a NULL returned.
  2635.         
  2636.         If the window is opened successfully, any menu strip will be layed
  2637.         out and attached to it and the address of the window will be
  2638.         returned.  Note that you should normally only use this return value
  2639.         as a TRUE/FALSE indicator of whether the function call was
  2640.         successfull, and use the address in go_Window to reference the
  2641.         actual window.
  2642.         
  2643.   INPUTS
  2644.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  2645.         TagList    - (struct TagItem *) Window's tags (WA_*).
  2646.  
  2647.   RESULT
  2648.         Window - (struct Window *) The resulting window or NULL.
  2649.         go_LastReqReturn is non-zero if there was an error.
  2650.  
  2651.   TAGS
  2652.         
  2653.  
  2654.   EXAMPLE
  2655.         
  2656.  
  2657.   NOTES
  2658.         .
  2659.  
  2660.   BUGS
  2661.         The additional size of the window's borders are not taken into
  2662.         account when it has a sizing gadget.
  2663.  
  2664.   SEE ALSO
  2665.         GO_CloseWindow(), UpdateGadOutlineA()
  2666. gadoutline.library/GO_ParseGOIMsgA         gadoutline.library/GO_ParseGOIMsgA
  2667.  
  2668.                                                       18 Jul 1993    11:09:10
  2669.   NAME
  2670.         GO_ParseGOIMsgA -- Perform standard actions for a message.
  2671.  
  2672.  
  2673.   SYNOPSIS
  2674.         GO_ParseGOIMsgA(GadOutline, StdID, Message, TagList)
  2675.                         A0          D0     A1       A2       
  2676.  
  2677.         void GO_ParseGOIMsgA(struct GadOutline *, CMDID, struct GOIMsg *, 
  2678.                              struct TagItem *)
  2679.  
  2680.   FUNCTION
  2681.         This function is used internally by the library and should not
  2682.         currently be called by a user program.
  2683.  
  2684.   INPUTS
  2685.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  2686.         StdID      - (CMDID) (optional) Command to send message to.
  2687.         Message    - (struct GOIMsg *) Standard message.
  2688.         TagList    - (struct TagItem *) Control tags.
  2689.  
  2690.   RESULT
  2691.         nothing.
  2692.         go_LastReqReturn is non-zero if there was an error.
  2693.  
  2694.   TAGS
  2695.         
  2696.  
  2697.   EXAMPLE
  2698.         
  2699.  
  2700.   NOTES
  2701.         .
  2702.  
  2703.   BUGS
  2704.         .
  2705.  
  2706.   SEE ALSO
  2707.         GO_GetGOIMsg(), GO_FilterGOIMsg()
  2708. gadoutline.library/GO_ParseTypedSizeListAgadoutline.library/GO_ParseTypedSizeListA
  2709.  
  2710.                                                       16 Jul 1993    14:07:08
  2711.   NAME
  2712.         GO_ParseTypedSizeListA -- Compute a complete TypedSize tag list.
  2713.  
  2714.  
  2715.   SYNOPSIS
  2716.         Value = GO_ParseTypedSizeListA(GadOutline, CurrentValue,
  2717.                                        A0          D0
  2718.                                        TypedSizeTags)
  2719.                                        A1
  2720.  
  2721.         LONG GO_ParseTypedSizeListA(struct GadOutline *, LONG,
  2722.                                     struct TagItem *)
  2723.  
  2724.   FUNCTION
  2725.         Interprets all of a complete list of TypedSize tags.  CurrentValue
  2726.         provides the initial value for the list; it is then successively
  2727.         modified by the TypedSize tags in the list.
  2728.  
  2729.         This routine is essentially like successively calling
  2730.         GO_InterpretTypedSize() and providing the result of one call to the
  2731.         CurrentValue parameter of the next.  However, it also allows text
  2732.         strings to be examined using the GOCT_Text* and GOCT_MoreText*
  2733.         tags.  Each TypedSize is provided in the ti_Data field of a
  2734.         GOCT_SizeParse tag.
  2735.  
  2736.   INPUTS
  2737.         GadOutline    - (struct GadOutline *) Allocated GadOutline.
  2738.         CurrentValue  - (LONG) The initial value for the parse.
  2739.         TypedSizeTags - (struct TagItem *) TypedSize and control tag list.
  2740.  
  2741.   RESULT
  2742.         Value - (LONG) The final size computed.
  2743.  
  2744.   TAGS
  2745.         
  2746.  
  2747.   EXAMPLE
  2748.         Assuming Topaz 8:
  2749.  
  2750.         GO_ParseTypedSize(go,0,
  2751.                 GOCT_TextPtr,   "1234567890",
  2752.                 GOCT_SizeParse, GO_TSIZE(GOM_Set,1000,GOT_PercTextMaxW),
  2753.                 GOCT_SizeParse, GO_TSIZE(GOM_Add,100,GOT_PercTextMaxH),
  2754.                 TAG_END);
  2755.         ==> 808
  2756.  
  2757.   NOTES
  2758.         See the notes for GO_InterpretTypedSize().
  2759.         
  2760.         All standard tags - TAG_MORE, TAG_SKIP, etc. - can be used.
  2761.  
  2762.   BUGS
  2763.         .
  2764.  
  2765.   SEE ALSO
  2766.         GO_InterpretTypedSize()
  2767. gadoutline.library/GO_PostFilterGOIMsg gadoutline.library/GO_PostFilterGOIMsg
  2768.  
  2769.                                                       18 Jul 1993    13:37:07
  2770.   NAME
  2771.         GO_PostFilterGOIMsg -- Finishes special processing of a GOIMsg.
  2772.  
  2773.  
  2774.   SYNOPSIS
  2775.         OldMsg = GO_PostFilterGOIMsg(Message)
  2776.                                      A0       
  2777.  
  2778.         struct IntuiMessage *GO_PostFilterGOIMsg(struct GOIMsg *)
  2779.  
  2780.   FUNCTION
  2781.         Releases the GOIMsg back to the library and returns the original
  2782.         IntuiMessage to be sent to GadTools and reply'd.  Additional message
  2783.         processing is performed at this time, primarily dealing with
  2784.         tracking IDCMP_NEWSIZE and IDCMP_SIZEVERIFY messages.
  2785.         
  2786.         A NULL OldMsg will be returned if the given GOIMsg was generated
  2787.         solely by the library.
  2788.  
  2789.         This is similar to GadTools' GT_FilterIMsg().
  2790.  
  2791.   INPUTS
  2792.         Message - (struct GOIMsg *) Message returned from GO_FilterGOIMsg().
  2793.  
  2794.   RESULT
  2795.         OldMsg - (struct IntuiMessage *) Original GadTools/Intuition message.
  2796.         go_LastReqReturn is non-zero if there was an error.
  2797.  
  2798.   TAGS
  2799.         
  2800.  
  2801.   EXAMPLE
  2802.         
  2803.  
  2804.   NOTES
  2805.         This function does not call GT_PostFilterIMsg().
  2806.  
  2807.   BUGS
  2808.         .
  2809.  
  2810.   SEE ALSO
  2811.         GO_FilterGOIMsg(), GO_ReplyGOIMsg(), gadtools/GT_PostFilterIMsg()
  2812. gadoutline.library/GO_ReplyGOIMsg           gadoutline.library/GO_ReplyGOIMsg
  2813.  
  2814.                                                       18 Jul 1993    14:18:05
  2815.   NAME
  2816.         GO_ReplyGOIMsg -- Reply messages retrieved with GO_GetGOIMsg().
  2817.  
  2818.  
  2819.   SYNOPSIS
  2820.         GO_ReplyGOIMsg(Message)
  2821.                        A0       
  2822.  
  2823.         void GO_ReplyGOIMsg(struct GOIMsg *)
  2824.  
  2825.   FUNCTION
  2826.         Finishes processing of a message and replies using GT_ReplyIMsg().
  2827.  
  2828.   INPUTS
  2829.         Message - (struct GOIMsg *) Message returned by GO_GetGOIMsg().
  2830.  
  2831.   RESULT
  2832.         nothing.
  2833.         go_LastReqReturn is non-zero if there was an error.
  2834.  
  2835.   TAGS
  2836.         
  2837.  
  2838.   EXAMPLE
  2839.         
  2840.  
  2841.   NOTES
  2842.         .
  2843.  
  2844.   BUGS
  2845.         .
  2846.  
  2847.   SEE ALSO
  2848.         GO_DupGOIMsg(), GO_GetGOIMsg(), GO_PostFilterGOIMsg(),
  2849.         gadtools/GT_ReplyIMsg()
  2850.         
  2851. gadoutline.library/GO_SetCmdAttrsA         gadoutline.library/GO_SetCmdAttrsA
  2852.  
  2853.                                                       18 Jul 1993    08:41:44
  2854.   NAME
  2855.         GO_SetCmdAttrsA -- Modify a command's command tag list.
  2856.  
  2857.  
  2858.   SYNOPSIS
  2859.         GO_SetCmdAttrsA(GadOutline, CmdID, Flags, TagList)
  2860.                         A0          D0     D1     A1       
  2861.  
  2862.         void GO_SetCmdAttrsA(struct GadOutline *, CMDID, ULONG, 
  2863.                              struct TagItem *)
  2864.  
  2865.   FUNCTION
  2866.         Changes the command tag list (ie, the first tag list) of the
  2867.         command(s) with the given CmdID.  This is identical to
  2868.         GO_SetCmdGrpAttrsA(), except that a CmdID of 0 will result in no
  2869.         commands being changed rather than all of them, providing some
  2870.         protection against accidentally using a StdID of 0.
  2871.         
  2872.         While this function can be used with a non-zero group ID and
  2873.         multiple commands, GO_SetCmdGrpAttrsA() is the recomended interface
  2874.         for these types of operations.
  2875.  
  2876.   INPUTS
  2877.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  2878.         CmdID      - (CMDID) ID pattern of command(s) to change.
  2879.         Flags      - (ULONG) Reserved.  Always set to zero.
  2880.         TagList    - (struct TagItem *) Tags to change.
  2881.  
  2882.   RESULT
  2883.         No return value.
  2884.         go_LastReqReturn is non-zero if there was an error.
  2885.  
  2886.   TAGS
  2887.         
  2888.  
  2889.   EXAMPLE
  2890.         
  2891.  
  2892.   NOTES
  2893.         .
  2894.  
  2895.   BUGS
  2896.         .
  2897.  
  2898.   SEE ALSO
  2899.         GO_SetCmdGrpAttrsA()
  2900. gadoutline.library/GO_SetCmdGrpAttrsA   gadoutline.library/GO_SetCmdGrpAttrsA
  2901.  
  2902.                                                       18 Jul 1993    08:56:10
  2903.   NAME
  2904.         GO_SetCmdGrpAttrsA -- Modify one or more commands' command tag list.
  2905.  
  2906.  
  2907.   SYNOPSIS
  2908.         GO_SetCmdGrpAttrsA(GadOutline, CmdID, Flags, TagList)
  2909.                            A0          D0     D1     A1       
  2910.  
  2911.         void GO_SetCmdGrpAttrsA(struct GadOutline *, CMDID, ULONG, 
  2912.                                 struct TagItem *)
  2913.  
  2914.   FUNCTION
  2915.         Changes the command tag list (ie, the first tag list) of the
  2916.         command(s) with the given CmdID.  This essentially involves sending
  2917.         a CHM_SETCMDATTR message to every CmdInfo returned by calling
  2918.         GO_GetCmdInfo() with the given CmdID.
  2919.         
  2920.         The exact interpretation of this operation is command-dependant;
  2921.         however, the standard hook will copy all of the supplied tags into
  2922.         its local tag list and update its internal flags to reflect these
  2923.         new values.
  2924.  
  2925.         If you are specifically changing only one command,
  2926.         GO_SetCmdAttrsA() is the recomended function to use.
  2927.  
  2928.   INPUTS
  2929.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  2930.         CmdID      - (CMDID) ID pattern of command(s) to change.
  2931.         Flags      - (ULONG) Reserved.  Always set to zero.
  2932.         TagList    - (struct TagItem *) Tags to change.
  2933.  
  2934.   RESULT
  2935.         No return value.
  2936.         go_LastReqReturn is non-zero if there was an error.
  2937.  
  2938.   TAGS
  2939.         
  2940.  
  2941.   EXAMPLE
  2942.         
  2943.  
  2944.   NOTES
  2945.         .
  2946.  
  2947.   BUGS
  2948.         .
  2949.  
  2950.   SEE ALSO
  2951.         GO_GetCmdInfo(), GO_SetCmdAttrsA(), GO_GetCmdAttrsA()
  2952. gadoutline.library/GO_SetErrorA               gadoutline.library/GO_SetErrorA
  2953.  
  2954.                                                       17 Jul 1993    03:02:36
  2955.   NAME
  2956.         GO_SetErrorA -- Set a GadOutline's error code.
  2957.  
  2958.  
  2959.   SYNOPSIS
  2960.         Return = GO_SetErrorA(GadOutline, ErrorCode, ErrorObject, Params)
  2961.                               A0          D0         A1           A2      
  2962.  
  2963.         ULONG GO_SetErrorA(struct GadOutline *, GOERR, void *, UBYTE **)
  2964.  
  2965.   FUNCTION
  2966.         Sets the current error code and error object of the given outline
  2967.         to ErrorCode and ErrorObject; writes variables pointed to by
  2968.         GOA_ErrorCode and GOA_ErrorText tags, if they are non-NULL, to these
  2969.         new values.  If the bit corresponding to this error type in the
  2970.         GOA_ErrorReportLevel tag is set, the error will then be displayed
  2971.         by calling GO_ShowErrorA(GadOutline,NULL,NULL,Params).  The value
  2972.         returned will be put in go_LastReqReturn and returned to the caller.
  2973.  
  2974.         If the error report bit for this error type is cleared, this same
  2975.         bit will then be checked in the tag GOA_ErrorFailLevel.  If it is
  2976.         1, the function will return GORET_FAIL, otherwise GORET_CONT will
  2977.         be returned.  In either case, no error will be reported to the
  2978.         user.
  2979.  
  2980.         An error code of 0 will clear any errors and set go_LastReqReturn
  2981.         to GORET_CONT.
  2982.  
  2983.         If GadOutline is NULL, this function will just call GO_ShowErrorA()
  2984.         with the given parameters.
  2985.  
  2986.   INPUTS
  2987.         GadOutline  - (struct GadOutline *) Allocated GadOutline or NULL.
  2988.         ErrorCode   - (GOERR) Error code and type to set.
  2989.         ErrorObject - (void *) Error code dependant object.
  2990.         Params      - (UBYTE **) Optional additional text to display.
  2991.  
  2992.   RESULT
  2993.         Return - (ULONG) One of GORET_CONT, GORET_RETRY or GORET_FAIL.
  2994.  
  2995.   TAGS
  2996.         
  2997.  
  2998.   EXAMPLE
  2999.         
  3000.  
  3001.   NOTES
  3002.         'Params' will only be used if an error is displayed automatically by
  3003.         this function.  If you have an error type turned off and, after it
  3004.         occurs, show it yourself by calling GO_ShowErrorA(go,NULL,NULL,NULL),
  3005.         any additional text that was attached to it will not be displayed.
  3006.  
  3007.         The library at some points needs to turn off errors while executing
  3008.         internally.  You should never notice this within your main program,
  3009.         but it may be in this state when calling a user hook, especially
  3010.         when sending CHM_UNHOOKOBJ and CHM_DESTROYOBJ messages.  You should
  3011.         never create errors from these messages (or any other message that
  3012.         frees resources), so this shouldn't be a problem.
  3013.  
  3014.         Be careful about how you mark error type failures for any you turn
  3015.         off.  In general, you should never mark a type as a failure if it
  3016.         does not a have a fail button, or mark types without a continue
  3017.         button as non-failures.  This means that types GOTYPE_FAIL and
  3018.         GOTYPE_ALERT should always be failures, GOTYPE_WARN and GOTYPE_NOTE
  3019.         can be either, and GOTYPE_FINE should never be a failure.
  3020.  
  3021.         Library errors are generally divided into the primary type (ie,
  3022.         GOTYPE_WARN) being a system error, the second type (ie,
  3023.         GOTYPE_WARN2) being programmer debugging errors (such as having
  3024.         a non-unique StdID in an outline), and the third type (ie,
  3025.         GOTYPE_WARN3) being library debugging errors.  You will usually
  3026.         want to have all primary and secondary errors reported during
  3027.         program development so that you can catch errors in your outline
  3028.         definition and other problems.  It is perfectly fine to always leave
  3029.         these on, although there may be times that you need to turn them
  3030.         off in a release version if you need to keep the library from
  3031.         complaining about something like assigning a hotkey that is already
  3032.         attached to another command.
  3033.  
  3034.   BUGS
  3035.         .
  3036.  
  3037.   SEE ALSO
  3038.         GO_ShowErrorA(), GO_GetErrorCode(), GO_GetErrorText(),
  3039.         GO_GetErrorObject()
  3040. gadoutline.library/GO_SetObjAttrsA         gadoutline.library/GO_SetObjAttrsA
  3041.  
  3042.                                                       18 Jul 1993    09:07:58
  3043.   NAME
  3044.         GO_SetObjAttrsA -- Modify a command's object tag list.
  3045.  
  3046.  
  3047.   SYNOPSIS
  3048.         GO_SetObjAttrsA(GadOutline, CmdID, Flags, TagList)
  3049.                         A0          D0     D1     A1       
  3050.  
  3051.         void GO_SetObjAttrsA(struct GadOutline *, CMDID, ULONG, 
  3052.                              struct TagItem *)
  3053.  
  3054.   FUNCTION
  3055.         Changes the object tag list (ie, the second tag list) of the
  3056.         command(s) with the given CmdID.  This is identical to
  3057.         GO_SetObjGrpAttrsA(), except that a CmdID of 0 will result in no
  3058.         commands being changed rather than all of them, providing some
  3059.         protection against accidentally using a StdID of 0.
  3060.         
  3061.         While this function can be used with a non-zero group ID and
  3062.         multiple commands, GO_SetObjGrpAttrsA() is the recomended interface
  3063.         for these types of operations.
  3064.  
  3065.   INPUTS
  3066.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  3067.         CmdID      - (CMDID) ID pattern of command(s) to change.
  3068.         Flags      - (ULONG) Reserved.  Always set to zero.
  3069.         TagList    - (struct TagItem *) Tags to change.
  3070.  
  3071.   RESULT
  3072.         No return value.
  3073.         go_LastReqReturn is non-zero if there was an error.
  3074.  
  3075.   TAGS
  3076.         
  3077.  
  3078.   EXAMPLE
  3079.         
  3080.  
  3081.   NOTES
  3082.         This command is not fully supported while in an unhooked state.
  3083.  
  3084.   BUGS
  3085.         .
  3086.  
  3087.   SEE ALSO
  3088.         GO_SetObjGrpAttrsA(), UnhookGadOutlineA()
  3089. gadoutline.library/GO_SetObjGrpAttrsA   gadoutline.library/GO_SetObjGrpAttrsA
  3090.  
  3091.                                                       18 Jul 1993    09:10:30
  3092.   NAME
  3093.         GO_SetObjGrpAttrsA -- Modify one or more commands' object tag list.
  3094.  
  3095.  
  3096.   SYNOPSIS
  3097.         GO_SetObjGrpAttrsA(GadOutline, CmdID, Flags, TagList)
  3098.                            A0          D0     D1     A1       
  3099.  
  3100.         void GO_SetObjGrpAttrsA(struct GadOutline *, CMDID, ULONG, 
  3101.                                 struct TagItem *)
  3102.  
  3103.   FUNCTION
  3104.         Changes the object tag list (ie, the first tag list) of the
  3105.         command(s) with the given CmdID.  This essentially involves sending
  3106.         a CHM_SETOBJATTR message to every CmdInfo returned by calling
  3107.         GO_GetCmdInfo() with the given CmdID.
  3108.         
  3109.         The exact interpretation of this operation is command-dependant;
  3110.         however, the standard hook will copy all of the supplied tags into
  3111.         its local tag list and update its object to update these new flags.
  3112.         For example, the standard GadTools hook calls GT_SetGadAttrs() with
  3113.         the given tag list.  Depending on the command and tags specified,
  3114.         this may cause the object to update its current imagery.
  3115.  
  3116.         If you are specifically changing only one command,
  3117.         GO_SetObjAttrsA() is the recomended function to use.
  3118.  
  3119.   INPUTS
  3120.         GadOutline - (struct GadOutline *) Allocated GadOutline.
  3121.         CmdID      - (CMDID) ID pattern of command(s) to change.
  3122.         Flags      - (ULONG) Reserved.  Always set to zero.
  3123.         TagList    - (struct TagItem *) Tags to change.
  3124.  
  3125.   RESULT
  3126.         No return value.
  3127.         go_LastReqReturn is non-zero if there was an error.
  3128.  
  3129.   TAGS
  3130.         
  3131.  
  3132.   EXAMPLE
  3133.         
  3134.  
  3135.   NOTES
  3136.         This command is not fully supported while in an unhooked state.
  3137.  
  3138.   BUGS
  3139.         .
  3140.  
  3141.   SEE ALSO
  3142.         GO_GetCmdInfo(), GO_SetObjAttrsA(), GO_GetObjAttrsA(),
  3143.         UnhookGadOutlineA()
  3144. gadoutline.library/GO_ShowErrorA             gadoutline.library/GO_ShowErrorA
  3145.  
  3146.                                                       17 Jul 1993    04:23:16
  3147.   NAME
  3148.         GO_ShowErrorA -- Display a standard GadOutline error requester.
  3149.  
  3150.  
  3151.   SYNOPSIS
  3152.         Return = GO_ShowErrorA(GadOutline, ErrorCode, ErrorObject, Params)
  3153.                                A0          D0         A1           A2      
  3154.  
  3155.         ULONG GO_ShowErrorA(struct GadOutline *, GOERR, void *, UBYTE **)
  3156.  
  3157.   FUNCTION
  3158.         Displays an error requester explaining the current error and waits
  3159.         for user input.  The exact error to display is determined by
  3160.         ErrorCode; if its type is non-zero (ie, not GOTYPE_NONE), the
  3161.         requester displays the error code and type given.  Otherwise, it
  3162.         displays the GadOutline's current error, as given by
  3163.         GO_GetErrorCode().
  3164.         
  3165.         ErrorObject provides more detailed information about the error, and
  3166.         its exact meaning is error-code dependant; see GO_GetErrorObject()
  3167.         for information about what object each code expects.
  3168.         
  3169.         The standard error requester's title is either the text supplied in
  3170.         GOA_BaseName or, if that has not been set, defaults to "GadOutline
  3171.         Requester".  The body displayed is in the form:
  3172.         
  3173.         +-------------------------+
  3174.         | (<T>) <Type text> #<C>: |
  3175.         | <Code text>.            |
  3176.         |                         |
  3177.         | <Additional information>|
  3178.         | <Extra parameters>      |
  3179.         +-------------------------+
  3180.         
  3181.         Where <T> is the error type number, <Type text> is the textual
  3182.         interpretation of that type (ie, type #8 is "Warning"), <C> is the
  3183.         code number, and <Code text> is the description of the error code.
  3184.         Errors which have an object will then fill in more detailed
  3185.         information in the <Additional information> field; what exactly is
  3186.         displayed here and the number of lines is code dependant.  Finally,
  3187.         any user-supplied parameter(s) are appended to the bottom.
  3188.         
  3189.         The user supplied parameters are passed in 'Params.'  This is a
  3190.         pointer to a string pointer, followed by its arguments, as per
  3191.         Intuition's EasyRequestA() function.  This provides the standard
  3192.         C-style formatting arguments identical to EasyRequestA().
  3193.         
  3194.         The library also provides three additional formatting escape
  3195.         characters: ^ provides global GadOutline information, ~ provides
  3196.         object-dependant information, and ` is reserved for future use.
  3197.         This sequences are in the form of the escape character followed by a
  3198.         two-character code, ie "^lb" will be translated into the maximum
  3199.         outline size, as given by GOA_OutlineSize.  A special sequence of the
  3200.         escape character followed by itself will be reduced to a single
  3201.         escape, ie if the GOA_OutlineSize is 10, "^lb^^^lb" will display the
  3202.         text "10^10".
  3203.         
  3204.         The object formatting character ~ determines how the object will be
  3205.         interpreted; the library has no way of determining what the object
  3206.         actually is except by the formatting sequences used, so you should
  3207.         be careful about what you are actually giving it.
  3208.         
  3209.         The available buttons at the bottom of the requester are determined
  3210.         by the error type.  They are:
  3211.         GOTYPE_NONE  - "CONTINUE"
  3212.         GOTYPE_NOTE  - "CONTINUE" / "ABORT"
  3213.         GOTYPE_WARN  - "CONTINUE" / "RETRY" / "ABORT"
  3214.         GOTYPE_ALERT - "RETRY" / "ABORT"
  3215.         GOTYPE_FAIL  - "ABORT"
  3216.         
  3217.         The value returned by the function will be one of GORET_CONT,
  3218.         GORET_RETRY or GORET_FAIL, depending on whether the user selected
  3219.         "CONTINUE", "RETRY" or "ABORT", respectively.
  3220.         
  3221.         A special display mode is provided when the error code (the lower 16
  3222.         bits of the error) is GOCODE_NONE.  In this case, none of the
  3223.         standard information (error type, code, addition information) is
  3224.         displayed, and instead only the user parameters are used.  Which
  3225.         buttons are displayed, however, is still determined by the error
  3226.         type.  This us useful it you want to display your own custom
  3227.         requester.
  3228.         
  3229.         The formatting codes currently recognized are:
  3230.  
  3231.         Global Outline information:
  3232.         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3233.        
  3234.         ^et: text of the error code that was supplied to the function.
  3235.         ^ec: number of the error code that was supplied to the function.
  3236.         ^eh: header text for the error type supplied to the function.
  3237.         ^el: number of the error type that was supplied to the function.
  3238.         
  3239.         ^st: text of the gadoutline's current state (error code.)
  3240.         ^sc: number of the gadoutline's current state (error code.)
  3241.         ^sh: header text for the gadoutline's current level (error type.)
  3242.         ^sl: number of the gadoutline's current level (error type.)
  3243.  
  3244.         ^Za: programmer's address
  3245.         ^Zb: library base name
  3246.         ^Zd: library creation date
  3247.         ^Ze: programmer's email address
  3248.         ^Zp: library programmer
  3249.         ^Zr: library revision
  3250.         ^Zt: library creation time
  3251.         ^Zv: library version
  3252.         ^Zy: library creation year
  3253.         ^ZR: library release version
  3254.         ^ZV: full library version info
  3255.  
  3256.         ^lb: maximum size (in bytes) of outline
  3257.         ^lw: current layout needed window width
  3258.         ^lh: current layout needed window height
  3259.         ^lW: maximum layout width
  3260.         ^lH: maximum layout height
  3261.         ^lx: current layout needed inner width
  3262.         ^ly: current layout needed inner height
  3263.         ^lX: maximum layout inner width
  3264.         ^lY: maximum layout inner height
  3265.         ^ln: current layout font name
  3266.         ^ls: current layout font size
  3267.         ^lN: target font name
  3268.         ^lS: target font size
  3269.  
  3270.         ^^:  insert a single ^
  3271.  
  3272.         Current Object Information:
  3273.         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
  3274.         
  3275.         Base objects (ULONG):
  3276.         ~bb: print as number in binary
  3277.         ~bd: print as number in decimal
  3278.         ~bh: print as number in hex
  3279.         ~bc: print as a character
  3280.         ~bs: print as string (This object is a UBYTE *)
  3281.         
  3282.         For CmdInfo objects (struct CmdInfo *):
  3283.         ~ck: command's kind (number)
  3284.         ~cc: command's code (number)
  3285.         ~cs: command's subcode (number)
  3286.         ~cv: command's full value in hex
  3287.         ~ci: command's standard ID
  3288.         ~cg: command's group ID
  3289.         ~cG: command's group code ID
  3290.         ~cm: command's group mask ID
  3291.         ~cl: command's label or other identifying text
  3292.  
  3293.         For CmdID objects (CMDID):
  3294.         ~is: standard ID part
  3295.         ~ig: group ID part
  3296.         ~ic: group code ID part
  3297.         ~im: group mask ID part
  3298.  
  3299.         For TypedSize objects (TYPEDSIZE):
  3300.         ~tm: mode part (number)
  3301.         ~ts: size part (number)
  3302.         ~tt: type part (number)
  3303.         ~tv: full value in hex
  3304.  
  3305.         For IntErr objects (ULONG):
  3306.         ~em: module of error (text)
  3307.         ~el: line of error (number)
  3308.  
  3309.         ~~:  insert a single ~
  3310.         
  3311.         Reserved Formatter:
  3312.         ~~~~~~~~~~~~~~~~~~~
  3313.         
  3314.         ``:  insert a single `
  3315.  
  3316.   INPUTS
  3317.         GadOutline  - (struct GadOutline *) Allocated GadOutline or NULL.
  3318.         ErrorCode   - (GOERR) Error code and type to display.
  3319.         ErrorObject - (void *) Error code dependant object.
  3320.         Params      - (UBYTE **) Optional additional text to display.
  3321.  
  3322.   RESULT
  3323.         Return - (ULONG) One of GORET_CONT, GORET_RETRY or GORET_FAIL.
  3324.  
  3325.   TAGS
  3326.         
  3327.  
  3328.   EXAMPLE
  3329.         
  3330.         /* Show information about a command
  3331.          * Runs through every command with the given CmdID and displays
  3332.          * a requester with the given ID and the command's kind, code and
  3333.          * subcode.  Allows user to: Retry, which will restart displaying
  3334.          * the commands; Continue, which will display the next command; and
  3335.          * Abort, which will immediately stop displaying commands.
  3336.          */
  3337.         
  3338.         void show_command(struct GadOutline *go,CMDID id)
  3339.         {
  3340.             struct CmdInfo *ci = NULL;
  3341.             ULONG ret = GORET_CONT;
  3342.             
  3343.             while( ret == GORET_CONT
  3344.                    && (ci = GO_GetCmdInfo(go,id,ci)) != NULL ) {
  3345.              
  3346.                 ret = GO_ShowError(go,
  3347.                                    GO_MAKEERR(GOTYPE_WARN,GOCODE_NONE),
  3348.                                    ci,
  3349.             "Matched cmd with ID #%lx:\n\nKind:~ck Code: ~cc SubCode: ~cs",
  3350.                                    id);
  3351.                 
  3352.                 if(ret == GORET_RETRY) {
  3353.                     ci = NULL;
  3354.                     ret = GORET_CONT;
  3355.                 }
  3356.             }
  3357.         }
  3358.  
  3359.   NOTES
  3360.         All error codes which expect a pointer to something for their object
  3361.         will interpret NULL as "none available".  You should always supply a
  3362.         NULL object for any codes which currently have no defined object;
  3363.         this is the only object value which will always be safe to use.
  3364.  
  3365.         This function does not set go_LastReqReturn.
  3366.  
  3367.   BUGS
  3368.         If one of the standard errors prints a string (ie, from an actual
  3369.         string object or the label of a command) which contains a "%", this
  3370.         will be blindly passed on to EasyRequest, which will interpret it as
  3371.         a C-style formatter.
  3372.  
  3373.   SEE ALSO
  3374.         GO_SetErrorA(), GO_GetErrorCode(), GO_GetErrorText(),
  3375.         GO_GetErrorObject(), intuition/EasyRequestA()
  3376. gadoutline.library/GO_UndupGOIMsg           gadoutline.library/GO_UndupGOIMsg
  3377.  
  3378.                                                       18 Jul 1993    10:32:31
  3379.   NAME
  3380.         GO_UndupGOIMsg -- Free a previously duplicated GOIMsg.
  3381.  
  3382.  
  3383.   SYNOPSIS
  3384.         OldMessage = GO_UndupGOIMsg(Message)
  3385.                                     A0       
  3386.  
  3387.         struct GOIMsg *GO_UndupGOIMsg(struct GOIMsg *)
  3388.  
  3389.   FUNCTION
  3390.         Frees a message that was allocated with GO_DupGOIMsg().  Exactly
  3391.         what is returned depends what the given message is:
  3392.  
  3393.         If it is a GOIMsg returned by calling GO_DupGOIMsg() with a GOIMsg
  3394.         or IntuiMessage, the message upon which it was based will be
  3395.         returned.
  3396.         
  3397.         If it is a GOIMsg returned by calling GO_DupGOIMsg() with a NULL
  3398.         message, a NULL will be returned.
  3399.         
  3400.         If it is an actual IntuiMessage, this same IntuiMessage will simply
  3401.         be returned.
  3402.         
  3403.   INPUTS
  3404.         Message - (struct GOIMsg *) A previously dupped message.
  3405.  
  3406.   RESULT
  3407.         OldMessage - (struct GOIMsg *) What this message was based on.
  3408.  
  3409.   TAGS
  3410.         
  3411.  
  3412.   EXAMPLE
  3413.         
  3414.  
  3415.   NOTES
  3416.         This routine does not actually free the memory used by the message,
  3417.         but rather puts it back on a 'free message list' of the GadOutline
  3418.         which allocated it, to be reused by GO_DupGOIMsg().
  3419.  
  3420.   BUGS
  3421.         .
  3422.  
  3423.   SEE ALSO
  3424.         GO_DupGOIMsg()
  3425. gadoutline.library/HookGadOutlineA         gadoutline.library/HookGadOutlineA
  3426.  
  3427.                                                       16 Jul 1993    08:26:43
  3428.   NAME
  3429.         HookGadOutlineA -- Attach gadgets to window.
  3430.  
  3431.  
  3432.   SYNOPSIS
  3433.         HookGadOutlineA(GadOutline, TagList)
  3434.                         A0          A1       
  3435.  
  3436.         void HookGadOutlineA(struct GadOutline *, struct TagItem *)
  3437.  
  3438.   FUNCTION
  3439.         Calls UpdateGadOutlineA() with the given tag list and then attaches
  3440.         the go_GToolsList and go_BoopsiList to the window's gadget list and
  3441.         calls RefreshGList().  If GO_DoHookCallback is TRUE, CHM_HOOKOBJ
  3442.         messages will then be sent to all of the commands.
  3443.  
  3444.   INPUTS
  3445.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  3446.         TagList - (struct TagItem *) Global (GOA_*) outline tags, parsed
  3447.                   before the gadgets are actually attached.
  3448.  
  3449.   RESULT
  3450.         Nothing returned from the function.
  3451.         go_LastReqReturn is non-zero if an error occured.
  3452.  
  3453.   TAGS
  3454.         
  3455.  
  3456.   EXAMPLE
  3457.         
  3458.  
  3459.   NOTES
  3460.         The operational order is: Add and refresh BOOPSI then GadTools
  3461.         gadget lists, send CHM_HOOKOBJ messages, call DrawGadOutlineA().
  3462.  
  3463.   BUGS
  3464.         .
  3465.  
  3466.   SEE ALSO
  3467.         UpdateGadOutlineA(), UnhookGadOutlineA()
  3468.         
  3469. gadoutline.library/RebuildGadOutlineA   gadoutline.library/RebuildGadOutlineA
  3470.  
  3471.                                                       15 Jul 1993    08:36:01
  3472.   NAME
  3473.         RebuildGadOutlineA -- Perform a final layout on a GadOutline.
  3474.  
  3475.  
  3476.   SYNOPSIS
  3477.         RebuildGadOutlineA(GadOutline, TagList)
  3478.                            A0          A1       
  3479.  
  3480.         void RebuildGadOutlineA(struct GadOutline *, struct TagItem *)
  3481.  
  3482.   FUNCTION
  3483.         This function performs the second part of a complete layout.  It
  3484.         first calles UpdateGadOutlineA() with the given tags and then uses
  3485.         the box and groups' minimum dimension information and the required
  3486.         minimum size of the layout to find the final size that everything
  3487.         needs to be.  It then positions the boxes and groups, processes the
  3488.         final box dimension tags [ie, GOCT_SetBoxLeft] for all boxes, groups
  3489.         and images, fills in the global information tags [ie,
  3490.         GOCT_CopyScreen], and finally creates the gadgets by sending
  3491.         CHM_CREATEOBJ messages to every command after resolving all of its
  3492.         tag links.
  3493.  
  3494.         This phase is concerned with what to do with any extra space
  3495.         within within the layout.  This extra space may come from two
  3496.         distinct places - the difference between the entire layout's base
  3497.         dimension, as computed by DimenGadOutlineA(), and the minimum size
  3498.         allowed, and the difference between a group's minimum size and the
  3499.         size of the individual boxes within it.  However, these two are,
  3500.         for the most part, treated as a single quantity by the library.
  3501.  
  3502.         The layout starts at the root group; the amount of space needed to
  3503.         make it fit the GadOutline's minimum dimensions is distributed to
  3504.         each of its children in its running dimension according to their
  3505.         relative weights, and in the static dimension it is summed with
  3506.         the difference between the group's minimum size and each child's. 
  3507.         Each child group will then distribute the space it received in a
  3508.         similar fashion.
  3509.  
  3510.         When a box receives its extra space, it distributes it among its
  3511.         various areas.  By default, the box will simply put all of it in
  3512.         its body area, but this behavior can be changed by providing a
  3513.         custom weight distribution and using TypedSize commands changing
  3514.         the VAR component.
  3515.  
  3516.         Two tags are available to control the way the library performs the
  3517.         layout.  The tag GOCT_AutoDistExtra will cause a box or group to
  3518.         try to distribute the extra space within itself so that it matches
  3519.         its parent's final dimensions, and GOCT_IgnoreFinDimens will make
  3520.         the library ignore a box or group's dimensions, essentially
  3521.         putting the group or box that follows on top of it.
  3522.  
  3523.         Once the final dimensions have been determined, another run
  3524.         through the layout will be performed to compute the final
  3525.         positions of the groups and boxes.  Finally, a last run through the
  3526.         entire outline will be performed to execute the GOCT_Set* command
  3527.         tags for all boxes, groups and images, after which any attached
  3528.         BoxPosInfo will be filled in and the GOCT_Copy* global information
  3529.         tags will be executed along with GOCT_CopyUser1ToTag and
  3530.         GOCT_CopyUser2ToTag.
  3531.  
  3532.         After the layout is finished, the library will run through the
  3533.         entire command list and send each a CHM_CREATEOBJ.  At this time,
  3534.         all TagLinks are resolved by reordering the gadget creation.  If
  3535.         the library is unable to find an order to that will resolve the
  3536.         links [ie, you have two commands pointing to each other], it will
  3537.         not create either command.  If any hook returns a non-zero
  3538.         go_LastReqReturn, the entire creation will be aborted.  However, a
  3539.         command not creating an object [not setting its ci_Object field to
  3540.         a non-NULL value] is NOT considered an error.  If the command has
  3541.         GOCT_IgnoreCreation set to TRUE, or if this is a box or group and
  3542.         any of its parent groups has GOCT_IgnoreCreation set to true, it is
  3543.         completely ignored and no CHM_CREATEOBJ is sent to it, even if
  3544.         there is a TagLink connected to it.
  3545.  
  3546.         If GOA_SetWindowFont is TRUE, the window's font will be set before
  3547.         creating the gadgets.
  3548.  
  3549.         If there are no errors while creating the gadgets, the library
  3550.         calls HookGadOutlineA() with an empty tag list.
  3551.  
  3552.   INPUTS
  3553.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  3554.         TagList - (struct TagItem *) Global (GOA_*) outline tags, parsed
  3555.                   before the actual layout is performed.
  3556.  
  3557.   RESULT
  3558.         Nothing returned from the function.
  3559.         go_LastReqReturn is non-zero if an error occured.
  3560.  
  3561.   TAGS
  3562.         Command tags -
  3563.             GOCT_AutoDistExtra - distribute dimensions to match parent.
  3564.             GOCT_IgnoreFinDimens - ignore box/group during layout.
  3565.  
  3566.   EXAMPLE
  3567.         
  3568.  
  3569.   NOTES
  3570.         This function may fall back to DimenGadOutlineA() if you have
  3571.         changed the screen, window, etc of the GadOutline.
  3572.  
  3573.         If there is no window attached to the GadOutline, no layout and
  3574.         gadget creation will be performed.
  3575.  
  3576.         Groups currently ignore any TypedSize VAR commands; never use them,
  3577.         as a meaning may be attached to them in the future.
  3578.  
  3579.         The order that commands are sent CHM_CREATEOBJ messages is not
  3580.         defined and may change.  If you want to ensure a particular order,
  3581.         supply TagLinks pointing to a dummy tag in the command that you
  3582.         would like created before the current one.  This will force the
  3583.         library to create the object being pointed to before it creates
  3584.         the current one.
  3585.  
  3586.         This function depends on the minimum dimensioning information
  3587.         computed by DimenGadOutlineA() to be correct and up-to-date.  If
  3588.         you have made any changes to the outline that has made it need
  3589.         more room and don't call DimenGadOutlineA(), this function will
  3590.         probably create a layout that is larger than the current maximum
  3591.         dimensions.
  3592.  
  3593.   BUGS
  3594.         The algorithm for creating objects in the correct order is not
  3595.         very efficient, and may slow down severly if you have many
  3596.         commands linked to others that occur before them in the outline.
  3597.  
  3598.   SEE ALSO
  3599.         DimenGadOutlineA(), HookGadOutlineA(), UpdateGadOutlineA()
  3600.         
  3601. gadoutline.library/ResizeGadOutlineA     gadoutline.library/ResizeGadOutlineA
  3602.  
  3603.                                                       15 Jul 1993    09:45:42
  3604.   NAME
  3605.         ResizeGadOutlineA -- Perform only a resize of a GadOutline.
  3606.  
  3607.  
  3608.   SYNOPSIS
  3609.         ResizeGadOutlineA(GadOutline, TagList)
  3610.                           A0          A1       
  3611.  
  3612.         void ResizeGadOutlineA(struct GadOutline *, struct TagItem *)
  3613.  
  3614.   FUNCTION
  3615.         This routine performs a simple resize of a layout which has ONLY
  3616.         changed in size.  This is intended to support BOOPSI gadgets that
  3617.         are able to resize themselves without being completely destroyed
  3618.         and recreated, but currently always does a full
  3619.         RebuildGadOutlineA(). You should only call this function to update
  3620.         the layout after a window resize; use RebuildGadOutlineA() to
  3621.         update after changing any object attributes (such as the depth of
  3622.         a palette gadget) or command tags such as GOCT_IgnoreCreation and
  3623.         GOCT_IgnoreFinDimens.
  3624.  
  3625.   INPUTS
  3626.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  3627.         TagList - (struct TagItem *) Global (GOA_*) outline tags, parsed
  3628.                   before the actual resize is performed.
  3629.  
  3630.   RESULT
  3631.         Nothing returned from the function.
  3632.         go_LastReqReturn is non-zero if an error occured.
  3633.  
  3634.   TAGS
  3635.         
  3636.  
  3637.   EXAMPLE
  3638.         
  3639.  
  3640.   NOTES
  3641.         You should never need to call this unless you turn off automatic
  3642.         resizing using { GOA_AutoResize, FALSE }.
  3643.  
  3644.   BUGS
  3645.         Currently always calls RebuildGadOutlineA().
  3646.  
  3647.   SEE ALSO
  3648.         RebuildGadOutlineA(), UpdateGadOutlineA()
  3649.         
  3650. gadoutline.library/translation_hooks     gadoutline.library/translation_hooks
  3651.  
  3652.                                                       18 Jul 1993    15:09:09
  3653.   NAME
  3654.         translation_hooks -- Information on GadOutline translation hooks.
  3655.  
  3656.  
  3657.   SYNOPSIS
  3658.         Return = translation_hooks(Hook, GadOutline, Message)
  3659.                                    A0    A2          A1       
  3660.  
  3661.         static ULONG translation_hooks(struct Hook *, struct GadOutline *, 
  3662.                                        struct CmdHookMsg *)
  3663.  
  3664.   FUNCTION
  3665.         .
  3666.  
  3667.         These are the operations implemented by the library's built-in hook:
  3668.  
  3669.         CHM_TRANSCMDHOOK:
  3670.         CHM_TRANSEDITHOOK:
  3671.         CHM_TRANSTEXTPTR:
  3672.         CHM_TRANSTEXTARRAY:
  3673.         CHM_TRANSTEXTFMT:
  3674.         CHM_TRANSPUBCLASS:
  3675.         CHM_TRANSPRIVCLASS:
  3676.             Just returns the given code.
  3677.         CHM_TRANSTEXTARRAY:
  3678.             Allocates memory to hold an array of the same size as
  3679.             the one pointed to by the given code, and sends CHM_TRANSTEXTPTR
  3680.             for each entry in the array.
  3681.         CHM_TRANSHOTKEY:
  3682.             Returns the hotkey code, parsing HOTKEY_NOTRANS, HOTKEY_UPONLY
  3683.             and HOTKEY_LOWONLY flags.
  3684.  
  3685.         All others return the given code.
  3686.  
  3687.   INPUTS
  3688.         Hook    - (struct Hook *) Your hook.
  3689.         GadOutline - (struct GadOutline *) GadOutline asking for translation.
  3690.         Message - (struct CmdHookMsg *) The translation to perform.
  3691.  
  3692.   RESULT
  3693.         Return - (static ULONG) The translated code.
  3694.  
  3695.   TAGS
  3696.         
  3697.  
  3698.   EXAMPLE
  3699.         
  3700.  
  3701.   NOTES
  3702.         .
  3703.  
  3704.   BUGS
  3705.         .
  3706.  
  3707.   SEE ALSO
  3708.         
  3709. gadoutline.library/UnhookGadOutlineA     gadoutline.library/UnhookGadOutlineA
  3710.  
  3711.                                                       16 Jul 1993    08:35:38
  3712.   NAME
  3713.         UnhookGadOutlineA -- Detach gadgets from a window.
  3714.  
  3715.  
  3716.   SYNOPSIS
  3717.         UnhookGadOutlineA(GadOutline, TagList)
  3718.                           A0          A1       
  3719.  
  3720.         void UnhookGadOutlineA(struct GadOutline *, struct TagItem *)
  3721.  
  3722.   FUNCTION
  3723.         Calls UpdateGadOutlineA() with the given tag list and then
  3724.         detaches the go_GToolsList and go_BoopsiList gadgets from the
  3725.         window. If the commands were previously sent CHM_HOOKOBJ by
  3726.         HookGadOutlineA(), they will ALL be sent a CHM_UNHOOKOBJ, even if
  3727.         an error had occured before being sent the hook message.  (In
  3728.         other words, a user hook must be able to handle receiving
  3729.         CHM_UNHOOKOBJ messages without an associated CHM_HOOKOBJ.)
  3730.  
  3731.   INPUTS
  3732.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  3733.         TagList - (struct TagItem *) Global (GOA_*) outline tags, parsed
  3734.                   before the gadgets are actually detached.
  3735.  
  3736.   RESULT
  3737.         Nothing returned from the function.
  3738.         go_LastReqReturn is non-zero if an error occured.
  3739.         (If an empty tag list is passed, an error should never be returned.)
  3740.  
  3741.   TAGS
  3742.         
  3743.  
  3744.   EXAMPLE
  3745.         
  3746.  
  3747.   NOTES
  3748.         The operational order is: Send CHM_UNHOOKOBJ messages, remove
  3749.         GadTools and BOOPSI lists.
  3750.  
  3751.   BUGS
  3752.         Sending CHM_SETOBJATTR messages, either directly through
  3753.         GO_SetObjAttrsA(), or indirectly by sending CHM_HOTKEY, etc.
  3754.         messages which cause a change in state, while a GadOutline is in
  3755.         an unhooked state, but with its objects still created, is not really
  3756.         supported and may cause a crash.
  3757.  
  3758.   SEE ALSO
  3759.         UpdateGadOutlineA(), HookGadOutline().
  3760. gadoutline.library/UpdateGadOutlineA     gadoutline.library/UpdateGadOutlineA
  3761.  
  3762.                                                       16 Jul 1993    06:36:02
  3763.   NAME
  3764.         UpdateGadOutlineA -- Modify GadOutline from supplied tag list.
  3765.  
  3766.  
  3767.   SYNOPSIS
  3768.         UpdateGadOutlineA(GadOutline, TagList)
  3769.                           A0          A1       
  3770.  
  3771.         void UpdateGadOutlineA(struct GadOutline *, struct TagItem *)
  3772.  
  3773.   FUNCTION
  3774.         This is the interface for changing a GadOutline's global state
  3775.         using the GOA_* tag commands.  It is called by AllocGadOutlineA(),
  3776.         DimenGadOutlineA(), RebuildGadOutlineA(), ResizeGadOutlineA(),
  3777.         HookGadOutlineA(), DrawGadOutlineA(), UnhookGadOutlineA() and
  3778.         DestroyGadOutlineA() to process the tag list passed to them.  This
  3779.         routine provides a way for you to change the outline's global
  3780.         state without directly performing any other action.  However, note
  3781.         that many of the global tags will cause either an immediate action,
  3782.         or delayed action that will occur the next time one of the above
  3783.         functions is called.
  3784.  
  3785.         See <libraries/gadoutline.h> for more detailed information on the
  3786.         global tags.
  3787.  
  3788.   INPUTS
  3789.         GadOutline - (struct GadOutline *) Previously allocated GadOutline.
  3790.         TagList - (struct TagItem *) Global (GOA_*) outline tags to parse.
  3791.  
  3792.   RESULT
  3793.         Nothing returned from the function.
  3794.         go_LastReqReturn is non-zero if an error occured.
  3795.  
  3796.   TAGS
  3797.         GOA_BaseName - assign a program basename to the outline.  This string
  3798.             is currently only used as the title in the error requester.
  3799.         GOA_ErrorCode - provide location of a ULONG to put error codes in.
  3800.         GOA_ErrorText - provide location of a UBYTE * to put error text in.
  3801.         GOA_SetUserData - put value in ti_Data into go_UserData.
  3802.         GOA_SetUserHandler - put value in ti_Data into go_UserHandler.
  3803.         GOA_SetTransHook - ti_Data points to a standard Hook structure which
  3804.             will be called to perform code translations.
  3805.         GOA_SetTransHookData - put value in ti_Data into go_TransHookData.
  3806.  
  3807.         These tags will cause the next call to RebuildGadOutlineA() or
  3808.         ResizeGadOutlineA() to fall back to DimenGadOutlineA().  If
  3809.         a window a screen is currently attached to the GadOutline, they
  3810.         will immediately be closed if these tags specify a different
  3811.         screen/window.
  3812.         GOA_DisplayID and GOA_Overscan - provide a display mode and the
  3813.             desired overscan size to fit the layout in.
  3814.         GOA_ScreenAddr - specify the address of a screen to attach to the
  3815.             GadOutline and fit the layout to.  This screen must remain valid
  3816.             while it is attached to the GadOutline.
  3817.         GOA_ScreenName - specify the name of a public screen to attach to the
  3818.             GadOutline and fit the layout to.  This screen will automatically
  3819.             be locked by the library while it is attached to the GadOutline.
  3820.         GOA_ScreenFallBack - if TRUE, try opening the public screen if the
  3821.             given screen name does not exist.
  3822.         GOA_WindowAddr - specify the address of a window to attach to the
  3823.             GadOutline.  While a window is attached, DimenGadOutlineA(),
  3824.             RebuildGadOutline() and ResizeGadOutline() will result in the
  3825.             full creation of the gadgets and attach them to the window.
  3826.         GOA_MinWidth, GOA_MinHeight, GOA_MaxWidth, GOA_MaxHeight - override
  3827.             the default layout dimensions.  The dimensions are always reset
  3828.             reset to the current screen/window if these tags are not
  3829.             supplied, regardless of whether or not they were previously set.
  3830.  
  3831.         Font tags.  These will not take affect until DimenGadOutlineA() is
  3832.         called.  Zero or NULL for any of these tags means "don't care."
  3833.         GOA_TextAttr - completely specify desired font.
  3834.         GOA_FontName - specify name of font.  The ".font" suffix is optional.
  3835.         GOA_FontSize - specify size of font.
  3836.         GOA_FontStyle - specify style of font, ie FSF_Bold.
  3837.  
  3838.         Font fitting control.  Don't take affect until DimenGadOutlineA().
  3839.         GOA_FontMinSize - set the minimum point size the library will try
  3840.             to scale the requested font down to before falling back to
  3841.             the system fonts.
  3842.         GOA_FontSystemOnly - if true, the library will never try smaller font
  3843.             point sizes before using the system fonts.
  3844.         GOA_FontROMFont - set FPF_ROMFONT flag when opening fonts.
  3845.         GOA_FontDiskFont - set FPF_ROMFONT flag when opening fonts and use
  3846.             OpenDiskFont() instead of OpenFont().
  3847.         GOA_FontDesigned - set FPF_DESIGNED flag when opening fonts.
  3848.  
  3849.         GO_OpenWindow() tags - window menu strip and size control.  These only
  3850.         affect the operation of GO_OpenWindow().
  3851.         GOA_AllocMenus - supply a GadTools NewMenu array to allocate and
  3852.             attach to the window.
  3853.         GOA_GToolsMenus - supply a menu strip that was previously allocated
  3854.             by GadTools; it will be automatically layed out.
  3855.         GOA_StandardMenus - supply a standard Intuition menu strip to be
  3856.             attached to the window.  It will not be touched in any way.
  3857.         GOA_SaveWinDimens - if TRUE, the window's dimensions will be
  3858.             remembered between closing and reopening it.
  3859.         GOA_WindowRelative - if TRUE, the position and size information given
  3860.             in the window tags is interpreted relative to the screen and
  3861.             layout position and size.
  3862.  
  3863.         IDCMP control.
  3864.         GOA_UserIDCMP - set a custom MsgPort.  If NULL, the window's UserPort
  3865.             will be used; if ~0, the library will immediately allocate its
  3866.             own message port.  NEVER specify this flag while a window is
  3867.             attached to the outline.
  3868.         GOA_AutoSizeVerify - if TRUE, automatically call UnhookGadOutlineA()
  3869.             when an IDCMP_SIZEVERIFY message is received.
  3870.         GOA_AutoNewSize - if TRUE, automatically call ResizeGadOutlineA()
  3871.             when the window's size changes.
  3872.         GOA_AddOutlineIDCMP - if TRUE, the window will be set to report all
  3873.             IDCMP events needed by the library.
  3874.         GOA_AddObjectIDCMP - if TRUE, the window will be set to report all
  3875.             IDCMP events needed by the objects within the GadOutline.
  3876.         GOA_AutoHotKeys - if TRUE, IDCMP_RAWKEY and IDCMP_VANILLAKEY will
  3877.             be redirected to any command attached to them.
  3878.  
  3879.         GOA_RedrawWinFrame - if TRUE, the library will automatically refresh
  3880.             the window's frame after it has been resized.
  3881.         GOA_SetWindowFont - if TRUE, the window's RastPort font will be set
  3882.             to the font being used in the layout.
  3883.         GOA_ClearFullWin - if TRUE, the entire area inside of the window's
  3884.             borders will be cleared during a resize.
  3885.         GOA_DoHookCallback - if TRUE, CHM_HOOKOBJ and CHM_UNHOOKOBJ messages
  3886.             will be sent when the gadgets are hooked and unhooked from the
  3887.             window.
  3888.         GOA_WindowResize - allow library to resize window to make layout
  3889.             fit.  NOT IMPLEMENTED.
  3890.  
  3891.         GOA_ErrorReportLevel - specify which error types will be reported.
  3892.         GOA_ErrorFailLevel - specify which unreported types will be failures.
  3893.         GOA_OutlineSize - provide the size of the static outline array, for
  3894.             bounds checking.  This tag is only useful when directly passed
  3895.             to AllocGadOutlineA().
  3896.  
  3897.   EXAMPLE
  3898.         
  3899.  
  3900.   NOTES
  3901.         .
  3902.  
  3903.   BUGS
  3904.         GOA_WindowResize is not implemented.
  3905.         Using GOA_UserIDCMP while a window is attached can crash.
  3906.  
  3907.   SEE ALSO
  3908.         AllocGadOutlineA(), DimenGadOutlineA(), RebuildGadOutlineA(),
  3909.         ResizeGadOutlineA(), HookGadOutlineA(), DrawGadOutlineA(),
  3910.         UnhookGadOutlineA(), DestroyGadOutlineA(), <libraries/gadoutline.h>
  3911.