objc2_app_kit/generated/
NSViewController.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::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10/// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsviewcontrollertransitionoptions?language=objc)
11// NS_OPTIONS
12#[repr(transparent)]
13#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
14pub struct NSViewControllerTransitionOptions(pub NSUInteger);
15bitflags::bitflags! {
16    impl NSViewControllerTransitionOptions: NSUInteger {
17        #[doc(alias = "NSViewControllerTransitionNone")]
18        const None = 0x0;
19        #[doc(alias = "NSViewControllerTransitionCrossfade")]
20        const Crossfade = 0x1;
21        #[doc(alias = "NSViewControllerTransitionSlideUp")]
22        const SlideUp = 0x10;
23        #[doc(alias = "NSViewControllerTransitionSlideDown")]
24        const SlideDown = 0x20;
25        #[doc(alias = "NSViewControllerTransitionSlideLeft")]
26        const SlideLeft = 0x40;
27        #[doc(alias = "NSViewControllerTransitionSlideRight")]
28        const SlideRight = 0x80;
29        #[doc(alias = "NSViewControllerTransitionSlideForward")]
30        const SlideForward = 0x140;
31        #[doc(alias = "NSViewControllerTransitionSlideBackward")]
32        const SlideBackward = 0x180;
33        #[doc(alias = "NSViewControllerTransitionAllowUserInteraction")]
34        const AllowUserInteraction = 0x1000;
35    }
36}
37
38unsafe impl Encode for NSViewControllerTransitionOptions {
39    const ENCODING: Encoding = NSUInteger::ENCODING;
40}
41
42unsafe impl RefEncode for NSViewControllerTransitionOptions {
43    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
44}
45
46extern_class!(
47    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsviewcontroller?language=objc)
48    #[unsafe(super(NSResponder, NSObject))]
49    #[derive(Debug, PartialEq, Eq, Hash)]
50    #[cfg(feature = "NSResponder")]
51    pub struct NSViewController;
52);
53
54#[cfg(feature = "NSResponder")]
55extern_conformance!(
56    unsafe impl NSCoding for NSViewController {}
57);
58
59#[cfg(all(feature = "NSKeyValueBinding", feature = "NSResponder"))]
60extern_conformance!(
61    unsafe impl NSEditor for NSViewController {}
62);
63
64#[cfg(feature = "NSResponder")]
65extern_conformance!(
66    unsafe impl NSObjectProtocol for NSViewController {}
67);
68
69#[cfg(all(feature = "NSResponder", feature = "NSStoryboardSegue"))]
70extern_conformance!(
71    unsafe impl NSSeguePerforming for NSViewController {}
72);
73
74#[cfg(all(feature = "NSResponder", feature = "NSUserInterfaceItemIdentification"))]
75extern_conformance!(
76    unsafe impl NSUserInterfaceItemIdentification for NSViewController {}
77);
78
79#[cfg(feature = "NSResponder")]
80impl NSViewController {
81    extern_methods!(
82        #[cfg(feature = "NSNib")]
83        #[unsafe(method(initWithNibName:bundle:))]
84        #[unsafe(method_family = init)]
85        pub fn initWithNibName_bundle(
86            this: Allocated<Self>,
87            nib_name_or_nil: Option<&NSNibName>,
88            nib_bundle_or_nil: Option<&NSBundle>,
89        ) -> Retained<Self>;
90
91        /// # Safety
92        ///
93        /// `coder` possibly has further requirements.
94        #[unsafe(method(initWithCoder:))]
95        #[unsafe(method_family = init)]
96        pub unsafe fn initWithCoder(
97            this: Allocated<Self>,
98            coder: &NSCoder,
99        ) -> Option<Retained<Self>>;
100
101        #[cfg(feature = "NSNib")]
102        #[unsafe(method(nibName))]
103        #[unsafe(method_family = none)]
104        pub fn nibName(&self) -> Option<Retained<NSNibName>>;
105
106        #[unsafe(method(nibBundle))]
107        #[unsafe(method_family = none)]
108        pub fn nibBundle(&self) -> Option<Retained<NSBundle>>;
109
110        #[unsafe(method(representedObject))]
111        #[unsafe(method_family = none)]
112        pub fn representedObject(&self) -> Option<Retained<AnyObject>>;
113
114        /// Setter for [`representedObject`][Self::representedObject].
115        ///
116        /// # Safety
117        ///
118        /// `represented_object` should be of the correct type.
119        #[unsafe(method(setRepresentedObject:))]
120        #[unsafe(method_family = none)]
121        pub unsafe fn setRepresentedObject(&self, represented_object: Option<&AnyObject>);
122
123        #[unsafe(method(title))]
124        #[unsafe(method_family = none)]
125        pub fn title(&self) -> Option<Retained<NSString>>;
126
127        /// Setter for [`title`][Self::title].
128        ///
129        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
130        #[unsafe(method(setTitle:))]
131        #[unsafe(method_family = none)]
132        pub fn setTitle(&self, title: Option<&NSString>);
133
134        #[cfg(feature = "NSView")]
135        #[unsafe(method(view))]
136        #[unsafe(method_family = none)]
137        pub fn view(&self) -> Retained<NSView>;
138
139        #[cfg(feature = "NSView")]
140        /// Setter for [`view`][Self::view].
141        #[unsafe(method(setView:))]
142        #[unsafe(method_family = none)]
143        pub fn setView(&self, view: &NSView);
144
145        #[cfg(feature = "NSView")]
146        #[unsafe(method(viewIfLoaded))]
147        #[unsafe(method_family = none)]
148        pub fn viewIfLoaded(&self) -> Option<Retained<NSView>>;
149
150        #[unsafe(method(loadView))]
151        #[unsafe(method_family = none)]
152        pub fn loadView(&self);
153
154        #[unsafe(method(loadViewIfNeeded))]
155        #[unsafe(method_family = none)]
156        pub fn loadViewIfNeeded(&self);
157
158        /// # Safety
159        ///
160        /// - `delegate` should be of the correct type.
161        /// - `did_commit_selector` must be a valid selector.
162        /// - `context_info` must be a valid pointer or null.
163        #[unsafe(method(commitEditingWithDelegate:didCommitSelector:contextInfo:))]
164        #[unsafe(method_family = none)]
165        pub unsafe fn commitEditingWithDelegate_didCommitSelector_contextInfo(
166            &self,
167            delegate: Option<&AnyObject>,
168            did_commit_selector: Option<Sel>,
169            context_info: *mut c_void,
170        );
171
172        #[unsafe(method(commitEditing))]
173        #[unsafe(method_family = none)]
174        pub fn commitEditing(&self) -> bool;
175
176        #[unsafe(method(discardEditing))]
177        #[unsafe(method_family = none)]
178        pub fn discardEditing(&self);
179
180        #[unsafe(method(viewDidLoad))]
181        #[unsafe(method_family = none)]
182        pub fn viewDidLoad(&self);
183
184        #[unsafe(method(isViewLoaded))]
185        #[unsafe(method_family = none)]
186        pub fn isViewLoaded(&self) -> bool;
187
188        #[unsafe(method(viewWillAppear))]
189        #[unsafe(method_family = none)]
190        pub fn viewWillAppear(&self);
191
192        #[unsafe(method(viewDidAppear))]
193        #[unsafe(method_family = none)]
194        pub fn viewDidAppear(&self);
195
196        #[unsafe(method(viewWillDisappear))]
197        #[unsafe(method_family = none)]
198        pub fn viewWillDisappear(&self);
199
200        #[unsafe(method(viewDidDisappear))]
201        #[unsafe(method_family = none)]
202        pub fn viewDidDisappear(&self);
203
204        #[unsafe(method(preferredContentSize))]
205        #[unsafe(method_family = none)]
206        pub fn preferredContentSize(&self) -> NSSize;
207
208        /// Setter for [`preferredContentSize`][Self::preferredContentSize].
209        #[unsafe(method(setPreferredContentSize:))]
210        #[unsafe(method_family = none)]
211        pub fn setPreferredContentSize(&self, preferred_content_size: NSSize);
212
213        #[unsafe(method(updateViewConstraints))]
214        #[unsafe(method_family = none)]
215        pub fn updateViewConstraints(&self);
216
217        #[unsafe(method(viewWillLayout))]
218        #[unsafe(method_family = none)]
219        pub fn viewWillLayout(&self);
220
221        #[unsafe(method(viewDidLayout))]
222        #[unsafe(method_family = none)]
223        pub fn viewDidLayout(&self);
224    );
225}
226
227/// Methods declared on superclass `NSResponder`.
228#[cfg(feature = "NSResponder")]
229impl NSViewController {
230    extern_methods!(
231        #[unsafe(method(init))]
232        #[unsafe(method_family = init)]
233        pub fn init(this: Allocated<Self>) -> Retained<Self>;
234    );
235}
236
237/// Methods declared on superclass `NSObject`.
238#[cfg(feature = "NSResponder")]
239impl NSViewController {
240    extern_methods!(
241        #[unsafe(method(new))]
242        #[unsafe(method_family = new)]
243        pub fn new(mtm: MainThreadMarker) -> Retained<Self>;
244    );
245}
246
247/// NSViewControllerPresentation.
248#[cfg(feature = "NSResponder")]
249impl NSViewController {
250    extern_methods!(
251        #[unsafe(method(presentViewController:animator:))]
252        #[unsafe(method_family = none)]
253        pub fn presentViewController_animator(
254            &self,
255            view_controller: &NSViewController,
256            animator: &ProtocolObject<dyn NSViewControllerPresentationAnimator>,
257        );
258
259        #[unsafe(method(dismissViewController:))]
260        #[unsafe(method_family = none)]
261        pub fn dismissViewController(&self, view_controller: &NSViewController);
262
263        /// # Safety
264        ///
265        /// `sender` should be of the correct type.
266        #[unsafe(method(dismissController:))]
267        #[unsafe(method_family = none)]
268        pub unsafe fn dismissController(&self, sender: Option<&AnyObject>);
269
270        #[unsafe(method(presentedViewControllers))]
271        #[unsafe(method_family = none)]
272        pub fn presentedViewControllers(&self) -> Option<Retained<NSArray<NSViewController>>>;
273
274        /// # Safety
275        ///
276        /// This is not retained internally, you must ensure the object is still alive.
277        #[unsafe(method(presentingViewController))]
278        #[unsafe(method_family = none)]
279        pub unsafe fn presentingViewController(&self) -> Option<Retained<NSViewController>>;
280    );
281}
282
283/// NSViewControllerPresentationAndTransitionStyles.
284#[cfg(feature = "NSResponder")]
285impl NSViewController {
286    extern_methods!(
287        #[unsafe(method(presentViewControllerAsSheet:))]
288        #[unsafe(method_family = none)]
289        pub fn presentViewControllerAsSheet(&self, view_controller: &NSViewController);
290
291        #[unsafe(method(presentViewControllerAsModalWindow:))]
292        #[unsafe(method_family = none)]
293        pub fn presentViewControllerAsModalWindow(&self, view_controller: &NSViewController);
294
295        #[cfg(all(feature = "NSPopover", feature = "NSView"))]
296        #[unsafe(method(presentViewController:asPopoverRelativeToRect:ofView:preferredEdge:behavior:))]
297        #[unsafe(method_family = none)]
298        pub fn presentViewController_asPopoverRelativeToRect_ofView_preferredEdge_behavior(
299            &self,
300            view_controller: &NSViewController,
301            positioning_rect: NSRect,
302            positioning_view: &NSView,
303            preferred_edge: NSRectEdge,
304            behavior: NSPopoverBehavior,
305        );
306
307        #[cfg(all(feature = "NSPopover", feature = "NSView"))]
308        #[unsafe(method(presentViewController:asPopoverRelativeToRect:ofView:preferredEdge:behavior:hasFullSizeContent:))]
309        #[unsafe(method_family = none)]
310        pub fn presentViewController_asPopoverRelativeToRect_ofView_preferredEdge_behavior_hasFullSizeContent(
311            &self,
312            view_controller: &NSViewController,
313            positioning_rect: NSRect,
314            positioning_view: &NSView,
315            preferred_edge: NSRectEdge,
316            behavior: NSPopoverBehavior,
317            has_full_size_content: bool,
318        );
319
320        #[cfg(feature = "block2")]
321        #[unsafe(method(transitionFromViewController:toViewController:options:completionHandler:))]
322        #[unsafe(method_family = none)]
323        pub fn transitionFromViewController_toViewController_options_completionHandler(
324            &self,
325            from_view_controller: &NSViewController,
326            to_view_controller: &NSViewController,
327            options: NSViewControllerTransitionOptions,
328            completion: Option<&block2::DynBlock<dyn Fn()>>,
329        );
330    );
331}
332
333/// NSViewControllerContainer.
334#[cfg(feature = "NSResponder")]
335impl NSViewController {
336    extern_methods!(
337        #[unsafe(method(parentViewController))]
338        #[unsafe(method_family = none)]
339        pub fn parentViewController(&self) -> Option<Retained<NSViewController>>;
340
341        #[unsafe(method(childViewControllers))]
342        #[unsafe(method_family = none)]
343        pub fn childViewControllers(&self) -> Retained<NSArray<NSViewController>>;
344
345        /// Setter for [`childViewControllers`][Self::childViewControllers].
346        ///
347        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
348        #[unsafe(method(setChildViewControllers:))]
349        #[unsafe(method_family = none)]
350        pub fn setChildViewControllers(&self, child_view_controllers: &NSArray<NSViewController>);
351
352        #[unsafe(method(addChildViewController:))]
353        #[unsafe(method_family = none)]
354        pub fn addChildViewController(&self, child_view_controller: &NSViewController);
355
356        #[unsafe(method(removeFromParentViewController))]
357        #[unsafe(method_family = none)]
358        pub fn removeFromParentViewController(&self);
359
360        #[unsafe(method(insertChildViewController:atIndex:))]
361        #[unsafe(method_family = none)]
362        pub fn insertChildViewController_atIndex(
363            &self,
364            child_view_controller: &NSViewController,
365            index: NSInteger,
366        );
367
368        #[unsafe(method(removeChildViewControllerAtIndex:))]
369        #[unsafe(method_family = none)]
370        pub fn removeChildViewControllerAtIndex(&self, index: NSInteger);
371
372        #[unsafe(method(preferredContentSizeDidChangeForViewController:))]
373        #[unsafe(method_family = none)]
374        pub fn preferredContentSizeDidChangeForViewController(
375            &self,
376            view_controller: &NSViewController,
377        );
378
379        #[unsafe(method(viewWillTransitionToSize:))]
380        #[unsafe(method_family = none)]
381        pub fn viewWillTransitionToSize(&self, new_size: NSSize);
382    );
383}
384
385extern_protocol!(
386    /// [Apple's documentation](https://developer.apple.com/documentation/appkit/nsviewcontrollerpresentationanimator?language=objc)
387    pub unsafe trait NSViewControllerPresentationAnimator:
388        NSObjectProtocol + MainThreadOnly
389    {
390        #[cfg(feature = "NSResponder")]
391        #[unsafe(method(animatePresentationOfViewController:fromViewController:))]
392        #[unsafe(method_family = none)]
393        fn animatePresentationOfViewController_fromViewController(
394            &self,
395            view_controller: &NSViewController,
396            from_view_controller: &NSViewController,
397        );
398
399        #[cfg(feature = "NSResponder")]
400        #[unsafe(method(animateDismissalOfViewController:fromViewController:))]
401        #[unsafe(method_family = none)]
402        fn animateDismissalOfViewController_fromViewController(
403            &self,
404            view_controller: &NSViewController,
405            from_view_controller: &NSViewController,
406        );
407    }
408);
409
410/// NSViewControllerStoryboardingMethods.
411#[cfg(feature = "NSResponder")]
412impl NSViewController {
413    extern_methods!(
414        #[cfg(feature = "NSStoryboard")]
415        #[unsafe(method(storyboard))]
416        #[unsafe(method_family = none)]
417        pub fn storyboard(&self) -> Option<Retained<NSStoryboard>>;
418    );
419}
420
421/// NSExtensionAdditions.
422#[cfg(feature = "NSResponder")]
423impl NSViewController {
424    extern_methods!(
425        #[unsafe(method(extensionContext))]
426        #[unsafe(method_family = none)]
427        pub fn extensionContext(&self) -> Option<Retained<NSExtensionContext>>;
428
429        #[cfg(feature = "NSView")]
430        #[unsafe(method(sourceItemView))]
431        #[unsafe(method_family = none)]
432        pub fn sourceItemView(&self) -> Option<Retained<NSView>>;
433
434        #[cfg(feature = "NSView")]
435        /// Setter for [`sourceItemView`][Self::sourceItemView].
436        #[unsafe(method(setSourceItemView:))]
437        #[unsafe(method_family = none)]
438        pub fn setSourceItemView(&self, source_item_view: Option<&NSView>);
439
440        #[unsafe(method(preferredScreenOrigin))]
441        #[unsafe(method_family = none)]
442        pub fn preferredScreenOrigin(&self) -> NSPoint;
443
444        /// Setter for [`preferredScreenOrigin`][Self::preferredScreenOrigin].
445        #[unsafe(method(setPreferredScreenOrigin:))]
446        #[unsafe(method_family = none)]
447        pub fn setPreferredScreenOrigin(&self, preferred_screen_origin: NSPoint);
448
449        #[unsafe(method(preferredMinimumSize))]
450        #[unsafe(method_family = none)]
451        pub fn preferredMinimumSize(&self) -> NSSize;
452
453        #[unsafe(method(preferredMaximumSize))]
454        #[unsafe(method_family = none)]
455        pub fn preferredMaximumSize(&self) -> NSSize;
456    );
457}
458
459#[cfg(feature = "NSResponder")]
460extern_conformance!(
461    unsafe impl NSExtensionRequestHandling for NSViewController {}
462);