Swiftpack.co - ChimeHQ/ContainedDocument as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by ChimeHQ.
ChimeHQ/ContainedDocument 1.0.0
Nested NSDocuments
⭐️ 24
🕓 4 weeks ago
macOS
.package(url: "https://github.com/ChimeHQ/ContainedDocument.git", from: "1.0.0")

License Platforms

ContainedDocument

ContainedDocument allows you to nest NSDocument instances inside of abstract containers. These can be anything you need, including other NSDocument instances. This turns out to be a very tricky thing to do, and requires careful management of an NSDocumentController to make it possible.

Supporting the full range of NSDocument operations and interactions is challenging. I was able to pull off many of them, but the coordination still requires subclassing both NSDocument and NSDocumentController.

Integration

dependencies: [
    .package(url: "https://github.com/ChimeHQ/ContainedDocument")
]

Classes

ContainedDocumentController

An NSDocumentController subclass that manages the NSDocument life-cycle and relationship to your containers. To use it, you must override the three container-document association methods. Restorable state is supported, but is optional.

open func associateDocument(_ document: NSDocument, to container: Container)
open func disassociateDocument(_ document: NSDocument)
open func documentContainer(for document: NSDocument) -> Container?

open func encodeRestorableState(with coder: NSCoder, for document: NSDocument)
open func restoreState(with coder: NSCoder, for document: NSDocument)
// ...

Also, don't forget that an NSDocumentController is global to your AppKit process. You must instantiate your subclass as soon as possible to ensure it is being used.

ContainedDocument

This is an NSDocument subclass that makes it possible to support document duplication and window restoration.

Suggestions or Feedback

We'd love to hear from you! Get in touch via an issue or pull request.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

GitHub

link
Stars: 24
Last commit: 4 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Release Notes

v1.0.0
4 weeks ago
  • Some documentation improvements
  • 1.0 release

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics