objc2_app_kit/generated/
NSSegmentedControl.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use 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
12/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nssegmentswitchtracking?language=objc)
13// NS_ENUM
14#[repr(transparent)]
15#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
16pub struct NSSegmentSwitchTracking(pub NSUInteger);
17impl NSSegmentSwitchTracking {
18    #[doc(alias = "NSSegmentSwitchTrackingSelectOne")]
19    pub const SelectOne: Self = Self(0);
20    #[doc(alias = "NSSegmentSwitchTrackingSelectAny")]
21    pub const SelectAny: Self = Self(1);
22    #[doc(alias = "NSSegmentSwitchTrackingMomentary")]
23    pub const Momentary: Self = Self(2);
24    #[doc(alias = "NSSegmentSwitchTrackingMomentaryAccelerator")]
25    pub const MomentaryAccelerator: Self = Self(3);
26}
27
28unsafe impl Encode for NSSegmentSwitchTracking {
29    const ENCODING: Encoding = NSUInteger::ENCODING;
30}
31
32unsafe impl RefEncode for NSSegmentSwitchTracking {
33    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
34}
35
36/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nssegmentstyle?language=objc)
37// NS_ENUM
38#[repr(transparent)]
39#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
40pub struct NSSegmentStyle(pub NSInteger);
41impl NSSegmentStyle {
42    #[doc(alias = "NSSegmentStyleAutomatic")]
43    pub const Automatic: Self = Self(0);
44    #[doc(alias = "NSSegmentStyleRounded")]
45    pub const Rounded: Self = Self(1);
46    #[doc(alias = "NSSegmentStyleRoundRect")]
47    pub const RoundRect: Self = Self(3);
48    #[doc(alias = "NSSegmentStyleTexturedSquare")]
49    pub const TexturedSquare: Self = Self(4);
50    #[doc(alias = "NSSegmentStyleSmallSquare")]
51    pub const SmallSquare: Self = Self(6);
52    #[doc(alias = "NSSegmentStyleSeparated")]
53    pub const Separated: Self = Self(8);
54    #[doc(alias = "NSSegmentStyleTexturedRounded")]
55    pub const TexturedRounded: Self = Self(2);
56    #[doc(alias = "NSSegmentStyleCapsule")]
57    pub const Capsule: Self = Self(5);
58}
59
60unsafe impl Encode for NSSegmentStyle {
61    const ENCODING: Encoding = NSInteger::ENCODING;
62}
63
64unsafe impl RefEncode for NSSegmentStyle {
65    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
66}
67
68/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nssegmentdistribution?language=objc)
69// NS_ENUM
70#[repr(transparent)]
71#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
72pub struct NSSegmentDistribution(pub NSInteger);
73impl NSSegmentDistribution {
74    /// Dynamically sized segments will be sized to fit their contents, any remaining space will be left blank. This style is equivalent to the way segments were distributed on older systems.
75    #[doc(alias = "NSSegmentDistributionFit")]
76    pub const Fit: Self = Self(0);
77    /// Dynamically sized segments will be sized to fill the available space, with extra space being distributed equally among them. Default value.
78    #[doc(alias = "NSSegmentDistributionFill")]
79    pub const Fill: Self = Self(1);
80    /// Dynamically sized segments will be sized to fill the available space, and kept the same size as each other.
81    #[doc(alias = "NSSegmentDistributionFillEqually")]
82    pub const FillEqually: Self = Self(2);
83    /// Dynamically sized segments will be sized to fill the available space, and kept proportional to their fitting size.
84    #[doc(alias = "NSSegmentDistributionFillProportionally")]
85    pub const FillProportionally: Self = Self(3);
86}
87
88unsafe impl Encode for NSSegmentDistribution {
89    const ENCODING: Encoding = NSInteger::ENCODING;
90}
91
92unsafe impl RefEncode for NSSegmentDistribution {
93    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
94}
95
96extern_class!(
97    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nssegmentedcontrol?language=objc)
98    #[unsafe(super(NSControl, NSView, NSResponder, NSObject))]
99    #[derive(Debug, PartialEq, Eq, Hash)]
100    #[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
101    pub struct NSSegmentedControl;
102);
103
104#[cfg(all(
105    feature = "NSAccessibilityProtocols",
106    feature = "NSControl",
107    feature = "NSResponder",
108    feature = "NSView"
109))]
110extern_conformance!(
111    unsafe impl NSAccessibility for NSSegmentedControl {}
112);
113
114#[cfg(all(
115    feature = "NSAccessibilityProtocols",
116    feature = "NSControl",
117    feature = "NSResponder",
118    feature = "NSView"
119))]
120extern_conformance!(
121    unsafe impl NSAccessibilityElementProtocol for NSSegmentedControl {}
122);
123
124#[cfg(all(
125    feature = "NSAnimation",
126    feature = "NSControl",
127    feature = "NSResponder",
128    feature = "NSView"
129))]
130extern_conformance!(
131    unsafe impl NSAnimatablePropertyContainer for NSSegmentedControl {}
132);
133
134#[cfg(all(
135    feature = "NSAppearance",
136    feature = "NSControl",
137    feature = "NSResponder",
138    feature = "NSView"
139))]
140extern_conformance!(
141    unsafe impl NSAppearanceCustomization for NSSegmentedControl {}
142);
143
144#[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
145extern_conformance!(
146    unsafe impl NSCoding for NSSegmentedControl {}
147);
148
149#[cfg(all(
150    feature = "NSControl",
151    feature = "NSDragging",
152    feature = "NSResponder",
153    feature = "NSView"
154))]
155extern_conformance!(
156    unsafe impl NSDraggingDestination for NSSegmentedControl {}
157);
158
159#[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
160extern_conformance!(
161    unsafe impl NSObjectProtocol for NSSegmentedControl {}
162);
163
164#[cfg(all(
165    feature = "NSControl",
166    feature = "NSResponder",
167    feature = "NSUserInterfaceCompression",
168    feature = "NSView"
169))]
170extern_conformance!(
171    unsafe impl NSUserInterfaceCompression for NSSegmentedControl {}
172);
173
174#[cfg(all(
175    feature = "NSControl",
176    feature = "NSResponder",
177    feature = "NSUserInterfaceItemIdentification",
178    feature = "NSView"
179))]
180extern_conformance!(
181    unsafe impl NSUserInterfaceItemIdentification for NSSegmentedControl {}
182);
183
184#[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
185impl NSSegmentedControl {
186    extern_methods!(
187        #[unsafe(method(segmentCount))]
188        #[unsafe(method_family = none)]
189        pub fn segmentCount(&self) -> NSInteger;
190
191        /// Setter for [`segmentCount`][Self::segmentCount].
192        #[unsafe(method(setSegmentCount:))]
193        #[unsafe(method_family = none)]
194        pub fn setSegmentCount(&self, segment_count: NSInteger);
195
196        #[unsafe(method(selectedSegment))]
197        #[unsafe(method_family = none)]
198        pub fn selectedSegment(&self) -> NSInteger;
199
200        /// Setter for [`selectedSegment`][Self::selectedSegment].
201        #[unsafe(method(setSelectedSegment:))]
202        #[unsafe(method_family = none)]
203        pub fn setSelectedSegment(&self, selected_segment: NSInteger);
204
205        #[unsafe(method(selectSegmentWithTag:))]
206        #[unsafe(method_family = none)]
207        pub fn selectSegmentWithTag(&self, tag: NSInteger) -> bool;
208
209        #[cfg(feature = "objc2-core-foundation")]
210        #[unsafe(method(setWidth:forSegment:))]
211        #[unsafe(method_family = none)]
212        pub fn setWidth_forSegment(&self, width: CGFloat, segment: NSInteger);
213
214        #[cfg(feature = "objc2-core-foundation")]
215        #[unsafe(method(widthForSegment:))]
216        #[unsafe(method_family = none)]
217        pub fn widthForSegment(&self, segment: NSInteger) -> CGFloat;
218
219        #[cfg(feature = "NSImage")]
220        #[unsafe(method(setImage:forSegment:))]
221        #[unsafe(method_family = none)]
222        pub fn setImage_forSegment(&self, image: Option<&NSImage>, segment: NSInteger);
223
224        #[cfg(feature = "NSImage")]
225        #[unsafe(method(imageForSegment:))]
226        #[unsafe(method_family = none)]
227        pub fn imageForSegment(&self, segment: NSInteger) -> Option<Retained<NSImage>>;
228
229        #[cfg(feature = "NSCell")]
230        #[unsafe(method(setImageScaling:forSegment:))]
231        #[unsafe(method_family = none)]
232        pub fn setImageScaling_forSegment(&self, scaling: NSImageScaling, segment: NSInteger);
233
234        #[cfg(feature = "NSCell")]
235        #[unsafe(method(imageScalingForSegment:))]
236        #[unsafe(method_family = none)]
237        pub fn imageScalingForSegment(&self, segment: NSInteger) -> NSImageScaling;
238
239        #[unsafe(method(setLabel:forSegment:))]
240        #[unsafe(method_family = none)]
241        pub fn setLabel_forSegment(&self, label: &NSString, segment: NSInteger);
242
243        #[unsafe(method(labelForSegment:))]
244        #[unsafe(method_family = none)]
245        pub fn labelForSegment(&self, segment: NSInteger) -> Option<Retained<NSString>>;
246
247        #[cfg(feature = "NSMenu")]
248        #[unsafe(method(setMenu:forSegment:))]
249        #[unsafe(method_family = none)]
250        pub fn setMenu_forSegment(&self, menu: Option<&NSMenu>, segment: NSInteger);
251
252        #[cfg(feature = "NSMenu")]
253        #[unsafe(method(menuForSegment:))]
254        #[unsafe(method_family = none)]
255        pub fn menuForSegment(&self, segment: NSInteger) -> Option<Retained<NSMenu>>;
256
257        #[unsafe(method(setSelected:forSegment:))]
258        #[unsafe(method_family = none)]
259        pub fn setSelected_forSegment(&self, selected: bool, segment: NSInteger);
260
261        #[unsafe(method(isSelectedForSegment:))]
262        #[unsafe(method_family = none)]
263        pub fn isSelectedForSegment(&self, segment: NSInteger) -> bool;
264
265        #[unsafe(method(setEnabled:forSegment:))]
266        #[unsafe(method_family = none)]
267        pub fn setEnabled_forSegment(&self, enabled: bool, segment: NSInteger);
268
269        #[unsafe(method(isEnabledForSegment:))]
270        #[unsafe(method_family = none)]
271        pub fn isEnabledForSegment(&self, segment: NSInteger) -> bool;
272
273        #[unsafe(method(setToolTip:forSegment:))]
274        #[unsafe(method_family = none)]
275        pub fn setToolTip_forSegment(&self, tool_tip: Option<&NSString>, segment: NSInteger);
276
277        #[unsafe(method(toolTipForSegment:))]
278        #[unsafe(method_family = none)]
279        pub fn toolTipForSegment(&self, segment: NSInteger) -> Option<Retained<NSString>>;
280
281        #[unsafe(method(setTag:forSegment:))]
282        #[unsafe(method_family = none)]
283        pub fn setTag_forSegment(&self, tag: NSInteger, segment: NSInteger);
284
285        #[unsafe(method(tagForSegment:))]
286        #[unsafe(method_family = none)]
287        pub fn tagForSegment(&self, segment: NSInteger) -> NSInteger;
288
289        #[unsafe(method(setShowsMenuIndicator:forSegment:))]
290        #[unsafe(method_family = none)]
291        pub fn setShowsMenuIndicator_forSegment(
292            &self,
293            shows_menu_indicator: bool,
294            segment: NSInteger,
295        );
296
297        #[unsafe(method(showsMenuIndicatorForSegment:))]
298        #[unsafe(method_family = none)]
299        pub fn showsMenuIndicatorForSegment(&self, segment: NSInteger) -> bool;
300
301        #[unsafe(method(segmentStyle))]
302        #[unsafe(method_family = none)]
303        pub fn segmentStyle(&self) -> NSSegmentStyle;
304
305        /// Setter for [`segmentStyle`][Self::segmentStyle].
306        #[unsafe(method(setSegmentStyle:))]
307        #[unsafe(method_family = none)]
308        pub fn setSegmentStyle(&self, segment_style: NSSegmentStyle);
309
310        #[unsafe(method(isSpringLoaded))]
311        #[unsafe(method_family = none)]
312        pub fn isSpringLoaded(&self) -> bool;
313
314        /// Setter for [`isSpringLoaded`][Self::isSpringLoaded].
315        #[unsafe(method(setSpringLoaded:))]
316        #[unsafe(method_family = none)]
317        pub fn setSpringLoaded(&self, spring_loaded: bool);
318
319        #[unsafe(method(trackingMode))]
320        #[unsafe(method_family = none)]
321        pub fn trackingMode(&self) -> NSSegmentSwitchTracking;
322
323        /// Setter for [`trackingMode`][Self::trackingMode].
324        #[unsafe(method(setTrackingMode:))]
325        #[unsafe(method_family = none)]
326        pub fn setTrackingMode(&self, tracking_mode: NSSegmentSwitchTracking);
327
328        #[unsafe(method(doubleValueForSelectedSegment))]
329        #[unsafe(method_family = none)]
330        pub fn doubleValueForSelectedSegment(&self) -> c_double;
331
332        #[cfg(feature = "NSColor")]
333        #[unsafe(method(selectedSegmentBezelColor))]
334        #[unsafe(method_family = none)]
335        pub fn selectedSegmentBezelColor(&self) -> Option<Retained<NSColor>>;
336
337        #[cfg(feature = "NSColor")]
338        /// Setter for [`selectedSegmentBezelColor`][Self::selectedSegmentBezelColor].
339        ///
340        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
341        #[unsafe(method(setSelectedSegmentBezelColor:))]
342        #[unsafe(method_family = none)]
343        pub fn setSelectedSegmentBezelColor(&self, selected_segment_bezel_color: Option<&NSColor>);
344
345        #[unsafe(method(indexOfSelectedItem))]
346        #[unsafe(method_family = none)]
347        pub fn indexOfSelectedItem(&self) -> NSInteger;
348
349        #[cfg(feature = "NSText")]
350        #[unsafe(method(setAlignment:forSegment:))]
351        #[unsafe(method_family = none)]
352        pub fn setAlignment_forSegment(&self, alignment: NSTextAlignment, segment: NSInteger);
353
354        #[cfg(feature = "NSText")]
355        #[unsafe(method(alignmentForSegment:))]
356        #[unsafe(method_family = none)]
357        pub fn alignmentForSegment(&self, segment: NSInteger) -> NSTextAlignment;
358
359        #[unsafe(method(segmentDistribution))]
360        #[unsafe(method_family = none)]
361        pub fn segmentDistribution(&self) -> NSSegmentDistribution;
362
363        /// Setter for [`segmentDistribution`][Self::segmentDistribution].
364        #[unsafe(method(setSegmentDistribution:))]
365        #[unsafe(method_family = none)]
366        pub fn setSegmentDistribution(&self, segment_distribution: NSSegmentDistribution);
367
368        #[cfg(feature = "NSUserInterfaceCompression")]
369        #[unsafe(method(compressWithPrioritizedCompressionOptions:))]
370        #[unsafe(method_family = none)]
371        pub fn compressWithPrioritizedCompressionOptions(
372            &self,
373            prioritized_options: &NSArray<NSUserInterfaceCompressionOptions>,
374        );
375
376        #[cfg(feature = "NSUserInterfaceCompression")]
377        #[unsafe(method(minimumSizeWithPrioritizedCompressionOptions:))]
378        #[unsafe(method_family = none)]
379        pub fn minimumSizeWithPrioritizedCompressionOptions(
380            &self,
381            prioritized_options: &NSArray<NSUserInterfaceCompressionOptions>,
382        ) -> NSSize;
383
384        #[cfg(feature = "NSUserInterfaceCompression")]
385        #[unsafe(method(activeCompressionOptions))]
386        #[unsafe(method_family = none)]
387        pub fn activeCompressionOptions(&self) -> Retained<NSUserInterfaceCompressionOptions>;
388
389        #[unsafe(method(borderShape))]
390        #[unsafe(method_family = none)]
391        pub fn borderShape(&self) -> NSControlBorderShape;
392
393        /// Setter for [`borderShape`][Self::borderShape].
394        #[unsafe(method(setBorderShape:))]
395        #[unsafe(method_family = none)]
396        pub fn setBorderShape(&self, border_shape: NSControlBorderShape);
397    );
398}
399
400/// Methods declared on superclass `NSControl`.
401#[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
402impl NSSegmentedControl {
403    extern_methods!(
404        #[unsafe(method(initWithFrame:))]
405        #[unsafe(method_family = init)]
406        pub fn initWithFrame(this: Allocated<Self>, frame_rect: NSRect) -> Retained<Self>;
407
408        /// # Safety
409        ///
410        /// `coder` possibly has further requirements.
411        #[unsafe(method(initWithCoder:))]
412        #[unsafe(method_family = init)]
413        pub unsafe fn initWithCoder(
414            this: Allocated<Self>,
415            coder: &NSCoder,
416        ) -> Option<Retained<Self>>;
417    );
418}
419
420/// Methods declared on superclass `NSResponder`.
421#[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
422impl NSSegmentedControl {
423    extern_methods!(
424        #[unsafe(method(init))]
425        #[unsafe(method_family = init)]
426        pub fn init(this: Allocated<Self>) -> Retained<Self>;
427    );
428}
429
430/// Methods declared on superclass `NSObject`.
431#[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
432impl NSSegmentedControl {
433    extern_methods!(
434        #[unsafe(method(new))]
435        #[unsafe(method_family = new)]
436        pub fn new(mtm: MainThreadMarker) -> Retained<Self>;
437    );
438}
439
440/// NSSegmentedControlConvenience.
441#[cfg(all(feature = "NSControl", feature = "NSResponder", feature = "NSView"))]
442impl NSSegmentedControl {
443    extern_methods!(
444        /// Creates a standard segmented control containing one segment for each of the provided labels.
445        ///
446        /// Parameter `labels`: An array of localized label strings to use for the control's segments.
447        ///
448        /// Parameter `trackingMode`: The selection mode for the control. The NSSegmentSwitchTracking enum describes the possible values and their effects.
449        ///
450        /// Parameter `target`: The target object that receives action messages from the control.
451        ///
452        /// Parameter `action`: The action message sent by the control.
453        ///
454        /// Returns: An initialized segmented control.
455        ///
456        /// # Safety
457        ///
458        /// - `target` should be of the correct type.
459        /// - `action` must be a valid selector.
460        #[unsafe(method(segmentedControlWithLabels:trackingMode:target:action:))]
461        #[unsafe(method_family = none)]
462        pub unsafe fn segmentedControlWithLabels_trackingMode_target_action(
463            labels: &NSArray<NSString>,
464            tracking_mode: NSSegmentSwitchTracking,
465            target: Option<&AnyObject>,
466            action: Option<Sel>,
467            mtm: MainThreadMarker,
468        ) -> Retained<Self>;
469
470        #[cfg(feature = "NSImage")]
471        /// Creates a standard segmented control containing one segment for each of the provided images. To ensure accessibility for this control, set the accessibilityDescription property on each of the provided images.
472        ///
473        /// Parameter `images`: An array of image objects to use for the control's segments.
474        ///
475        /// Parameter `trackingMode`: The selection mode for the control. The NSSegmentSwitchTracking enum describes the possible values and their effects.
476        ///
477        /// Parameter `target`: The target object that receives action messages from the control.
478        ///
479        /// Parameter `action`: The action message sent by the control.
480        ///
481        /// Returns: An initialized segmented control.
482        ///
483        /// # Safety
484        ///
485        /// - `target` should be of the correct type.
486        /// - `action` must be a valid selector.
487        #[unsafe(method(segmentedControlWithImages:trackingMode:target:action:))]
488        #[unsafe(method_family = none)]
489        pub unsafe fn segmentedControlWithImages_trackingMode_target_action(
490            images: &NSArray<NSImage>,
491            tracking_mode: NSSegmentSwitchTracking,
492            target: Option<&AnyObject>,
493            action: Option<Sel>,
494            mtm: MainThreadMarker,
495        ) -> Retained<Self>;
496    );
497}