/packages/univint/src/HIComboBox.pas
https://github.com/slibre/freepascal · Pascal · 677 lines · 37 code · 55 blank · 585 comment · 0 complexity · 9bc25af7d891483626a049f81bd4a2fc MD5 · raw file
- {
- File: HIToolbox/HIComboBox.h
-
- Contains: Definition of the combo box view provided by HIToolbox.
-
- Version: HIToolbox-624~3
-
- 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, <jonas@freepascal.org>, October 2009 }
- { Pascal Translation Updated: Jonas Maebe, <jonas@freepascal.org>, October 2012 }
- {
- Modified for use with Free Pascal
- Version 308
- Please report any bugs to <gpc@microbizz.nl>
- }
- {$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}
- {$setc TARGET_OS_EMBEDDED := 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}
- {$setc TARGET_OS_EMBEDDED := 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}
- {$setc TARGET_OS_EMBEDDED := FALSE}
- {$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}
- {$setc TARGET_OS_EMBEDDED := 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}
- {$setc TARGET_OS_EMBEDDED := TRUE}
- {$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}