From ed371f2b0d2bd166a187f1780d17b43a3408b62e Mon Sep 17 00:00:00 2001 From: Colin Davidson Date: Sat, 18 Feb 2023 14:56:51 -0800 Subject: [PATCH] Add open file dialog panel to foundation --- vendor/darwin/Foundation/NSOpenPanel.odin | 31 +++++++++++++++++++++++ vendor/darwin/Foundation/NSPanel.odin | 9 +++++++ vendor/darwin/Foundation/NSSavePanel.odin | 9 +++++++ vendor/darwin/Foundation/NSURL.odin | 6 ++--- 4 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 vendor/darwin/Foundation/NSOpenPanel.odin create mode 100644 vendor/darwin/Foundation/NSPanel.odin create mode 100644 vendor/darwin/Foundation/NSSavePanel.odin diff --git a/vendor/darwin/Foundation/NSOpenPanel.odin b/vendor/darwin/Foundation/NSOpenPanel.odin new file mode 100644 index 000000000..fe39fef7b --- /dev/null +++ b/vendor/darwin/Foundation/NSOpenPanel.odin @@ -0,0 +1,31 @@ +package objc_Foundation + +@(objc_class="NSOpenPanel") +OpenPanel :: struct{ using _: SavePanel } + +@(objc_type=OpenPanel, objc_name="openPanel", objc_is_class_method=true) +OpenPanel_openPanel :: proc() -> ^OpenPanel { + return msgSend(^OpenPanel, OpenPanel, "openPanel") +} + +@(objc_type=OpenPanel, objc_name="URLs") +OpenPanel_URLs :: proc(self: ^OpenPanel) -> ^Array { + return msgSend(^Array, self, "URLs") +} + +@(objc_type=OpenPanel, objc_name="setCanChooseFiles") +OpenPanel_setCanChooseFiles :: proc(self: ^OpenPanel, setting: BOOL) { + msgSend(nil, self, "setCanChooseFiles:", setting) +} +@(objc_type=OpenPanel, objc_name="setCanChooseDirectories") +OpenPanel_setCanChooseDirectories :: proc(self: ^OpenPanel, setting: BOOL) { + msgSend(nil, self, "setCanChooseDirectories:", setting) +} +@(objc_type=OpenPanel, objc_name="setResolvesAliases") +OpenPanel_setResolvesAliases :: proc(self: ^OpenPanel, setting: BOOL) { + msgSend(nil, self, "setResolvesAliases:", setting) +} +@(objc_type=OpenPanel, objc_name="setAllowsMultipleSelection") +OpenPanel_setAllowsMultipleSelection :: proc(self: ^OpenPanel, setting: BOOL) { + msgSend(nil, self, "setAllowsMultipleSelection:", setting) +} diff --git a/vendor/darwin/Foundation/NSPanel.odin b/vendor/darwin/Foundation/NSPanel.odin new file mode 100644 index 000000000..4bdf08cdb --- /dev/null +++ b/vendor/darwin/Foundation/NSPanel.odin @@ -0,0 +1,9 @@ +package objc_Foundation + +ModalResponse :: enum UInteger { + Cancel = 0, + OK = 1, +} + +@(objc_class="NSPanel") +Panel :: struct{ using _: Window } diff --git a/vendor/darwin/Foundation/NSSavePanel.odin b/vendor/darwin/Foundation/NSSavePanel.odin new file mode 100644 index 000000000..e38620613 --- /dev/null +++ b/vendor/darwin/Foundation/NSSavePanel.odin @@ -0,0 +1,9 @@ +package objc_Foundation + +@(objc_class="NSSavePanel") +SavePanel :: struct{ using _: Panel } + +@(objc_type=SavePanel, objc_name="runModal") +SavePanel_runModal :: proc(self: ^SavePanel) -> ModalResponse { + return msgSend(ModalResponse, self, "runModal") +} diff --git a/vendor/darwin/Foundation/NSURL.odin b/vendor/darwin/Foundation/NSURL.odin index 72e5fc906..9e54302bf 100644 --- a/vendor/darwin/Foundation/NSURL.odin +++ b/vendor/darwin/Foundation/NSURL.odin @@ -25,6 +25,6 @@ URL_initFileURLWithPath :: proc(self: ^URL, path: ^String) -> ^URL { } @(objc_type=URL, objc_name="fileSystemRepresentation") -URL_fileSystemRepresentation :: proc(self: ^URL) -> ^String { - return msgSend(^String, self, "fileSystemRepresentation") -} \ No newline at end of file +URL_fileSystemRepresentation :: proc(self: ^URL) -> cstring { + return msgSend(cstring, self, "fileSystemRepresentation") +}