1use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10extern_class!(
11 #[unsafe(super(NSObject))]
13 #[thread_kind = MainThreadOnly]
14 #[derive(Debug, PartialEq, Eq, Hash)]
15 pub struct NSDocumentController;
16);
17
18unsafe impl NSCoding for NSDocumentController {}
19
20#[cfg(feature = "NSMenu")]
21unsafe impl NSMenuItemValidation for NSDocumentController {}
22
23unsafe impl NSObjectProtocol for NSDocumentController {}
24
25#[cfg(feature = "NSUserInterfaceValidation")]
26unsafe impl NSUserInterfaceValidations for NSDocumentController {}
27
28impl NSDocumentController {
29 extern_methods!(
30 #[unsafe(method(sharedDocumentController))]
31 #[unsafe(method_family = none)]
32 pub unsafe fn sharedDocumentController(
33 mtm: MainThreadMarker,
34 ) -> Retained<NSDocumentController>;
35
36 #[unsafe(method(init))]
37 #[unsafe(method_family = init)]
38 pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
39
40 #[unsafe(method(initWithCoder:))]
41 #[unsafe(method_family = init)]
42 pub unsafe fn initWithCoder(
43 this: Allocated<Self>,
44 coder: &NSCoder,
45 ) -> Option<Retained<Self>>;
46
47 #[cfg(feature = "NSDocument")]
48 #[unsafe(method(documents))]
49 #[unsafe(method_family = none)]
50 pub unsafe fn documents(&self) -> Retained<NSArray<NSDocument>>;
51
52 #[cfg(feature = "NSDocument")]
53 #[unsafe(method(currentDocument))]
54 #[unsafe(method_family = none)]
55 pub unsafe fn currentDocument(&self) -> Option<Retained<NSDocument>>;
56
57 #[unsafe(method(currentDirectory))]
58 #[unsafe(method_family = none)]
59 pub unsafe fn currentDirectory(&self) -> Option<Retained<NSString>>;
60
61 #[cfg(feature = "NSDocument")]
62 #[unsafe(method(documentForURL:))]
63 #[unsafe(method_family = none)]
64 pub unsafe fn documentForURL(&self, url: &NSURL) -> Option<Retained<NSDocument>>;
65
66 #[cfg(all(feature = "NSDocument", feature = "NSResponder", feature = "NSWindow"))]
67 #[unsafe(method(documentForWindow:))]
68 #[unsafe(method_family = none)]
69 pub unsafe fn documentForWindow(&self, window: &NSWindow) -> Option<Retained<NSDocument>>;
70
71 #[cfg(feature = "NSDocument")]
72 #[unsafe(method(addDocument:))]
73 #[unsafe(method_family = none)]
74 pub unsafe fn addDocument(&self, document: &NSDocument);
75
76 #[cfg(feature = "NSDocument")]
77 #[unsafe(method(removeDocument:))]
78 #[unsafe(method_family = none)]
79 pub unsafe fn removeDocument(&self, document: &NSDocument);
80
81 #[unsafe(method(newDocument:))]
82 #[unsafe(method_family = none)]
83 pub unsafe fn newDocument(&self, sender: Option<&AnyObject>);
84
85 #[cfg(feature = "NSDocument")]
86 #[unsafe(method(openUntitledDocumentAndDisplay:error:_))]
87 #[unsafe(method_family = none)]
88 pub unsafe fn openUntitledDocumentAndDisplay_error(
89 &self,
90 display_document: bool,
91 ) -> Result<Retained<NSDocument>, Retained<NSError>>;
92
93 #[cfg(feature = "NSDocument")]
94 #[unsafe(method(makeUntitledDocumentOfType:error:_))]
95 #[unsafe(method_family = none)]
96 pub unsafe fn makeUntitledDocumentOfType_error(
97 &self,
98 type_name: &NSString,
99 ) -> Result<Retained<NSDocument>, Retained<NSError>>;
100
101 #[unsafe(method(openDocument:))]
102 #[unsafe(method_family = none)]
103 pub unsafe fn openDocument(&self, sender: Option<&AnyObject>);
104
105 #[unsafe(method(URLsFromRunningOpenPanel))]
106 #[unsafe(method_family = none)]
107 pub unsafe fn URLsFromRunningOpenPanel(&self) -> Option<Retained<NSArray<NSURL>>>;
108
109 #[cfg(all(
110 feature = "NSOpenPanel",
111 feature = "NSPanel",
112 feature = "NSResponder",
113 feature = "NSSavePanel",
114 feature = "NSWindow"
115 ))]
116 #[unsafe(method(runModalOpenPanel:forTypes:))]
117 #[unsafe(method_family = none)]
118 pub unsafe fn runModalOpenPanel_forTypes(
119 &self,
120 open_panel: &NSOpenPanel,
121 types: Option<&NSArray<NSString>>,
122 ) -> NSInteger;
123
124 #[cfg(feature = "block2")]
125 #[unsafe(method(beginOpenPanelWithCompletionHandler:))]
126 #[unsafe(method_family = none)]
127 pub unsafe fn beginOpenPanelWithCompletionHandler(
128 &self,
129 completion_handler: &block2::Block<dyn Fn(*mut NSArray<NSURL>)>,
130 );
131
132 #[cfg(all(
133 feature = "NSOpenPanel",
134 feature = "NSPanel",
135 feature = "NSResponder",
136 feature = "NSSavePanel",
137 feature = "NSWindow",
138 feature = "block2"
139 ))]
140 #[unsafe(method(beginOpenPanel:forTypes:completionHandler:))]
141 #[unsafe(method_family = none)]
142 pub unsafe fn beginOpenPanel_forTypes_completionHandler(
143 &self,
144 open_panel: &NSOpenPanel,
145 in_types: Option<&NSArray<NSString>>,
146 completion_handler: &block2::Block<dyn Fn(NSInteger)>,
147 );
148
149 #[cfg(all(feature = "NSDocument", feature = "block2"))]
150 #[unsafe(method(openDocumentWithContentsOfURL:display:completionHandler:))]
151 #[unsafe(method_family = none)]
152 pub unsafe fn openDocumentWithContentsOfURL_display_completionHandler(
153 &self,
154 url: &NSURL,
155 display_document: bool,
156 completion_handler: &block2::Block<dyn Fn(*mut NSDocument, Bool, *mut NSError)>,
157 );
158
159 #[cfg(feature = "NSDocument")]
160 #[unsafe(method(makeDocumentWithContentsOfURL:ofType:error:_))]
161 #[unsafe(method_family = none)]
162 pub unsafe fn makeDocumentWithContentsOfURL_ofType_error(
163 &self,
164 url: &NSURL,
165 type_name: &NSString,
166 ) -> Result<Retained<NSDocument>, Retained<NSError>>;
167
168 #[cfg(all(feature = "NSDocument", feature = "block2"))]
169 #[unsafe(method(reopenDocumentForURL:withContentsOfURL:display:completionHandler:))]
170 #[unsafe(method_family = none)]
171 pub unsafe fn reopenDocumentForURL_withContentsOfURL_display_completionHandler(
172 &self,
173 url_or_nil: Option<&NSURL>,
174 contents_url: &NSURL,
175 display_document: bool,
176 completion_handler: &block2::Block<dyn Fn(*mut NSDocument, Bool, *mut NSError)>,
177 );
178
179 #[cfg(feature = "NSDocument")]
180 #[unsafe(method(makeDocumentForURL:withContentsOfURL:ofType:error:_))]
181 #[unsafe(method_family = none)]
182 pub unsafe fn makeDocumentForURL_withContentsOfURL_ofType_error(
183 &self,
184 url_or_nil: Option<&NSURL>,
185 contents_url: &NSURL,
186 type_name: &NSString,
187 ) -> Result<Retained<NSDocument>, Retained<NSError>>;
188
189 #[unsafe(method(autosavingDelay))]
190 #[unsafe(method_family = none)]
191 pub unsafe fn autosavingDelay(&self) -> NSTimeInterval;
192
193 #[unsafe(method(setAutosavingDelay:))]
195 #[unsafe(method_family = none)]
196 pub unsafe fn setAutosavingDelay(&self, autosaving_delay: NSTimeInterval);
197
198 #[unsafe(method(saveAllDocuments:))]
199 #[unsafe(method_family = none)]
200 pub unsafe fn saveAllDocuments(&self, sender: Option<&AnyObject>);
201
202 #[unsafe(method(hasEditedDocuments))]
203 #[unsafe(method_family = none)]
204 pub unsafe fn hasEditedDocuments(&self) -> bool;
205
206 #[unsafe(method(reviewUnsavedDocumentsWithAlertTitle:cancellable:delegate:didReviewAllSelector:contextInfo:))]
207 #[unsafe(method_family = none)]
208 pub unsafe fn reviewUnsavedDocumentsWithAlertTitle_cancellable_delegate_didReviewAllSelector_contextInfo(
209 &self,
210 title: Option<&NSString>,
211 cancellable: bool,
212 delegate: Option<&AnyObject>,
213 did_review_all_selector: Option<Sel>,
214 context_info: *mut c_void,
215 );
216
217 #[unsafe(method(closeAllDocumentsWithDelegate:didCloseAllSelector:contextInfo:))]
218 #[unsafe(method_family = none)]
219 pub unsafe fn closeAllDocumentsWithDelegate_didCloseAllSelector_contextInfo(
220 &self,
221 delegate: Option<&AnyObject>,
222 did_close_all_selector: Option<Sel>,
223 context_info: *mut c_void,
224 );
225
226 #[cfg(feature = "NSDocument")]
227 #[unsafe(method(duplicateDocumentWithContentsOfURL:copying:displayName:error:_))]
228 #[unsafe(method_family = none)]
229 pub unsafe fn duplicateDocumentWithContentsOfURL_copying_displayName_error(
230 &self,
231 url: &NSURL,
232 duplicate_by_copying: bool,
233 display_name_or_nil: Option<&NSString>,
234 ) -> Result<Retained<NSDocument>, Retained<NSError>>;
235
236 #[unsafe(method(allowsAutomaticShareMenu))]
237 #[unsafe(method_family = none)]
238 pub unsafe fn allowsAutomaticShareMenu(&self) -> bool;
239
240 #[cfg(feature = "NSMenuItem")]
241 #[unsafe(method(standardShareMenuItem))]
242 #[unsafe(method_family = none)]
243 pub unsafe fn standardShareMenuItem(&self) -> Retained<NSMenuItem>;
244
245 #[cfg(all(feature = "NSResponder", feature = "NSWindow"))]
246 #[unsafe(method(presentError:modalForWindow:delegate:didPresentSelector:contextInfo:))]
247 #[unsafe(method_family = none)]
248 pub unsafe fn presentError_modalForWindow_delegate_didPresentSelector_contextInfo(
249 &self,
250 error: &NSError,
251 window: &NSWindow,
252 delegate: Option<&AnyObject>,
253 did_present_selector: Option<Sel>,
254 context_info: *mut c_void,
255 );
256
257 #[unsafe(method(presentError:))]
258 #[unsafe(method_family = none)]
259 pub unsafe fn presentError(&self, error: &NSError) -> bool;
260
261 #[unsafe(method(willPresentError:))]
262 #[unsafe(method_family = none)]
263 pub unsafe fn willPresentError(&self, error: &NSError) -> Retained<NSError>;
264
265 #[unsafe(method(maximumRecentDocumentCount))]
266 #[unsafe(method_family = none)]
267 pub unsafe fn maximumRecentDocumentCount(&self) -> NSUInteger;
268
269 #[unsafe(method(clearRecentDocuments:))]
270 #[unsafe(method_family = none)]
271 pub unsafe fn clearRecentDocuments(&self, sender: Option<&AnyObject>);
272
273 #[cfg(feature = "NSDocument")]
274 #[unsafe(method(noteNewRecentDocument:))]
275 #[unsafe(method_family = none)]
276 pub unsafe fn noteNewRecentDocument(&self, document: &NSDocument);
277
278 #[unsafe(method(noteNewRecentDocumentURL:))]
279 #[unsafe(method_family = none)]
280 pub unsafe fn noteNewRecentDocumentURL(&self, url: &NSURL);
281
282 #[unsafe(method(recentDocumentURLs))]
283 #[unsafe(method_family = none)]
284 pub unsafe fn recentDocumentURLs(&self) -> Retained<NSArray<NSURL>>;
285
286 #[unsafe(method(defaultType))]
287 #[unsafe(method_family = none)]
288 pub unsafe fn defaultType(&self) -> Option<Retained<NSString>>;
289
290 #[unsafe(method(typeForContentsOfURL:error:_))]
291 #[unsafe(method_family = none)]
292 pub unsafe fn typeForContentsOfURL_error(
293 &self,
294 url: &NSURL,
295 ) -> Result<Retained<NSString>, Retained<NSError>>;
296
297 #[unsafe(method(documentClassNames))]
298 #[unsafe(method_family = none)]
299 pub unsafe fn documentClassNames(&self) -> Retained<NSArray<NSString>>;
300
301 #[unsafe(method(documentClassForType:))]
302 #[unsafe(method_family = none)]
303 pub unsafe fn documentClassForType(
304 &self,
305 type_name: &NSString,
306 ) -> Option<&'static AnyClass>;
307
308 #[unsafe(method(displayNameForType:))]
309 #[unsafe(method_family = none)]
310 pub unsafe fn displayNameForType(&self, type_name: &NSString)
311 -> Option<Retained<NSString>>;
312
313 #[cfg(feature = "NSUserInterfaceValidation")]
314 #[unsafe(method(validateUserInterfaceItem:))]
315 #[unsafe(method_family = none)]
316 pub unsafe fn validateUserInterfaceItem(
317 &self,
318 item: &ProtocolObject<dyn NSValidatedUserInterfaceItem>,
319 ) -> bool;
320 );
321}
322
323impl NSDocumentController {
325 extern_methods!(
326 #[unsafe(method(new))]
327 #[unsafe(method_family = new)]
328 pub unsafe fn new(mtm: MainThreadMarker) -> Retained<Self>;
329 );
330}
331
332impl NSDocumentController {
334 extern_methods!(
335 #[deprecated = "Use -openDocumentWithContentsOfURL:display:completionHandler: instead"]
336 #[unsafe(method(openDocumentWithContentsOfURL:display:error:_))]
337 #[unsafe(method_family = none)]
338 pub unsafe fn openDocumentWithContentsOfURL_display_error(
339 &self,
340 url: &NSURL,
341 display_document: bool,
342 ) -> Result<Retained<AnyObject>, Retained<NSError>>;
343
344 #[deprecated = "Use -reopenDocumentForURL:withContentsOfURL:display:completionHandler: instead"]
345 #[unsafe(method(reopenDocumentForURL:withContentsOfURL:error:_))]
346 #[unsafe(method_family = none)]
347 pub unsafe fn reopenDocumentForURL_withContentsOfURL_error(
348 &self,
349 url: Option<&NSURL>,
350 contents_url: &NSURL,
351 ) -> Result<(), Retained<NSError>>;
352
353 #[deprecated]
354 #[unsafe(method(fileExtensionsFromType:))]
355 #[unsafe(method_family = none)]
356 pub unsafe fn fileExtensionsFromType(
357 &self,
358 type_name: &NSString,
359 ) -> Option<Retained<NSArray>>;
360
361 #[deprecated]
362 #[unsafe(method(typeFromFileExtension:))]
363 #[unsafe(method_family = none)]
364 pub unsafe fn typeFromFileExtension(
365 &self,
366 file_name_extension_or_hfs_file_type: &NSString,
367 ) -> Option<Retained<NSString>>;
368
369 #[deprecated]
370 #[unsafe(method(documentForFileName:))]
371 #[unsafe(method_family = none)]
372 pub unsafe fn documentForFileName(
373 &self,
374 file_name: &NSString,
375 ) -> Option<Retained<AnyObject>>;
376
377 #[deprecated]
378 #[unsafe(method(fileNamesFromRunningOpenPanel))]
379 #[unsafe(method_family = none)]
380 pub unsafe fn fileNamesFromRunningOpenPanel(&self) -> Option<Retained<NSArray>>;
381
382 #[deprecated]
383 #[unsafe(method(makeDocumentWithContentsOfFile:ofType:))]
384 #[unsafe(method_family = none)]
385 pub unsafe fn makeDocumentWithContentsOfFile_ofType(
386 &self,
387 file_name: &NSString,
388 r#type: &NSString,
389 ) -> Option<Retained<AnyObject>>;
390
391 #[deprecated]
392 #[unsafe(method(makeDocumentWithContentsOfURL:ofType:))]
393 #[unsafe(method_family = none)]
394 pub unsafe fn makeDocumentWithContentsOfURL_ofType(
395 &self,
396 url: &NSURL,
397 r#type: Option<&NSString>,
398 ) -> Option<Retained<AnyObject>>;
399
400 #[deprecated]
401 #[unsafe(method(makeUntitledDocumentOfType:))]
402 #[unsafe(method_family = none)]
403 pub unsafe fn makeUntitledDocumentOfType(
404 &self,
405 r#type: &NSString,
406 ) -> Option<Retained<AnyObject>>;
407
408 #[deprecated]
409 #[unsafe(method(openDocumentWithContentsOfFile:display:))]
410 #[unsafe(method_family = none)]
411 pub unsafe fn openDocumentWithContentsOfFile_display(
412 &self,
413 file_name: &NSString,
414 display: bool,
415 ) -> Option<Retained<AnyObject>>;
416
417 #[deprecated]
418 #[unsafe(method(openDocumentWithContentsOfURL:display:))]
419 #[unsafe(method_family = none)]
420 pub unsafe fn openDocumentWithContentsOfURL_display(
421 &self,
422 url: &NSURL,
423 display: bool,
424 ) -> Option<Retained<AnyObject>>;
425
426 #[deprecated]
427 #[unsafe(method(openUntitledDocumentOfType:display:))]
428 #[unsafe(method_family = none)]
429 pub unsafe fn openUntitledDocumentOfType_display(
430 &self,
431 r#type: &NSString,
432 display: bool,
433 ) -> Option<Retained<AnyObject>>;
434
435 #[deprecated]
436 #[unsafe(method(setShouldCreateUI:))]
437 #[unsafe(method_family = none)]
438 pub unsafe fn setShouldCreateUI(&self, flag: bool);
439
440 #[deprecated]
441 #[unsafe(method(shouldCreateUI))]
442 #[unsafe(method_family = none)]
443 pub unsafe fn shouldCreateUI(&self) -> bool;
444 );
445}