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