{ File: HIToolbox/HIComboBox.h Contains: Definition of the combo box view provided by HIToolbox. Version: HIToolbox-437~1 Copyright: © 2006-2008 by Apple Computer, Inc., all rights reserved. Bugs?: For bug reports, consult the following page on the World Wide Web: http://www.freepascal.org/bugs.html } { Translation Updated: Jonas Maebe, , October 2009 } { Modified for use with Free Pascal Version 308 Please report any bugs to } {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE} {$mode macpas} {$packenum 1} {$macro on} {$inline on} {$calling mwpascal} unit HIComboBox; interface {$setc UNIVERSAL_INTERFACES_VERSION := $0400} {$setc GAP_INTERFACES_VERSION := $0308} {$ifc not defined USE_CFSTR_CONSTANT_MACROS} {$setc USE_CFSTR_CONSTANT_MACROS := TRUE} {$endc} {$ifc defined CPUPOWERPC and defined CPUI386} {$error Conflicting initial definitions for CPUPOWERPC and CPUI386} {$endc} {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN} {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN} {$endc} {$ifc not defined __ppc__ and defined CPUPOWERPC32} {$setc __ppc__ := 1} {$elsec} {$setc __ppc__ := 0} {$endc} {$ifc not defined __ppc64__ and defined CPUPOWERPC64} {$setc __ppc64__ := 1} {$elsec} {$setc __ppc64__ := 0} {$endc} {$ifc not defined __i386__ and defined CPUI386} {$setc __i386__ := 1} {$elsec} {$setc __i386__ := 0} {$endc} {$ifc not defined __x86_64__ and defined CPUX86_64} {$setc __x86_64__ := 1} {$elsec} {$setc __x86_64__ := 0} {$endc} {$ifc not defined __arm__ and defined CPUARM} {$setc __arm__ := 1} {$elsec} {$setc __arm__ := 0} {$endc} {$ifc defined cpu64} {$setc __LP64__ := 1} {$elsec} {$setc __LP64__ := 0} {$endc} {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__} {$error Conflicting definitions for __ppc__ and __i386__} {$endc} {$ifc defined __ppc__ and __ppc__} {$setc TARGET_CPU_PPC := TRUE} {$setc TARGET_CPU_PPC64 := FALSE} {$setc TARGET_CPU_X86 := FALSE} {$setc TARGET_CPU_X86_64 := FALSE} {$setc TARGET_CPU_ARM := FALSE} {$setc TARGET_OS_MAC := TRUE} {$setc TARGET_OS_IPHONE := FALSE} {$setc TARGET_IPHONE_SIMULATOR := FALSE} {$elifc defined __ppc64__ and __ppc64__} {$setc TARGET_CPU_PPC := FALSE} {$setc TARGET_CPU_PPC64 := TRUE} {$setc TARGET_CPU_X86 := FALSE} {$setc TARGET_CPU_X86_64 := FALSE} {$setc TARGET_CPU_ARM := FALSE} {$setc TARGET_OS_MAC := TRUE} {$setc TARGET_OS_IPHONE := FALSE} {$setc TARGET_IPHONE_SIMULATOR := FALSE} {$elifc defined __i386__ and __i386__} {$setc TARGET_CPU_PPC := FALSE} {$setc TARGET_CPU_PPC64 := FALSE} {$setc TARGET_CPU_X86 := TRUE} {$setc TARGET_CPU_X86_64 := FALSE} {$setc TARGET_CPU_ARM := FALSE} {$ifc defined(iphonesim)} {$setc TARGET_OS_MAC := FALSE} {$setc TARGET_OS_IPHONE := TRUE} {$setc TARGET_IPHONE_SIMULATOR := TRUE} {$elsec} {$setc TARGET_OS_MAC := TRUE} {$setc TARGET_OS_IPHONE := FALSE} {$setc TARGET_IPHONE_SIMULATOR := FALSE} {$endc} {$elifc defined __x86_64__ and __x86_64__} {$setc TARGET_CPU_PPC := FALSE} {$setc TARGET_CPU_PPC64 := FALSE} {$setc TARGET_CPU_X86 := FALSE} {$setc TARGET_CPU_X86_64 := TRUE} {$setc TARGET_CPU_ARM := FALSE} {$setc TARGET_OS_MAC := TRUE} {$setc TARGET_OS_IPHONE := FALSE} {$setc TARGET_IPHONE_SIMULATOR := FALSE} {$elifc defined __arm__ and __arm__} {$setc TARGET_CPU_PPC := FALSE} {$setc TARGET_CPU_PPC64 := FALSE} {$setc TARGET_CPU_X86 := FALSE} {$setc TARGET_CPU_X86_64 := FALSE} {$setc TARGET_CPU_ARM := TRUE} { will require compiler define when/if other Apple devices with ARM cpus ship } {$setc TARGET_OS_MAC := FALSE} {$setc TARGET_OS_IPHONE := TRUE} {$setc TARGET_IPHONE_SIMULATOR := FALSE} {$elsec} {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ is defined.} {$endc} {$ifc defined __LP64__ and __LP64__ } {$setc TARGET_CPU_64 := TRUE} {$elsec} {$setc TARGET_CPU_64 := FALSE} {$endc} {$ifc defined FPC_BIG_ENDIAN} {$setc TARGET_RT_BIG_ENDIAN := TRUE} {$setc TARGET_RT_LITTLE_ENDIAN := FALSE} {$elifc defined FPC_LITTLE_ENDIAN} {$setc TARGET_RT_BIG_ENDIAN := FALSE} {$setc TARGET_RT_LITTLE_ENDIAN := TRUE} {$elsec} {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.} {$endc} {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE} {$setc CALL_NOT_IN_CARBON := FALSE} {$setc OLDROUTINENAMES := FALSE} {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE} {$setc OPAQUE_UPP_TYPES := TRUE} {$setc OTCARBONAPPLICATION := TRUE} {$setc OTKERNEL := FALSE} {$setc PM_USE_SESSION_APIS := TRUE} {$setc TARGET_API_MAC_CARBON := TRUE} {$setc TARGET_API_MAC_OS8 := FALSE} {$setc TARGET_API_MAC_OSX := TRUE} {$setc TARGET_CARBON := TRUE} {$setc TARGET_CPU_68K := FALSE} {$setc TARGET_CPU_MIPS := FALSE} {$setc TARGET_CPU_SPARC := FALSE} {$setc TARGET_OS_UNIX := FALSE} {$setc TARGET_OS_WIN32 := FALSE} {$setc TARGET_RT_MAC_68881 := FALSE} {$setc TARGET_RT_MAC_CFM := FALSE} {$setc TARGET_RT_MAC_MACHO := TRUE} {$setc TYPED_FUNCTION_POINTERS := TRUE} {$setc TYPE_BOOL := FALSE} {$setc TYPE_EXTENDED := FALSE} {$setc TYPE_LONGLONG := TRUE} uses MacTypes,Appearance,CarbonEvents,Controls,CFBase,CFArray,HIGeometry,HIObject,HIView; {$endc} {not MACOSALLINCLUDE} {$ifc TARGET_OS_MAC} {$ALIGN POWER} { * HIComboBox.h * * Discussion: * API definitions for the combo box view. } {==============================================================================} { HIComboBox } { The combo box is a new view starting in Mac OS 10.2. It can be used in } { both the new compositing mode, as well as the traditional Control Manager } { mode. Like all new HIFoo views, this view is created invisible. You must } { show the view after creation if you want to, like, see it and stuff. } {==============================================================================} { The HIObject class ID for the HIComboBox class. } {$ifc USE_CFSTR_CONSTANT_MACROS} {$definec kHIComboBoxClassID CFSTRP('com.apple.HIComboBox')} {$endc} { kEventClassHIComboBox quick reference: kEventComboBoxListItemSelected = 1 } const kEventClassHIComboBox = FourCharCode('hicb'); const kEventParamComboBoxListSelectedItemIndex = FourCharCode('cbli'); { * kEventClassHIComboBox / kEventComboBoxListItemSelected * * Summary: * Notification that an item in the ComboBox disclosure list has * been selected. * * Discussion: * This event is sent as a notification when an item in the ComboBox * disclosure list has been selected. This event is sent to all * handlers installed on the view. This does not imply that the * selection has been accepted; for that you will need to register * for the kEventClassTextField/kEventTextAccepted event; you can * register for that event in order to make live selections however. * * Mac OS X threading: * Not thread safe * * Parameters: * * --> kEventParamDirectObject (in, typeControlRef) * The ComboBox view that has sent the notification. * * --> kEventParamComboBoxListSelectedItemIndex (in, typeCFIndex) * The index of the combo box list item that has been selected. * * Availability: * Mac OS X: in version 10.4 and later in Carbon.framework * CarbonLib: not available } const kEventComboBoxListItemSelected = 1; { * Summary: * ComboBox attributes } const { * A constant with value zero; the lack of any attributes. } kHIComboBoxNoAttributes = 0; { * The view will attempt to auto complete the text the user is typing * with an item in the ComboBox list that is the closest appropriate * match. } kHIComboBoxAutoCompletionAttribute = 1 shl 0; { * The view will disclose the ComboBox list after the user enters * text. } kHIComboBoxAutoDisclosureAttribute = 1 shl 1; { * The items in the ComboBox list will be automatically sorted in * alphabetical order. } kHIComboBoxAutoSortAttribute = 1 shl 2; { * The ComboBox list will be automatically sized to fit the Human * Interface Guidelines. } kHIComboBoxAutoSizeListAttribute = 1 shl 3; { * The minimum set of ComboBox attributes commonly used. } kHIComboBoxStandardAttributes = kHIComboBoxAutoCompletionAttribute or kHIComboBoxAutoDisclosureAttribute or kHIComboBoxAutoSizeListAttribute; { ControlKind} const kControlKindHIComboBox = FourCharCode('cbbx'); { ComboBox Part codes} const kHIComboBoxEditTextPart = 5; kHIComboBoxDisclosurePart = 28; { The ComboBox view supports these tags previously defined for the EditUnicodeText view. These tags are available through Get/SetControlData with a ControlPartCode of kHIComboBoxEditTextPart: kControlFontStyleTag kControlEditTextFixedTextTag kControlEditTextTextTag kControlEditTextKeyFilterTag kControlEditTextValidationProcTag kControlEditUnicodeTextPostUpdateProcTag kControlEditTextSelectionTag kControlEditTextKeyScriptBehaviorTag kControlEditTextCharCount kControlEditTextCFStringTag } { * Discussion: * ComboBox ControlData tags available with Mac OS X 10.2 and later. } const { * Extract the contents of the ComboBox list as a CFArray. The * CFArray will be retained: if you get the array, you own it and * will be required to release it; if you set it the toolbox makes a * copy of it and you are free to release your reference. } kHIComboBoxListTag = FourCharCode('cbls'); { CFArrayRef; bumps the refCount on get/retains on set} { * The width of the ComboBox list. This can be customized. This * disables the autosize attribute. } kHIComboBoxListPixelWidthTag = FourCharCode('cblw'); { UInt32 } { * The height of the ComboBox list. This can be customized. This * disables the autosize attribute. } kHIComboBoxListPixelHeightTag = FourCharCode('cblh'); { UInt32} { * The number of visible items in the list. This can be customized. * This disables the autosize attribute. } kHIComboBoxNumVisibleItemsTag = FourCharCode('cbni'); { UInt32} {$ifc not TARGET_CPU_64} { * HIComboBoxCreate() * * Summary: * Creates a combo box view. The new view is initially invisible. * * Mac OS X threading: * Not thread safe * * Parameters: * * boundsRect: * The bounding box of the view. * * text: * The default text in the editable portion of the view. Can be * NULL. * * style: * The font style of the both editable text and the text in the * disclosure list. Can be NULL. * * list: * The default values available in the disclosure list. Can be * NULL. * * inAttributes: * The default attributes of the combo box. * * outComboBox: * On exit, contains the new view. * * Availability: * Mac OS X: in version 10.2 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Non-Carbon CFM: not available } function HIComboBoxCreate( const (*var*) boundsRect: HIRect; text: CFStringRef { can be NULL }; {const} style: ControlFontStyleRecPtr { can be NULL }; list: CFArrayRef { can be NULL }; inAttributes: OptionBits; var outComboBox: HIViewRef ): OSStatus; external name '_HIComboBoxCreate'; (* AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER *) { * HIComboBoxGetItemCount() * * Summary: * Get the number of items in the combo box disclosure list. * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box. * * Result: * The number of items in the combo box disclosure list. * * Availability: * Mac OS X: in version 10.2 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Non-Carbon CFM: not available } function HIComboBoxGetItemCount( inComboBox: HIViewRef ): ItemCount; external name '_HIComboBoxGetItemCount'; (* AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER *) { * HIComboBoxInsertTextItemAtIndex() * * Summary: * Inserts a CFString in the disclosure list * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box whose disclosure list the text will be inserted * in. * * inIndex: * The index that the text should be inserted in. If the index * does not fall within the number of items in the combo box list, * it will be appended to the end of the list. * * inText: * The text item to be inserted in the combo box disclosure list. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.2 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Non-Carbon CFM: not available } function HIComboBoxInsertTextItemAtIndex( inComboBox: HIViewRef; inIndex: CFIndex; inText: CFStringRef ): OSStatus; external name '_HIComboBoxInsertTextItemAtIndex'; (* AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER *) { * HIComboBoxAppendTextItem() * * Summary: * Appends a text item to the combo box disclosure list. * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box whose disclosure list the text will be appended * to. * * inText: * The text item to be appended to the combo box disclosure list. * * outIndex: * On exit, the index of the new item. Can be NULL if the caller * does not require this information. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.2 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Non-Carbon CFM: not available } function HIComboBoxAppendTextItem( inComboBox: HIViewRef; inText: CFStringRef; outIndex: CFIndexPtr { can be NULL } ): OSStatus; external name '_HIComboBoxAppendTextItem'; (* AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER *) { * HIComboBoxCopyTextItemAtIndex() * * Summary: * Copy the text from the combo box disclosure list * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box that contains the text item you would like to * copy. * * inIndex: * The index of the text item. Will return paramErr if the index * is out of bounds of the combo box list. * * outString: * A copy of the string at the given index. Remember this is now * your copy that you will need to release. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.2 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Non-Carbon CFM: not available } function HIComboBoxCopyTextItemAtIndex( inComboBox: HIViewRef; inIndex: CFIndex; var outString: CFStringRef ): OSStatus; external name '_HIComboBoxCopyTextItemAtIndex'; (* AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER *) { * HIComboBoxRemoveItemAtIndex() * * Summary: * Remove an item from a combo box disclosure list. * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box that contains the disclosure list that you would * like to remove an item from. * * inIndex: * The index of the item to remove. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.2 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Non-Carbon CFM: not available } function HIComboBoxRemoveItemAtIndex( inComboBox: HIViewRef; inIndex: CFIndex ): OSStatus; external name '_HIComboBoxRemoveItemAtIndex'; (* AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER *) { * HIComboBoxChangeAttributes() * * Summary: * Change the attributes of a combo box * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box whose attributes you would like to change. * * inAttributesToSet: * The attributes to set. * * inAttributesToClear: * The attributes to clear. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.2 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Non-Carbon CFM: not available } function HIComboBoxChangeAttributes( inComboBox: HIViewRef; inAttributesToSet: OptionBits; inAttributesToClear: OptionBits ): OSStatus; external name '_HIComboBoxChangeAttributes'; (* AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER *) { * HIComboBoxGetAttributes() * * Summary: * Get the attributes of a combo box. * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box whose attributes you would like to obtain. * * outAttributes: * The attributes of the combo box. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.2 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later * Non-Carbon CFM: not available } function HIComboBoxGetAttributes( inComboBox: HIViewRef; var outAttributes: OptionBits ): OSStatus; external name '_HIComboBoxGetAttributes'; (* AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER *) { * HIComboBoxIsListVisible() * * Summary: * Returns whether the combo box list is currently disclosed. * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box whose list visibility you would like to obtain. * * Result: * A boolean value indicating whether the combo box list is * disclosed (true) or hidden (false). * * Availability: * Mac OS X: in version 10.4 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later * Non-Carbon CFM: not available } function HIComboBoxIsListVisible( inComboBox: HIViewRef ): Boolean; external name '_HIComboBoxIsListVisible'; (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *) { * HIComboBoxSetListVisible() * * Summary: * Hides or shows the combo box list. * * Mac OS X threading: * Not thread safe * * Parameters: * * inComboBox: * The combo box whose list will be hidden or shown. * * inVisible: * A boolean value indicating whether you wish to hide the list * (false) or show the list (true). * * Result: * An operating system result code. * * Availability: * Mac OS X: in version 10.4 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.4 and later * Non-Carbon CFM: not available } function HIComboBoxSetListVisible( inComboBox: HIViewRef; inVisible: Boolean ): OSStatus; external name '_HIComboBoxSetListVisible'; (* AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER *) {$endc} {not TARGET_CPU_64} {$endc} {TARGET_OS_MAC} {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE} end. {$endc} {not MACOSALLINCLUDE}