aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTeddy Wing2023-09-16 16:21:49 +0200
committerTeddy Wing2023-09-16 16:21:49 +0200
commitfb7f3b833d31cb7dcae259c6a9a0118cdeafc96c (patch)
treef81f225ba264440948be2e2be7afaa1e34f718ad /src
parentcfe5c30df32bca2a098c683ddf69ad8a78ed305d (diff)
downloadBase-Windowed-Application-fb7f3b833d31cb7dcae259c6a9a0118cdeafc96c.tar.bz2
Make a document-based application
Add the basic necessities for a document-based application. This is what I came up with on 2023-09-10. The `DocumentWindowController` was just an initial idea and doesn't do anything: we create the required window controller in `Document`. The `CFBundleDocumentTypes` entry enables us to interact with text files. This confirms that the "Open Recent" menu does get added automatically below the "Open" menu.
Diffstat (limited to 'src')
-rw-r--r--src/Document.h4
-rw-r--r--src/Document.m38
-rw-r--r--src/DocumentWindowController.h4
-rw-r--r--src/DocumentWindowController.m11
4 files changed, 57 insertions, 0 deletions
diff --git a/src/Document.h b/src/Document.h
new file mode 100644
index 0000000..e566ac0
--- /dev/null
+++ b/src/Document.h
@@ -0,0 +1,4 @@
+#import <Cocoa/Cocoa.h>
+
+@interface Document : NSDocument
+@end
diff --git a/src/Document.m b/src/Document.m
new file mode 100644
index 0000000..7b514eb
--- /dev/null
+++ b/src/Document.m
@@ -0,0 +1,38 @@
+#import "Document.h"
+
+@implementation Document
+
+- (id)init
+{
+ self = [super init];
+ if (self) {
+ }
+ return self;
+}
+
+// TODO: Are window controllers deallocated automatically by the parent?
+// [[NSWindowController alloc] initWithWindow:]?
+
+- (void)makeWindowControllers
+{
+ // DocumentWindowController *controller = [[DocumentWindowController alloc] init];
+
+ NSWindow *window = [[NSWindow alloc]
+ initWithContentRect:NSMakeRect(0, 0, 600, 500)
+ styleMask:
+ NSWindowStyleMaskTitled
+ | NSWindowStyleMaskClosable
+ | NSWindowStyleMaskMiniaturizable
+ | NSWindowStyleMaskResizable
+ backing:NSBackingStoreBuffered
+ defer:NO];
+ // [window setFrameAutosaveName:@"document"]; // document name?
+
+ NSWindowController *window_controller = [[NSWindowController alloc]
+ initWithWindow:window];
+ // [window_controller setShouldCascadeWindows:YES];
+
+ [self addWindowController:window_controller];
+}
+
+@end
diff --git a/src/DocumentWindowController.h b/src/DocumentWindowController.h
new file mode 100644
index 0000000..e3b277b
--- /dev/null
+++ b/src/DocumentWindowController.h
@@ -0,0 +1,4 @@
+#import <Cocoa/Cocoa.h>
+
+@interface DocumentWindowController : NSWindowController
+@end
diff --git a/src/DocumentWindowController.m b/src/DocumentWindowController.m
new file mode 100644
index 0000000..e83af36
--- /dev/null
+++ b/src/DocumentWindowController.m
@@ -0,0 +1,11 @@
+#import "DocumentWindowController.h"
+
+@implementation DocumentWindowController
+
+- (void)windowWillLoad
+{
+ // NSWindow *window = ;
+ // self = [self initWithWindow:window];
+}
+
+@end