1 ! Copyright (C) 2006, 2008 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: cocoa cocoa.application cocoa.classes
4 core-foundation.strings kernel splitting ;
7 : <NSOpenPanel> ( -- panel )
8 NSOpenPanel -> openPanel
9 dup 1 -> setCanChooseFiles:
10 dup 0 -> setCanChooseDirectories:
11 dup 1 -> setResolvesAliases:
12 dup 1 -> setAllowsMultipleSelection: ;
14 : <NSDirPanel> ( -- panel ) <NSOpenPanel>
15 dup 1 -> setCanChooseDirectories: ;
17 : <NSSavePanel> ( -- panel )
18 NSSavePanel -> savePanel
19 dup 1 -> setCanChooseFiles:
20 dup 0 -> setCanChooseDirectories:
21 dup 0 -> setAllowsMultipleSelection: ;
23 CONSTANT: NSOKButton 1
24 CONSTANT: NSCancelButton 0
26 : (open-panel) ( panel -- paths )
27 dup -> runModal NSOKButton =
28 [ -> filenames CF>string-array ] [ drop f ] if ;
30 : open-panel ( -- paths ) <NSOpenPanel> (open-panel) ;
32 : open-dir-panel ( -- paths ) <NSDirPanel> (open-panel) ;
34 : split-path ( path -- dir file )
35 "/" split1-last [ "" or <NSString> ] bi@ ;
37 : save-panel ( path -- path/f )
38 [ <NSSavePanel> dup ] dip
39 split-path -> runModalForDirectory:file: NSOKButton =
40 [ -> filename CF>string ] [ drop f ] if ;