@database "tabs_gc"
@master "Work:V42/src/workbench/classes/gadgets/tabs/tabs_gc.doc"

@Node Main "tabs_gc.doc"
    @{" --datasheet-- " Link "--datasheet--"}
    @{" GM_GOACTIVE " Link "GM_GOACTIVE"}
    @{" GM_HITTEST " Link "GM_HITTEST"}
    @{" GM_LAYOUT " Link "GM_LAYOUT"}
    @{" GM_RENDER " Link "GM_RENDER"}
    @{" OM_GET " Link "OM_GET"}
    @{" OM_NEW " Link "OM_NEW"}
    @{" OM_SET " Link "OM_SET"}
@EndNode

@Node "--datasheet--" "tabs.gadget/--datasheet--"
 
@{b}     NAME@{ub}
        tabs.gadget--File folder tabs gadget.                   (V42)
 
@{b}     SUPERCLASS@{ub}
        gadgetclass
 
@{b}     DESCRIPTION@{ub}
        The tabs gadget class provides a custom control that has imagry
        similar in style to the tabs seen in a drawer full of file folders.
        The action of the gadget is the same as a conventional
        mutual-exclusion control in that only one tab can be active at a time
        and a tab is selected by clicking upon it.
 
        The purpose of the tabs gadget class is to provide functionality like
        the page selection cycle gadget on the top-right side of the AmigaOS
        2.1 PrinterPS preferences editor, but allowing all the choices to be
        visible at the same time.
 
        This gadget class requires 3.0 (V39) or greater.
 
@{b}     METHODS@{ub}
        OM_NEW--Create the button gadget.  Passed to superclass, then @{"OM_SET" Link "OM_SET"}.
 
        OM_GET--Get an object attribute.  Passed to superclass for unknown
            attributes.
 
        OM_SET--Set object attributes.  Passed to superclass first.
 
        OM_UPDATE--Set object notification attributes.  Passed to superclass
            first.
 
        GM_LAYOUT--Calculate gadget imagry positioning.  Passed to superclass
            first.
 
        GM_RENDER--Renders the gadget imagry.  Overrides the superclass.
 
        GM_HITTEST--Determines if mouse is within the gadget rectangle.  Over-
            rides the superclass.
 
        GM_GOACTIVE--Handles activation, toggle-select and button-select.
            Overrides the superclass.
 
        GM_GOINACTIVE--Deselects the button.  Overrides the superclass.
 
        All other methods are passed to the superclass, including OM_DISPOSE.
 
@{b}     ATTRIBUTES@{ub}
        GA_Disabled (BOOL) -- Determines whether the button is disabled or
            not.  Changing disable state will invoke @{"GM_RENDER" Link "GM_RENDER"}.  A disabled
            button's border and label are all rendered in SHADOWPEN and then
            dusted in a ghosting pattern that is rendered in SHADOWPEN.
            Defaults to FALSE.
 
        GA_TextAttr (struct @{"TextAttr" Link "TEXT_INCLUDE:graphics/text.h/Main" 63} *) -- Text attribute for the font to
            use for the labels.
 
        LAYOUTA_ChildMaxWidth (BOOL) -- Indicate whether the tabs should be
            the width of the widest label.  Defaults to TRUE.
 
        TABS_Labels (TabLabelP) -- An array of TabLabel structures used to
            indicate the labels for each of the tabs.
 
        TABS_Current (LONG) -- Currently selected tab.  Defaults to zero.
 
@{b}     NOTES@{ub}
        This gadget class requires 3.0 or beyond to run.
 
@EndNode

@Node "GM_GOACTIVE" "tabs.gadget/GM_GOACTIVE"
 
@{b}     NAME@{ub}
        GM_GOACTIVE--Activate a gadget.                         (V42)
 
@{b}     FUNCTION@{ub}
        The GM_GOACTIVE method is used to indicate to a gadget that it has
        become active.  This method overrides the superclass.
 
        Invokes @{"GM_RENDER" Link "GM_RENDER"} with GREDRAW_UPDATE set if the current tab is
        changed.
 
@{b}     RESULT@{ub}
        If a new tab is selected, then returns GMR_VERIFY | GMR_NOREUSE.
 
        All other cases returns GMR_NOREUSE.
 
        Sets the *msg->gpi_Termination field to TABS_Current, which in turn
        fills in the IntuiMessage->Code field.
 
@EndNode

@Node "GM_HITTEST" "tabs.gadget/GM_HITTEST"
 
@{b}     NAME@{ub}
        GM_HITTEST--Is gadget hit.                              (V42)
 
@{b}     FUNCTION@{ub}
        The GM_HITTEST method is used to determine if the given mouse
        coordinates are within the domain of the gadget.  This method
        overrides the superclass.
 
@{b}     RESULT@{ub}
        This method returns GMR_GADGETHIT if within the domain, otherwise
        zero is returned.
 
@EndNode

@Node "GM_LAYOUT" "tabs.gadget/GM_LAYOUT"
 
@{b}     NAME@{ub}
        GM_LAYOUT--Calculate the positioning of the imagry.     (V42)
 
@{b}     FUNCTION@{ub}
        The GM_LAYOUT method is used to calculate the domain of the gadget
        and to center the label within the domain.  This method is passed to
        the superclass first.
 
        @{"Gadget" Link "TEXT_INCLUDE:intuition/intuition.h/Main" 213} relativity is fully supported.
 
@{b}     RESULT@{ub}
        This method returns 0.
 
@EndNode

@Node "GM_RENDER" "tabs.gadget/GM_RENDER"
 
@{b}     NAME@{ub}
        GM_RENDER--Render the visuals of the gadget.            (V42)
 
@{b}     FUNCTION@{ub}
        The GM_RENDER method is used to render the visuals of the gadget.
        This method overrides the superclass.
 
        If the gadget is disabled, then the ghosting pattern is applied.
 
@{b}     RESULT@{ub}
        This method returns 0.
 
@EndNode

@Node "OM_GET" "tabs.gadget/OM_GET"
 
@{b}     NAME@{ub}
        OM_GET--Get an attribute of a tabs.gadget object.       (V42)
 
@{b}     FUNCTION@{ub}
        The OM_GET method is used to get an attributes of a tabs.gadget.
        This method is passed to the superclass for any attribute the
        class doesn't understand..
 
@{b}     ATTRIBUTES@{ub}
        The following attributes can be obtained from the tabs.gadget.
 
        TABS_Current (LONG) -- Currently selected tab.
 
@{b}     RESULT@{ub}
        Returns TRUE (1) if the attribute can be obtained, otherwise
        returns FALSE (0).
 
@EndNode

@Node "OM_NEW" "tabs.gadget/OM_NEW"
 
@{b}     NAME@{ub}
        OM_NEW--Create a tabs.gadget object.                    (V42)
 
@{b}     FUNCTION@{ub}
        The OM_NEW method is used to create an instance of the tabs.gadget
        class.  This method is passed to the superclass first.
 
@{b}     ATTRIBUTES@{ub}
        The following attributes can be specified at creation time.
 
        GA_Top (LONG) -- The top of the gadget.  Should be
            win->BorderTop + 2.
 
        GA_Left (LONG) -- The left edge of the gadget.
 
        GA_Height (LONG) -- Height of the gadget.  Should be the font
            height plus seven.
 
        GA_RelHeight (LONG) -- Although this attribute is supported, it is
            stylistically a bad thing to do.
 
        GA_Disabled (BOOL) -- Determines whether the gadget is disabled or
            not.  Defaults to FALSE.
 
        GA_TextAttr (struct @{"TextAttr" Link "TEXT_INCLUDE:graphics/text.h/Main" 63} *) -- Text attribute for the font to
            use for the labels.
 
@{b}     RESULT@{ub}
        If the object was created then a pointer to the object is returned,
        otherwise NULL is returned.
 
@EndNode

@Node "OM_SET" "tabs.gadget/OM_SET"
 
@{b}     NAME@{ub}
        OM_SET--Set the attributes of a tabs.gadget object.     (V42)
 
@{b}     FUNCTION@{ub}
        The OM_SET method is used to set the attributes of a tabs.gadget.
        This method is passed to the superclass first.
 
@{b}     ATTRIBUTES@{ub}
        The following attributes can be changed at OM_SET or OM_UPDATE.
 
        GA_Disabled (BOOL) -- Determines whether the gadget is disabled or
            not.  Changing disable state will invoke @{"GM_RENDER" Link "GM_RENDER"}.  A disabled
            gadget's border and label are all rendered in SHADOWPEN and then
            dusted in a ghosting pattern that is rendered in SHADOWPEN.
            Defaults to FALSE.
 
        GA_TextAttr (struct @{"TextAttr" Link "TEXT_INCLUDE:graphics/text.h/Main" 63} *) -- Text attribute for the font to
            use for the labels.
 
        LAYOUTA_ChildMaxWidth (BOOL) -- Indicate whether the tabs should be
            the width of the widest label.  Defaults to TRUE.
 
        TABS_Labels (TabLabelP) -- An array of TabLabel structures used to
            indicate the labels for each of the tabs.
 
        TABS_Current (LONG) -- Currently selected tab.  Defaults to zero.
 
@{b}     RESULT@{ub}
        The class will update the attributes of object.  Changing some
        attributes will result in @{"GM_LAYOUT" Link "GM_LAYOUT"} and/or @{"GM_RENDER" Link "GM_RENDER"} being called.
 
        The return value will be non-zero if the gadget needs to be refreshed.
 
@EndNode

