diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/ControlDefinitions.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/ControlDefinitions.h')
| -rw-r--r-- | common/quicktime_win32/ControlDefinitions.h | 6103 |
1 files changed, 6103 insertions, 0 deletions
diff --git a/common/quicktime_win32/ControlDefinitions.h b/common/quicktime_win32/ControlDefinitions.h new file mode 100644 index 0000000..974ae07 --- /dev/null +++ b/common/quicktime_win32/ControlDefinitions.h @@ -0,0 +1,6103 @@ +/* + File: ControlDefinitions.h + + Contains: Definitions of controls provided by the Control Manager + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1999-2001 by Apple Computer, Inc., all rights reserved. + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __CONTROLDEFINITIONS__ +#define __CONTROLDEFINITIONS__ + +#ifndef __MACTYPES__ +#include <MacTypes.h> +#endif + +#ifndef __CFSTRING__ +#include <CFString.h> +#endif + +#ifndef __APPEARANCE__ +#include <Appearance.h> +#endif + +#ifndef __CARBONEVENTS__ +#include <CarbonEvents.h> +#endif + +#ifndef __CONTROLS__ +#include <Controls.h> +#endif + +#ifndef __LISTS__ +#include <Lists.h> +#endif + +#ifndef __MACHELP__ +#include <MacHelp.h> +#endif + +#ifndef __MENUS__ +#include <Menus.h> +#endif + + + + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + + +/* + * ControlDefinitions.h + * + * Discussion: + * System software supplies a variety of controls for your + * applications to use. They are described herein. + */ +/*------------------------------------------------------------------------------------------------------*/ +/* o Resource Types */ +/*------------------------------------------------------------------------------------------------------*/ + +enum { + kControlTabListResType = FOUR_CHAR_CODE('tab#'), /* used for tab control (Appearance 1.0 and later)*/ + kControlListDescResType = FOUR_CHAR_CODE('ldes') /* used for list box control (Appearance 1.0 and later)*/ +}; + +/*--------------------------------------------------------------------------------------*/ +/* o Check Box Values */ +/*--------------------------------------------------------------------------------------*/ +enum { + kControlCheckBoxUncheckedValue = 0, + kControlCheckBoxCheckedValue = 1, + kControlCheckBoxMixedValue = 2 +}; + +/*--------------------------------------------------------------------------------------*/ +/* o Radio Button Values */ +/*--------------------------------------------------------------------------------------*/ +enum { + kControlRadioButtonUncheckedValue = 0, + kControlRadioButtonCheckedValue = 1, + kControlRadioButtonMixedValue = 2 +}; + +/*--------------------------------------------------------------------------------------*/ +/* o Pop-Up Menu Control Constants */ +/*--------------------------------------------------------------------------------------*/ +/* Variant codes for the System 7 pop-up menu*/ +enum { + popupFixedWidth = 1 << 0, + popupVariableWidth = 1 << 1, + popupUseAddResMenu = 1 << 2, + popupUseWFont = 1 << 3 +}; + +/* Menu label styles for the System 7 pop-up menu*/ +enum { + popupTitleBold = 1 << 8, + popupTitleItalic = 1 << 9, + popupTitleUnderline = 1 << 10, + popupTitleOutline = 1 << 11, + popupTitleShadow = 1 << 12, + popupTitleCondense = 1 << 13, + popupTitleExtend = 1 << 14, + popupTitleNoStyle = 1 << 15 +}; + +/* Menu label justifications for the System 7 pop-up menu*/ +enum { + popupTitleLeftJust = 0x00000000, + popupTitleCenterJust = 0x00000001, + popupTitleRightJust = 0x000000FF +}; + +/*------------------------------------------------------------------------------------------------------*/ +/* o PopUp Menu Private Data Structure */ +/*------------------------------------------------------------------------------------------------------*/ +#if !OPAQUE_TOOLBOX_STRUCTS +struct PopupPrivateData { + MenuRef mHandle; + SInt16 mID; +}; +typedef struct PopupPrivateData PopupPrivateData; +typedef PopupPrivateData * PopupPrivateDataPtr; +typedef PopupPrivateDataPtr * PopupPrivateDataHandle; +#endif /* !OPAQUE_TOOLBOX_STRUCTS */ + +/*------------------------------------------------------------------------------------------------------*/ +/* o Control Definition ID's */ +/*------------------------------------------------------------------------------------------------------*/ +/* Standard System 7 procIDs*/ + +enum { + pushButProc = 0, + checkBoxProc = 1, + radioButProc = 2, + scrollBarProc = 16, + popupMenuProc = 1008 +}; + +/*--------------------------------------------------------------------------------------*/ +/* o Control Part Codes */ +/*--------------------------------------------------------------------------------------*/ +enum { + kControlLabelPart = 1, + kControlMenuPart = 2, + kControlTrianglePart = 4, + kControlEditTextPart = 5, /* Appearance 1.0 and later*/ + kControlPicturePart = 6, /* Appearance 1.0 and later*/ + kControlIconPart = 7, /* Appearance 1.0 and later*/ + kControlClockPart = 8, /* Appearance 1.0 and later*/ + kControlListBoxPart = 24, /* Appearance 1.0 and later*/ + kControlListBoxDoubleClickPart = 25, /* Appearance 1.0 and later*/ + kControlImageWellPart = 26, /* Appearance 1.0 and later*/ + kControlRadioGroupPart = 27, /* Appearance 1.0.2 and later*/ + kControlButtonPart = 10, + kControlCheckBoxPart = 11, + kControlRadioButtonPart = 11, + kControlUpButtonPart = 20, + kControlDownButtonPart = 21, + kControlPageUpPart = 22, + kControlPageDownPart = 23, + kControlClockHourDayPart = 9, /* Appearance 1.1 and later*/ + kControlClockMinuteMonthPart = 10, /* Appearance 1.1 and later*/ + kControlClockSecondYearPart = 11, /* Appearance 1.1 and later*/ + kControlClockAMPMPart = 12, /* Appearance 1.1 and later*/ + kControlDataBrowserPart = 24, /* CarbonLib 1.0 and later*/ + kControlDataBrowserDraggedPart = 25 /* CarbonLib 1.0 and later*/ +}; + + + +/*------------------------------------------------------------------------------------------------------*/ +/* o Control Types and ID's available only with Appearance 1.0 and later */ +/*------------------------------------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------------------*/ +/* o BEVEL BUTTON INTERFACE (CDEF 2) */ +/*--------------------------------------------------------------------------------------*/ +/* Bevel buttons allow you to control the content type (pict/icon/etc.), the behavior */ +/* (pushbutton/toggle/sticky), and the bevel size. You also have the option of */ +/* attaching a menu to it. When a menu is present, you can specify which way the */ +/* popup arrow is facing (down or right). */ +/* */ +/* This is all made possible by overloading the Min, Max, and Value parameters for the */ +/* control, as well as adjusting the variant. Here's the breakdown of what goes where: */ +/* */ +/* Parameter What Goes Here */ +/* ------------------- ---------------------------------------------------- */ +/* Min Hi Byte = Behavior, Lo Byte = content type. */ +/* Max ResID for resource-based content types. */ +/* Value MenuID to attach, 0 = no menu, please. */ +/* */ +/* The variant is broken down into two halfs. The low 2 bits control the bevel type. */ +/* Bit 2 controls the popup arrow direction (if a menu is present) and bit 3 controls */ +/* whether or not to use the control's owning window's font. */ +/* */ +/* Constants for all you need to put this together are below. The values for behaviors */ +/* are set up so that you can simply add them to the content type and pass them into */ +/* the Min parameter of NewControl. */ +/* */ +/* An example call: */ +/* */ +/* control = NewControl( window, &bounds, "\p", true, 0, kControlContentIconSuiteRes + */ +/* kBehaviorToggles, myIconSuiteID, bevelButtonSmallBevelProc, */ +/* 0L ); */ +/* */ +/* Attaching a menu: */ +/* */ +/* control = NewControl( window, &bounds, "\p", true, kMyMenuID, */ +/* kControlContentIconSuiteRes, myIconSuiteID, bevelButtonSmallBevelProc + */ +/* kBevelButtonMenuOnRight, 0L ); */ +/* */ +/* This will attach menu ID kMyMenuID to the button, with the popup arrow facing right.*/ +/* This also puts the menu up to the right of the button. You can also specify that a */ +/* menu can have multiple items checked at once by adding kBehaviorMultiValueMenus */ +/* into the Min parameter. If you do use multivalue menus, the GetBevelButtonMenuValue */ +/* helper function will return the last item chosen from the menu, whether or not it */ +/* was checked. */ +/* */ +/* NOTE: Bevel buttons with menus actually have *two* values. The value of the */ +/* button (on/off), and the value of the menu. The menu value can be gotten */ +/* with the GetBevelButtonMenuValue helper function. */ +/* */ +/* Handle-based Content */ +/* -------------------- */ +/* You can create your control and then set the content to an existing handle to an */ +/* icon suite, etc. using the macros below. Please keep in mind that resource-based */ +/* content is owned by the control, handle-based content is owned by you. The CDEF will*/ +/* not try to dispose of handle-based content. If you are changing the content type of */ +/* the button on the fly, you must make sure that if you are replacing a handle- */ +/* based content with a resource-based content to properly dispose of the handle, */ +/* else a memory leak will ensue. */ +/* */ +/* Bevel Button Proc IDs */ +enum { + kControlBevelButtonSmallBevelProc = 32, + kControlBevelButtonNormalBevelProc = 33, + kControlBevelButtonLargeBevelProc = 34 +}; + +/* Add these variant codes to kBevelButtonSmallBevelProc to change the type of button */ +enum { + kControlBevelButtonSmallBevelVariant = 0, + kControlBevelButtonNormalBevelVariant = (1 << 0), + kControlBevelButtonLargeBevelVariant = (1 << 1), + kControlBevelButtonMenuOnRightVariant = (1 << 2) +}; + +/* Bevel Thicknesses */ +typedef UInt16 ControlBevelThickness; +enum { + kControlBevelButtonSmallBevel = 0, + kControlBevelButtonNormalBevel = 1, + kControlBevelButtonLargeBevel = 2 +}; + +/* Behaviors of bevel buttons. These are set up so you can add */ +/* them together with the content types. */ +enum { + kControlBehaviorPushbutton = 0, + kControlBehaviorToggles = 0x0100, + kControlBehaviorSticky = 0x0200, + kControlBehaviorSingleValueMenu = 0, + kControlBehaviorMultiValueMenu = 0x4000, /* only makes sense when a menu is attached.*/ + kControlBehaviorOffsetContents = 0x8000 +}; + +/* Behaviors for 1.0.1 or later */ +enum { + kControlBehaviorCommandMenu = 0x2000 /* menu holds commands, not choices. Overrides multi-value bit.*/ +}; + +typedef UInt16 ControlBevelButtonBehavior; +typedef UInt16 ControlBevelButtonMenuBehavior; +/* Bevel Button Menu Placements */ +typedef UInt16 ControlBevelButtonMenuPlacement; +enum { + kControlBevelButtonMenuOnBottom = 0, + kControlBevelButtonMenuOnRight = (1 << 2) +}; + +/* Control Kind Tag */ +enum { + kControlKindBevelButton = FOUR_CHAR_CODE('bevl') +}; + +/* Creation API: Carbon Only */ +/* + * CreateBevelButtonControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateBevelButtonControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + ControlBevelThickness thickness, + ControlBevelButtonBehavior behavior, + ControlButtonContentInfoPtr info, + SInt16 menuID, + ControlBevelButtonMenuBehavior menuBehavior, + ControlBevelButtonMenuPlacement menuPlacement, + ControlRef * outControl); + + + + +/* Graphic Alignments */ +typedef SInt16 ControlButtonGraphicAlignment; +enum { + kControlBevelButtonAlignSysDirection = -1, /* only left or right*/ + kControlBevelButtonAlignCenter = 0, + kControlBevelButtonAlignLeft = 1, + kControlBevelButtonAlignRight = 2, + kControlBevelButtonAlignTop = 3, + kControlBevelButtonAlignBottom = 4, + kControlBevelButtonAlignTopLeft = 5, + kControlBevelButtonAlignBottomLeft = 6, + kControlBevelButtonAlignTopRight = 7, + kControlBevelButtonAlignBottomRight = 8 +}; + +/* Text Alignments */ +typedef SInt16 ControlButtonTextAlignment; +enum { + kControlBevelButtonAlignTextSysDirection = teFlushDefault, + kControlBevelButtonAlignTextCenter = teCenter, + kControlBevelButtonAlignTextFlushRight = teFlushRight, + kControlBevelButtonAlignTextFlushLeft = teFlushLeft +}; + +/* Text Placements */ +typedef SInt16 ControlButtonTextPlacement; +enum { + kControlBevelButtonPlaceSysDirection = -1, /* if graphic on right, then on left*/ + kControlBevelButtonPlaceNormally = 0, + kControlBevelButtonPlaceToRightOfGraphic = 1, + kControlBevelButtonPlaceToLeftOfGraphic = 2, + kControlBevelButtonPlaceBelowGraphic = 3, + kControlBevelButtonPlaceAboveGraphic = 4 +}; + + +/* Data tags supported by the bevel button controls */ +enum { + kControlBevelButtonContentTag = FOUR_CHAR_CODE('cont'), /* ButtonContentInfo*/ + kControlBevelButtonTransformTag = FOUR_CHAR_CODE('tran'), /* IconTransformType*/ + kControlBevelButtonTextAlignTag = FOUR_CHAR_CODE('tali'), /* ButtonTextAlignment*/ + kControlBevelButtonTextOffsetTag = FOUR_CHAR_CODE('toff'), /* SInt16*/ + kControlBevelButtonGraphicAlignTag = FOUR_CHAR_CODE('gali'), /* ButtonGraphicAlignment*/ + kControlBevelButtonGraphicOffsetTag = FOUR_CHAR_CODE('goff'), /* Point*/ + kControlBevelButtonTextPlaceTag = FOUR_CHAR_CODE('tplc'), /* ButtonTextPlacement*/ + kControlBevelButtonMenuValueTag = FOUR_CHAR_CODE('mval'), /* SInt16*/ + kControlBevelButtonMenuHandleTag = FOUR_CHAR_CODE('mhnd'), /* MenuRef*/ + kControlBevelButtonMenuRefTag = FOUR_CHAR_CODE('mhnd'), /* MenuRef*/ + kControlBevelButtonCenterPopupGlyphTag = FOUR_CHAR_CODE('pglc') /* Boolean: true = center, false = bottom right*/ +}; + +/* These are tags in 1.0.1 or later */ +enum { + kControlBevelButtonLastMenuTag = FOUR_CHAR_CODE('lmnu'), /* SInt16: menuID of last menu item selected from*/ + kControlBevelButtonMenuDelayTag = FOUR_CHAR_CODE('mdly') /* SInt32: ticks to delay before menu appears*/ +}; + +/* tags available with Appearance 1.1 or later */ +enum { + /* Boolean: True = if an icon of the ideal size for*/ + /* the button isn't available, scale a larger or*/ + /* smaller icon to the ideal size. False = don't*/ + /* scale; draw a smaller icon or clip a larger icon.*/ + /* Default is false. Only applies to IconSuites and*/ + kControlBevelButtonScaleIconTag = FOUR_CHAR_CODE('scal') /* IconRefs.*/ +}; + +/* tags available in Mac OS X and later */ +enum { + kControlBevelButtonOwnedMenuRefTag = FOUR_CHAR_CODE('omrf'), /* MenuRef (control will dispose)*/ + kControlBevelButtonKindTag = FOUR_CHAR_CODE('bebk') /* ThemeButtonKind ( kTheme[Small,Medium,Large,Rounded]BevelButton )*/ +}; + +/* Helper routines are available only thru the shared library/glue. */ +/* + * GetBevelButtonMenuValue() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +GetBevelButtonMenuValue( + ControlRef inButton, + SInt16 * outValue); + + +/* + * SetBevelButtonMenuValue() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetBevelButtonMenuValue( + ControlRef inButton, + SInt16 inValue); + + +/* + * GetBevelButtonMenuHandle() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +GetBevelButtonMenuHandle( + ControlRef inButton, + MenuHandle * outHandle); + + +#define GetBevelButtonMenuRef GetBevelButtonMenuHandle +/* + * GetBevelButtonContentInfo() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +GetBevelButtonContentInfo( + ControlRef inButton, + ControlButtonContentInfoPtr outContent); + + +/* + * SetBevelButtonContentInfo() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetBevelButtonContentInfo( + ControlRef inButton, + ControlButtonContentInfoPtr inContent); + + +/* + * SetBevelButtonTransform() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetBevelButtonTransform( + ControlRef inButton, + IconTransformType transform); + + +/* + * SetBevelButtonGraphicAlignment() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetBevelButtonGraphicAlignment( + ControlRef inButton, + ControlButtonGraphicAlignment inAlign, + SInt16 inHOffset, + SInt16 inVOffset); + + +/* + * SetBevelButtonTextAlignment() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetBevelButtonTextAlignment( + ControlRef inButton, + ControlButtonTextAlignment inAlign, + SInt16 inHOffset); + + +/* + * SetBevelButtonTextPlacement() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetBevelButtonTextPlacement( + ControlRef inButton, + ControlButtonTextPlacement inWhere); + + + +/*--------------------------------------------------------------------------------------*/ +/* o SLIDER (CDEF 3) */ +/*--------------------------------------------------------------------------------------*/ +/* There are several variants that control the behavior of the slider control. Any */ +/* combination of the following three constants can be added to the basic CDEF ID */ +/* (kSliderProc). */ +/* */ +/* Variants: */ +/* */ +/* kSliderLiveFeedback Slider does not use "ghosted" indicator when tracking. */ +/* ActionProc is called (set via SetControlAction) as the */ +/* indicator is dragged. The value is updated so that the */ +/* actionproc can adjust some other property based on the */ +/* value each time the action proc is called. If no action */ +/* proc is installed, it reverts to the ghost indicator. */ +/* */ +/* kSliderHasTickMarks Slider is drawn with 'tick marks'. The control */ +/* rectangle must be large enough to accomidate the tick */ +/* marks. */ +/* */ +/* kSliderReverseDirection Slider thumb points in opposite direction than normal. */ +/* If the slider is vertical, the thumb will point to the */ +/* left, if the slider is horizontal, the thumb will point */ +/* upwards. */ +/* */ +/* kSliderNonDirectional This option overrides the kSliderReverseDirection and */ +/* kSliderHasTickMarks variants. It creates an indicator */ +/* which is rectangular and doesn't point in any direction */ +/* like the normal indicator does. */ +/* Slider proc ID and variants */ +enum { + kControlSliderProc = 48, + kControlSliderLiveFeedback = (1 << 0), + kControlSliderHasTickMarks = (1 << 1), + kControlSliderReverseDirection = (1 << 2), + kControlSliderNonDirectional = (1 << 3) +}; + +/* Slider Orientation */ +typedef UInt16 ControlSliderOrientation; +enum { + kControlSliderPointsDownOrRight = 0, + kControlSliderPointsUpOrLeft = 1, + kControlSliderDoesNotPoint = 2 +}; + +/* Control Kind Tag */ +enum { + kControlKindSlider = FOUR_CHAR_CODE('sldr') +}; + +/* Creation API: Carbon Only */ +/* + * CreateSliderControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateSliderControl( + WindowRef window, + const Rect * boundsRect, + SInt32 value, + SInt32 minimum, + SInt32 maximum, + ControlSliderOrientation orientation, + UInt16 numTickMarks, + Boolean liveTracking, + ControlActionUPP liveTrackingProc, + ControlRef * outControl); + + + +/*--------------------------------------------------------------------------------------*/ +/* o DISCLOSURE TRIANGLE (CDEF 4) */ +/*--------------------------------------------------------------------------------------*/ +/* This control can be used as either left or right facing. It can also handle its own */ +/* tracking if you wish. This means that when the 'autotoggle' variant is used, if the */ +/* user clicks the control, it's state will change automatically from open to closed */ +/* and vice-versa depending on its initial state. After a successful call to Track- */ +/* Control, you can just check the current value to see what state it was switched to. */ +/* Triangle proc IDs */ +enum { + kControlTriangleProc = 64, + kControlTriangleLeftFacingProc = 65, + kControlTriangleAutoToggleProc = 66, + kControlTriangleLeftFacingAutoToggleProc = 67 +}; + +typedef UInt16 ControlDisclosureTriangleOrientation; +enum { + kControlDisclosureTrianglePointDefault = 0, /* points right on a left-to-right script system (Mac OS X and later or CarbonLib 1.5 and later only)*/ + kControlDisclosureTrianglePointRight = 1, + kControlDisclosureTrianglePointLeft = 2 +}; + +/* Control Kind Tag */ +enum { + kControlKindDisclosureTriangle = FOUR_CHAR_CODE('dist') +}; + +/* + * CreateDisclosureTriangleControl() + * + * Summary: + * Creates a Disclosure Triangle control at a specific position in + * the specified window. + * + * Discussion: + * Disclosure Triangles are small controls that give the user a way + * to toggle the visibility of information or other user interface. + * When information is in a hidden state, a Disclosure Triangle is + * considered "closed" and should point to the right (or sometimes + * to the left). When the user clicks on it, the Disclosure Triangle + * rotates downwards into the "open" state. The application should + * repond by revealing the appropriate information or interface. On + * Mac OS X, a root control will be created for the window if one + * does not already exist. If a root control exists for the window, + * the Disclosure Triangle control will be embedded into it. + * + * Parameters: + * + * inWindow: + * The WindowRef into which the Disclosure Triangle will be + * created. + * + * inBoundsRect: + * The desired position (in coordinates local to the window's + * port) for the Disclosure Triangle. + * + * inOrientation: + * The direction the Disclosure Triangle should point when it is + * "closed". Passing kControlDisclosureTrianglePointDefault is + * only legal as of Mac OS X and CarbonLib 1.5. + * + * inTitle: + * The title for the Disclosure Triangle. The title will only be + * displayed if the inDrawTitle parameter is true. Title display + * only works on Mac OS X. + * + * inInitialValue: + * The starting value determines whether the Disclosure Triangle + * is initially in its "open" or "closed" state. The value 0 + * represents the "closed" state and 1 represents the "open" state. + * + * inDrawTitle: + * A Boolean indicating whether the Disclosure Triangle should + * draw its title next to the widget. Title display only works on + * Mac OS X. + * + * inAutoToggles: + * A Boolean indicating whether the Disclosure Triangle should + * change its own value (from "open" to "closed" and vice-versa) + * automatically when it is clicked on. + * + * outControl: + * On successful output, outControl will contain a reference to + * the Disclosure Triangle control. + * + * Result: + * An OSStatus code indicating success or failure. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateDisclosureTriangleControl( + WindowRef inWindow, + const Rect * inBoundsRect, + ControlDisclosureTriangleOrientation inOrientation, + CFStringRef inTitle, + SInt32 inInitialValue, + Boolean inDrawTitle, + Boolean inAutoToggles, + ControlRef * outControl); + + + +/* Tagged data supported by disclosure triangles */ +enum { + kControlTriangleLastValueTag = FOUR_CHAR_CODE('last') /* SInt16*/ +}; + +/* Helper routines are available only thru the shared library/glue. */ +/* + * SetDisclosureTriangleLastValue() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetDisclosureTriangleLastValue( + ControlRef inTabControl, + SInt16 inValue); + + +/*--------------------------------------------------------------------------------------*/ +/* o PROGRESS INDICATOR (CDEF 5) */ +/*--------------------------------------------------------------------------------------*/ +/* This CDEF implements both determinate and indeterminate progress bars. To switch, */ +/* just use SetControlData to set the indeterminate flag to make it indeterminate call */ +/* IdleControls to step thru the animation. IdleControls should be called at least */ +/* once during your event loop. */ +/* */ +/* We also use this same CDEF for Relevance bars. At this time this control does not */ +/* idle. */ +/* Progress Bar proc IDs */ +enum { + kControlProgressBarProc = 80, + kControlRelevanceBarProc = 81 +}; + +/* Control Kind Tag */ +enum { + kControlKindProgressBar = FOUR_CHAR_CODE('prgb'), + kControlKindRelevanceBar = FOUR_CHAR_CODE('relb') +}; + +/* Creation API: Carbon only */ +/* + * CreateProgressBarControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateProgressBarControl( + WindowRef window, + const Rect * boundsRect, + SInt32 value, + SInt32 minimum, + SInt32 maximum, + Boolean indeterminate, + ControlRef * outControl); + + +/* + * CreateRelevanceBarControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateRelevanceBarControl( + WindowRef window, + const Rect * boundsRect, + SInt32 value, + SInt32 minimum, + SInt32 maximum, + ControlRef * outControl); + + +/* Tagged data supported by progress bars */ +enum { + kControlProgressBarIndeterminateTag = FOUR_CHAR_CODE('inde'), /* Boolean*/ + kControlProgressBarAnimatingTag = FOUR_CHAR_CODE('anim') /* Boolean*/ +}; + +/*--------------------------------------------------------------------------------------*/ +/* o LITTLE ARROWS (CDEF 6) */ +/*--------------------------------------------------------------------------------------*/ +/* This control implements the little up and down arrows you'd see in the Memory */ +/* control panel for adjusting the cache size. */ +/* Little Arrows proc IDs */ +enum { + kControlLittleArrowsProc = 96 +}; + +/* Control Kind Tag */ +enum { + kControlKindLittleArrows = FOUR_CHAR_CODE('larr') +}; + +/* Creation API: Carbon only */ +/* + * CreateLittleArrowsControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateLittleArrowsControl( + WindowRef window, + const Rect * boundsRect, + SInt32 value, + SInt32 minimum, + SInt32 maximum, + SInt32 increment, + ControlRef * outControl); + + +/*--------------------------------------------------------------------------------------*/ +/* o CHASING ARROWS (CDEF 7) */ +/*--------------------------------------------------------------------------------------*/ +/* To animate this control, make sure to call IdleControls repeatedly. */ +/* */ +/* Chasing Arrows proc IDs */ +enum { + kControlChasingArrowsProc = 112 +}; + +/* Control Kind Tag */ +enum { + kControlKindChasingArrows = FOUR_CHAR_CODE('carr') +}; + +/* Creation API: Carbon only */ +/* + * CreateChasingArrowsControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateChasingArrowsControl( + WindowRef window, + const Rect * boundsRect, + ControlRef * outControl); + + +/* Tagged data supported by the Chasing Arrows control */ +enum { + kControlChasingArrowsAnimatingTag = FOUR_CHAR_CODE('anim') /* Boolean*/ +}; + + +/*--------------------------------------------------------------------------------------*/ +/* o TABS (CDEF 8) */ +/*--------------------------------------------------------------------------------------*/ +/* Tabs use an auxiliary resource (tab#) to hold tab information such as the tab name */ +/* and an icon suite ID for each tab. */ +/* */ +/* The ID of the tab# resource that you wish to associate with a tab control should */ +/* be passed in as the Value parameter of the control. If you are using GetNewControl, */ +/* then the Value slot in the CNTL resource should have the ID of the 'tab#' resource */ +/* on creation. */ +/* */ +/* Passing zero in for the tab# resource tells the control not to read in a tab# res. */ +/* You can then use SetControlMaximum to add tabs, followed by a call to SetControlData*/ +/* with the kControlTabInfoTag, passing in a pointer to a ControlTabInfoRec. This sets */ +/* the name and optionally an icon for a tab. */ +/* Tabs proc IDs */ +enum { + kControlTabLargeProc = 128, /* Large tab size, north facing */ + kControlTabSmallProc = 129, /* Small tab size, north facing */ + kControlTabLargeNorthProc = 128, /* Large tab size, north facing */ + kControlTabSmallNorthProc = 129, /* Small tab size, north facing */ + kControlTabLargeSouthProc = 130, /* Large tab size, south facing */ + kControlTabSmallSouthProc = 131, /* Small tab size, south facing */ + kControlTabLargeEastProc = 132, /* Large tab size, east facing */ + kControlTabSmallEastProc = 133, /* Small tab size, east facing */ + kControlTabLargeWestProc = 134, /* Large tab size, west facing */ + kControlTabSmallWestProc = 135 /* Small tab size, west facing */ +}; + +/* Tab Directions */ +typedef UInt16 ControlTabDirection; +enum { + kControlTabDirectionNorth = 0, + kControlTabDirectionSouth = 1, + kControlTabDirectionEast = 2, + kControlTabDirectionWest = 3 +}; + +/* Tab Sizes */ +typedef UInt16 ControlTabSize; +enum { + kControlTabSizeLarge = kControlSizeNormal, + kControlTabSizeSmall = kControlSizeSmall +}; + +/* Control Tab Entry - used during creation */ +/* Note that the client is responsible for allocating/providing */ +/* the ControlButtonContentInfo and string storage for this */ +/* structure. */ +struct ControlTabEntry { + ControlButtonContentInfo * icon; + CFStringRef name; + Boolean enabled; +}; +typedef struct ControlTabEntry ControlTabEntry; +/* Control Kind Tag */ +enum { + kControlKindTabs = FOUR_CHAR_CODE('tabs') +}; + +/* Creation API: Carbon only */ +/* + * CreateTabsControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateTabsControl( + WindowRef window, + const Rect * boundsRect, + ControlTabSize size, + ControlTabDirection direction, + UInt16 numTabs, + const ControlTabEntry * tabArray, + ControlRef * outControl); + + + +/* Tagged data supported by tabs */ +enum { + kControlTabContentRectTag = FOUR_CHAR_CODE('rect'), /* Rect*/ + kControlTabEnabledFlagTag = FOUR_CHAR_CODE('enab'), /* Boolean*/ + kControlTabFontStyleTag = kControlFontStyleTag /* ControlFontStyleRec*/ +}; + +/* New tags in 1.0.1 or later */ +enum { + kControlTabInfoTag = FOUR_CHAR_CODE('tabi') /* ControlTabInfoRec*/ +}; + +/* New tags in X 10.1 or later */ +enum { + kControlTabImageContentTag = FOUR_CHAR_CODE('cont') /* ControlButtonContentInfo*/ +}; + +enum { + kControlTabInfoVersionZero = 0, /* ControlTabInfoRec*/ + kControlTabInfoVersionOne = 1 /* ControlTabInfoRecV1*/ +}; + +struct ControlTabInfoRec { + SInt16 version; /* version of this structure.*/ + SInt16 iconSuiteID; /* icon suite to use. Zero indicates no icon*/ + Str255 name; /* name to be displayed on the tab*/ +}; +typedef struct ControlTabInfoRec ControlTabInfoRec; +struct ControlTabInfoRecV1 { + SInt16 version; /* version of this structure. == kControlTabInfoVersionOne*/ + SInt16 iconSuiteID; /* icon suite to use. Zero indicates no icon*/ + CFStringRef name; /* name to be displayed on the tab. Will be retained so caller*/ + /* should always release it.*/ +}; +typedef struct ControlTabInfoRecV1 ControlTabInfoRecV1; +/* Helper routines are available only thru the shared library/glue. */ +/* + * GetTabContentRect() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +GetTabContentRect( + ControlRef inTabControl, + Rect * outContentRect); + + +/* + * SetTabEnabled() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetTabEnabled( + ControlRef inTabControl, + SInt16 inTabToHilite, + Boolean inEnabled); + + +/*--------------------------------------------------------------------------------------*/ +/* o VISUAL SEPARATOR (CDEF 9) */ +/*--------------------------------------------------------------------------------------*/ +/* Separator lines determine their orientation (horizontal or vertical) automatically */ +/* based on the relative height and width of their contrlRect. */ +/* Visual separator proc IDs */ +enum { + kControlSeparatorLineProc = 144 +}; + +/* Control Kind Tag */ +enum { + kControlKindSeparator = FOUR_CHAR_CODE('sepa') +}; + +/* Creation API: Carbon only */ +/* + * CreateSeparatorControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateSeparatorControl( + WindowRef window, + const Rect * boundsRect, + ControlRef * outControl); + + +/*--------------------------------------------------------------------------------------*/ +/* o GROUP BOX (CDEF 10) */ +/*--------------------------------------------------------------------------------------*/ +/* The group box CDEF can be use in several ways. It can have no title, a text title, */ +/* a check box as the title, or a popup button as a title. There are two versions of */ +/* group boxes, primary and secondary, which look slightly different. */ +/* Group Box proc IDs */ +enum { + kControlGroupBoxTextTitleProc = 160, + kControlGroupBoxCheckBoxProc = 161, + kControlGroupBoxPopupButtonProc = 162, + kControlGroupBoxSecondaryTextTitleProc = 164, + kControlGroupBoxSecondaryCheckBoxProc = 165, + kControlGroupBoxSecondaryPopupButtonProc = 166 +}; + +/* Control Kind Tag */ +enum { + kControlKindGroupBox = FOUR_CHAR_CODE('grpb'), + kControlKindCheckGroupBox = FOUR_CHAR_CODE('cgrp'), + kControlKindPopupGroupBox = FOUR_CHAR_CODE('pgrp') +}; + +/* Creation APIs: Carbon only */ +/* + * CreateGroupBoxControl() + * + * Summary: + * Creates a group box control. + * + * Parameters: + * + * window: + * The window that should contain the control. + * + * boundsRect: + * The bounding box of the control. + * + * title: + * The title of the control. + * + * primary: + * Whether to create a primary or secondary group box. + * + * outControl: + * On exit, contains the new control. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateGroupBoxControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + Boolean primary, + ControlRef * outControl); + + +/* + * CreateCheckGroupBoxControl() + * + * Summary: + * Creates a group box control that has a check box as its title. + * + * Parameters: + * + * window: + * The window that should contain the control. + * + * boundsRect: + * The bounding box of the control. + * + * title: + * The title of the control (used as the title of the check box). + * + * initialValue: + * The initial value of the check box. + * + * primary: + * Whether to create a primary or secondary group box. + * + * autoToggle: + * Whether to create an auto-toggling check box. Auto-toggling + * check box titles are only supported on Mac OS X; this parameter + * must be false when used with CarbonLib. + * + * outControl: + * On exit, contains the new control. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateCheckGroupBoxControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + SInt32 initialValue, + Boolean primary, + Boolean autoToggle, + ControlRef * outControl); + + +/* + * CreatePopupGroupBoxControl() + * + * Summary: + * Creates a group box control that has a popup button as its title. + * + * Parameters: + * + * window: + * The window that should contain the control. + * + * boundsRect: + * The bounding box of the control. + * + * title: + * The title of the control (used as the title of the popup + * button). + * + * primary: + * Whether to create a primary or secondary group box. + * + * menuID: + * The menu ID of the menu to be displayed by the popup button. + * + * variableWidth: + * Whether the popup button should have a variable-width title. + * Fixed-width titles are only supported by Mac OS X; this + * parameter must be true when used with CarbonLib. + * + * titleWidth: + * The width in pixels of the popup button title. + * + * titleJustification: + * The justification of the popup button title. Use one of the + * TextEdit justification constants here (teFlushDefault, + * teCenter, teFlushRight, or teFlushLeft). + * + * titleStyle: + * The QuickDraw text style of the popup button title. + * + * outControl: + * On exit, contains the new control. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreatePopupGroupBoxControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + Boolean primary, + SInt16 menuID, + Boolean variableWidth, + SInt16 titleWidth, + SInt16 titleJustification, + Style titleStyle, + ControlRef * outControl); + + + +/* Tagged data supported by group box */ +enum { + kControlGroupBoxMenuHandleTag = FOUR_CHAR_CODE('mhan'), /* MenuRef (popup title only)*/ + kControlGroupBoxMenuRefTag = FOUR_CHAR_CODE('mhan'), /* MenuRef (popup title only)*/ + kControlGroupBoxFontStyleTag = kControlFontStyleTag /* ControlFontStyleRec*/ +}; + +/* tags available with Appearance 1.1 or later */ +enum { + kControlGroupBoxTitleRectTag = FOUR_CHAR_CODE('trec') /* Rect. Rectangle that the title text/control is drawn in. (get only)*/ +}; + +/*--------------------------------------------------------------------------------------*/ +/* o IMAGE WELL (CDEF 11) */ +/*--------------------------------------------------------------------------------------*/ +/* Image Wells allow you to control the content type (pict/icon/etc.) shown in the */ +/* well. */ +/* */ +/* This is made possible by overloading the Min and Value parameters for the control. */ +/* */ +/* Parameter What Goes Here */ +/* ------------------- -------------------------------------------------- */ +/* Min content type (see constants for bevel buttons) */ +/* Value Resource ID of content type, if resource-based. */ +/* */ +/* */ +/* Handle-based Content */ +/* -------------------- */ +/* You can create your control and then set the content to an existing handle to an */ +/* icon suite, etc. using the macros below. Please keep in mind that resource-based */ +/* content is owned by the control, handle-based content is owned by you. The CDEF will*/ +/* not try to dispose of handle-based content. If you are changing the content type of */ +/* the button on the fly, you must make sure that if you are replacing a handle- */ +/* based content with a resource-based content to properly dispose of the handle, */ +/* else a memory leak will ensue. */ +/* */ +/* Image Well proc IDs */ +enum { + kControlImageWellProc = 176 +}; + +/* Control Kind Tag */ +enum { + kControlKindImageWell = FOUR_CHAR_CODE('well') +}; + +/* Creation API: Carbon only */ +/* + * CreateImageWellControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateImageWellControl( + WindowRef window, + const Rect * boundsRect, + const ControlButtonContentInfo * info, + ControlRef * outControl); + + +/* Tagged data supported by image wells */ +enum { + kControlImageWellContentTag = FOUR_CHAR_CODE('cont'), /* ButtonContentInfo*/ + kControlImageWellTransformTag = FOUR_CHAR_CODE('tran'), /* IconTransformType*/ + kControlImageWellIsDragDestinationTag = FOUR_CHAR_CODE('drag') /* Boolean*/ +}; + +/* Helper routines are available only thru the shared library/glue. */ +/* + * GetImageWellContentInfo() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +GetImageWellContentInfo( + ControlRef inButton, + ControlButtonContentInfoPtr outContent); + + +/* + * SetImageWellContentInfo() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetImageWellContentInfo( + ControlRef inButton, + ControlButtonContentInfoPtr inContent); + + +/* + * SetImageWellTransform() + * + * Availability: + * Non-Carbon CFM: in AppearanceLib 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSErr ) +SetImageWellTransform( + ControlRef inButton, + IconTransformType inTransform); + + +/*--------------------------------------------------------------------------------------*/ +/* o POPUP ARROW (CDEF 12) */ +/*--------------------------------------------------------------------------------------*/ +/* The popup arrow CDEF is used to draw the small arrow normally associated with a */ +/* popup control. The arrow can point in four directions, and a small or large version */ +/* can be used. This control is provided to allow clients to draw the arrow in a */ +/* normalized fashion which will take advantage of themes automatically. */ +/* */ +/* Popup Arrow proc IDs */ +enum { + kControlPopupArrowEastProc = 192, + kControlPopupArrowWestProc = 193, + kControlPopupArrowNorthProc = 194, + kControlPopupArrowSouthProc = 195, + kControlPopupArrowSmallEastProc = 196, + kControlPopupArrowSmallWestProc = 197, + kControlPopupArrowSmallNorthProc = 198, + kControlPopupArrowSmallSouthProc = 199 +}; + +/* Popup Arrow Orientations */ +enum { + kControlPopupArrowOrientationEast = 0, + kControlPopupArrowOrientationWest = 1, + kControlPopupArrowOrientationNorth = 2, + kControlPopupArrowOrientationSouth = 3 +}; + + +typedef UInt16 ControlPopupArrowOrientation; +/* Popup Arrow Size */ +enum { + kControlPopupArrowSizeNormal = 0, + kControlPopupArrowSizeSmall = 1 +}; + +typedef UInt16 ControlPopupArrowSize; +/* Control Kind Tag */ +enum { + kControlKindPopupArrow = FOUR_CHAR_CODE('parr') +}; + +/* Creation API: Carbon only */ +/* + * CreatePopupArrowControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreatePopupArrowControl( + WindowRef window, + const Rect * boundsRect, + ControlPopupArrowOrientation orientation, + ControlPopupArrowSize size, + ControlRef * outControl); + + +/*--------------------------------------------------------------------------------------*/ +/* o PLACARD (CDEF 14) */ +/*--------------------------------------------------------------------------------------*/ +/* Placard proc IDs */ +enum { + kControlPlacardProc = 224 +}; + +/* Control Kind Tag */ +enum { + kControlKindPlacard = FOUR_CHAR_CODE('plac') +}; + +/* Creation API: Carbon only */ +/* + * CreatePlacardControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreatePlacardControl( + WindowRef window, + const Rect * boundsRect, + ControlRef * outControl); + + +/*--------------------------------------------------------------------------------------*/ +/* o CLOCK (CDEF 15) */ +/*--------------------------------------------------------------------------------------*/ +/* NOTE: You can specify more options in the Value paramter when creating the clock. */ +/* See below. */ +/* */ +/* NOTE: Under Appearance 1.1, the clock control knows and returns more part codes. */ +/* The new clock-specific part codes are defined with the other control parts. */ +/* Besides these clock-specific parts, we also return kControlUpButtonPart */ +/* and kControlDownButtonPart when they hit the up and down arrows. */ +/* The new part codes give you more flexibility for focusing and hit testing. */ +/* */ +/* The original kControlClockPart is still valid. When hit testing, it means */ +/* that some non-editable area of the clock's whitespace has been clicked. */ +/* When focusing a currently unfocused clock, it changes the focus to the */ +/* first part; it is the same as passing kControlFocusNextPart. When */ +/* re-focusing a focused clock, it will not change the focus at all. */ +/* Clock proc IDs */ +enum { + kControlClockTimeProc = 240, + kControlClockTimeSecondsProc = 241, + kControlClockDateProc = 242, + kControlClockMonthYearProc = 243 +}; + +/* Clock Types */ +typedef UInt16 ControlClockType; +enum { + kControlClockTypeHourMinute = 0, + kControlClockTypeHourMinuteSecond = 1, + kControlClockTypeMonthDayYear = 2, + kControlClockTypeMonthYear = 3 +}; + +/* Clock Flags */ +/* These flags can be passed into 'value' field on creation of the control. */ +/* Value is set to 0 after control is created. */ +typedef UInt32 ControlClockFlags; +enum { + kControlClockFlagStandard = 0, /* editable, non-live*/ + kControlClockNoFlags = 0, + kControlClockFlagDisplayOnly = 1, /* add this to become non-editable*/ + kControlClockIsDisplayOnly = 1, + kControlClockFlagLive = 2, /* automatically shows current time on idle. only valid with display only.*/ + kControlClockIsLive = 2 +}; + +/* Control Kind Tag */ +enum { + kControlKindClock = FOUR_CHAR_CODE('clck') +}; + +/* Creation API: Carbon only */ +/* + * CreateClockControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateClockControl( + WindowRef window, + const Rect * boundsRect, + ControlClockType clockType, + ControlClockFlags clockFlags, + ControlRef * outControl); + + +/* Tagged data supported by clocks */ +enum { + kControlClockLongDateTag = FOUR_CHAR_CODE('date'), /* LongDateRec*/ + kControlClockFontStyleTag = kControlFontStyleTag, /* ControlFontStyleRec*/ + kControlClockAnimatingTag = FOUR_CHAR_CODE('anim') /* Boolean*/ +}; + +/*--------------------------------------------------------------------------------------*/ +/* o USER PANE (CDEF 16) */ +/*--------------------------------------------------------------------------------------*/ +/* User panes have two primary purposes: to allow easy implementation of a custom */ +/* control by the developer, and to provide a generic container for embedding other */ +/* controls. */ +/* */ +/* In Carbon, with the advent of Carbon-event-based controls, you may find it easier */ +/* to simply write a new control from scratch than to customize a user pane control. */ +/* The set of callbacks provided by the user pane will not be extended to support */ +/* new Control Manager features; instead, you should just write a real control. */ +/* */ +/* User panes do not, by default, support embedding. If you try to embed a control */ +/* into a user pane, you will get back errControlIsNotEmbedder. You can make a user */ +/* pane support embedding by passing the kControlSupportsEmbedding flag in the 'value' */ +/* parameter when you create the control. */ +/* */ +/* User panes support the following overloaded control initialization options: */ +/* */ +/* Parameter What Goes Here */ +/* ------------------- -------------------------------------------------- */ +/* Value Control feature flags */ + +/* User Pane proc IDs */ +enum { + kControlUserPaneProc = 256 +}; + +/* Control Kind Tag */ +enum { + kControlKindUserPane = FOUR_CHAR_CODE('upan') +}; + +/* Creation API: Carbon only */ +/* + * CreateUserPaneControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateUserPaneControl( + WindowRef window, + const Rect * boundsRect, + UInt32 features, + ControlRef * outControl); + + +/* Tagged data supported by user panes */ +/* Currently, they are all proc ptrs for doing things like drawing and hit testing, etc. */ +enum { + kControlUserItemDrawProcTag = FOUR_CHAR_CODE('uidp'), /* UserItemUPP*/ + kControlUserPaneDrawProcTag = FOUR_CHAR_CODE('draw'), /* ControlUserPaneDrawingUPP*/ + kControlUserPaneHitTestProcTag = FOUR_CHAR_CODE('hitt'), /* ControlUserPaneHitTestUPP*/ + kControlUserPaneTrackingProcTag = FOUR_CHAR_CODE('trak'), /* ControlUserPaneTrackingUPP*/ + kControlUserPaneIdleProcTag = FOUR_CHAR_CODE('idle'), /* ControlUserPaneIdleUPP*/ + kControlUserPaneKeyDownProcTag = FOUR_CHAR_CODE('keyd'), /* ControlUserPaneKeyDownUPP*/ + kControlUserPaneActivateProcTag = FOUR_CHAR_CODE('acti'), /* ControlUserPaneActivateUPP*/ + kControlUserPaneFocusProcTag = FOUR_CHAR_CODE('foci'), /* ControlUserPaneFocusUPP*/ + kControlUserPaneBackgroundProcTag = FOUR_CHAR_CODE('back') /* ControlUserPaneBackgroundUPP*/ +}; + +typedef CALLBACK_API( void , ControlUserPaneDrawProcPtr )(ControlRef control, SInt16 part); +typedef CALLBACK_API( ControlPartCode , ControlUserPaneHitTestProcPtr )(ControlRef control, Point where); +typedef CALLBACK_API( ControlPartCode , ControlUserPaneTrackingProcPtr )(ControlRef control, Point startPt, ControlActionUPP actionProc); +typedef CALLBACK_API( void , ControlUserPaneIdleProcPtr )(ControlRef control); +typedef CALLBACK_API( ControlPartCode , ControlUserPaneKeyDownProcPtr )(ControlRef control, SInt16 keyCode, SInt16 charCode, SInt16 modifiers); +typedef CALLBACK_API( void , ControlUserPaneActivateProcPtr )(ControlRef control, Boolean activating); +typedef CALLBACK_API( ControlPartCode , ControlUserPaneFocusProcPtr )(ControlRef control, ControlFocusPart action); +typedef CALLBACK_API( void , ControlUserPaneBackgroundProcPtr )(ControlRef control, ControlBackgroundPtr info); +typedef STACK_UPP_TYPE(ControlUserPaneDrawProcPtr) ControlUserPaneDrawUPP; +typedef STACK_UPP_TYPE(ControlUserPaneHitTestProcPtr) ControlUserPaneHitTestUPP; +typedef STACK_UPP_TYPE(ControlUserPaneTrackingProcPtr) ControlUserPaneTrackingUPP; +typedef STACK_UPP_TYPE(ControlUserPaneIdleProcPtr) ControlUserPaneIdleUPP; +typedef STACK_UPP_TYPE(ControlUserPaneKeyDownProcPtr) ControlUserPaneKeyDownUPP; +typedef STACK_UPP_TYPE(ControlUserPaneActivateProcPtr) ControlUserPaneActivateUPP; +typedef STACK_UPP_TYPE(ControlUserPaneFocusProcPtr) ControlUserPaneFocusUPP; +typedef STACK_UPP_TYPE(ControlUserPaneBackgroundProcPtr) ControlUserPaneBackgroundUPP; +/* + * NewControlUserPaneDrawUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlUserPaneDrawUPP ) +NewControlUserPaneDrawUPP(ControlUserPaneDrawProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlUserPaneDrawProcInfo = 0x000002C0 }; /* pascal no_return_value Func(4_bytes, 2_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlUserPaneDrawUPP) NewControlUserPaneDrawUPP(ControlUserPaneDrawProcPtr userRoutine) { return (ControlUserPaneDrawUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneDrawProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlUserPaneDrawUPP(userRoutine) (ControlUserPaneDrawUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneDrawProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewControlUserPaneHitTestUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlUserPaneHitTestUPP ) +NewControlUserPaneHitTestUPP(ControlUserPaneHitTestProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlUserPaneHitTestProcInfo = 0x000003E0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlUserPaneHitTestUPP) NewControlUserPaneHitTestUPP(ControlUserPaneHitTestProcPtr userRoutine) { return (ControlUserPaneHitTestUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneHitTestProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlUserPaneHitTestUPP(userRoutine) (ControlUserPaneHitTestUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneHitTestProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewControlUserPaneTrackingUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlUserPaneTrackingUPP ) +NewControlUserPaneTrackingUPP(ControlUserPaneTrackingProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlUserPaneTrackingProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlUserPaneTrackingUPP) NewControlUserPaneTrackingUPP(ControlUserPaneTrackingProcPtr userRoutine) { return (ControlUserPaneTrackingUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneTrackingProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlUserPaneTrackingUPP(userRoutine) (ControlUserPaneTrackingUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneTrackingProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewControlUserPaneIdleUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlUserPaneIdleUPP ) +NewControlUserPaneIdleUPP(ControlUserPaneIdleProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlUserPaneIdleProcInfo = 0x000000C0 }; /* pascal no_return_value Func(4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlUserPaneIdleUPP) NewControlUserPaneIdleUPP(ControlUserPaneIdleProcPtr userRoutine) { return (ControlUserPaneIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneIdleProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlUserPaneIdleUPP(userRoutine) (ControlUserPaneIdleUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneIdleProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewControlUserPaneKeyDownUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlUserPaneKeyDownUPP ) +NewControlUserPaneKeyDownUPP(ControlUserPaneKeyDownProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlUserPaneKeyDownProcInfo = 0x00002AE0 }; /* pascal 2_bytes Func(4_bytes, 2_bytes, 2_bytes, 2_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlUserPaneKeyDownUPP) NewControlUserPaneKeyDownUPP(ControlUserPaneKeyDownProcPtr userRoutine) { return (ControlUserPaneKeyDownUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneKeyDownProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlUserPaneKeyDownUPP(userRoutine) (ControlUserPaneKeyDownUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneKeyDownProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewControlUserPaneActivateUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlUserPaneActivateUPP ) +NewControlUserPaneActivateUPP(ControlUserPaneActivateProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlUserPaneActivateProcInfo = 0x000001C0 }; /* pascal no_return_value Func(4_bytes, 1_byte) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlUserPaneActivateUPP) NewControlUserPaneActivateUPP(ControlUserPaneActivateProcPtr userRoutine) { return (ControlUserPaneActivateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneActivateProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlUserPaneActivateUPP(userRoutine) (ControlUserPaneActivateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneActivateProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewControlUserPaneFocusUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlUserPaneFocusUPP ) +NewControlUserPaneFocusUPP(ControlUserPaneFocusProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlUserPaneFocusProcInfo = 0x000002E0 }; /* pascal 2_bytes Func(4_bytes, 2_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlUserPaneFocusUPP) NewControlUserPaneFocusUPP(ControlUserPaneFocusProcPtr userRoutine) { return (ControlUserPaneFocusUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneFocusProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlUserPaneFocusUPP(userRoutine) (ControlUserPaneFocusUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneFocusProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewControlUserPaneBackgroundUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlUserPaneBackgroundUPP ) +NewControlUserPaneBackgroundUPP(ControlUserPaneBackgroundProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlUserPaneBackgroundProcInfo = 0x000003C0 }; /* pascal no_return_value Func(4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlUserPaneBackgroundUPP) NewControlUserPaneBackgroundUPP(ControlUserPaneBackgroundProcPtr userRoutine) { return (ControlUserPaneBackgroundUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneBackgroundProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlUserPaneBackgroundUPP(userRoutine) (ControlUserPaneBackgroundUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlUserPaneBackgroundProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeControlUserPaneDrawUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlUserPaneDrawUPP(ControlUserPaneDrawUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlUserPaneDrawUPP(ControlUserPaneDrawUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlUserPaneDrawUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeControlUserPaneHitTestUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlUserPaneHitTestUPP(ControlUserPaneHitTestUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlUserPaneHitTestUPP(ControlUserPaneHitTestUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlUserPaneHitTestUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeControlUserPaneTrackingUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlUserPaneTrackingUPP(ControlUserPaneTrackingUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlUserPaneTrackingUPP(ControlUserPaneTrackingUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlUserPaneTrackingUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeControlUserPaneIdleUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlUserPaneIdleUPP(ControlUserPaneIdleUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlUserPaneIdleUPP(ControlUserPaneIdleUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlUserPaneIdleUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeControlUserPaneKeyDownUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlUserPaneKeyDownUPP(ControlUserPaneKeyDownUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlUserPaneKeyDownUPP(ControlUserPaneKeyDownUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlUserPaneKeyDownUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeControlUserPaneActivateUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlUserPaneActivateUPP(ControlUserPaneActivateUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlUserPaneActivateUPP(ControlUserPaneActivateUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlUserPaneActivateUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeControlUserPaneFocusUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlUserPaneFocusUPP(ControlUserPaneFocusUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlUserPaneFocusUPP(ControlUserPaneFocusUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlUserPaneFocusUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeControlUserPaneBackgroundUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlUserPaneBackgroundUPP(ControlUserPaneBackgroundUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlUserPaneBackgroundUPP(ControlUserPaneBackgroundUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlUserPaneBackgroundUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeControlUserPaneDrawUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeControlUserPaneDrawUPP( + ControlRef control, + SInt16 part, + ControlUserPaneDrawUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeControlUserPaneDrawUPP(ControlRef control, SInt16 part, ControlUserPaneDrawUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppControlUserPaneDrawProcInfo, control, part); } + #else + #define InvokeControlUserPaneDrawUPP(control, part, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppControlUserPaneDrawProcInfo, (control), (part)) + #endif +#endif + +/* + * InvokeControlUserPaneHitTestUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlPartCode ) +InvokeControlUserPaneHitTestUPP( + ControlRef control, + Point where, + ControlUserPaneHitTestUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(ControlPartCode) InvokeControlUserPaneHitTestUPP(ControlRef control, Point where, ControlUserPaneHitTestUPP userUPP) { return (ControlPartCode)CALL_TWO_PARAMETER_UPP(userUPP, uppControlUserPaneHitTestProcInfo, control, where); } + #else + #define InvokeControlUserPaneHitTestUPP(control, where, userUPP) (ControlPartCode)CALL_TWO_PARAMETER_UPP((userUPP), uppControlUserPaneHitTestProcInfo, (control), (where)) + #endif +#endif + +/* + * InvokeControlUserPaneTrackingUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlPartCode ) +InvokeControlUserPaneTrackingUPP( + ControlRef control, + Point startPt, + ControlActionUPP actionProc, + ControlUserPaneTrackingUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(ControlPartCode) InvokeControlUserPaneTrackingUPP(ControlRef control, Point startPt, ControlActionUPP actionProc, ControlUserPaneTrackingUPP userUPP) { return (ControlPartCode)CALL_THREE_PARAMETER_UPP(userUPP, uppControlUserPaneTrackingProcInfo, control, startPt, actionProc); } + #else + #define InvokeControlUserPaneTrackingUPP(control, startPt, actionProc, userUPP) (ControlPartCode)CALL_THREE_PARAMETER_UPP((userUPP), uppControlUserPaneTrackingProcInfo, (control), (startPt), (actionProc)) + #endif +#endif + +/* + * InvokeControlUserPaneIdleUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeControlUserPaneIdleUPP( + ControlRef control, + ControlUserPaneIdleUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeControlUserPaneIdleUPP(ControlRef control, ControlUserPaneIdleUPP userUPP) { CALL_ONE_PARAMETER_UPP(userUPP, uppControlUserPaneIdleProcInfo, control); } + #else + #define InvokeControlUserPaneIdleUPP(control, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppControlUserPaneIdleProcInfo, (control)) + #endif +#endif + +/* + * InvokeControlUserPaneKeyDownUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlPartCode ) +InvokeControlUserPaneKeyDownUPP( + ControlRef control, + SInt16 keyCode, + SInt16 charCode, + SInt16 modifiers, + ControlUserPaneKeyDownUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(ControlPartCode) InvokeControlUserPaneKeyDownUPP(ControlRef control, SInt16 keyCode, SInt16 charCode, SInt16 modifiers, ControlUserPaneKeyDownUPP userUPP) { return (ControlPartCode)CALL_FOUR_PARAMETER_UPP(userUPP, uppControlUserPaneKeyDownProcInfo, control, keyCode, charCode, modifiers); } + #else + #define InvokeControlUserPaneKeyDownUPP(control, keyCode, charCode, modifiers, userUPP) (ControlPartCode)CALL_FOUR_PARAMETER_UPP((userUPP), uppControlUserPaneKeyDownProcInfo, (control), (keyCode), (charCode), (modifiers)) + #endif +#endif + +/* + * InvokeControlUserPaneActivateUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeControlUserPaneActivateUPP( + ControlRef control, + Boolean activating, + ControlUserPaneActivateUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeControlUserPaneActivateUPP(ControlRef control, Boolean activating, ControlUserPaneActivateUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppControlUserPaneActivateProcInfo, control, activating); } + #else + #define InvokeControlUserPaneActivateUPP(control, activating, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppControlUserPaneActivateProcInfo, (control), (activating)) + #endif +#endif + +/* + * InvokeControlUserPaneFocusUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlPartCode ) +InvokeControlUserPaneFocusUPP( + ControlRef control, + ControlFocusPart action, + ControlUserPaneFocusUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(ControlPartCode) InvokeControlUserPaneFocusUPP(ControlRef control, ControlFocusPart action, ControlUserPaneFocusUPP userUPP) { return (ControlPartCode)CALL_TWO_PARAMETER_UPP(userUPP, uppControlUserPaneFocusProcInfo, control, action); } + #else + #define InvokeControlUserPaneFocusUPP(control, action, userUPP) (ControlPartCode)CALL_TWO_PARAMETER_UPP((userUPP), uppControlUserPaneFocusProcInfo, (control), (action)) + #endif +#endif + +/* + * InvokeControlUserPaneBackgroundUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeControlUserPaneBackgroundUPP( + ControlRef control, + ControlBackgroundPtr info, + ControlUserPaneBackgroundUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeControlUserPaneBackgroundUPP(ControlRef control, ControlBackgroundPtr info, ControlUserPaneBackgroundUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppControlUserPaneBackgroundProcInfo, control, info); } + #else + #define InvokeControlUserPaneBackgroundUPP(control, info, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppControlUserPaneBackgroundProcInfo, (control), (info)) + #endif +#endif + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewControlUserPaneDrawProc(userRoutine) NewControlUserPaneDrawUPP(userRoutine) + #define NewControlUserPaneHitTestProc(userRoutine) NewControlUserPaneHitTestUPP(userRoutine) + #define NewControlUserPaneTrackingProc(userRoutine) NewControlUserPaneTrackingUPP(userRoutine) + #define NewControlUserPaneIdleProc(userRoutine) NewControlUserPaneIdleUPP(userRoutine) + #define NewControlUserPaneKeyDownProc(userRoutine) NewControlUserPaneKeyDownUPP(userRoutine) + #define NewControlUserPaneActivateProc(userRoutine) NewControlUserPaneActivateUPP(userRoutine) + #define NewControlUserPaneFocusProc(userRoutine) NewControlUserPaneFocusUPP(userRoutine) + #define NewControlUserPaneBackgroundProc(userRoutine) NewControlUserPaneBackgroundUPP(userRoutine) + #define CallControlUserPaneDrawProc(userRoutine, control, part) InvokeControlUserPaneDrawUPP(control, part, userRoutine) + #define CallControlUserPaneHitTestProc(userRoutine, control, where) InvokeControlUserPaneHitTestUPP(control, where, userRoutine) + #define CallControlUserPaneTrackingProc(userRoutine, control, startPt, actionProc) InvokeControlUserPaneTrackingUPP(control, startPt, actionProc, userRoutine) + #define CallControlUserPaneIdleProc(userRoutine, control) InvokeControlUserPaneIdleUPP(control, userRoutine) + #define CallControlUserPaneKeyDownProc(userRoutine, control, keyCode, charCode, modifiers) InvokeControlUserPaneKeyDownUPP(control, keyCode, charCode, modifiers, userRoutine) + #define CallControlUserPaneActivateProc(userRoutine, control, activating) InvokeControlUserPaneActivateUPP(control, activating, userRoutine) + #define CallControlUserPaneFocusProc(userRoutine, control, action) InvokeControlUserPaneFocusUPP(control, action, userRoutine) + #define CallControlUserPaneBackgroundProc(userRoutine, control, info) InvokeControlUserPaneBackgroundUPP(control, info, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + +/* + ------------------------------------------------------------------------------------------ + o EDIT TEXT (CDEF 17) + ------------------------------------------------------------------------------------------ +*/ +/* Edit Text proc IDs */ +enum { + kControlEditTextProc = 272, + kControlEditTextPasswordProc = 274 +}; + +/* proc IDs available with Appearance 1.1 or later */ +enum { + kControlEditTextInlineInputProc = 276 /* Can't combine with the other variants*/ +}; + +/* Control Kind Tag */ +enum { + kControlKindEditText = FOUR_CHAR_CODE('etxt') +}; + +/* Creation API: Carbon only */ +/* + * CreateEditTextControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateEditTextControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef text, + Boolean isPassword, + Boolean useInlineInput, + const ControlFontStyleRec * style, /* can be NULL */ + ControlRef * outControl); + + + +/* Tagged data supported by edit text */ +enum { + kControlEditTextStyleTag = kControlFontStyleTag, /* ControlFontStyleRec*/ + kControlEditTextTextTag = FOUR_CHAR_CODE('text'), /* Buffer of chars - you supply the buffer*/ + kControlEditTextTEHandleTag = FOUR_CHAR_CODE('than'), /* The TEHandle of the text edit record*/ + kControlEditTextKeyFilterTag = kControlKeyFilterTag, + kControlEditTextSelectionTag = FOUR_CHAR_CODE('sele'), /* ControlEditTextSelectionRec*/ + kControlEditTextPasswordTag = FOUR_CHAR_CODE('pass') /* The clear text password text*/ +}; + +/* tags available with Appearance 1.1 or later */ +enum { + kControlEditTextKeyScriptBehaviorTag = FOUR_CHAR_CODE('kscr'), /* ControlKeyScriptBehavior. Defaults to "PrefersRoman" for password fields,*/ + /* or "AllowAnyScript" for non-password fields.*/ + kControlEditTextLockedTag = FOUR_CHAR_CODE('lock'), /* Boolean. Locking disables editability.*/ + kControlEditTextFixedTextTag = FOUR_CHAR_CODE('ftxt'), /* Like the normal text tag, but fixes inline input first*/ + kControlEditTextValidationProcTag = FOUR_CHAR_CODE('vali'), /* ControlEditTextValidationUPP. Called when a key filter can't be: after cut, paste, etc.*/ + kControlEditTextInlinePreUpdateProcTag = FOUR_CHAR_CODE('prup'), /* TSMTEPreUpdateUPP and TSMTEPostUpdateUpp. For use with inline input variant...*/ + kControlEditTextInlinePostUpdateProcTag = FOUR_CHAR_CODE('poup') /* ...The refCon parameter will contain the ControlRef.*/ +}; + + +/* + * Discussion: + * EditText ControlData tags available with MacOSX and later. + */ +enum { + + /* + * Extract the content of the edit text field as a CFString. Don't + * forget that you own the returned CFStringRef and are responsible + * for CFReleasing it. + */ + kControlEditTextCFStringTag = FOUR_CHAR_CODE('cfst'), /* CFStringRef (Also available on CarbonLib 1.5)*/ + + /* + * Extract the content of the edit text field as a CFString, if it is + * a password field. Don't forget that you own the returned + * CFStringRef and are responsible for CFReleasing it. + */ + kControlEditTextPasswordCFStringTag = FOUR_CHAR_CODE('pwcf') /* CFStringRef*/ +}; + + + + +/* Structure for getting the edit text selection */ +struct ControlEditTextSelectionRec { + SInt16 selStart; + SInt16 selEnd; +}; +typedef struct ControlEditTextSelectionRec ControlEditTextSelectionRec; +typedef ControlEditTextSelectionRec * ControlEditTextSelectionPtr; +typedef CALLBACK_API( void , ControlEditTextValidationProcPtr )(ControlRef control); +typedef STACK_UPP_TYPE(ControlEditTextValidationProcPtr) ControlEditTextValidationUPP; +/* + * NewControlEditTextValidationUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ControlEditTextValidationUPP ) +NewControlEditTextValidationUPP(ControlEditTextValidationProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppControlEditTextValidationProcInfo = 0x000000C0 }; /* pascal no_return_value Func(4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(ControlEditTextValidationUPP) NewControlEditTextValidationUPP(ControlEditTextValidationProcPtr userRoutine) { return (ControlEditTextValidationUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlEditTextValidationProcInfo, GetCurrentArchitecture()); } + #else + #define NewControlEditTextValidationUPP(userRoutine) (ControlEditTextValidationUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppControlEditTextValidationProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeControlEditTextValidationUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeControlEditTextValidationUPP(ControlEditTextValidationUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeControlEditTextValidationUPP(ControlEditTextValidationUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeControlEditTextValidationUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeControlEditTextValidationUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeControlEditTextValidationUPP( + ControlRef control, + ControlEditTextValidationUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeControlEditTextValidationUPP(ControlRef control, ControlEditTextValidationUPP userUPP) { CALL_ONE_PARAMETER_UPP(userUPP, uppControlEditTextValidationProcInfo, control); } + #else + #define InvokeControlEditTextValidationUPP(control, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppControlEditTextValidationProcInfo, (control)) + #endif +#endif + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewControlEditTextValidationProc(userRoutine) NewControlEditTextValidationUPP(userRoutine) + #define CallControlEditTextValidationProc(userRoutine, control) InvokeControlEditTextValidationUPP(control, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + +/*--------------------------------------------------------------------------------------*/ +/* o STATIC TEXT (CDEF 18) */ +/*--------------------------------------------------------------------------------------*/ +/* Static Text proc IDs */ +enum { + kControlStaticTextProc = 288 +}; + +/* Control Kind Tag */ +enum { + kControlKindStaticText = FOUR_CHAR_CODE('stxt') +}; + +/* Creation API: Carbon only */ +/* + * CreateStaticTextControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateStaticTextControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef text, + const ControlFontStyleRec * style, + ControlRef * outControl); + + + +/* Tagged data supported by static text */ +enum { + kControlStaticTextStyleTag = kControlFontStyleTag, /* ControlFontStyleRec*/ + kControlStaticTextTextTag = FOUR_CHAR_CODE('text'), /* Copy of text*/ + kControlStaticTextTextHeightTag = FOUR_CHAR_CODE('thei') /* SInt16*/ +}; + +/* Tags available with appearance 1.1 or later */ +enum { + kControlStaticTextTruncTag = FOUR_CHAR_CODE('trun') /* TruncCode (-1 means no truncation)*/ +}; + +/* Tags available with Mac OS X or later */ +enum { + kControlStaticTextCFStringTag = FOUR_CHAR_CODE('cfst') /* CFStringRef (Also available on CarbonLib 1.5)*/ +}; + + +/*--------------------------------------------------------------------------------------*/ +/* o PICTURE CONTROL (CDEF 19) */ +/*--------------------------------------------------------------------------------------*/ +/* Value parameter should contain the ID of the picture you wish to display when */ +/* creating controls of this type. If you don't want the control tracked at all, use */ +/* the 'no track' variant. */ +/* Picture control proc IDs */ +enum { + kControlPictureProc = 304, + kControlPictureNoTrackProc = 305 /* immediately returns kControlPicturePart*/ +}; + +/* Control Kind Tag */ +enum { + kControlKindPicture = FOUR_CHAR_CODE('pict') +}; + +/* Creation API: Carbon only */ +/* + * CreatePictureControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreatePictureControl( + WindowRef window, + const Rect * boundsRect, + const ControlButtonContentInfo * content, + Boolean dontTrack, + ControlRef * outControl); + + +/* Tagged data supported by picture controls */ +enum { + kControlPictureHandleTag = FOUR_CHAR_CODE('pich') /* PicHandle*/ +}; + +/*--------------------------------------------------------------------------------------*/ +/* o ICON CONTROL (CDEF 20) */ +/*--------------------------------------------------------------------------------------*/ +/* Value parameter should contain the ID of the ICON or cicn you wish to display when */ +/* creating controls of this type. If you don't want the control tracked at all, use */ +/* the 'no track' variant. */ +/* Icon control proc IDs */ +enum { + kControlIconProc = 320, + kControlIconNoTrackProc = 321, /* immediately returns kControlIconPart*/ + kControlIconSuiteProc = 322, + kControlIconSuiteNoTrackProc = 323 /* immediately returns kControlIconPart*/ +}; + +enum { + /* icon ref controls may have either an icon, color icon, icon suite, or icon ref.*/ + /* for data other than icon, you must set the data by passing a*/ + /* ControlButtonContentInfo to SetControlData*/ + kControlIconRefProc = 324, + kControlIconRefNoTrackProc = 325 /* immediately returns kControlIconPart*/ +}; + +/* Control Kind Tag */ +enum { + kControlKindIcon = FOUR_CHAR_CODE('icon') +}; + +/* + * CreateIconControl() + * + * Summary: + * Creates an Icon control at a specific position in the specified + * window. + * + * Discussion: + * Icon controls display an icon that (optionally) hilites when + * clicked on. On Mac OS X, a root control will be created for the + * window if one does not already exist. If a root control exists + * for the window, the Icon control will be embedded into it. + * + * Parameters: + * + * inWindow: + * The WindowRef into which the Icon control will be created. + * + * inBoundsRect: + * The desired position (in coordinates local to the window's + * port) for the Icon control. + * + * inIconContent: + * The descriptor for the icon you want the control to display. + * Mac OS X and CarbonLib 1.5 (and beyond) support all of the icon + * content types. Prior to CarbonLib 1.5, the only content types + * that are properly respected are kControlContentIconSuiteRes, + * kControlContentCIconRes, and kControlContentICONRes. + * + * inDontTrack: + * A Boolean value indicating whether the control should hilite + * when it is clicked on. False means hilite and track the mouse. + * + * outControl: + * On successful output, outControl will contain a reference to + * the Icon control. + * + * Result: + * An OSStatus code indicating success or failure. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateIconControl( + WindowRef inWindow, + const Rect * inBoundsRect, + const ControlButtonContentInfo * inIconContent, + Boolean inDontTrack, + ControlRef * outControl); + + +/* Tagged data supported by icon controls */ +enum { + kControlIconTransformTag = FOUR_CHAR_CODE('trfm'), /* IconTransformType*/ + kControlIconAlignmentTag = FOUR_CHAR_CODE('algn') /* IconAlignmentType*/ +}; + +/* Tags available with appearance 1.1 or later */ +enum { + kControlIconResourceIDTag = FOUR_CHAR_CODE('ires'), /* SInt16 resource ID of icon to use*/ + kControlIconContentTag = FOUR_CHAR_CODE('cont') /* accepts a ControlButtonContentInfo*/ +}; + +/*--------------------------------------------------------------------------------------*/ +/* o WINDOW HEADER (CDEF 21) */ +/*--------------------------------------------------------------------------------------*/ +/* Window Header proc IDs */ +enum { + kControlWindowHeaderProc = 336, /* normal header*/ + kControlWindowListViewHeaderProc = 337 /* variant for list views - no bottom line*/ +}; + +/* Control Kind Tag */ +enum { + kControlKindWindowHeader = FOUR_CHAR_CODE('whed') +}; + +/* Creation API: Carbon Only */ +/* + * CreateWindowHeaderControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateWindowHeaderControl( + WindowRef window, + const Rect * boundsRect, + Boolean isListHeader, + ControlRef * outControl); + + +/*--------------------------------------------------------------------------------------*/ +/* o LIST BOX (CDEF 22) */ +/*--------------------------------------------------------------------------------------*/ +/* Lists use an auxiliary resource to define their format. The resource type used is */ +/* 'ldes' and a definition for it can be found in Appearance.r. The resource ID for */ +/* the ldes is passed in the 'value' parameter when creating the control. You may pass */ +/* zero in value. This tells the List Box control to not use a resource. The list will */ +/* be created with default values, and will use the standard LDEF (0). You can change */ +/* the list by getting the list handle. You can set the LDEF to use by using the tag */ +/* below (kControlListBoxLDEFTag) */ +/* List Box proc IDs */ +enum { + kControlListBoxProc = 352, + kControlListBoxAutoSizeProc = 353 +}; + +/* Control Kind Tag */ +enum { + kControlKindListBox = FOUR_CHAR_CODE('lbox') +}; + +/* Creation API: Carbon Only */ +/* + * CreateListBoxControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateListBoxControl( + WindowRef window, + const Rect * boundsRect, + Boolean autoSize, + SInt16 numRows, + SInt16 numColumns, + Boolean horizScroll, + Boolean vertScroll, + SInt16 cellHeight, + SInt16 cellWidth, + Boolean hasGrowSpace, + const ListDefSpec * listDef, + ControlRef * outControl); + + +/* Tagged data supported by list box */ +enum { + kControlListBoxListHandleTag = FOUR_CHAR_CODE('lhan'), /* ListHandle*/ + kControlListBoxKeyFilterTag = kControlKeyFilterTag, /* ControlKeyFilterUPP*/ + kControlListBoxFontStyleTag = kControlFontStyleTag /* ControlFontStyleRec*/ +}; + +/* New tags in 1.0.1 or later */ +enum { + kControlListBoxDoubleClickTag = FOUR_CHAR_CODE('dblc'), /* Boolean. Was last click a double-click?*/ + kControlListBoxLDEFTag = FOUR_CHAR_CODE('ldef') /* SInt16. ID of LDEF to use.*/ +}; + +/*--------------------------------------------------------------------------------------*/ +/* o PUSH BUTTON (CDEF 23) */ +/*--------------------------------------------------------------------------------------*/ +/* The new standard checkbox and radio button controls support a "mixed" value that */ +/* indicates that the current setting contains a mixed set of on and off values. The */ +/* control value used to display this indication is defined in Controls.h: */ +/* */ +/* kControlCheckBoxMixedValue = 2 */ +/* */ +/* Two new variants of the standard pushbutton have been added to the standard control */ +/* suite that draw a color icon next to the control title. One variant draws the icon */ +/* on the left side, the other draws it on the right side (when the system justifica- */ +/* tion is right to left, these are reversed). */ +/* */ +/* When either of the icon pushbuttons are created, the contrlMax field of the control */ +/* record is used to determine the ID of the 'cicn' resource drawn in the pushbutton. */ +/* */ +/* In addition, a push button can now be told to draw with a default outline using the */ +/* SetControlData routine with the kControlPushButtonDefaultTag below. */ +/* */ +/* A push button may also be marked using the kControlPushButtonCancelTag. This has */ +/* no visible representation, but does cause the button to play the CancelButton theme */ +/* sound instead of the regular pushbutton theme sound when pressed. */ +/* */ +/* Theme Push Button/Check Box/Radio Button proc IDs */ +enum { + kControlPushButtonProc = 368, + kControlCheckBoxProc = 369, + kControlRadioButtonProc = 370, + kControlPushButLeftIconProc = 374, /* Standard pushbutton with left-side icon*/ + kControlPushButRightIconProc = 375 /* Standard pushbutton with right-side icon*/ +}; + +/* Variants with Appearance 1.1 or later */ +enum { + kControlCheckBoxAutoToggleProc = 371, + kControlRadioButtonAutoToggleProc = 372 +}; + +/* Push Button Icon Alignments */ +typedef UInt16 ControlPushButtonIconAlignment; +enum { + kControlPushButtonIconOnLeft = 6, + kControlPushButtonIconOnRight = 7 +}; + +/* Control Kind Tag */ +enum { + kControlKindPushButton = FOUR_CHAR_CODE('push'), + kControlKindPushIconButton = FOUR_CHAR_CODE('picn'), + kControlKindRadioButton = FOUR_CHAR_CODE('rdio'), + kControlKindCheckBox = FOUR_CHAR_CODE('cbox') +}; + +/* Creation APIs: Carbon Only */ +/* + * CreatePushButtonControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreatePushButtonControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + ControlRef * outControl); + + +/* + * CreatePushButtonWithIconControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreatePushButtonWithIconControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + ControlButtonContentInfo * icon, + ControlPushButtonIconAlignment iconAlignment, + ControlRef * outControl); + + +/* + * CreateRadioButtonControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateRadioButtonControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + SInt32 initialValue, + Boolean autoToggle, + ControlRef * outControl); + + +/* + * CreateCheckBoxControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateCheckBoxControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + SInt32 initialValue, + Boolean autoToggle, + ControlRef * outControl); + + + + +/* Tagged data supported by standard buttons */ +enum { + kControlPushButtonDefaultTag = FOUR_CHAR_CODE('dflt'), /* default ring flag*/ + kControlPushButtonCancelTag = FOUR_CHAR_CODE('cncl') /* cancel button flag (1.1 and later)*/ +}; + +/*--------------------------------------------------------------------------------------*/ +/* o SCROLL BAR (CDEF 24) */ +/*--------------------------------------------------------------------------------------*/ +/* This is the new Appearance scroll bar. */ +/* */ +/* Theme Scroll Bar proc IDs */ +enum { + kControlScrollBarProc = 384, /* normal scroll bar*/ + kControlScrollBarLiveProc = 386 /* live scrolling variant*/ +}; + +/* Control Kind Tag */ +enum { + kControlKindScrollBar = FOUR_CHAR_CODE('sbar') +}; + +/* Creation API: Carbon Only */ +/* + * CreateScrollBarControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateScrollBarControl( + WindowRef window, + const Rect * boundsRect, + SInt32 value, + SInt32 minimum, + SInt32 maximum, + SInt32 viewSize, + Boolean liveTracking, + ControlActionUPP liveTrackingProc, + ControlRef * outControl); + + +/* These tags are available in Mac OS X or later */ +enum { + kControlScrollBarShowsArrowsTag = FOUR_CHAR_CODE('arro') /* Boolean whether or not to draw the scroll arrows*/ +}; + + +/*--------------------------------------------------------------------------------------*/ +/* o POPUP BUTTON (CDEF 25) */ +/*--------------------------------------------------------------------------------------*/ +/* This is the new Appearance Popup Button. It takes the same variants and does the */ +/* same overloading as the previous popup menu control. There are some differences: */ +/* */ +/* Passing in a menu ID of -12345 causes the popup not to try and get the menu from a */ +/* resource. Instead, you can build the menu and later stuff the MenuRef field in */ +/* the popup data information. */ +/* */ +/* You can pass -1 in the Max parameter to have the control calculate the width of the */ +/* title on its own instead of guessing and then tweaking to get it right. It adds the */ +/* appropriate amount of space between the title and the popup. */ +/* */ +/* Theme Popup Button proc IDs */ +enum { + kControlPopupButtonProc = 400, + kControlPopupFixedWidthVariant = 1 << 0, + kControlPopupVariableWidthVariant = 1 << 1, + kControlPopupUseAddResMenuVariant = 1 << 2, + kControlPopupUseWFontVariant = kControlUsesOwningWindowsFontVariant +}; + +/* Control Kind Tag */ +enum { + kControlKindPopupButton = FOUR_CHAR_CODE('popb') +}; + +/* Creation API: Carbon Only */ +/* + * CreatePopupButtonControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreatePopupButtonControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef title, + SInt16 menuID, + Boolean variableWidth, + SInt16 titleWidth, + SInt16 titleJustification, + Style titleStyle, + ControlRef * outControl); + + + + +/* These tags are available in 1.0.1 or later of Appearance */ +enum { + kControlPopupButtonMenuHandleTag = FOUR_CHAR_CODE('mhan'), /* MenuRef*/ + kControlPopupButtonMenuRefTag = FOUR_CHAR_CODE('mhan'), /* MenuRef*/ + kControlPopupButtonMenuIDTag = FOUR_CHAR_CODE('mnid') /* SInt16*/ +}; + +/* These tags are available in 1.1 or later of Appearance */ +enum { + kControlPopupButtonExtraHeightTag = FOUR_CHAR_CODE('exht'), /* SInt16 - extra vertical whitespace within the button*/ + kControlPopupButtonOwnedMenuRefTag = FOUR_CHAR_CODE('omrf') /* MenuRef*/ +}; + +/* These tags are available in Mac OS X */ +enum { + kControlPopupButtonCheckCurrentTag = FOUR_CHAR_CODE('chck') /* Boolean - whether the popup puts a checkmark next to the current item (defaults to true)*/ +}; + + +/*--------------------------------------------------------------------------------------*/ +/* o RADIO GROUP (CDEF 26) */ +/*--------------------------------------------------------------------------------------*/ +/* This control implements a radio group. It is an embedding control and can therefore */ +/* only be used when a control hierarchy is established for its owning window. You */ +/* should only embed radio buttons within it. As radio buttons are embedded into it, */ +/* the group sets up its value, min, and max to represent the number of embedded items.*/ +/* The current value of the control is the index of the sub-control that is the current*/ +/* 'on' radio button. To get the current radio button control handle, you can use the */ +/* control manager call GetIndSubControl, passing in the value of the radio group. */ +/* */ +/* NOTE: This control is only available with Appearance 1.0.1. */ +/* Radio Group Proc ID */ +enum { + kControlRadioGroupProc = 416 +}; + +/* Control Kind Tag */ +enum { + kControlKindRadioGroup = FOUR_CHAR_CODE('rgrp') +}; + +/* Creation API: Carbon Only */ +/* + * CreateRadioGroupControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateRadioGroupControl( + WindowRef window, + const Rect * boundsRect, + ControlRef * outControl); + + +/*--------------------------------------------------------------------------------------*/ +/* o SCROLL TEXT BOX (CDEF 27) */ +/*--------------------------------------------------------------------------------------*/ +/* This control implements a scrolling box of (non-editable) text. This is useful for */ +/* credits in about boxes, etc. */ +/* The standard version of this control has a scroll bar, but the autoscrolling */ +/* variant does not. The autoscrolling variant needs two pieces of information to */ +/* work: delay (in ticks) before the scrolling starts, and time (in ticks) between */ +/* scrolls. It will scroll one pixel at a time, unless changed via SetControlData. */ +/* */ +/* Parameter What Goes Here */ +/* ------------------- ---------------------------------------------------- */ +/* Value Resource ID of 'TEXT'/'styl' content. */ +/* Min Scroll start delay (in ticks) . */ +/* Max Delay (in ticks) between scrolls. */ +/* */ +/* NOTE: This control is only available with Appearance 1.1. */ +/* Scroll Text Box Proc IDs */ +enum { + kControlScrollTextBoxProc = 432, + kControlScrollTextBoxAutoScrollProc = 433 +}; + +/* Control Kind Tag */ +enum { + kControlKindScrollingTextBox = FOUR_CHAR_CODE('stbx') +}; + +/* Creation API: Carbon Only */ +/* + * CreateScrollingTextBoxControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateScrollingTextBoxControl( + WindowRef window, + const Rect * boundsRect, + SInt16 contentResID, + Boolean autoScroll, + UInt32 delayBeforeAutoScroll, + UInt32 delayBetweenAutoScroll, + UInt16 autoScrollAmount, + ControlRef * outControl); + + +/* Tagged data supported by Scroll Text Box */ +enum { + kControlScrollTextBoxDelayBeforeAutoScrollTag = FOUR_CHAR_CODE('stdl'), /* UInt32 (ticks until autoscrolling starts)*/ + kControlScrollTextBoxDelayBetweenAutoScrollTag = FOUR_CHAR_CODE('scdl'), /* UInt32 (ticks between scrolls)*/ + kControlScrollTextBoxAutoScrollAmountTag = FOUR_CHAR_CODE('samt'), /* UInt16 (pixels per scroll) -- defaults to 1*/ + kControlScrollTextBoxContentsTag = FOUR_CHAR_CODE('tres'), /* SInt16 (resource ID of 'TEXT'/'styl') -- write only!*/ + kControlScrollTextBoxAnimatingTag = FOUR_CHAR_CODE('anim') /* Boolean (whether the text box should auto-scroll)*/ +}; + + +/*--------------------------------------------------------------------------------------*/ +/* o DISCLOSURE BUTTON */ +/*--------------------------------------------------------------------------------------*/ +/* + * CreateDisclosureButtonControl() + * + * Summary: + * Creates a new instance of the Disclosure Button Control. + * + * Discussion: + * CreateDisclosureButtonControl is preferred over NewControl + * because it allows you to specify the exact set of parameters + * required to create the control without overloading parameter + * semantics. The initial minimum of the Disclosure Button will be + * kControlDisclosureButtonClosed, and the maximum will be + * kControlDisclosureButtonDisclosed. + * + * Parameters: + * + * inWindow: + * The WindowRef in which to create the control. + * + * inBoundsRect: + * The bounding rectangle for the control. The height of the + * control is fixed and the control will be centered vertically + * within the rectangle you specify. + * + * inValue: + * The initial value; either kControlDisclosureButtonClosed or + * kControlDisclosureButtonDisclosed. + * + * inAutoToggles: + * A boolean value indicating whether its value should change + * automatically after tracking the mouse. + * + * outControl: + * On successful exit, this will contain the new control. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateDisclosureButtonControl( + WindowRef inWindow, + const Rect * inBoundsRect, + SInt32 inValue, + Boolean inAutoToggles, + ControlRef * outControl); + + + +/* Control Kind Tag */ +enum { + kControlKindDisclosureButton = FOUR_CHAR_CODE('disb') +}; + + +/* + * Discussion: + * Disclosure Button Values + */ +enum { + + /* + * The control be drawn suggesting a closed state. + */ + kControlDisclosureButtonClosed = 0, + + /* + * The control will be drawn suggesting an open state. + */ + kControlDisclosureButtonDisclosed = 1 +}; + + +/*--------------------------------------------------------------------------------------*/ +/* o ROUND BUTTON */ +/*--------------------------------------------------------------------------------------*/ + +/* + * ControlRoundButtonSize + * + * Discussion: + * Button Sizes + */ +typedef SInt16 ControlRoundButtonSize; +enum { + + /* + * A 20 pixel diameter button. + */ + kControlRoundButtonNormalSize = kControlSizeNormal, + + /* + * A 25 pixel diameter button. + */ + kControlRoundButtonLargeSize = kControlSizeLarge +}; + +/* Data tags supported by the round button controls */ +enum { + kControlRoundButtonContentTag = FOUR_CHAR_CODE('cont'), /* ControlButtonContentInfo*/ + kControlRoundButtonSizeTag = kControlSizeTag /* ControlRoundButtonSize*/ +}; + +/* Control Kind Tag */ +enum { + kControlKindRoundButton = FOUR_CHAR_CODE('rndb') +}; + +/* + * CreateRoundButtonControl() + * + * Summary: + * Creates a new instance of the Round Button Control. + * + * Discussion: + * CreateRoundButtonControl is preferred over NewControl because it + * allows you to specify the exact set of parameters required to + * create the control without overloading parameter semantics. + * + * Parameters: + * + * inWindow: + * The WindowRef in which to create the control. + * + * inBoundsRect: + * The bounding rectangle for the control. The height and width of + * the control is fixed (specified by the ControlRoundButtonSize + * parameter) and the control will be centered within the + * rectangle you specify. + * + * inSize: + * The button size; either kControlRoundButtonNormalSize or + * kControlRoundButtonLargeSize. + * + * inContent: + * Any optional content displayed in the button. Currently only + * kControlContentIconRef is supported. + * + * outControl: + * On successful exit, this will contain the new control. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateRoundButtonControl( + WindowRef inWindow, + const Rect * inBoundsRect, + ControlRoundButtonSize inSize, + ControlButtonContentInfo * inContent, + ControlRef * outControl); + + + +/*--------------------------------------------------------------------------------------*/ +/* o DATA BROWSER */ +/* (CDEF 29) */ +/*--------------------------------------------------------------------------------------*/ +/* This control implements a user interface component for browsing (optionally) */ +/* hiearchical data structures. The browser supports multiple presentation styles */ +/* including, but not limited to: */ +/* */ +/* kDataBrowserListView - items and item properties in */ +/* multi-column (optionally outline) format */ +/* kDataBrowserColumnView - in-place browsing using fixed navigation columns */ +/* */ +/* The browser manages all view styles through a single high-level interface. */ +/* The high-level interface makes the following assumptions: */ +/* */ +/* - Items have unique 32-bit identifiers (0 is reserved) */ +/* */ +/* - Items have two kinds of named and typed properties: */ +/* - Predefined attribute properties ( < 1024 ) */ +/* (including some display properties) */ +/* - Client-defined display properties ( >= 1024 ) */ +/* */ +/* - Some items are containers of other items */ +/* - Items may be sorted by any property */ +/* */ +/* Because a browser doesn't know all details about the type of objects it manages, */ +/* some implementation responsibility is best handled by its client. The client must */ +/* provide a set of callback routines which define the item hierarchy and help to */ +/* populate the browser with items. The client may also provide callbacks for handling */ +/* custom data types and doing low-level event management. */ +/* */ +/* The API is subdivided into a "universal" set of routines that applies to all view */ +/* styles, and a set of routines unique to each view style. kDataBrowserListView and */ +/* kDataBrowserColumnView share an (internal) TableView abstract base class. The */ +/* TableView formatting options and API applies to both of these view styles. */ +/* */ +/* NOTE: This control is only available with CarbonLib 1.1. */ +/* */ +/* NOTE: This control must be created with the CreateDataBrowserControl API in */ +/* CarbonLib 1.1 through 1.4. In Mac OS X and CarbonLib 1.5 and later, you */ +/* may use the control's procID (29) to create the control with NewControl */ +/* or with a 'CNTL' resource. */ +/* Control Kind Tag */ +enum { + kControlKindDataBrowser = FOUR_CHAR_CODE('datb') +}; + +/* Error Codes */ +enum { + errDataBrowserNotConfigured = -4970, + errDataBrowserItemNotFound = -4971, + errDataBrowserItemNotAdded = -4975, + errDataBrowserPropertyNotFound = -4972, + errDataBrowserInvalidPropertyPart = -4973, + errDataBrowserInvalidPropertyData = -4974, + errDataBrowserPropertyNotSupported = -4979 /* Return from DataBrowserGetSetItemDataProc */ +}; + +enum { + /* Generic Control Tags */ + kControlDataBrowserIncludesFrameAndFocusTag = FOUR_CHAR_CODE('brdr'), /* Boolean */ + kControlDataBrowserKeyFilterTag = kControlEditTextKeyFilterTag, + kControlDataBrowserEditTextKeyFilterTag = kControlDataBrowserKeyFilterTag, + kControlDataBrowserEditTextValidationProcTag = kControlEditTextValidationProcTag +}; + +/* Data Browser View Styles */ +typedef OSType DataBrowserViewStyle; +enum { + kDataBrowserNoView = 0x3F3F3F3F, /* Error State */ + kDataBrowserListView = FOUR_CHAR_CODE('lstv'), + kDataBrowserColumnView = FOUR_CHAR_CODE('clmv') +}; + +/* Selection Flags */ +typedef UInt32 DataBrowserSelectionFlags; +enum { + kDataBrowserDragSelect = 1 << 0, /* * ListMgr lNoRect */ + kDataBrowserSelectOnlyOne = 1 << 1, /* * ListMgr lOnlyOne */ + kDataBrowserResetSelection = 1 << 2, /* * ListMgr lNoExtend */ + kDataBrowserCmdTogglesSelection = 1 << 3, /* * ListMgr lUseSense */ + kDataBrowserNoDisjointSelection = 1 << 4, /* * ListMgr lNoDisjoint */ + kDataBrowserAlwaysExtendSelection = 1 << 5, /* * ListMgr lExtendDrag */ + kDataBrowserNeverEmptySelectionSet = 1 << 6 /* * ListMgr lNoNilHilite */ +}; + +/* Data Browser Sorting */ +typedef UInt16 DataBrowserSortOrder; +enum { + kDataBrowserOrderUndefined = 0, /* Not currently supported */ + kDataBrowserOrderIncreasing = 1, + kDataBrowserOrderDecreasing = 2 +}; + +/* Data Browser Item Management */ +typedef UInt32 DataBrowserItemID; +enum { + kDataBrowserNoItem = 0L /* Reserved DataBrowserItemID */ +}; + +typedef UInt32 DataBrowserItemState; +enum { + kDataBrowserItemNoState = 0, + kDataBrowserItemAnyState = (unsigned long)(-1), + kDataBrowserItemIsSelected = 1 << 0, + kDataBrowserContainerIsOpen = 1 << 1, + kDataBrowserItemIsDragTarget = 1 << 2 /* During a drag operation */ +}; + +/* Options for use with RevealDataBrowserItem */ +typedef UInt8 DataBrowserRevealOptions; +enum { + kDataBrowserRevealOnly = 0, + kDataBrowserRevealAndCenterInView = 1 << 0, + kDataBrowserRevealWithoutSelecting = 1 << 1 +}; + +/* Set operations for use with SetDataBrowserSelectedItems */ +typedef UInt32 DataBrowserSetOption; +enum { + kDataBrowserItemsAdd = 0, /* add specified items to existing set */ + kDataBrowserItemsAssign = 1, /* assign destination set to specified items */ + kDataBrowserItemsToggle = 2, /* toggle membership state of specified items */ + kDataBrowserItemsRemove = 3 /* remove specified items from existing set */ +}; + +/* Commands for use with MoveDataBrowserSelectionAnchor */ +typedef UInt32 DataBrowserSelectionAnchorDirection; +enum { + kDataBrowserSelectionAnchorUp = 0, + kDataBrowserSelectionAnchorDown = 1, + kDataBrowserSelectionAnchorLeft = 2, + kDataBrowserSelectionAnchorRight = 3 +}; + +/* Edit menu command IDs for use with Enable/ExecuteDataBrowserEditCommand */ +typedef UInt32 DataBrowserEditCommand; +enum { + kDataBrowserEditMsgUndo = kHICommandUndo, + kDataBrowserEditMsgRedo = kHICommandRedo, + kDataBrowserEditMsgCut = kHICommandCut, + kDataBrowserEditMsgCopy = kHICommandCopy, + kDataBrowserEditMsgPaste = kHICommandPaste, + kDataBrowserEditMsgClear = kHICommandClear, + kDataBrowserEditMsgSelectAll = kHICommandSelectAll +}; + +/* Notifications used in DataBrowserItemNotificationProcPtr */ +typedef UInt32 DataBrowserItemNotification; +enum { + kDataBrowserItemAdded = 1, /* The specified item has been added to the browser */ + kDataBrowserItemRemoved = 2, /* The specified item has been removed from the browser */ + kDataBrowserEditStarted = 3, /* Starting an EditText session for specified item */ + kDataBrowserEditStopped = 4, /* Stopping an EditText session for specified item */ + kDataBrowserItemSelected = 5, /* Item has just been added to the selection set */ + kDataBrowserItemDeselected = 6, /* Item has just been removed from the selection set */ + kDataBrowserItemDoubleClicked = 7, + kDataBrowserContainerOpened = 8, /* Container is open */ + kDataBrowserContainerClosing = 9, /* Container is about to close (and will real soon now, y'all) */ + kDataBrowserContainerClosed = 10, /* Container is closed (y'all come back now!) */ + kDataBrowserContainerSorting = 11, /* Container is about to be sorted (lock any volatile properties) */ + kDataBrowserContainerSorted = 12, /* Container has been sorted (you may release any property locks) */ + kDataBrowserUserToggledContainer = 16, /* _User_ requested container open/close state to be toggled */ + kDataBrowserTargetChanged = 15, /* The target has changed to the specified item */ + kDataBrowserUserStateChanged = 13, /* The user has reformatted the view for the target */ + kDataBrowserSelectionSetChanged = 14 /* The selection set has been modified (net result may be the same) */ +}; + +/* DataBrowser Property Management */ +/* 0-1023 reserved; >= 1024 for client use */ +typedef UInt32 DataBrowserPropertyID; +enum { + /* Predefined attribute properties, optional & non-display unless otherwise stated */ + kDataBrowserItemNoProperty = 0L, /* The anti-property (no associated data) */ + kDataBrowserItemIsActiveProperty = 1L, /* Boolean typed data (defaults to true) */ + kDataBrowserItemIsSelectableProperty = 2L, /* Boolean typed data (defaults to true) */ + kDataBrowserItemIsEditableProperty = 3L, /* Boolean typed data (defaults to false, used for editable properties) */ + kDataBrowserItemIsContainerProperty = 4L, /* Boolean typed data (defaults to false) */ + kDataBrowserContainerIsOpenableProperty = 5L, /* Boolean typed data (defaults to true) */ + kDataBrowserContainerIsClosableProperty = 6L, /* Boolean typed data (defaults to true) */ + kDataBrowserContainerIsSortableProperty = 7L, /* Boolean typed data (defaults to true) */ + kDataBrowserItemSelfIdentityProperty = 8L, /* kDataBrowserIconAndTextType (display property; ColumnView only) */ + kDataBrowserContainerAliasIDProperty = 9L, /* DataBrowserItemID (alias/symlink an item to a container item) */ + kDataBrowserColumnViewPreviewProperty = 10L, /* kDataBrowserCustomType (display property; ColumnView only) */ + kDataBrowserItemParentContainerProperty = 11L /* DataBrowserItemID (the parent of the specified item, used by ColumnView) */ +}; + +/* DataBrowser Property Types (for display properties; i.e. ListView columns) */ +/* These are primarily presentation types (or styles) although */ +/* they also imply a particular set of primitive types or structures. */ +typedef OSType DataBrowserPropertyType; +enum { + /* == Corresponding data type or structure == */ + kDataBrowserCustomType = 0x3F3F3F3F, /* No associated data, custom callbacks used */ + kDataBrowserIconType = FOUR_CHAR_CODE('icnr'), /* IconRef, IconTransformType, RGBColor */ + kDataBrowserTextType = FOUR_CHAR_CODE('text'), /* CFStringRef */ + kDataBrowserDateTimeType = FOUR_CHAR_CODE('date'), /* DateTime or LongDateTime */ + kDataBrowserSliderType = FOUR_CHAR_CODE('sldr'), /* Min, Max, Value */ + kDataBrowserCheckboxType = FOUR_CHAR_CODE('chbx'), /* ThemeButtonValue */ + kDataBrowserProgressBarType = FOUR_CHAR_CODE('prog'), /* Min, Max, Value */ + kDataBrowserRelevanceRankType = FOUR_CHAR_CODE('rank'), /* Min, Max, Value */ + kDataBrowserPopupMenuType = FOUR_CHAR_CODE('menu'), /* MenuRef, Value */ + kDataBrowserIconAndTextType = FOUR_CHAR_CODE('ticn') /* IconRef, CFStringRef, etc */ +}; + +/* DataBrowser Property Parts */ +/* Visual components of a property type. */ +/* For use with GetDataBrowserItemPartBounds. */ +typedef OSType DataBrowserPropertyPart; +enum { + kDataBrowserPropertyEnclosingPart = 0L, + kDataBrowserPropertyContentPart = FOUR_CHAR_CODE('----'), + kDataBrowserPropertyDisclosurePart = FOUR_CHAR_CODE('disc'), + kDataBrowserPropertyTextPart = kDataBrowserTextType, + kDataBrowserPropertyIconPart = kDataBrowserIconType, + kDataBrowserPropertySliderPart = kDataBrowserSliderType, + kDataBrowserPropertyCheckboxPart = kDataBrowserCheckboxType, + kDataBrowserPropertyProgressBarPart = kDataBrowserProgressBarType, + kDataBrowserPropertyRelevanceRankPart = kDataBrowserRelevanceRankType +}; + +/* Modify appearance/behavior of display properties */ +typedef unsigned long DataBrowserPropertyFlags; +/* Low 8 bits apply to all property types */ +enum { + kDataBrowserUniversalPropertyFlagsMask = 0xFF, + kDataBrowserPropertyIsMutable = 1 << 0, + kDataBrowserDefaultPropertyFlags = 0 << 0, + kDataBrowserUniversalPropertyFlags = kDataBrowserUniversalPropertyFlagsMask, /* support for an old name*/ + kDataBrowserPropertyIsEditable = kDataBrowserPropertyIsMutable /* support for an old name*/ +}; + +/* Next 8 bits contain property-specific modifiers */ +enum { + kDataBrowserPropertyFlagsOffset = 8, + kDataBrowserPropertyFlagsMask = 0xFF << kDataBrowserPropertyFlagsOffset, + kDataBrowserCheckboxTriState = 1 << kDataBrowserPropertyFlagsOffset, /* kDataBrowserCheckboxType*/ + kDataBrowserDateTimeRelative = 1 << (kDataBrowserPropertyFlagsOffset), /* kDataBrowserDateTimeType */ + kDataBrowserDateTimeDateOnly = 1 << (kDataBrowserPropertyFlagsOffset + 1), /* kDataBrowserDateTimeType */ + kDataBrowserDateTimeTimeOnly = 1 << (kDataBrowserPropertyFlagsOffset + 2), /* kDataBrowserDateTimeType */ + kDataBrowserDateTimeSecondsToo = 1 << (kDataBrowserPropertyFlagsOffset + 3), /* kDataBrowserDateTimeType */ + kDataBrowserSliderPlainThumb = kThemeThumbPlain << kDataBrowserPropertyFlagsOffset, /* kDataBrowserSliderType */ + kDataBrowserSliderUpwardThumb = kThemeThumbUpward << kDataBrowserPropertyFlagsOffset, /* kDataBrowserSliderType */ + kDataBrowserSliderDownwardThumb = kThemeThumbDownward << kDataBrowserPropertyFlagsOffset, /* kDataBrowserSliderType */ + kDataBrowserDoNotTruncateText = 3 << kDataBrowserPropertyFlagsOffset, /* kDataBrowserTextType && kDataBrowserIconAndTextType */ + kDataBrowserTruncateTextAtEnd = 2 << kDataBrowserPropertyFlagsOffset, /* kDataBrowserTextType && kDataBrowserIconAndTextType */ + kDataBrowserTruncateTextMiddle = 0 << kDataBrowserPropertyFlagsOffset, /* kDataBrowserTextType && kDataBrowserIconAndTextType */ + kDataBrowserTruncateTextAtStart = 1 << kDataBrowserPropertyFlagsOffset, /* kDataBrowserTextType && kDataBrowserIconAndTextType */ + kDataBrowserPropertyModificationFlags = kDataBrowserPropertyFlagsMask, /* support for an old name*/ + kDataBrowserRelativeDateTime = kDataBrowserDateTimeRelative /* support for an old name*/ +}; + +/* + Next 8 bits contain viewStyle-specific modifiers + See individual ViewStyle sections below for flag definitions +*/ +enum { + kDataBrowserViewSpecificFlagsOffset = 16, + kDataBrowserViewSpecificFlagsMask = 0xFF << kDataBrowserViewSpecificFlagsOffset, + kDataBrowserViewSpecificPropertyFlags = kDataBrowserViewSpecificFlagsMask /* support for an old name*/ +}; + +/* High 8 bits are reserved for client application use */ +enum { + kDataBrowserClientPropertyFlagsOffset = 24, + kDataBrowserClientPropertyFlagsMask = (unsigned long)(0xFF << kDataBrowserClientPropertyFlagsOffset) +}; + +/* Client defined property description */ +struct DataBrowserPropertyDesc { + DataBrowserPropertyID propertyID; + DataBrowserPropertyType propertyType; + DataBrowserPropertyFlags propertyFlags; +}; +typedef struct DataBrowserPropertyDesc DataBrowserPropertyDesc; +/* Callback definition for use with ForEachDataBrowserItem */ +typedef CALLBACK_API( void , DataBrowserItemProcPtr )(DataBrowserItemID item, DataBrowserItemState state, void *clientData); +typedef STACK_UPP_TYPE(DataBrowserItemProcPtr) DataBrowserItemUPP; +/* + * NewDataBrowserItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserItemUPP ) +NewDataBrowserItemUPP(DataBrowserItemProcPtr userRoutine); + +/* + * DisposeDataBrowserItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemUPP(DataBrowserItemUPP userUPP); + +/* + * InvokeDataBrowserItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserItemUPP( + DataBrowserItemID item, + DataBrowserItemState state, + void * clientData, + DataBrowserItemUPP userUPP); + +/* Creation/Configuration */ +/* + * CreateDataBrowserControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateDataBrowserControl( + WindowRef window, + const Rect * boundsRect, + DataBrowserViewStyle style, + ControlRef * outControl); + + +/* + * GetDataBrowserViewStyle() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserViewStyle( + ControlRef browser, + DataBrowserViewStyle * style); + + +/* + * SetDataBrowserViewStyle() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserViewStyle( + ControlRef browser, + DataBrowserViewStyle style); + + +/* Item Manipulation */ +/* Passing NULL for "items" argument to RemoveDataBrowserItems and */ +/* UpdateDataBrowserItems refers to all items in the specified container. */ +/* Passing NULL for "items" argument to AddDataBrowserItems means */ +/* "generate IDs starting from 1." */ +/* + * AddDataBrowserItems() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +AddDataBrowserItems( + ControlRef browser, + DataBrowserItemID container, + UInt32 numItems, + const DataBrowserItemID * items, /* can be NULL */ + DataBrowserPropertyID preSortProperty); + + +/* + * RemoveDataBrowserItems() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +RemoveDataBrowserItems( + ControlRef browser, + DataBrowserItemID container, + UInt32 numItems, + const DataBrowserItemID * items, /* can be NULL */ + DataBrowserPropertyID preSortProperty); + + +/* + * UpdateDataBrowserItems() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +UpdateDataBrowserItems( + ControlRef browser, + DataBrowserItemID container, + UInt32 numItems, + const DataBrowserItemID * items, /* can be NULL */ + DataBrowserPropertyID preSortProperty, + DataBrowserPropertyID propertyID); + + +/* Edit Menu Enabling and Handling */ +/* + * EnableDataBrowserEditCommand() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( Boolean ) +EnableDataBrowserEditCommand( + ControlRef browser, + DataBrowserEditCommand command); + + +/* + * ExecuteDataBrowserEditCommand() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +ExecuteDataBrowserEditCommand( + ControlRef browser, + DataBrowserEditCommand command); + + +/* + * GetDataBrowserSelectionAnchor() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserSelectionAnchor( + ControlRef browser, + DataBrowserItemID * first, + DataBrowserItemID * last); + + +/* + * MoveDataBrowserSelectionAnchor() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +MoveDataBrowserSelectionAnchor( + ControlRef browser, + DataBrowserSelectionAnchorDirection direction, + Boolean extendSelection); + + +/* Container Manipulation */ +/* + * OpenDataBrowserContainer() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +OpenDataBrowserContainer( + ControlRef browser, + DataBrowserItemID container); + + +/* + * CloseDataBrowserContainer() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CloseDataBrowserContainer( + ControlRef browser, + DataBrowserItemID container); + + +/* + * SortDataBrowserContainer() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SortDataBrowserContainer( + ControlRef browser, + DataBrowserItemID container, + Boolean sortChildren); + + +/* Aggregate Item Access and Iteration */ +/* + * GetDataBrowserItems() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItems( + ControlRef browser, + DataBrowserItemID container, + Boolean recurse, + DataBrowserItemState state, + Handle items); + + +/* + * GetDataBrowserItemCount() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemCount( + ControlRef browser, + DataBrowserItemID container, + Boolean recurse, + DataBrowserItemState state, + UInt32 * numItems); + + +/* + * ForEachDataBrowserItem() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +ForEachDataBrowserItem( + ControlRef browser, + DataBrowserItemID container, + Boolean recurse, + DataBrowserItemState state, + DataBrowserItemUPP callback, + void * clientData); + + +/* Individual Item Access and Display */ +/* + * IsDataBrowserItemSelected() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( Boolean ) +IsDataBrowserItemSelected( + ControlRef browser, + DataBrowserItemID item); + + +/* + * GetDataBrowserItemState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemState( + ControlRef browser, + DataBrowserItemID item, + DataBrowserItemState * state); + + +/* + * RevealDataBrowserItem() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +RevealDataBrowserItem( + ControlRef browser, + DataBrowserItemID item, + DataBrowserPropertyID propertyID, + DataBrowserRevealOptions options); + + +/* Selection Set Manipulation */ +/* + * SetDataBrowserSelectedItems() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserSelectedItems( + ControlRef browser, + UInt32 numItems, + const DataBrowserItemID * items, + DataBrowserSetOption operation); + + + +/* DataBrowser Attribute Manipulation */ +/* The user customizable portion of the current view style settings */ +/* + * SetDataBrowserUserState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserUserState( + ControlRef browser, + CFDataRef stateInfo); + + +/* + * GetDataBrowserUserState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserUserState( + ControlRef browser, + CFDataRef * stateInfo); + + +/* All items are active/enabled or not */ +/* + * SetDataBrowserActiveItems() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserActiveItems( + ControlRef browser, + Boolean active); + + +/* + * GetDataBrowserActiveItems() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserActiveItems( + ControlRef browser, + Boolean * active); + + +/* Inset the scrollbars within the DataBrowser bounds */ +/* + * SetDataBrowserScrollBarInset() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserScrollBarInset( + ControlRef browser, + Rect * insetRect); + + +/* + * GetDataBrowserScrollBarInset() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserScrollBarInset( + ControlRef browser, + Rect * insetRect); + + +/* The "user focused" item */ +/* For the ListView, this means the root container */ +/* For the ColumnView, this means the rightmost container column */ +/* + * SetDataBrowserTarget() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTarget( + ControlRef browser, + DataBrowserItemID target); + + +/* + * GetDataBrowserTarget() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTarget( + ControlRef browser, + DataBrowserItemID * target); + + +/* Current sort ordering */ +/* ListView tracks this per-column */ +/* + * SetDataBrowserSortOrder() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserSortOrder( + ControlRef browser, + DataBrowserSortOrder order); + + +/* + * GetDataBrowserSortOrder() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserSortOrder( + ControlRef browser, + DataBrowserSortOrder * order); + + +/* Scrollbar values */ +/* + * SetDataBrowserScrollPosition() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserScrollPosition( + ControlRef browser, + UInt32 top, + UInt32 left); + + +/* + * GetDataBrowserScrollPosition() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserScrollPosition( + ControlRef browser, + UInt32 * top, + UInt32 * left); + + +/* Show/Hide each scrollbar */ +/* + * SetDataBrowserHasScrollBars() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserHasScrollBars( + ControlRef browser, + Boolean horiz, + Boolean vert); + + +/* + * GetDataBrowserHasScrollBars() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserHasScrollBars( + ControlRef browser, + Boolean * horiz, + Boolean * vert); + + +/* Property passed to sort callback (ListView sort column) */ +/* + * SetDataBrowserSortProperty() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserSortProperty( + ControlRef browser, + DataBrowserPropertyID property); + + +/* + * GetDataBrowserSortProperty() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserSortProperty( + ControlRef browser, + DataBrowserPropertyID * property); + + +/* Modify selection behavior */ +/* + * SetDataBrowserSelectionFlags() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserSelectionFlags( + ControlRef browser, + DataBrowserSelectionFlags selectionFlags); + + +/* + * GetDataBrowserSelectionFlags() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserSelectionFlags( + ControlRef browser, + DataBrowserSelectionFlags * selectionFlags); + + +/* Dynamically modify property appearance/behavior */ +/* + * SetDataBrowserPropertyFlags() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserPropertyFlags( + ControlRef browser, + DataBrowserPropertyID property, + DataBrowserPropertyFlags flags); + + +/* + * GetDataBrowserPropertyFlags() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserPropertyFlags( + ControlRef browser, + DataBrowserPropertyID property, + DataBrowserPropertyFlags * flags); + + +/* Text of current in-place edit session */ +/* + * SetDataBrowserEditText() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserEditText( + ControlRef browser, + CFStringRef text); + + +/* + * CopyDataBrowserEditText() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CopyDataBrowserEditText( + ControlRef browser, + CFStringRef * text); + + +/* + * GetDataBrowserEditText() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserEditText( + ControlRef browser, + CFMutableStringRef text); + + +/* Item/property currently being edited */ +/* + * SetDataBrowserEditItem() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserEditItem( + ControlRef browser, + DataBrowserItemID item, + DataBrowserPropertyID property); + + +/* + * GetDataBrowserEditItem() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserEditItem( + ControlRef browser, + DataBrowserItemID * item, + DataBrowserPropertyID * property); + + +/* Get the current bounds of a visual part of an item's property */ +/* + * GetDataBrowserItemPartBounds() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemPartBounds( + ControlRef browser, + DataBrowserItemID item, + DataBrowserPropertyID property, + DataBrowserPropertyPart part, + Rect * bounds); + + + +/* DataBrowser ItemData Accessors (used within DataBrowserItemData callback) */ + +typedef void * DataBrowserItemDataRef; +/* + * SetDataBrowserItemDataIcon() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataIcon( + DataBrowserItemDataRef itemData, + IconRef theData); + + +/* + * GetDataBrowserItemDataIcon() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataIcon( + DataBrowserItemDataRef itemData, + IconRef * theData); + + +/* + * SetDataBrowserItemDataText() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataText( + DataBrowserItemDataRef itemData, + CFStringRef theData); + + +/* + * GetDataBrowserItemDataText() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataText( + DataBrowserItemDataRef itemData, + CFStringRef * theData); + + + +/* + * SetDataBrowserItemDataValue() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataValue( + DataBrowserItemDataRef itemData, + SInt32 theData); + + +/* + * GetDataBrowserItemDataValue() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataValue( + DataBrowserItemDataRef itemData, + SInt32 * theData); + + +/* + * SetDataBrowserItemDataMinimum() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataMinimum( + DataBrowserItemDataRef itemData, + SInt32 theData); + + +/* + * GetDataBrowserItemDataMinimum() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataMinimum( + DataBrowserItemDataRef itemData, + SInt32 * theData); + + +/* + * SetDataBrowserItemDataMaximum() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataMaximum( + DataBrowserItemDataRef itemData, + SInt32 theData); + + +/* + * GetDataBrowserItemDataMaximum() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataMaximum( + DataBrowserItemDataRef itemData, + SInt32 * theData); + + +/* + * SetDataBrowserItemDataBooleanValue() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataBooleanValue( + DataBrowserItemDataRef itemData, + Boolean theData); + + +/* + * GetDataBrowserItemDataBooleanValue() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataBooleanValue( + DataBrowserItemDataRef itemData, + Boolean * theData); + + +/* + * SetDataBrowserItemDataMenuRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataMenuRef( + DataBrowserItemDataRef itemData, + MenuRef theData); + + +/* + * GetDataBrowserItemDataMenuRef() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataMenuRef( + DataBrowserItemDataRef itemData, + MenuRef * theData); + + +/* + * SetDataBrowserItemDataRGBColor() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataRGBColor( + DataBrowserItemDataRef itemData, + const RGBColor * theData); + + +/* + * GetDataBrowserItemDataRGBColor() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataRGBColor( + DataBrowserItemDataRef itemData, + RGBColor * theData); + + + +/* + * SetDataBrowserItemDataDrawState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataDrawState( + DataBrowserItemDataRef itemData, + ThemeDrawState theData); + + +/* + * GetDataBrowserItemDataDrawState() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataDrawState( + DataBrowserItemDataRef itemData, + ThemeDrawState * theData); + + +/* + * SetDataBrowserItemDataButtonValue() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataButtonValue( + DataBrowserItemDataRef itemData, + ThemeButtonValue theData); + + +/* + * GetDataBrowserItemDataButtonValue() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataButtonValue( + DataBrowserItemDataRef itemData, + ThemeButtonValue * theData); + + +/* + * SetDataBrowserItemDataIconTransform() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataIconTransform( + DataBrowserItemDataRef itemData, + IconTransformType theData); + + +/* + * GetDataBrowserItemDataIconTransform() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataIconTransform( + DataBrowserItemDataRef itemData, + IconTransformType * theData); + + + +/* + * SetDataBrowserItemDataDateTime() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataDateTime( + DataBrowserItemDataRef itemData, + long theData); + + +/* + * GetDataBrowserItemDataDateTime() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataDateTime( + DataBrowserItemDataRef itemData, + long * theData); + + +/* + * SetDataBrowserItemDataLongDateTime() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataLongDateTime( + DataBrowserItemDataRef itemData, + const LongDateTime * theData); + + +/* + * GetDataBrowserItemDataLongDateTime() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataLongDateTime( + DataBrowserItemDataRef itemData, + LongDateTime * theData); + + + +/* + * SetDataBrowserItemDataItemID() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserItemDataItemID( + DataBrowserItemDataRef itemData, + DataBrowserItemID theData); + + +/* + * GetDataBrowserItemDataItemID() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataItemID( + DataBrowserItemDataRef itemData, + DataBrowserItemID * theData); + + +/* + * GetDataBrowserItemDataProperty() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserItemDataProperty( + DataBrowserItemDataRef itemData, + DataBrowserPropertyID * theData); + + + +/* Standard DataBrowser Callbacks */ + +/* Basic Item Management & Manipulation */ +typedef CALLBACK_API( OSStatus , DataBrowserItemDataProcPtr )(ControlRef browser, DataBrowserItemID item, DataBrowserPropertyID property, DataBrowserItemDataRef itemData, Boolean setValue); +typedef STACK_UPP_TYPE(DataBrowserItemDataProcPtr) DataBrowserItemDataUPP; + +/* Item Comparison */ +typedef CALLBACK_API( Boolean , DataBrowserItemCompareProcPtr )(ControlRef browser, DataBrowserItemID itemOne, DataBrowserItemID itemTwo, DataBrowserPropertyID sortProperty); +typedef STACK_UPP_TYPE(DataBrowserItemCompareProcPtr) DataBrowserItemCompareUPP; + +/* ItemEvent Notification */ +/* A Very Important Note about DataBrowserItemNotificationProcPtr: */ +/* */ +/* Under all currently shipping versions of CarbonLib (eg. up through 1.3), your callback is called */ +/* just as the prototype appears in this header. It should only be expecting three parameters because */ +/* DataBrowser will only pass three parameters. */ +/* */ +/* Under Mac OS X, your callback is called with an additional parameter. If you wish to interpret */ +/* the additional parameter, your callback should have the same prototype as the */ +/* DataBrowserItemNotificationWithItemProcPtr (below). You may freely take a callback with this */ +/* prototype and pass it to NewDataBrowserItemNotificationUPP in order to generate a */ +/* DataBrowserItemNotificationUPP that you can use just like any other DataBrowserItemNotificationUPP. */ +/* */ +/* If you use this technique under CarbonLib, you will *not* receive valid data in the fourth */ +/* parameter, and any attempt to use the invalid data will probably result in a crash. */ +typedef CALLBACK_API( void , DataBrowserItemNotificationWithItemProcPtr )(ControlRef browser, DataBrowserItemID item, DataBrowserItemNotification message, DataBrowserItemDataRef itemData); +typedef CALLBACK_API( void , DataBrowserItemNotificationProcPtr )(ControlRef browser, DataBrowserItemID item, DataBrowserItemNotification message); +typedef STACK_UPP_TYPE(DataBrowserItemNotificationWithItemProcPtr) DataBrowserItemNotificationWithItemUPP; +typedef STACK_UPP_TYPE(DataBrowserItemNotificationProcPtr) DataBrowserItemNotificationUPP; + + +/* Drag & Drop Processing */ +typedef CALLBACK_API( Boolean , DataBrowserAddDragItemProcPtr )(ControlRef browser, DragReference theDrag, DataBrowserItemID item, ItemReference *itemRef); +typedef CALLBACK_API( Boolean , DataBrowserAcceptDragProcPtr )(ControlRef browser, DragReference theDrag, DataBrowserItemID item); +typedef CALLBACK_API( Boolean , DataBrowserReceiveDragProcPtr )(ControlRef browser, DragReference theDrag, DataBrowserItemID item); +typedef CALLBACK_API( void , DataBrowserPostProcessDragProcPtr )(ControlRef browser, DragReference theDrag, OSStatus trackDragResult); +typedef STACK_UPP_TYPE(DataBrowserAddDragItemProcPtr) DataBrowserAddDragItemUPP; +typedef STACK_UPP_TYPE(DataBrowserAcceptDragProcPtr) DataBrowserAcceptDragUPP; +typedef STACK_UPP_TYPE(DataBrowserReceiveDragProcPtr) DataBrowserReceiveDragUPP; +typedef STACK_UPP_TYPE(DataBrowserPostProcessDragProcPtr) DataBrowserPostProcessDragUPP; + +/* Contextual Menu Support */ +typedef CALLBACK_API( void , DataBrowserGetContextualMenuProcPtr )(ControlRef browser, MenuRef *menu, UInt32 *helpType, CFStringRef *helpItemString, AEDesc *selection); +typedef CALLBACK_API( void , DataBrowserSelectContextualMenuProcPtr )(ControlRef browser, MenuRef menu, UInt32 selectionType, SInt16 menuID, MenuItemIndex menuItem); +typedef STACK_UPP_TYPE(DataBrowserGetContextualMenuProcPtr) DataBrowserGetContextualMenuUPP; +typedef STACK_UPP_TYPE(DataBrowserSelectContextualMenuProcPtr) DataBrowserSelectContextualMenuUPP; + +/* Help Manager Support */ +typedef CALLBACK_API( void , DataBrowserItemHelpContentProcPtr )(ControlRef browser, DataBrowserItemID item, DataBrowserPropertyID property, HMContentRequest inRequest, HMContentProvidedType *outContentProvided, HMHelpContentPtr ioHelpContent); +typedef STACK_UPP_TYPE(DataBrowserItemHelpContentProcPtr) DataBrowserItemHelpContentUPP; +/* + * NewDataBrowserItemDataUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserItemDataUPP ) +NewDataBrowserItemDataUPP(DataBrowserItemDataProcPtr userRoutine); + +/* + * NewDataBrowserItemCompareUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserItemCompareUPP ) +NewDataBrowserItemCompareUPP(DataBrowserItemCompareProcPtr userRoutine); + +/* + * NewDataBrowserItemNotificationWithItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserItemNotificationWithItemUPP ) +NewDataBrowserItemNotificationWithItemUPP(DataBrowserItemNotificationWithItemProcPtr userRoutine); + +/* + * NewDataBrowserItemNotificationUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserItemNotificationUPP ) +NewDataBrowserItemNotificationUPP(DataBrowserItemNotificationProcPtr userRoutine); + +/* + * NewDataBrowserAddDragItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserAddDragItemUPP ) +NewDataBrowserAddDragItemUPP(DataBrowserAddDragItemProcPtr userRoutine); + +/* + * NewDataBrowserAcceptDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserAcceptDragUPP ) +NewDataBrowserAcceptDragUPP(DataBrowserAcceptDragProcPtr userRoutine); + +/* + * NewDataBrowserReceiveDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserReceiveDragUPP ) +NewDataBrowserReceiveDragUPP(DataBrowserReceiveDragProcPtr userRoutine); + +/* + * NewDataBrowserPostProcessDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserPostProcessDragUPP ) +NewDataBrowserPostProcessDragUPP(DataBrowserPostProcessDragProcPtr userRoutine); + +/* + * NewDataBrowserGetContextualMenuUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserGetContextualMenuUPP ) +NewDataBrowserGetContextualMenuUPP(DataBrowserGetContextualMenuProcPtr userRoutine); + +/* + * NewDataBrowserSelectContextualMenuUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserSelectContextualMenuUPP ) +NewDataBrowserSelectContextualMenuUPP(DataBrowserSelectContextualMenuProcPtr userRoutine); + +/* + * NewDataBrowserItemHelpContentUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( DataBrowserItemHelpContentUPP ) +NewDataBrowserItemHelpContentUPP(DataBrowserItemHelpContentProcPtr userRoutine); + +/* + * DisposeDataBrowserItemDataUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemDataUPP(DataBrowserItemDataUPP userUPP); + +/* + * DisposeDataBrowserItemCompareUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemCompareUPP(DataBrowserItemCompareUPP userUPP); + +/* + * DisposeDataBrowserItemNotificationWithItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemNotificationWithItemUPP(DataBrowserItemNotificationWithItemUPP userUPP); + +/* + * DisposeDataBrowserItemNotificationUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemNotificationUPP(DataBrowserItemNotificationUPP userUPP); + +/* + * DisposeDataBrowserAddDragItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserAddDragItemUPP(DataBrowserAddDragItemUPP userUPP); + +/* + * DisposeDataBrowserAcceptDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserAcceptDragUPP(DataBrowserAcceptDragUPP userUPP); + +/* + * DisposeDataBrowserReceiveDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserReceiveDragUPP(DataBrowserReceiveDragUPP userUPP); + +/* + * DisposeDataBrowserPostProcessDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserPostProcessDragUPP(DataBrowserPostProcessDragUPP userUPP); + +/* + * DisposeDataBrowserGetContextualMenuUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserGetContextualMenuUPP(DataBrowserGetContextualMenuUPP userUPP); + +/* + * DisposeDataBrowserSelectContextualMenuUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserSelectContextualMenuUPP(DataBrowserSelectContextualMenuUPP userUPP); + +/* + * DisposeDataBrowserItemHelpContentUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemHelpContentUPP(DataBrowserItemHelpContentUPP userUPP); + +/* + * InvokeDataBrowserItemDataUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +InvokeDataBrowserItemDataUPP( + ControlRef browser, + DataBrowserItemID item, + DataBrowserPropertyID property, + DataBrowserItemDataRef itemData, + Boolean setValue, + DataBrowserItemDataUPP userUPP); + +/* + * InvokeDataBrowserItemCompareUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +InvokeDataBrowserItemCompareUPP( + ControlRef browser, + DataBrowserItemID itemOne, + DataBrowserItemID itemTwo, + DataBrowserPropertyID sortProperty, + DataBrowserItemCompareUPP userUPP); + +/* + * InvokeDataBrowserItemNotificationWithItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserItemNotificationWithItemUPP( + ControlRef browser, + DataBrowserItemID item, + DataBrowserItemNotification message, + DataBrowserItemDataRef itemData, + DataBrowserItemNotificationWithItemUPP userUPP); + +/* + * InvokeDataBrowserItemNotificationUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserItemNotificationUPP( + ControlRef browser, + DataBrowserItemID item, + DataBrowserItemNotification message, + DataBrowserItemNotificationUPP userUPP); + +/* + * InvokeDataBrowserAddDragItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +InvokeDataBrowserAddDragItemUPP( + ControlRef browser, + DragReference theDrag, + DataBrowserItemID item, + ItemReference * itemRef, + DataBrowserAddDragItemUPP userUPP); + +/* + * InvokeDataBrowserAcceptDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +InvokeDataBrowserAcceptDragUPP( + ControlRef browser, + DragReference theDrag, + DataBrowserItemID item, + DataBrowserAcceptDragUPP userUPP); + +/* + * InvokeDataBrowserReceiveDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +InvokeDataBrowserReceiveDragUPP( + ControlRef browser, + DragReference theDrag, + DataBrowserItemID item, + DataBrowserReceiveDragUPP userUPP); + +/* + * InvokeDataBrowserPostProcessDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserPostProcessDragUPP( + ControlRef browser, + DragReference theDrag, + OSStatus trackDragResult, + DataBrowserPostProcessDragUPP userUPP); + +/* + * InvokeDataBrowserGetContextualMenuUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserGetContextualMenuUPP( + ControlRef browser, + MenuRef * menu, + UInt32 * helpType, + CFStringRef * helpItemString, + AEDesc * selection, + DataBrowserGetContextualMenuUPP userUPP); + +/* + * InvokeDataBrowserSelectContextualMenuUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserSelectContextualMenuUPP( + ControlRef browser, + MenuRef menu, + UInt32 selectionType, + SInt16 menuID, + MenuItemIndex menuItem, + DataBrowserSelectContextualMenuUPP userUPP); + +/* + * InvokeDataBrowserItemHelpContentUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserItemHelpContentUPP( + ControlRef browser, + DataBrowserItemID item, + DataBrowserPropertyID property, + HMContentRequest inRequest, + HMContentProvidedType * outContentProvided, + HMHelpContentPtr ioHelpContent, + DataBrowserItemHelpContentUPP userUPP); + +/* Standard Callback (vtable) Structure */ +enum { + kDataBrowserLatestCallbacks = 0 +}; + +struct DataBrowserCallbacks { + UInt32 version; /* Use kDataBrowserLatestCallbacks */ + + union { + struct { + DataBrowserItemDataUPP itemDataCallback; + DataBrowserItemCompareUPP itemCompareCallback; + DataBrowserItemNotificationUPP itemNotificationCallback; + + DataBrowserAddDragItemUPP addDragItemCallback; + DataBrowserAcceptDragUPP acceptDragCallback; + DataBrowserReceiveDragUPP receiveDragCallback; + DataBrowserPostProcessDragUPP postProcessDragCallback; + + DataBrowserItemHelpContentUPP itemHelpContentCallback; + DataBrowserGetContextualMenuUPP getContextualMenuCallback; + DataBrowserSelectContextualMenuUPP selectContextualMenuCallback; + } v1; + } u; +}; +typedef struct DataBrowserCallbacks DataBrowserCallbacks; +/* + * InitDataBrowserCallbacks() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +InitDataBrowserCallbacks(DataBrowserCallbacks * callbacks); + + +/* Macro for initializing callback structure */ +#define InitializeDataBrowserCallbacks(callbacks, vers) \ +{ (callbacks)->version = (vers); InitDataBrowserCallbacks(callbacks); } + +/* + * GetDataBrowserCallbacks() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserCallbacks( + ControlRef browser, + DataBrowserCallbacks * callbacks); + + +/* + * SetDataBrowserCallbacks() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserCallbacks( + ControlRef browser, + const DataBrowserCallbacks * callbacks); + + + +/* Custom Format Callbacks (kDataBrowserCustomType display properties) */ + +typedef unsigned long DataBrowserDragFlags; +typedef SInt16 DataBrowserTrackingResult; +enum { + kDataBrowserContentHit = 1, + kDataBrowserNothingHit = 0, + kDataBrowserStopTracking = -1 +}; + +typedef CALLBACK_API( void , DataBrowserDrawItemProcPtr )(ControlRef browser, DataBrowserItemID item, DataBrowserPropertyID property, DataBrowserItemState itemState, const Rect *theRect, SInt16 gdDepth, Boolean colorDevice); +typedef CALLBACK_API( Boolean , DataBrowserEditItemProcPtr )(ControlRef browser, DataBrowserItemID item, DataBrowserPropertyID property, CFStringRef theString, Rect *maxEditTextRect, Boolean *shrinkToFit); +typedef CALLBACK_API( Boolean , DataBrowserHitTestProcPtr )(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, const Rect *theRect, const Rect *mouseRect); +typedef CALLBACK_API( DataBrowserTrackingResult , DataBrowserTrackingProcPtr )(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, const Rect *theRect, Point startPt, EventModifiers modifiers); +typedef CALLBACK_API( void , DataBrowserItemDragRgnProcPtr )(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, const Rect *theRect, RgnHandle dragRgn); +typedef CALLBACK_API( DataBrowserDragFlags , DataBrowserItemAcceptDragProcPtr )(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, const Rect *theRect, DragReference theDrag); +typedef CALLBACK_API( Boolean , DataBrowserItemReceiveDragProcPtr )(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserDragFlags dragFlags, DragReference theDrag); +typedef STACK_UPP_TYPE(DataBrowserDrawItemProcPtr) DataBrowserDrawItemUPP; +typedef STACK_UPP_TYPE(DataBrowserEditItemProcPtr) DataBrowserEditItemUPP; +typedef STACK_UPP_TYPE(DataBrowserHitTestProcPtr) DataBrowserHitTestUPP; +typedef STACK_UPP_TYPE(DataBrowserTrackingProcPtr) DataBrowserTrackingUPP; +typedef STACK_UPP_TYPE(DataBrowserItemDragRgnProcPtr) DataBrowserItemDragRgnUPP; +typedef STACK_UPP_TYPE(DataBrowserItemAcceptDragProcPtr) DataBrowserItemAcceptDragUPP; +typedef STACK_UPP_TYPE(DataBrowserItemReceiveDragProcPtr) DataBrowserItemReceiveDragUPP; +/* + * NewDataBrowserDrawItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserDrawItemUPP ) +NewDataBrowserDrawItemUPP(DataBrowserDrawItemProcPtr userRoutine); + +/* + * NewDataBrowserEditItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserEditItemUPP ) +NewDataBrowserEditItemUPP(DataBrowserEditItemProcPtr userRoutine); + +/* + * NewDataBrowserHitTestUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserHitTestUPP ) +NewDataBrowserHitTestUPP(DataBrowserHitTestProcPtr userRoutine); + +/* + * NewDataBrowserTrackingUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserTrackingUPP ) +NewDataBrowserTrackingUPP(DataBrowserTrackingProcPtr userRoutine); + +/* + * NewDataBrowserItemDragRgnUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserItemDragRgnUPP ) +NewDataBrowserItemDragRgnUPP(DataBrowserItemDragRgnProcPtr userRoutine); + +/* + * NewDataBrowserItemAcceptDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserItemAcceptDragUPP ) +NewDataBrowserItemAcceptDragUPP(DataBrowserItemAcceptDragProcPtr userRoutine); + +/* + * NewDataBrowserItemReceiveDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserItemReceiveDragUPP ) +NewDataBrowserItemReceiveDragUPP(DataBrowserItemReceiveDragProcPtr userRoutine); + +/* + * DisposeDataBrowserDrawItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserDrawItemUPP(DataBrowserDrawItemUPP userUPP); + +/* + * DisposeDataBrowserEditItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserEditItemUPP(DataBrowserEditItemUPP userUPP); + +/* + * DisposeDataBrowserHitTestUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserHitTestUPP(DataBrowserHitTestUPP userUPP); + +/* + * DisposeDataBrowserTrackingUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserTrackingUPP(DataBrowserTrackingUPP userUPP); + +/* + * DisposeDataBrowserItemDragRgnUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemDragRgnUPP(DataBrowserItemDragRgnUPP userUPP); + +/* + * DisposeDataBrowserItemAcceptDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemAcceptDragUPP(DataBrowserItemAcceptDragUPP userUPP); + +/* + * DisposeDataBrowserItemReceiveDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeDataBrowserItemReceiveDragUPP(DataBrowserItemReceiveDragUPP userUPP); + +/* + * InvokeDataBrowserDrawItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserDrawItemUPP( + ControlRef browser, + DataBrowserItemID item, + DataBrowserPropertyID property, + DataBrowserItemState itemState, + const Rect * theRect, + SInt16 gdDepth, + Boolean colorDevice, + DataBrowserDrawItemUPP userUPP); + +/* + * InvokeDataBrowserEditItemUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( Boolean ) +InvokeDataBrowserEditItemUPP( + ControlRef browser, + DataBrowserItemID item, + DataBrowserPropertyID property, + CFStringRef theString, + Rect * maxEditTextRect, + Boolean * shrinkToFit, + DataBrowserEditItemUPP userUPP); + +/* + * InvokeDataBrowserHitTestUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( Boolean ) +InvokeDataBrowserHitTestUPP( + ControlRef browser, + DataBrowserItemID itemID, + DataBrowserPropertyID property, + const Rect * theRect, + const Rect * mouseRect, + DataBrowserHitTestUPP userUPP); + +/* + * InvokeDataBrowserTrackingUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserTrackingResult ) +InvokeDataBrowserTrackingUPP( + ControlRef browser, + DataBrowserItemID itemID, + DataBrowserPropertyID property, + const Rect * theRect, + Point startPt, + EventModifiers modifiers, + DataBrowserTrackingUPP userUPP); + +/* + * InvokeDataBrowserItemDragRgnUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +InvokeDataBrowserItemDragRgnUPP( + ControlRef browser, + DataBrowserItemID itemID, + DataBrowserPropertyID property, + const Rect * theRect, + RgnHandle dragRgn, + DataBrowserItemDragRgnUPP userUPP); + +/* + * InvokeDataBrowserItemAcceptDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( DataBrowserDragFlags ) +InvokeDataBrowserItemAcceptDragUPP( + ControlRef browser, + DataBrowserItemID itemID, + DataBrowserPropertyID property, + const Rect * theRect, + DragReference theDrag, + DataBrowserItemAcceptDragUPP userUPP); + +/* + * InvokeDataBrowserItemReceiveDragUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( Boolean ) +InvokeDataBrowserItemReceiveDragUPP( + ControlRef browser, + DataBrowserItemID itemID, + DataBrowserPropertyID property, + DataBrowserDragFlags dragFlags, + DragReference theDrag, + DataBrowserItemReceiveDragUPP userUPP); + +/* Custom Callback (vtable) Structure */ +enum { + kDataBrowserLatestCustomCallbacks = 0 +}; + +struct DataBrowserCustomCallbacks { + + UInt32 version; /* Use kDataBrowserLatestCustomCallbacks */ + + union { + struct { + DataBrowserDrawItemUPP drawItemCallback; + DataBrowserEditItemUPP editTextCallback; + DataBrowserHitTestUPP hitTestCallback; + DataBrowserTrackingUPP trackingCallback; + + DataBrowserItemDragRgnUPP dragRegionCallback; + DataBrowserItemAcceptDragUPP acceptDragCallback; + DataBrowserItemReceiveDragUPP receiveDragCallback; + } v1; + } u; +}; +typedef struct DataBrowserCustomCallbacks DataBrowserCustomCallbacks; +/* + * InitDataBrowserCustomCallbacks() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +InitDataBrowserCustomCallbacks(DataBrowserCustomCallbacks * callbacks); + + +/* Macro for initializing custom callback structure */ +#define InitializeDataBrowserCustomCallbacks(callbacks, vers) \ +{ (callbacks)->version = (vers); InitDataBrowserCustomCallbacks(callbacks); } + +/* + * GetDataBrowserCustomCallbacks() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserCustomCallbacks( + ControlRef browser, + DataBrowserCustomCallbacks * callbacks); + + +/* + * SetDataBrowserCustomCallbacks() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserCustomCallbacks( + ControlRef browser, + const DataBrowserCustomCallbacks * callbacks); + + + + + +/* TableView Formatting */ +typedef UInt32 DataBrowserTableViewHiliteStyle; +enum { + kDataBrowserTableViewMinimalHilite = 0, + kDataBrowserTableViewFillHilite = 1 +}; + +typedef UInt32 DataBrowserTableViewPropertyFlags; +enum { + /* kDataBrowserTableView DataBrowserPropertyFlags */ + kDataBrowserTableViewSelectionColumn = 1 << kDataBrowserViewSpecificFlagsOffset +}; + +/* The row and column indicies are zero-based */ + +typedef UInt32 DataBrowserTableViewRowIndex; +typedef UInt32 DataBrowserTableViewColumnIndex; +typedef DataBrowserPropertyID DataBrowserTableViewColumnID; +typedef DataBrowserPropertyDesc DataBrowserTableViewColumnDesc; + +/* TableView API */ +/* Use when setting column position */ +enum { + kDataBrowserTableViewLastColumn = -1 +}; + +/* + * RemoveDataBrowserTableViewColumn() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +RemoveDataBrowserTableViewColumn( + ControlRef browser, + DataBrowserTableViewColumnID column); + + +/* + * GetDataBrowserTableViewColumnCount() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewColumnCount( + ControlRef browser, + UInt32 * numColumns); + + + +/* + * SetDataBrowserTableViewHiliteStyle() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTableViewHiliteStyle( + ControlRef browser, + DataBrowserTableViewHiliteStyle hiliteStyle); + + +/* + * GetDataBrowserTableViewHiliteStyle() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewHiliteStyle( + ControlRef browser, + DataBrowserTableViewHiliteStyle * hiliteStyle); + + + +/* + * SetDataBrowserTableViewRowHeight() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTableViewRowHeight( + ControlRef browser, + UInt16 height); + + +/* + * GetDataBrowserTableViewRowHeight() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewRowHeight( + ControlRef browser, + UInt16 * height); + + +/* + * SetDataBrowserTableViewColumnWidth() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTableViewColumnWidth( + ControlRef browser, + UInt16 width); + + +/* + * GetDataBrowserTableViewColumnWidth() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewColumnWidth( + ControlRef browser, + UInt16 * width); + + +/* + * SetDataBrowserTableViewItemRowHeight() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTableViewItemRowHeight( + ControlRef browser, + DataBrowserItemID item, + UInt16 height); + + +/* + * GetDataBrowserTableViewItemRowHeight() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewItemRowHeight( + ControlRef browser, + DataBrowserItemID item, + UInt16 * height); + + +/* + * SetDataBrowserTableViewNamedColumnWidth() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTableViewNamedColumnWidth( + ControlRef browser, + DataBrowserTableViewColumnID column, + UInt16 width); + + +/* + * GetDataBrowserTableViewNamedColumnWidth() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewNamedColumnWidth( + ControlRef browser, + DataBrowserTableViewColumnID column, + UInt16 * width); + + +/* + * SetDataBrowserTableViewGeometry() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTableViewGeometry( + ControlRef browser, + Boolean variableWidthColumns, + Boolean variableHeightRows); + + +/* + * GetDataBrowserTableViewGeometry() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewGeometry( + ControlRef browser, + Boolean * variableWidthColumns, + Boolean * variableHeightRows); + + + +/* + * GetDataBrowserTableViewItemID() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewItemID( + ControlRef browser, + DataBrowserTableViewRowIndex row, + DataBrowserItemID * item); + + +/* + * SetDataBrowserTableViewItemRow() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTableViewItemRow( + ControlRef browser, + DataBrowserItemID item, + DataBrowserTableViewRowIndex row); + + +/* + * GetDataBrowserTableViewItemRow() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewItemRow( + ControlRef browser, + DataBrowserItemID item, + DataBrowserTableViewRowIndex * row); + + +/* + * SetDataBrowserTableViewColumnPosition() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserTableViewColumnPosition( + ControlRef browser, + DataBrowserTableViewColumnID column, + DataBrowserTableViewColumnIndex position); + + +/* + * GetDataBrowserTableViewColumnPosition() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewColumnPosition( + ControlRef browser, + DataBrowserTableViewColumnID column, + DataBrowserTableViewColumnIndex * position); + + +/* + * GetDataBrowserTableViewColumnProperty() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserTableViewColumnProperty( + ControlRef browser, + DataBrowserTableViewColumnIndex column, + DataBrowserTableViewColumnID * property); + + + + + +/* kDataBrowserListView Formatting */ +typedef UInt32 DataBrowserListViewPropertyFlags; +enum { + /* kDataBrowserListView DataBrowserPropertyFlags */ + kDataBrowserListViewMovableColumn = 1 << (kDataBrowserViewSpecificFlagsOffset + 1), + kDataBrowserListViewSortableColumn = 1 << (kDataBrowserViewSpecificFlagsOffset + 2), + kDataBrowserListViewSelectionColumn = kDataBrowserTableViewSelectionColumn, + kDataBrowserListViewDefaultColumnFlags = kDataBrowserListViewMovableColumn + kDataBrowserListViewSortableColumn +}; + + +enum { + kDataBrowserListViewLatestHeaderDesc = 0 +}; + +struct DataBrowserListViewHeaderDesc { + UInt32 version; /* Use kDataBrowserListViewLatestHeaderDesc */ + + UInt16 minimumWidth; + UInt16 maximumWidth; + + SInt16 titleOffset; + CFStringRef titleString; + DataBrowserSortOrder initialOrder; + ControlFontStyleRec btnFontStyle; + ControlButtonContentInfo btnContentInfo; +}; +typedef struct DataBrowserListViewHeaderDesc DataBrowserListViewHeaderDesc; +struct DataBrowserListViewColumnDesc { + DataBrowserTableViewColumnDesc propertyDesc; + DataBrowserListViewHeaderDesc headerBtnDesc; +}; +typedef struct DataBrowserListViewColumnDesc DataBrowserListViewColumnDesc; +/* kDataBrowserListView API */ +enum { + kDataBrowserListViewAppendColumn = kDataBrowserTableViewLastColumn +}; + +/* + * AutoSizeDataBrowserListViewColumns() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +AutoSizeDataBrowserListViewColumns(ControlRef browser); + + +/* + * AddDataBrowserListViewColumn() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +AddDataBrowserListViewColumn( + ControlRef browser, + DataBrowserListViewColumnDesc * columnDesc, + DataBrowserTableViewColumnIndex position); + + +/* + * GetDataBrowserListViewHeaderDesc() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserListViewHeaderDesc( + ControlRef browser, + DataBrowserTableViewColumnID column, + DataBrowserListViewHeaderDesc * desc); + + +/* + * SetDataBrowserListViewHeaderDesc() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserListViewHeaderDesc( + ControlRef browser, + DataBrowserTableViewColumnID column, + DataBrowserListViewHeaderDesc * desc); + + +/* + * SetDataBrowserListViewHeaderBtnHeight() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserListViewHeaderBtnHeight( + ControlRef browser, + UInt16 height); + + +/* + * GetDataBrowserListViewHeaderBtnHeight() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserListViewHeaderBtnHeight( + ControlRef browser, + UInt16 * height); + + +/* + * SetDataBrowserListViewUsePlainBackground() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserListViewUsePlainBackground( + ControlRef browser, + Boolean usePlainBackground); + + +/* + * GetDataBrowserListViewUsePlainBackground() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserListViewUsePlainBackground( + ControlRef browser, + Boolean * usePlainBackground); + + +/* + * SetDataBrowserListViewDisclosureColumn() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserListViewDisclosureColumn( + ControlRef browser, + DataBrowserTableViewColumnID column, + Boolean expandableRows); + + +/* + * GetDataBrowserListViewDisclosureColumn() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserListViewDisclosureColumn( + ControlRef browser, + DataBrowserTableViewColumnID * column, + Boolean * expandableRows); + + + +/* kDataBrowserColumnView API */ +/* + * GetDataBrowserColumnViewPath() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserColumnViewPath( + ControlRef browser, + Handle path); + + +/* + * GetDataBrowserColumnViewPathLength() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserColumnViewPathLength( + ControlRef browser, + UInt32 * pathLength); + + +/* + * SetDataBrowserColumnViewPath() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserColumnViewPath( + ControlRef browser, + UInt32 length, + const DataBrowserItemID * path); + + +/* + * SetDataBrowserColumnViewDisplayType() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +SetDataBrowserColumnViewDisplayType( + ControlRef browser, + DataBrowserPropertyType propertyType); + + +/* + * GetDataBrowserColumnViewDisplayType() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.1 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +GetDataBrowserColumnViewDisplayType( + ControlRef browser, + DataBrowserPropertyType * propertyType); + + + +/* DataBrowser UPP macros */ +/*---------------------------------------------------------------------------------------*/ +/* EditUnicodeText Control */ +/*---------------------------------------------------------------------------------------*/ +/* This control is only available in Mac OS X. It is super similar to Edit Text control */ +/* Use all the same Get/Set tags. But don't ask for the TEHandle. */ +/*---------------------------------------------------------------------------------------*/ +/* This callback supplies the functionality of the TSMTEPostUpdateProcPtr that is used */ +/* in the EditText control. A client should supply this call if they want to look at */ +/* inline text that has been fixed before it is included in the actual body text */ +/* if the new text (i.e. the text in the handle) should be included in the body text */ +/* the client should return true. If the client wants to block the inclusion of the */ +/* text they should return false. */ +typedef CALLBACK_API( Boolean , EditUnicodePostUpdateProcPtr )(UniCharArrayHandle uniText, UniCharCount uniTextLength, UniCharArrayOffset iStartOffset, UniCharArrayOffset iEndOffset, void *refcon); +typedef STACK_UPP_TYPE(EditUnicodePostUpdateProcPtr) EditUnicodePostUpdateUPP; +/* + * NewEditUnicodePostUpdateUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( EditUnicodePostUpdateUPP ) +NewEditUnicodePostUpdateUPP(EditUnicodePostUpdateProcPtr userRoutine); + +/* + * DisposeEditUnicodePostUpdateUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeEditUnicodePostUpdateUPP(EditUnicodePostUpdateUPP userUPP); + +/* + * InvokeEditUnicodePostUpdateUPP() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +InvokeEditUnicodePostUpdateUPP( + UniCharArrayHandle uniText, + UniCharCount uniTextLength, + UniCharArrayOffset iStartOffset, + UniCharArrayOffset iEndOffset, + void * refcon, + EditUnicodePostUpdateUPP userUPP); + +/* Use this tag when calling ControlSet/GetData to specify the UnicodePostUpdateProcPtr */ +/* tags available with Appearance 1.1 or later */ +enum { + kControlEditUnicodeTextPostUpdateProcTag = FOUR_CHAR_CODE('upup') +}; + + +enum { + kControlEditUnicodeTextProc = 912, + kControlEditUnicodeTextPasswordProc = 914 +}; + +/* Control Kind Tag */ +enum { + kControlKindEditUnicodeText = FOUR_CHAR_CODE('eutx') +}; + +/* Creation API for X */ +/* + * CreateEditUnicodeTextControl() + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API( OSStatus ) +CreateEditUnicodeTextControl( + WindowRef window, + const Rect * boundsRect, + CFStringRef text, + Boolean isPassword, + const ControlFontStyleRec * style, /* can be NULL */ + ControlRef * outControl); + + +/* Tagged data supported by Unicode text Control only*/ +enum { + kControlEditTextSingleLineTag = FOUR_CHAR_CODE('sglc') +}; + +#if OLDROUTINENAMES +/*--------------------------------------------------------------------------------------*/ +/* o OLDROUTINENAMES */ +/*--------------------------------------------------------------------------------------*/ +enum { + kControlCheckboxUncheckedValue = kControlCheckBoxUncheckedValue, + kControlCheckboxCheckedValue = kControlCheckBoxCheckedValue, + kControlCheckboxMixedValue = kControlCheckBoxMixedValue +}; + +enum { + inLabel = kControlLabelPart, + inMenu = kControlMenuPart, + inTriangle = kControlTrianglePart, + inButton = kControlButtonPart, + inCheckBox = kControlCheckBoxPart, + inUpButton = kControlUpButtonPart, + inDownButton = kControlDownButtonPart, + inPageUp = kControlPageUpPart, + inPageDown = kControlPageDownPart +}; + +enum { + kInLabelControlPart = kControlLabelPart, + kInMenuControlPart = kControlMenuPart, + kInTriangleControlPart = kControlTrianglePart, + kInButtonControlPart = kControlButtonPart, + kInCheckBoxControlPart = kControlCheckBoxPart, + kInUpButtonControlPart = kControlUpButtonPart, + kInDownButtonControlPart = kControlDownButtonPart, + kInPageUpControlPart = kControlPageUpPart, + kInPageDownControlPart = kControlPageDownPart +}; + + +#endif /* OLDROUTINENAMES */ + + + + + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __CONTROLDEFINITIONS__ */ + |