1use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6#[cfg(feature = "objc2-core-foundation")]
7use objc2_core_foundation::*;
8use objc2_foundation::*;
9
10use crate::*;
11
12extern "C" {
13 pub static NSComboBoxWillPopUpNotification: &'static NSNotificationName;
15}
16
17extern "C" {
18 pub static NSComboBoxWillDismissNotification: &'static NSNotificationName;
20}
21
22extern "C" {
23 pub static NSComboBoxSelectionDidChangeNotification: &'static NSNotificationName;
25}
26
27extern "C" {
28 pub static NSComboBoxSelectionIsChangingNotification: &'static NSNotificationName;
30}
31
32extern_protocol!(
33 pub unsafe trait NSComboBoxDataSource: NSObjectProtocol + MainThreadOnly {
35 #[cfg(all(
36 feature = "NSControl",
37 feature = "NSResponder",
38 feature = "NSTextField",
39 feature = "NSView"
40 ))]
41 #[optional]
42 #[unsafe(method(numberOfItemsInComboBox:))]
43 #[unsafe(method_family = none)]
44 unsafe fn numberOfItemsInComboBox(&self, combo_box: &NSComboBox) -> NSInteger;
45
46 #[cfg(all(
47 feature = "NSControl",
48 feature = "NSResponder",
49 feature = "NSTextField",
50 feature = "NSView"
51 ))]
52 #[optional]
53 #[unsafe(method(comboBox:objectValueForItemAtIndex:))]
54 #[unsafe(method_family = none)]
55 unsafe fn comboBox_objectValueForItemAtIndex(
56 &self,
57 combo_box: &NSComboBox,
58 index: NSInteger,
59 ) -> Option<Retained<AnyObject>>;
60
61 #[cfg(all(
62 feature = "NSControl",
63 feature = "NSResponder",
64 feature = "NSTextField",
65 feature = "NSView"
66 ))]
67 #[optional]
68 #[unsafe(method(comboBox:indexOfItemWithStringValue:))]
69 #[unsafe(method_family = none)]
70 unsafe fn comboBox_indexOfItemWithStringValue(
71 &self,
72 combo_box: &NSComboBox,
73 string: &NSString,
74 ) -> NSUInteger;
75
76 #[cfg(all(
77 feature = "NSControl",
78 feature = "NSResponder",
79 feature = "NSTextField",
80 feature = "NSView"
81 ))]
82 #[optional]
83 #[unsafe(method(comboBox:completedString:))]
84 #[unsafe(method_family = none)]
85 unsafe fn comboBox_completedString(
86 &self,
87 combo_box: &NSComboBox,
88 string: &NSString,
89 ) -> Option<Retained<NSString>>;
90 }
91);
92
93extern_protocol!(
94 #[cfg(all(feature = "NSControl", feature = "NSTextField"))]
96 pub unsafe trait NSComboBoxDelegate: NSTextFieldDelegate + MainThreadOnly {
97 #[optional]
98 #[unsafe(method(comboBoxWillPopUp:))]
99 #[unsafe(method_family = none)]
100 unsafe fn comboBoxWillPopUp(&self, notification: &NSNotification);
101
102 #[optional]
103 #[unsafe(method(comboBoxWillDismiss:))]
104 #[unsafe(method_family = none)]
105 unsafe fn comboBoxWillDismiss(&self, notification: &NSNotification);
106
107 #[optional]
108 #[unsafe(method(comboBoxSelectionDidChange:))]
109 #[unsafe(method_family = none)]
110 unsafe fn comboBoxSelectionDidChange(&self, notification: &NSNotification);
111
112 #[optional]
113 #[unsafe(method(comboBoxSelectionIsChanging:))]
114 #[unsafe(method_family = none)]
115 unsafe fn comboBoxSelectionIsChanging(&self, notification: &NSNotification);
116 }
117);
118
119extern_class!(
120 #[unsafe(super(NSTextField, NSControl, NSView, NSResponder, NSObject))]
122 #[derive(Debug, PartialEq, Eq, Hash)]
123 #[cfg(all(
124 feature = "NSControl",
125 feature = "NSResponder",
126 feature = "NSTextField",
127 feature = "NSView"
128 ))]
129 pub struct NSComboBox;
130);
131
132#[cfg(all(
133 feature = "NSAccessibilityProtocols",
134 feature = "NSControl",
135 feature = "NSResponder",
136 feature = "NSTextField",
137 feature = "NSView"
138))]
139unsafe impl NSAccessibility for NSComboBox {}
140
141#[cfg(all(
142 feature = "NSAccessibilityProtocols",
143 feature = "NSControl",
144 feature = "NSResponder",
145 feature = "NSTextField",
146 feature = "NSView"
147))]
148unsafe impl NSAccessibilityElementProtocol for NSComboBox {}
149
150#[cfg(all(
151 feature = "NSAccessibilityProtocols",
152 feature = "NSControl",
153 feature = "NSResponder",
154 feature = "NSTextField",
155 feature = "NSView"
156))]
157unsafe impl NSAccessibilityNavigableStaticText for NSComboBox {}
158
159#[cfg(all(
160 feature = "NSAccessibilityProtocols",
161 feature = "NSControl",
162 feature = "NSResponder",
163 feature = "NSTextField",
164 feature = "NSView"
165))]
166unsafe impl NSAccessibilityStaticText for NSComboBox {}
167
168#[cfg(all(
169 feature = "NSAnimation",
170 feature = "NSControl",
171 feature = "NSResponder",
172 feature = "NSTextField",
173 feature = "NSView"
174))]
175unsafe impl NSAnimatablePropertyContainer for NSComboBox {}
176
177#[cfg(all(
178 feature = "NSAppearance",
179 feature = "NSControl",
180 feature = "NSResponder",
181 feature = "NSTextField",
182 feature = "NSView"
183))]
184unsafe impl NSAppearanceCustomization for NSComboBox {}
185
186#[cfg(all(
187 feature = "NSControl",
188 feature = "NSResponder",
189 feature = "NSTextField",
190 feature = "NSView"
191))]
192unsafe impl NSCoding for NSComboBox {}
193
194#[cfg(all(
195 feature = "NSControl",
196 feature = "NSDragging",
197 feature = "NSResponder",
198 feature = "NSTextField",
199 feature = "NSView"
200))]
201unsafe impl NSDraggingDestination for NSComboBox {}
202
203#[cfg(all(
204 feature = "NSControl",
205 feature = "NSResponder",
206 feature = "NSTextField",
207 feature = "NSView"
208))]
209unsafe impl NSObjectProtocol for NSComboBox {}
210
211#[cfg(all(
212 feature = "NSControl",
213 feature = "NSResponder",
214 feature = "NSTextContent",
215 feature = "NSTextField",
216 feature = "NSView"
217))]
218unsafe impl NSTextContent for NSComboBox {}
219
220#[cfg(all(
221 feature = "NSControl",
222 feature = "NSResponder",
223 feature = "NSTextField",
224 feature = "NSUserInterfaceItemIdentification",
225 feature = "NSView"
226))]
227unsafe impl NSUserInterfaceItemIdentification for NSComboBox {}
228
229#[cfg(all(
230 feature = "NSControl",
231 feature = "NSResponder",
232 feature = "NSTextField",
233 feature = "NSUserInterfaceValidation",
234 feature = "NSView"
235))]
236unsafe impl NSUserInterfaceValidations for NSComboBox {}
237
238#[cfg(all(
239 feature = "NSControl",
240 feature = "NSResponder",
241 feature = "NSTextField",
242 feature = "NSView"
243))]
244impl NSComboBox {
245 extern_methods!(
246 #[unsafe(method(hasVerticalScroller))]
247 #[unsafe(method_family = none)]
248 pub unsafe fn hasVerticalScroller(&self) -> bool;
249
250 #[unsafe(method(setHasVerticalScroller:))]
252 #[unsafe(method_family = none)]
253 pub unsafe fn setHasVerticalScroller(&self, has_vertical_scroller: bool);
254
255 #[unsafe(method(intercellSpacing))]
256 #[unsafe(method_family = none)]
257 pub unsafe fn intercellSpacing(&self) -> NSSize;
258
259 #[unsafe(method(setIntercellSpacing:))]
261 #[unsafe(method_family = none)]
262 pub unsafe fn setIntercellSpacing(&self, intercell_spacing: NSSize);
263
264 #[cfg(feature = "objc2-core-foundation")]
265 #[unsafe(method(itemHeight))]
266 #[unsafe(method_family = none)]
267 pub unsafe fn itemHeight(&self) -> CGFloat;
268
269 #[cfg(feature = "objc2-core-foundation")]
270 #[unsafe(method(setItemHeight:))]
272 #[unsafe(method_family = none)]
273 pub unsafe fn setItemHeight(&self, item_height: CGFloat);
274
275 #[unsafe(method(numberOfVisibleItems))]
276 #[unsafe(method_family = none)]
277 pub unsafe fn numberOfVisibleItems(&self) -> NSInteger;
278
279 #[unsafe(method(setNumberOfVisibleItems:))]
281 #[unsafe(method_family = none)]
282 pub unsafe fn setNumberOfVisibleItems(&self, number_of_visible_items: NSInteger);
283
284 #[unsafe(method(isButtonBordered))]
285 #[unsafe(method_family = none)]
286 pub unsafe fn isButtonBordered(&self) -> bool;
287
288 #[unsafe(method(setButtonBordered:))]
290 #[unsafe(method_family = none)]
291 pub unsafe fn setButtonBordered(&self, button_bordered: bool);
292
293 #[unsafe(method(reloadData))]
294 #[unsafe(method_family = none)]
295 pub unsafe fn reloadData(&self);
296
297 #[unsafe(method(noteNumberOfItemsChanged))]
298 #[unsafe(method_family = none)]
299 pub unsafe fn noteNumberOfItemsChanged(&self);
300
301 #[unsafe(method(usesDataSource))]
302 #[unsafe(method_family = none)]
303 pub unsafe fn usesDataSource(&self) -> bool;
304
305 #[unsafe(method(setUsesDataSource:))]
307 #[unsafe(method_family = none)]
308 pub unsafe fn setUsesDataSource(&self, uses_data_source: bool);
309
310 #[unsafe(method(scrollItemAtIndexToTop:))]
311 #[unsafe(method_family = none)]
312 pub unsafe fn scrollItemAtIndexToTop(&self, index: NSInteger);
313
314 #[unsafe(method(scrollItemAtIndexToVisible:))]
315 #[unsafe(method_family = none)]
316 pub unsafe fn scrollItemAtIndexToVisible(&self, index: NSInteger);
317
318 #[unsafe(method(selectItemAtIndex:))]
319 #[unsafe(method_family = none)]
320 pub unsafe fn selectItemAtIndex(&self, index: NSInteger);
321
322 #[unsafe(method(deselectItemAtIndex:))]
323 #[unsafe(method_family = none)]
324 pub unsafe fn deselectItemAtIndex(&self, index: NSInteger);
325
326 #[unsafe(method(indexOfSelectedItem))]
327 #[unsafe(method_family = none)]
328 pub unsafe fn indexOfSelectedItem(&self) -> NSInteger;
329
330 #[unsafe(method(numberOfItems))]
331 #[unsafe(method_family = none)]
332 pub unsafe fn numberOfItems(&self) -> NSInteger;
333
334 #[unsafe(method(completes))]
335 #[unsafe(method_family = none)]
336 pub unsafe fn completes(&self) -> bool;
337
338 #[unsafe(method(setCompletes:))]
340 #[unsafe(method_family = none)]
341 pub unsafe fn setCompletes(&self, completes: bool);
342
343 #[unsafe(method(delegate))]
344 #[unsafe(method_family = none)]
345 pub unsafe fn delegate(&self) -> Option<Retained<ProtocolObject<dyn NSComboBoxDelegate>>>;
346
347 #[unsafe(method(setDelegate:))]
350 #[unsafe(method_family = none)]
351 pub unsafe fn setDelegate(&self, delegate: Option<&ProtocolObject<dyn NSComboBoxDelegate>>);
352
353 #[unsafe(method(dataSource))]
354 #[unsafe(method_family = none)]
355 pub unsafe fn dataSource(
356 &self,
357 ) -> Option<Retained<ProtocolObject<dyn NSComboBoxDataSource>>>;
358
359 #[unsafe(method(setDataSource:))]
361 #[unsafe(method_family = none)]
362 pub unsafe fn setDataSource(
363 &self,
364 data_source: Option<&ProtocolObject<dyn NSComboBoxDataSource>>,
365 );
366
367 #[unsafe(method(addItemWithObjectValue:))]
368 #[unsafe(method_family = none)]
369 pub unsafe fn addItemWithObjectValue(&self, object: &AnyObject);
370
371 #[unsafe(method(addItemsWithObjectValues:))]
372 #[unsafe(method_family = none)]
373 pub unsafe fn addItemsWithObjectValues(&self, objects: &NSArray);
374
375 #[unsafe(method(insertItemWithObjectValue:atIndex:))]
376 #[unsafe(method_family = none)]
377 pub unsafe fn insertItemWithObjectValue_atIndex(
378 &self,
379 object: &AnyObject,
380 index: NSInteger,
381 );
382
383 #[unsafe(method(removeItemWithObjectValue:))]
384 #[unsafe(method_family = none)]
385 pub unsafe fn removeItemWithObjectValue(&self, object: &AnyObject);
386
387 #[unsafe(method(removeItemAtIndex:))]
388 #[unsafe(method_family = none)]
389 pub unsafe fn removeItemAtIndex(&self, index: NSInteger);
390
391 #[unsafe(method(removeAllItems))]
392 #[unsafe(method_family = none)]
393 pub unsafe fn removeAllItems(&self);
394
395 #[unsafe(method(selectItemWithObjectValue:))]
396 #[unsafe(method_family = none)]
397 pub unsafe fn selectItemWithObjectValue(&self, object: Option<&AnyObject>);
398
399 #[unsafe(method(itemObjectValueAtIndex:))]
400 #[unsafe(method_family = none)]
401 pub unsafe fn itemObjectValueAtIndex(&self, index: NSInteger) -> Retained<AnyObject>;
402
403 #[unsafe(method(objectValueOfSelectedItem))]
404 #[unsafe(method_family = none)]
405 pub unsafe fn objectValueOfSelectedItem(&self) -> Option<Retained<AnyObject>>;
406
407 #[unsafe(method(indexOfItemWithObjectValue:))]
408 #[unsafe(method_family = none)]
409 pub unsafe fn indexOfItemWithObjectValue(&self, object: &AnyObject) -> NSInteger;
410
411 #[unsafe(method(objectValues))]
412 #[unsafe(method_family = none)]
413 pub unsafe fn objectValues(&self) -> Retained<NSArray>;
414 );
415}
416
417#[cfg(all(
419 feature = "NSControl",
420 feature = "NSResponder",
421 feature = "NSTextField",
422 feature = "NSView"
423))]
424impl NSComboBox {
425 extern_methods!(
426 #[unsafe(method(initWithFrame:))]
427 #[unsafe(method_family = init)]
428 pub unsafe fn initWithFrame(this: Allocated<Self>, frame_rect: NSRect) -> Retained<Self>;
429
430 #[unsafe(method(initWithCoder:))]
431 #[unsafe(method_family = init)]
432 pub unsafe fn initWithCoder(
433 this: Allocated<Self>,
434 coder: &NSCoder,
435 ) -> Option<Retained<Self>>;
436 );
437}
438
439#[cfg(all(
441 feature = "NSControl",
442 feature = "NSResponder",
443 feature = "NSTextField",
444 feature = "NSView"
445))]
446impl NSComboBox {
447 extern_methods!(
448 #[unsafe(method(init))]
449 #[unsafe(method_family = init)]
450 pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
451 );
452}
453
454#[cfg(all(
456 feature = "NSControl",
457 feature = "NSResponder",
458 feature = "NSTextField",
459 feature = "NSView"
460))]
461impl NSComboBox {
462 extern_methods!(
463 #[unsafe(method(new))]
464 #[unsafe(method_family = new)]
465 pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
466 );
467}