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