]> gitweb.factorcode.org Git - factor.git/blob - basis/cocoa/dialogs/dialogs.factor
74387d63ef4585f16c189cdada4ee27ebb90f0b4
[factor.git] / basis / cocoa / dialogs / dialogs.factor
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 ;
5 IN: cocoa.dialogs
6
7 : <NSOpenPanel> ( -- panel )
8     NSOpenPanel -> openPanel
9     dup 1 -> setCanChooseFiles:
10     dup 0 -> setCanChooseDirectories:
11     dup 1 -> setResolvesAliases:
12     dup 1 -> setAllowsMultipleSelection: ;
13
14 : <NSDirPanel> ( -- panel ) <NSOpenPanel>
15    dup 1 -> setCanChooseDirectories: ;
16
17 : <NSSavePanel> ( -- panel )
18     NSSavePanel -> savePanel
19     dup 1 -> setCanChooseFiles:
20     dup 0 -> setCanChooseDirectories:
21     dup 0 -> setAllowsMultipleSelection: ;
22
23 CONSTANT: NSOKButton 1
24 CONSTANT: NSCancelButton 0
25
26 : (open-panel) ( panel -- paths )
27     dup -> runModal NSOKButton =
28     [ -> filenames CF>string-array ] [ drop f ] if ;
29
30 : open-panel ( -- paths ) <NSOpenPanel> (open-panel) ;
31
32 : open-dir-panel ( -- paths ) <NSDirPanel> (open-panel) ;
33
34 : split-path ( path -- dir file )
35     "/" split1-last [ "" or <NSString> ] bi@ ;
36
37 : save-panel ( path -- path/f )
38     [ <NSSavePanel> dup ] dip
39     split-path -> runModalForDirectory:file: NSOKButton =
40     [ -> filename CF>string ] [ drop f ] if ;