summaryrefslogtreecommitdiff
path: root/dialog_darwin.m
diff options
context:
space:
mode:
authorPietro Gagliardi <[email protected]>2014-08-30 23:02:02 -0400
committerPietro Gagliardi <[email protected]>2014-08-30 23:02:02 -0400
commit77bf566ebbcb62acd4d08d905d9542d6ff9b6b80 (patch)
treeeeb8e72bc3bf57f5be7f0c0af4319189ac6de838 /dialog_darwin.m
parent155899c65ed32245e2ccad4197a10c77017d835b (diff)
...in with the new.
Diffstat (limited to 'dialog_darwin.m')
-rw-r--r--dialog_darwin.m30
1 files changed, 30 insertions, 0 deletions
diff --git a/dialog_darwin.m b/dialog_darwin.m
new file mode 100644
index 0000000..4fb9e3e
--- /dev/null
+++ b/dialog_darwin.m
@@ -0,0 +1,30 @@
+// 19 august 2014
+
+#import "objc_darwin.h"
+#import <Cocoa/Cocoa.h>
+
+#define toNSWindow(x) ((NSWindow *) (x))
+
+void openFile(id parent, void *data)
+{
+ NSOpenPanel *op;
+
+ op = [NSOpenPanel openPanel];
+ [op setCanChooseFiles:YES];
+ [op setCanChooseDirectories:NO];
+ [op setResolvesAliases:NO];
+ [op setAllowsMultipleSelection:NO];
+ [op setShowsHiddenFiles:YES];
+ [op setCanSelectHiddenExtension:NO];
+ [op setExtensionHidden:NO];
+ [op setAllowsOtherFileTypes:YES];
+ [op setTreatsFilePackagesAsDirectories:YES];
+ [op beginSheetModalForWindow:toNSWindow(parent) completionHandler:^(NSInteger ret){
+ if (ret != NSFileHandlingPanelOKButton) {
+ finishOpenFile(NULL, data);
+ return;
+ }
+ // string freed on the Go side
+ finishOpenFile(strdup([[[op URL] path] UTF8String]), data);
+ }];
+}