{ File: HIToolbox/HISearchField.h Contains: Definition of the search field 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 } { Pascal 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 HISearchField; 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,Menus,HIGeometry,HIObject,HIView,CFBase; {$endc} {not MACOSALLINCLUDE} {$ifc TARGET_OS_MAC} {$ALIGN POWER} { * HISearchField.h * * Discussion: * API definitions for the search field view. } {==============================================================================} { HISearchField } { HISearchField is a new view available in Mac OS X 10.3. } { This view is designed to be used for applications that provide searching } { functionality. Visually, it is a standard text field optionally adorned } { with a search icon on the left and/or a cancel image on the right. } { When the user has accepted the text by pressing the return or enter key } { a Carbon Event of kEventClassTextField / kEventTextAccepted will be sent } { to the view. This will be the indication that the search should begin. } { This view will also respond to all the standard control data tags that are } { used by the EditUnicodeText view. } {==============================================================================} { The HIObject class ID for the HISearchField class. } {$ifc USE_CFSTR_CONSTANT_MACROS} {$definec kHISearchFieldClassID CFSTRP('com.apple.HISearchField')} {$endc} { ControlKind} const kControlKindHISearchField = FourCharCode('srfd'); { HISearchField part codes} const kControlSearchFieldCancelPart = 30; kControlSearchFieldMenuPart = 31; { The SearchField view supports those tags previously defined for the EditUnicodeText view. These tags are available through Get/SetControlData with ControlPartCode of kControlEditTextPart: kControlFontStyleTag kControlEditTextFixedTextTag kControlEditTextTextTag kControlEditTextKeyFilterTag kControlEditTextValidationProcTag kControlEditUnicodeTextPostUpdateProcTag kControlEditTextSelectionTag kControlEditTextKeyScriptBehaviorTag kControlEditTextCharCount kControlEditTextCFStringTag } { * Summary: * HISearchField attributes } const { * A constant with value zero; the lack of any attributes. } kHISearchFieldNoAttributes = 0; { * This view contains the cancel icon in the text field. } kHISearchFieldAttributesCancel = 1 shl 0; { * This view contains the search icon in the text field. If a menu is * associated with the search field, this attribute is implicitly set * and the search icon will display with a menu disclosure badge. * Available in Mac OS X 10.4 and later. } kHISearchFieldAttributesSearchIcon = 1 shl 1; { Event Classes} const kEventClassSearchField = FourCharCode('srfd'); { * kEventClassSearchField / kEventSearchFieldCancelClicked * * Summary: * Notification that the cancel icon has been depressed. * * Discussion: * This event is sent by the HISearchField view if the cancel icon * is enabled (attribute of kHISearchFieldAtttributesCancel), and * the cancel has been clicked. * * Mac OS X threading: * Not thread safe * * Parameters: * * --> kEventParamDirectObject (in, typeControlRef) * The HISearchField that has sent the notification. * * Availability: * Mac OS X: in version 10.3 and later in Carbon.framework * CarbonLib: not available } const kEventSearchFieldCancelClicked = 1; { * kEventClassSearchField / kEventSearchFieldSearchClicked * * Summary: * Notification that the search icon has been depressed. * * Discussion: * This event is sent by the HISearchField view if the search icon * is enabled (attribute of kHISearchFieldAttributesSearchIcon or a * menu is associated with the search field), and the search icon * has been clicked. If a menu is associated with the search field, * the search field will handle the display and tracking of the menu * by default. This event is sent to the search field only, it will * not propagate. * * Mac OS X threading: * Not thread safe * * Parameters: * * --> kEventParamDirectObject (in, typeControlRef) * The HISearchField that has sent the notification. * * Availability: * Mac OS X: in version 10.4 and later in Carbon.framework * CarbonLib: not available } const kEventSearchFieldSearchClicked = 2; {$ifc not TARGET_CPU_64} { * HISearchFieldCreate() * * Summary: * Creates a search field view. The new view is initially invisible. * * Mac OS X threading: * Not thread safe * * Parameters: * * inBounds: * The initial bounds of the view. If this parameter is NULL, the * view defaults to have empty bounds ( 0, 0, 0, 0 ). * * inAttributes: * The initial attributes of the search field. Indicates whether * the field should contain the cancel icon. * * inSearchMenu: * The menu to be associated with this search field. If * inSearchMenu is non-NULL, it will be retained by the search * field and the search icon will be enabled in the left side of * the text field. If this parameter is NULL, the view will not * display the search icon in the left portion of the text field. * You are expected to install handlers on this menu to handle the * visual appearance of the menu (for example, to draw check marks * or enable items when the menu receives the * kEventMenuEnableItems Carbon Event), and to keep track of what * action should be performed by associating HICommands with each * menu item and installing a handler for the ( * kEventClassCommand, kEventCommandProcess ) Carbon Event. * * inDescriptiveText: * The text to be displayed in the text field when the field does * not have focus and contains no user entered text. This is meant * to be an indication of what the search criteria is. For * example, you may wish to identify to the user that the search * will cover the "Subject" or "Contents" of a selected range of * items. If inDescriptiveText is non-NULL it will be retained by * the search field. * * outRef: * On exit, contains the new view. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.3 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.3 and later * Non-Carbon CFM: not available } function HISearchFieldCreate( {const} inBounds: HIRectPtr { can be NULL }; inAttributes: OptionBits; inSearchMenu: MenuRef { can be NULL }; inDescriptiveText: CFStringRef { can be NULL }; var outRef: HIViewRef ): OSStatus; external name '_HISearchFieldCreate'; (* AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER *) { * HISearchFieldSetSearchMenu() * * Summary: * Set the search menu associated with the view. * * Mac OS X threading: * Not thread safe * * Parameters: * * inSearchField: * The search field to associate the search menu with. * * inSearchMenu: * The menu to associate with the search field. If there is * already a menu associated with the search field, that menu will * be released. If inSearchMenu is non-NULL, it will be retained * by the search field and the search icon will be enabled in the * left side of the text field. You are expected to install * handlers on this menu to handle the visual appearance of the * menu (for example, to draw check marks or enable items when the * menu receives the kEventMenuEnableItems Carbon Event), and to * keep track of what action should be performed by associating * HICommands with each menu item and installing a handler for the * ( kEventClassCommand, kEventCommandProcess ) Carbon Event. If * inSearchMenu is NULL, the search icon will be removed from the * left side of the text field and no menu will be associated with * this field. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.3 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.3 and later * Non-Carbon CFM: not available } function HISearchFieldSetSearchMenu( inSearchField: HIViewRef; inSearchMenu: MenuRef { can be NULL } ): OSStatus; external name '_HISearchFieldSetSearchMenu'; (* AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER *) { * HISearchFieldGetSearchMenu() * * Summary: * Get the menu that is associated with the search field * * Mac OS X threading: * Not thread safe * * Parameters: * * inSearchField: * The search field you wish to retrieve the search menu from. * * outSearchMenu: * On exit, will contain the menu that is associated with search * field. The menu will _not_ be retained on output and this * parameter cannot be NULL. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.3 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.3 and later * Non-Carbon CFM: not available } function HISearchFieldGetSearchMenu( inSearchField: HIViewRef; var outSearchMenu: MenuRef ): OSStatus; external name '_HISearchFieldGetSearchMenu'; (* AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER *) { * HISearchFieldChangeAttributes() * * Summary: * Set the attributes for the given search field. * * Mac OS X threading: * Not thread safe * * Parameters: * * inSearchField: * The search field to change the attributes of. * * inAttributesToSet: * The attributes to set. * * inAttributesToClear: * The attributes to clear. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.3 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.3 and later * Non-Carbon CFM: not available } function HISearchFieldChangeAttributes( inSearchField: HIViewRef; inAttributesToSet: OptionBits; inAttributesToClear: OptionBits ): OSStatus; external name '_HISearchFieldChangeAttributes'; (* AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER *) { * HISearchFieldGetAttributes() * * Summary: * Returns the attributes of the search field. * * Mac OS X threading: * Not thread safe * * Parameters: * * inSearchField: * The search field to get the attributes of. * * outAttributes: * On exit, will contain the attributes of the search field. This * parameter cannot be NULL. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.3 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.3 and later * Non-Carbon CFM: not available } function HISearchFieldGetAttributes( inSearchField: HIViewRef; var outAttributes: OptionBits ): OSStatus; external name '_HISearchFieldGetAttributes'; (* AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER *) { * HISearchFieldSetDescriptiveText() * * Summary: * Set the description of the search action of the search field. * * Mac OS X threading: * Not thread safe * * Parameters: * * inSearchField: * The search field to change the description of. * * inDescription: * The new description for the search field. If the search field * contains a description, it will be released. If inDescription * is non-NULL, it will be retained by the search field. If it is * NULL, no description will be associated with the search field. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.3 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.3 and later * Non-Carbon CFM: not available } function HISearchFieldSetDescriptiveText( inSearchField: HIViewRef; inDescription: CFStringRef { can be NULL } ): OSStatus; external name '_HISearchFieldSetDescriptiveText'; (* AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER *) { * HISearchFieldCopyDescriptiveText() * * Summary: * Get the description that is associated with the search field. * * Mac OS X threading: * Not thread safe * * Parameters: * * inSearchField: * The search field you wish to retrieve the description from. * * outDescription: * On exit, will contain the description that is associated with * the search field. This parameter cannot be NULL. If there is no * description associated with the search field, outDescription * will be set to NULL. If there is a description, a CFStringRef * will be created that contains the contents of the description. * You posess ownership of this string and will need to release it * when you no longer need it. * * Result: * An operating system status code. * * Availability: * Mac OS X: in version 10.3 and later in Carbon.framework [32-bit only] * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.3 and later * Non-Carbon CFM: not available } function HISearchFieldCopyDescriptiveText( inSearchField: HIViewRef; var outDescription: CFStringRef ): OSStatus; external name '_HISearchFieldCopyDescriptiveText'; (* AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER *) {$endc} {not TARGET_CPU_64} {$endc} {TARGET_OS_MAC} {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE} end. {$endc} {not MACOSALLINCLUDE}