1{%mainunit appkit.pas} 2(* 3 NSToolbar.h 4 Application Kit 5 Copyright (c) 2000-2004, Apple Computer, Inc. 6 All rights reserved. 7*) 8 9{$ifdef HEADER} 10{$ifndef NSTOOLBAR_PAS_H} 11{$define NSTOOLBAR_PAS_H} 12 13{$include AppKitDefines.inc} 14 15type 16 NSToolbarDisplayMode = ( 17 NSToolbarDisplayModeDefault, 18 NSToolbarDisplayModeIconAndLabel, 19 NSToolbarDisplayModeIconOnly, 20 NSToolbarDisplayModeLabelOnly 21 ); 22 23 24type 25 NSToolbarSizeMode = ( 26 NSToolbarSizeModeDefault, 27 NSToolbarSizeModeRegular, 28 NSToolbarSizeModeSmall 29 ); 30 31 32//APPKIT_EXTERN NSString *NSToolbarWillAddItemNotification; 33//APPKIT_EXTERN NSString *NSToolbarDidRemoveItemNotification; 34{$endif} 35{$endif} 36 37{$ifdef FORWARD} 38 NSToolbar = class; 39 40{$endif} 41 42{$ifdef CLASSES} 43{$ifndef NSTOOLBAR_PAS_C} 44{$define NSTOOLBAR_PAS_C} 45 46{$include AppKitDefines.inc} 47 48 { NSToolbar } 49 50 NSToolbar = class(NSObject) 51 public 52 class function getClass: lobjc.id; override; 53 constructor initWithIdentifier(_identifier: CFStringRef); 54 // The identifier is used to form the toolbar's autosave name. Also, toolbars with 55 // the same identifier are implicitly synchronized so that they maintain the same state. 56 procedure insertItemWithItemIdentifier_atIndex(_itemIdentifier: CFStringRef; __index: Integer); 57 procedure removeItemAtIndex(__index: Integer); 58 // Primitives for explicitly adding and removing items. Any change made will be propogated 59 // immediately to all other toolbars with the same identifier. 60 procedure setDelegate(_delegate: lobjc.id); 61 function delegate: lobjc.id; 62 // Customizable toolbars must have a delegate, and must implement the required NSToolbarDelegate 63 // methods. 64 procedure setVisible(_shown: LongBool); 65 function isVisible: LongBool; 66 // toggles the visibliity of the toolbar. 67 procedure runCustomizationPalette(_sender: lobjc.id); 68 function customizationPaletteIsRunning: LongBool; 69 // Customizable toolbars (those with delegates) can show a palette which allows users 70 // to populate the toolbar with individual items or to reset the toolbar to some default 71 // set of items. The items and item sets in the palette are specified by the delegate 72 // (-toolbarAllowedItemIdentifiers: and -toolbarDefaultItemIdentifiers:). When the 73 // user is done configuring, they will dismiss the palette. 74 // ----- Toolbar Attributes ----- 75 procedure setDisplayMode(_displayMode: NSToolbarDisplayMode); 76 function displayMode: NSToolbarDisplayMode; 77 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 78 procedure setSelectedItemIdentifier(_itemIdentifier: CFStringRef); 79 function selectedItemIdentifier: CFStringRef; 80 {.$endif} 81 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2} 82 procedure setSizeMode(_sizeMode: NSToolbarSizeMode); 83 function sizeMode: NSToolbarSizeMode; 84 {.$endif} 85 {.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4} 86 // Use this API to hide the baseline NSToolbar draws between itself and the main window 87 // contents. The default is YES. This method should only be used before the toolbar 88 // is attached to its window (-[NSWindow setToolbar:]). 89 procedure setShowsBaselineSeparator(_flag: LongBool); 90 function showsBaselineSeparator: LongBool; 91 {.$endif} 92 procedure setAllowsUserCustomization(_allowCustomization: LongBool); 93 function allowsUserCustomization: LongBool; 94 // This flag controls whether or not users can configure the toolbar by dragging items 95 // around, and whether or not the customization palette can be used. The default value 96 // is NO, but can be changed at any time. For instance, a developer may not want users 97 // to be able to edit the toolbar while some event is being processed. 98 // ----- Accessing toolbar info ----- 99 function identifier: CFStringRef; 100 // All toolbars with the same name will share the same display attributes, and item 101 // order. Also, if a toolbar autosaves its configuration, the item identifier will 102 // be used as the autosave name. 103 function items: CFArrayRef; 104 // Allows you to access all current items in the toolbar. 105 function visibleItems: CFArrayRef; 106 // Allows you to access the current visible items (non clipped). 107 // ----- Autosaving The Configuration ----- 108 procedure setAutosavesConfiguration(_flag: LongBool); 109 function autosavesConfiguration: LongBool; 110 // If autosavesConfiguration is YES, the toolbar will automatically write changes the 111 // user makes to user defaults. Customizable toolbars will want to set this flag to 112 // YES. Setting this to NO means changes in configuration are not written automatically, 113 // however you can use the configurationDictionary method to do it yourself. Default 114 // is NO. 115 procedure setConfigurationFromDictionary(_configDict: CFDictionaryRef); 116 function configurationDictionary: CFDictionaryRef; 117 // Set and get the current toolbar configuration using a dictionary representation. 118 // ----- Validation of the items ----- 119 procedure validateVisibleItems; 120 end; 121 122{$endif} 123{$endif} 124 125{$ifdef IMPLEMENTATION} 126const 127 StrNSToolbar_NSToolbar = 'NSToolbar'; 128 StrNSToolbar_initWithIdentifier = 'initWithIdentifier:'; 129 StrNSToolbar_insertItemWithItemIdentifier_atIndex = 'insertItemWithItemIdentifier:atIndex:'; 130 StrNSToolbar_removeItemAtIndex = 'removeItemAtIndex:'; 131 StrNSToolbar_setDelegate = 'setDelegate:'; 132 StrNSToolbar_delegate = 'delegate'; 133 StrNSToolbar_setVisible = 'setVisible:'; 134 StrNSToolbar_isVisible = 'isVisible'; 135 StrNSToolbar_runCustomizationPalette = 'runCustomizationPalette:'; 136 StrNSToolbar_customizationPaletteIsRunning = 'customizationPaletteIsRunning'; 137 StrNSToolbar_setDisplayMode = 'setDisplayMode:'; 138 StrNSToolbar_displayMode = 'displayMode'; 139 StrNSToolbar_setSelectedItemIdentifier = 'setSelectedItemIdentifier:'; 140 StrNSToolbar_selectedItemIdentifier = 'selectedItemIdentifier'; 141 StrNSToolbar_setSizeMode = 'setSizeMode:'; 142 StrNSToolbar_sizeMode = 'sizeMode'; 143 StrNSToolbar_setShowsBaselineSeparator = 'setShowsBaselineSeparator:'; 144 StrNSToolbar_showsBaselineSeparator = 'showsBaselineSeparator'; 145 StrNSToolbar_setAllowsUserCustomization = 'setAllowsUserCustomization:'; 146 StrNSToolbar_allowsUserCustomization = 'allowsUserCustomization'; 147 StrNSToolbar_identifier = 'identifier'; 148 StrNSToolbar_items = 'items'; 149 StrNSToolbar_visibleItems = 'visibleItems'; 150 StrNSToolbar_setAutosavesConfiguration = 'setAutosavesConfiguration:'; 151 StrNSToolbar_autosavesConfiguration = 'autosavesConfiguration'; 152 StrNSToolbar_setConfigurationFromDictionary = 'setConfigurationFromDictionary:'; 153 StrNSToolbar_configurationDictionary = 'configurationDictionary'; 154 StrNSToolbar_validateVisibleItems = 'validateVisibleItems'; 155 156{ NSToolbar } 157 158class function NSToolbar.getClass: lobjc.id; 159begin 160 Result := objc_getClass(StrNSToolbar_NSToolbar); 161end; 162 163constructor NSToolbar.initWithIdentifier(_identifier: CFStringRef); 164type 165 TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_identifier: CFStringRef): lobjc.id; cdecl; 166var 167 vmethod: TmsgSendWrapper; 168begin 169 ClassID := getClass(); 170 allocbuf := objc_msgSend(ClassID, sel_registerName(PChar(Str_alloc)), []); 171 vmethod := TmsgSendWrapper(@objc_msgSend); 172 Handle := vmethod(allocbuf, sel_registerName(PChar(StrNSToolbar_initWithIdentifier)), _identifier); 173end; 174 175procedure NSToolbar.insertItemWithItemIdentifier_atIndex(_itemIdentifier: CFStringRef; __index: Integer); 176type 177 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_itemIdentifier: CFStringRef; __index: Integer); cdecl; 178var 179 vmethod: TmsgSendWrapper; 180begin 181 vmethod := TmsgSendWrapper(@objc_msgSend); 182 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_insertItemWithItemIdentifier_atIndex)), _itemIdentifier, __index); 183end; 184 185procedure NSToolbar.removeItemAtIndex(__index: Integer); 186type 187 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;__index: Integer); cdecl; 188var 189 vmethod: TmsgSendWrapper; 190begin 191 vmethod := TmsgSendWrapper(@objc_msgSend); 192 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_removeItemAtIndex)), __index); 193end; 194 195procedure NSToolbar.setDelegate(_delegate: lobjc.id); 196type 197 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_delegate: lobjc.id); cdecl; 198var 199 vmethod: TmsgSendWrapper; 200begin 201 vmethod := TmsgSendWrapper(@objc_msgSend); 202 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setDelegate)), _delegate); 203end; 204 205function NSToolbar.delegate: lobjc.id; 206begin 207 Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_delegate)), [])); 208end; 209 210procedure NSToolbar.setVisible(_shown: LongBool); 211type 212 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_shown: LongBool); cdecl; 213var 214 vmethod: TmsgSendWrapper; 215begin 216 vmethod := TmsgSendWrapper(@objc_msgSend); 217 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setVisible)), _shown); 218end; 219 220function NSToolbar.isVisible: LongBool; 221begin 222 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_isVisible)), [])); 223end; 224 225procedure NSToolbar.runCustomizationPalette(_sender: lobjc.id); 226type 227 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_sender: lobjc.id); cdecl; 228var 229 vmethod: TmsgSendWrapper; 230begin 231 vmethod := TmsgSendWrapper(@objc_msgSend); 232 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_runCustomizationPalette)), _sender); 233end; 234 235function NSToolbar.customizationPaletteIsRunning: LongBool; 236begin 237 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_customizationPaletteIsRunning)), [])); 238end; 239 240procedure NSToolbar.setDisplayMode(_displayMode: NSToolbarDisplayMode); 241type 242 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_displayMode: NSToolbarDisplayMode); cdecl; 243var 244 vmethod: TmsgSendWrapper; 245begin 246 vmethod := TmsgSendWrapper(@objc_msgSend); 247 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setDisplayMode)), _displayMode); 248end; 249 250function NSToolbar.displayMode: NSToolbarDisplayMode; 251begin 252 Result := NSToolbarDisplayMode(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_displayMode)), [])); 253end; 254 255{.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3} 256procedure NSToolbar.setSelectedItemIdentifier(_itemIdentifier: CFStringRef); 257type 258 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_itemIdentifier: CFStringRef); cdecl; 259var 260 vmethod: TmsgSendWrapper; 261begin 262 vmethod := TmsgSendWrapper(@objc_msgSend); 263 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setSelectedItemIdentifier)), _itemIdentifier); 264end; 265 266function NSToolbar.selectedItemIdentifier: CFStringRef; 267begin 268 Result := CFStringRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_selectedItemIdentifier)), [])); 269end; 270 271{.$endif} 272{.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2} 273procedure NSToolbar.setSizeMode(_sizeMode: NSToolbarSizeMode); 274type 275 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_sizeMode: NSToolbarSizeMode); cdecl; 276var 277 vmethod: TmsgSendWrapper; 278begin 279 vmethod := TmsgSendWrapper(@objc_msgSend); 280 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setSizeMode)), _sizeMode); 281end; 282 283function NSToolbar.sizeMode: NSToolbarSizeMode; 284begin 285 Result := NSToolbarSizeMode(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_sizeMode)), [])); 286end; 287 288{.$endif} 289{.$ifdef MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4} 290procedure NSToolbar.setShowsBaselineSeparator(_flag: LongBool); 291type 292 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_flag: LongBool); cdecl; 293var 294 vmethod: TmsgSendWrapper; 295begin 296 vmethod := TmsgSendWrapper(@objc_msgSend); 297 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setShowsBaselineSeparator)), _flag); 298end; 299 300function NSToolbar.showsBaselineSeparator: LongBool; 301begin 302 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_showsBaselineSeparator)), [])); 303end; 304 305{.$endif} 306procedure NSToolbar.setAllowsUserCustomization(_allowCustomization: LongBool); 307type 308 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_allowCustomization: LongBool); cdecl; 309var 310 vmethod: TmsgSendWrapper; 311begin 312 vmethod := TmsgSendWrapper(@objc_msgSend); 313 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setAllowsUserCustomization)), _allowCustomization); 314end; 315 316function NSToolbar.allowsUserCustomization: LongBool; 317begin 318 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_allowsUserCustomization)), [])); 319end; 320 321function NSToolbar.identifier: CFStringRef; 322begin 323 Result := CFStringRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_identifier)), [])); 324end; 325 326function NSToolbar.items: CFArrayRef; 327begin 328 Result := CFArrayRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_items)), [])); 329end; 330 331function NSToolbar.visibleItems: CFArrayRef; 332begin 333 Result := CFArrayRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_visibleItems)), [])); 334end; 335 336procedure NSToolbar.setAutosavesConfiguration(_flag: LongBool); 337type 338 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_flag: LongBool); cdecl; 339var 340 vmethod: TmsgSendWrapper; 341begin 342 vmethod := TmsgSendWrapper(@objc_msgSend); 343 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setAutosavesConfiguration)), _flag); 344end; 345 346function NSToolbar.autosavesConfiguration: LongBool; 347begin 348 Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_autosavesConfiguration)), [])); 349end; 350 351procedure NSToolbar.setConfigurationFromDictionary(_configDict: CFDictionaryRef); 352type 353 TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_configDict: CFDictionaryRef); cdecl; 354var 355 vmethod: TmsgSendWrapper; 356begin 357 vmethod := TmsgSendWrapper(@objc_msgSend); 358 vmethod(Handle, sel_registerName(PChar(StrNSToolbar_setConfigurationFromDictionary)), _configDict); 359end; 360 361function NSToolbar.configurationDictionary: CFDictionaryRef; 362begin 363 Result := CFDictionaryRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_configurationDictionary)), [])); 364end; 365 366procedure NSToolbar.validateVisibleItems; 367begin 368 objc_msgSend(Handle, sel_registerName(PChar(StrNSToolbar_validateVisibleItems)), []); 369end; 370 371{$endif} 372