use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;
use crate::*;
#[cfg(feature = "block2")]
pub type UITextAttributesConversionHandler = *mut block2::DynBlock<
dyn Fn(
NonNull<NSDictionary<NSAttributedStringKey, AnyObject>>,
) -> NonNull<NSDictionary<NSAttributedStringKey, AnyObject>>,
>;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct UIEditingInteractionConfiguration(pub NSInteger);
impl UIEditingInteractionConfiguration {
#[doc(alias = "UIEditingInteractionConfigurationNone")]
pub const None: Self = Self(0);
#[doc(alias = "UIEditingInteractionConfigurationDefault")]
pub const Default: Self = Self(1);
}
unsafe impl Encode for UIEditingInteractionConfiguration {
const ENCODING: Encoding = NSInteger::ENCODING;
}
unsafe impl RefEncode for UIEditingInteractionConfiguration {
const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}
extern_protocol!(
pub unsafe trait UIResponderStandardEditActions:
NSObjectProtocol + MainThreadOnly
{
#[optional]
#[unsafe(method(cut:))]
#[unsafe(method_family = none)]
unsafe fn cut(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(copy:))]
#[unsafe(method_family = none)]
unsafe fn copy(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(paste:))]
#[unsafe(method_family = none)]
unsafe fn paste(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(pasteAndMatchStyle:))]
#[unsafe(method_family = none)]
unsafe fn pasteAndMatchStyle(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(pasteAndGo:))]
#[unsafe(method_family = none)]
unsafe fn pasteAndGo(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(pasteAndSearch:))]
#[unsafe(method_family = none)]
unsafe fn pasteAndSearch(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(newFromPasteboard:))]
#[unsafe(method_family = none)]
unsafe fn newFromPasteboard(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(select:))]
#[unsafe(method_family = none)]
unsafe fn select(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(selectAll:))]
#[unsafe(method_family = none)]
unsafe fn selectAll(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(delete:))]
#[unsafe(method_family = none)]
unsafe fn delete(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(makeTextWritingDirectionLeftToRight:))]
#[unsafe(method_family = none)]
unsafe fn makeTextWritingDirectionLeftToRight(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(makeTextWritingDirectionRightToLeft:))]
#[unsafe(method_family = none)]
unsafe fn makeTextWritingDirectionRightToLeft(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(toggleBoldface:))]
#[unsafe(method_family = none)]
unsafe fn toggleBoldface(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(toggleItalics:))]
#[unsafe(method_family = none)]
unsafe fn toggleItalics(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(toggleUnderline:))]
#[unsafe(method_family = none)]
unsafe fn toggleUnderline(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(increaseSize:))]
#[unsafe(method_family = none)]
unsafe fn increaseSize(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(decreaseSize:))]
#[unsafe(method_family = none)]
unsafe fn decreaseSize(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(alignLeft:))]
#[unsafe(method_family = none)]
unsafe fn alignLeft(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(alignCenter:))]
#[unsafe(method_family = none)]
unsafe fn alignCenter(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(alignJustified:))]
#[unsafe(method_family = none)]
unsafe fn alignJustified(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(alignRight:))]
#[unsafe(method_family = none)]
unsafe fn alignRight(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(find:))]
#[unsafe(method_family = none)]
unsafe fn find(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(findAndReplace:))]
#[unsafe(method_family = none)]
unsafe fn findAndReplace(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(findNext:))]
#[unsafe(method_family = none)]
unsafe fn findNext(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(findPrevious:))]
#[unsafe(method_family = none)]
unsafe fn findPrevious(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(useSelectionForFind:))]
#[unsafe(method_family = none)]
unsafe fn useSelectionForFind(&self, sender: Option<&AnyObject>);
#[cfg(feature = "block2")]
#[optional]
#[unsafe(method(updateTextAttributesWithConversionHandler:))]
#[unsafe(method_family = none)]
unsafe fn updateTextAttributesWithConversionHandler(
&self,
conversion_handler: UITextAttributesConversionHandler,
);
#[optional]
#[unsafe(method(print:))]
#[unsafe(method_family = none)]
unsafe fn print(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(rename:))]
#[unsafe(method_family = none)]
unsafe fn rename(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(duplicate:))]
#[unsafe(method_family = none)]
unsafe fn duplicate(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(move:))]
#[unsafe(method_family = none)]
unsafe fn r#move(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(export:))]
#[unsafe(method_family = none)]
unsafe fn export(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(toggleSidebar:))]
#[unsafe(method_family = none)]
unsafe fn toggleSidebar(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(toggleInspector:))]
#[unsafe(method_family = none)]
unsafe fn toggleInspector(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(performClose:))]
#[unsafe(method_family = none)]
unsafe fn performClose(&self, sender: Option<&AnyObject>);
#[optional]
#[unsafe(method(showWritingTools:))]
#[unsafe(method_family = none)]
unsafe fn showWritingTools(&self, sender: &AnyObject);
}
);
extern_class!(
#[unsafe(super(NSObject))]
#[thread_kind = MainThreadOnly]
#[derive(Debug, PartialEq, Eq, Hash)]
pub struct UIResponder;
);
extern_conformance!(
unsafe impl NSObjectProtocol for UIResponder {}
);
extern_conformance!(
unsafe impl UIResponderStandardEditActions for UIResponder {}
);
impl UIResponder {
extern_methods!(
#[unsafe(method(nextResponder))]
#[unsafe(method_family = none)]
pub fn nextResponder(&self) -> Option<Retained<UIResponder>>;
#[unsafe(method(canBecomeFirstResponder))]
#[unsafe(method_family = none)]
pub fn canBecomeFirstResponder(&self) -> bool;
#[unsafe(method(becomeFirstResponder))]
#[unsafe(method_family = none)]
pub fn becomeFirstResponder(&self) -> bool;
#[unsafe(method(canResignFirstResponder))]
#[unsafe(method_family = none)]
pub fn canResignFirstResponder(&self) -> bool;
#[unsafe(method(resignFirstResponder))]
#[unsafe(method_family = none)]
pub fn resignFirstResponder(&self) -> bool;
#[unsafe(method(isFirstResponder))]
#[unsafe(method_family = none)]
pub fn isFirstResponder(&self) -> bool;
#[cfg(all(feature = "UIEvent", feature = "UITouch"))]
#[unsafe(method(touchesBegan:withEvent:))]
#[unsafe(method_family = none)]
pub fn touchesBegan_withEvent(&self, touches: &NSSet<UITouch>, event: Option<&UIEvent>);
#[cfg(all(feature = "UIEvent", feature = "UITouch"))]
#[unsafe(method(touchesMoved:withEvent:))]
#[unsafe(method_family = none)]
pub fn touchesMoved_withEvent(&self, touches: &NSSet<UITouch>, event: Option<&UIEvent>);
#[cfg(all(feature = "UIEvent", feature = "UITouch"))]
#[unsafe(method(touchesEnded:withEvent:))]
#[unsafe(method_family = none)]
pub fn touchesEnded_withEvent(&self, touches: &NSSet<UITouch>, event: Option<&UIEvent>);
#[cfg(all(feature = "UIEvent", feature = "UITouch"))]
#[unsafe(method(touchesCancelled:withEvent:))]
#[unsafe(method_family = none)]
pub fn touchesCancelled_withEvent(&self, touches: &NSSet<UITouch>, event: Option<&UIEvent>);
#[cfg(feature = "UITouch")]
#[unsafe(method(touchesEstimatedPropertiesUpdated:))]
#[unsafe(method_family = none)]
pub fn touchesEstimatedPropertiesUpdated(&self, touches: &NSSet<UITouch>);
#[cfg(all(feature = "UIEvent", feature = "UIPress", feature = "UIPressesEvent"))]
#[unsafe(method(pressesBegan:withEvent:))]
#[unsafe(method_family = none)]
pub fn pressesBegan_withEvent(
&self,
presses: &NSSet<UIPress>,
event: Option<&UIPressesEvent>,
);
#[cfg(all(feature = "UIEvent", feature = "UIPress", feature = "UIPressesEvent"))]
#[unsafe(method(pressesChanged:withEvent:))]
#[unsafe(method_family = none)]
pub fn pressesChanged_withEvent(
&self,
presses: &NSSet<UIPress>,
event: Option<&UIPressesEvent>,
);
#[cfg(all(feature = "UIEvent", feature = "UIPress", feature = "UIPressesEvent"))]
#[unsafe(method(pressesEnded:withEvent:))]
#[unsafe(method_family = none)]
pub fn pressesEnded_withEvent(
&self,
presses: &NSSet<UIPress>,
event: Option<&UIPressesEvent>,
);
#[cfg(all(feature = "UIEvent", feature = "UIPress", feature = "UIPressesEvent"))]
#[unsafe(method(pressesCancelled:withEvent:))]
#[unsafe(method_family = none)]
pub fn pressesCancelled_withEvent(
&self,
presses: &NSSet<UIPress>,
event: Option<&UIPressesEvent>,
);
#[cfg(feature = "UIEvent")]
#[unsafe(method(motionBegan:withEvent:))]
#[unsafe(method_family = none)]
pub fn motionBegan_withEvent(&self, motion: UIEventSubtype, event: Option<&UIEvent>);
#[cfg(feature = "UIEvent")]
#[unsafe(method(motionEnded:withEvent:))]
#[unsafe(method_family = none)]
pub fn motionEnded_withEvent(&self, motion: UIEventSubtype, event: Option<&UIEvent>);
#[cfg(feature = "UIEvent")]
#[unsafe(method(motionCancelled:withEvent:))]
#[unsafe(method_family = none)]
pub fn motionCancelled_withEvent(&self, motion: UIEventSubtype, event: Option<&UIEvent>);
#[cfg(feature = "UIEvent")]
#[unsafe(method(remoteControlReceivedWithEvent:))]
#[unsafe(method_family = none)]
pub fn remoteControlReceivedWithEvent(&self, event: Option<&UIEvent>);
#[unsafe(method(canPerformAction:withSender:))]
#[unsafe(method_family = none)]
pub unsafe fn canPerformAction_withSender(
&self,
action: Sel,
sender: Option<&AnyObject>,
) -> bool;
#[unsafe(method(targetForAction:withSender:))]
#[unsafe(method_family = none)]
pub unsafe fn targetForAction_withSender(
&self,
action: Sel,
sender: Option<&AnyObject>,
) -> Option<Retained<AnyObject>>;
#[cfg(feature = "UIMenuBuilder")]
#[unsafe(method(buildMenuWithBuilder:))]
#[unsafe(method_family = none)]
pub fn buildMenuWithBuilder(&self, builder: &ProtocolObject<dyn UIMenuBuilder>);
#[cfg(all(feature = "UICommand", feature = "UIMenuElement"))]
#[unsafe(method(validateCommand:))]
#[unsafe(method_family = none)]
pub fn validateCommand(&self, command: &UICommand);
#[cfg(all(feature = "UIDeferredMenuElement", feature = "UIMenuElement"))]
#[unsafe(method(providerForDeferredMenuElement:))]
#[unsafe(method_family = none)]
pub fn providerForDeferredMenuElement(
&self,
deferred_element: &UIDeferredMenuElement,
) -> Option<Retained<UIDeferredMenuElementProvider>>;
#[unsafe(method(undoManager))]
#[unsafe(method_family = none)]
pub fn undoManager(&self) -> Option<Retained<NSUndoManager>>;
#[unsafe(method(editingInteractionConfiguration))]
#[unsafe(method_family = none)]
pub fn editingInteractionConfiguration(&self) -> UIEditingInteractionConfiguration;
);
}
impl UIResponder {
extern_methods!(
#[unsafe(method(init))]
#[unsafe(method_family = init)]
pub fn init(this: Allocated<Self>) -> Retained<Self>;
#[unsafe(method(new))]
#[unsafe(method_family = new)]
pub fn new(mtm: MainThreadMarker) -> Retained<Self>;
);
}
impl UIResponder {
extern_methods!(
#[cfg(all(
feature = "UICommand",
feature = "UIKeyCommand",
feature = "UIMenuElement"
))]
#[unsafe(method(keyCommands))]
#[unsafe(method_family = none)]
pub fn keyCommands(&self) -> Option<Retained<NSArray<UIKeyCommand>>>;
);
}
impl UIResponder {
extern_methods!(
#[cfg(feature = "UIView")]
#[unsafe(method(inputView))]
#[unsafe(method_family = none)]
pub fn inputView(&self) -> Option<Retained<UIView>>;
#[cfg(feature = "UIView")]
#[unsafe(method(inputAccessoryView))]
#[unsafe(method_family = none)]
pub fn inputAccessoryView(&self) -> Option<Retained<UIView>>;
#[cfg(feature = "UITextInput")]
#[unsafe(method(inputAssistantItem))]
#[unsafe(method_family = none)]
pub fn inputAssistantItem(&self) -> Retained<UITextInputAssistantItem>;
#[cfg(all(feature = "UIInputViewController", feature = "UIViewController"))]
#[unsafe(method(inputViewController))]
#[unsafe(method_family = none)]
pub fn inputViewController(&self) -> Option<Retained<UIInputViewController>>;
#[cfg(all(feature = "UIInputViewController", feature = "UIViewController"))]
#[unsafe(method(inputAccessoryViewController))]
#[unsafe(method_family = none)]
pub fn inputAccessoryViewController(&self) -> Option<Retained<UIInputViewController>>;
#[cfg(feature = "UITextInput")]
#[unsafe(method(textInputMode))]
#[unsafe(method_family = none)]
pub fn textInputMode(&self) -> Option<Retained<UITextInputMode>>;
#[unsafe(method(textInputContextIdentifier))]
#[unsafe(method_family = none)]
pub fn textInputContextIdentifier(&self) -> Option<Retained<NSString>>;
#[unsafe(method(clearTextInputContextIdentifier:))]
#[unsafe(method_family = none)]
pub fn clearTextInputContextIdentifier(identifier: &NSString, mtm: MainThreadMarker);
#[unsafe(method(reloadInputViews))]
#[unsafe(method_family = none)]
pub fn reloadInputViews(&self);
);
}
extern "C" {
pub static UIKeyInputUpArrow: &'static NSString;
}
extern "C" {
pub static UIKeyInputDownArrow: &'static NSString;
}
extern "C" {
pub static UIKeyInputLeftArrow: &'static NSString;
}
extern "C" {
pub static UIKeyInputRightArrow: &'static NSString;
}
extern "C" {
pub static UIKeyInputEscape: &'static NSString;
}
extern "C" {
pub static UIKeyInputPageUp: &'static NSString;
}
extern "C" {
pub static UIKeyInputPageDown: &'static NSString;
}
extern "C" {
pub static UIKeyInputHome: &'static NSString;
}
extern "C" {
pub static UIKeyInputEnd: &'static NSString;
}
extern "C" {
pub static UIKeyInputF2: &'static NSString;
}
extern "C" {
pub static UIKeyInputF3: &'static NSString;
}
extern "C" {
pub static UIKeyInputF4: &'static NSString;
}
extern "C" {
pub static UIKeyInputF5: &'static NSString;
}
extern "C" {
pub static UIKeyInputF6: &'static NSString;
}
extern "C" {
pub static UIKeyInputF7: &'static NSString;
}
extern "C" {
pub static UIKeyInputF8: &'static NSString;
}
extern "C" {
pub static UIKeyInputF9: &'static NSString;
}
extern "C" {
pub static UIKeyInputF10: &'static NSString;
}
extern "C" {
pub static UIKeyInputF11: &'static NSString;
}
extern "C" {
pub static UIKeyInputF12: &'static NSString;
}
extern "C" {
pub static UIKeyInputDelete: &'static NSString;
}
impl UIResponder {
extern_methods!(
#[unsafe(method(userActivity))]
#[unsafe(method_family = none)]
pub fn userActivity(&self) -> Option<Retained<NSUserActivity>>;
#[unsafe(method(setUserActivity:))]
#[unsafe(method_family = none)]
pub fn setUserActivity(&self, user_activity: Option<&NSUserActivity>);
#[unsafe(method(updateUserActivityState:))]
#[unsafe(method_family = none)]
pub fn updateUserActivityState(&self, activity: &NSUserActivity);
#[unsafe(method(restoreUserActivityState:))]
#[unsafe(method_family = none)]
pub fn restoreUserActivityState(&self, activity: &NSUserActivity);
);
}
#[cfg(feature = "UIUserActivity")]
extern_conformance!(
unsafe impl UIUserActivityRestoring for UIResponder {}
);
impl UIResponder {
extern_methods!();
}
#[cfg(feature = "UIPasteConfigurationSupporting")]
extern_conformance!(
unsafe impl UIPasteConfigurationSupporting for UIResponder {}
);
impl UIResponder {
extern_methods!(
#[unsafe(method(captureTextFromCamera:))]
#[unsafe(method_family = none)]
pub unsafe fn captureTextFromCamera(&self, sender: Option<&AnyObject>);
);
}