Skip to content

Commit a8d3b13

Browse files
committed
Implemented saveFilePicker on OS X
1 parent b6663d2 commit a8d3b13

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

Core/Contents/Include/PolyCocoaCore.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ namespace Polycode {
132132
void removeDiskItem(const String& itemPath);
133133
String openFolderPicker();
134134
vector<String> openFilePicker(vector<CoreFileExtension> extensions, bool allowMultiple);
135+
String saveFilePicker(std::vector<CoreFileExtension> extensions);
135136

136137
String executeExternalCommand(String command, String args, String inDirectory="");
137138

Core/Contents/Source/PolyCocoaCore.mm

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,36 @@ long getThreadID() {
571571
}
572572
}
573573

574+
String CocoaCore::saveFilePicker(std::vector<CoreFileExtension> extensions) {
575+
unlockMutex(eventMutex);
576+
String retString;
577+
NSSavePanel *attachmentPanel = [NSSavePanel savePanel];
578+
579+
[attachmentPanel setCanCreateDirectories: YES];
580+
581+
NSMutableArray *types = nil;
582+
583+
if(extensions.size() > 0) {
584+
types = [[NSMutableArray alloc] init];
585+
for(int i=0; i < extensions.size(); i++) {
586+
CoreFileExtension extInfo = extensions[i];
587+
[types addObject: [NSString stringWithUTF8String: extInfo.extension.c_str()]];
588+
}
589+
}
590+
[attachmentPanel setAllowedFileTypes:types];
591+
592+
if ( [attachmentPanel runModal] == NSOKButton )
593+
{
594+
NSURL* url = [attachmentPanel URL];
595+
if(url) {
596+
NSString* fileName = [url path];
597+
retString = [fileName UTF8String];
598+
}
599+
}
600+
601+
return retString;
602+
}
603+
574604
vector<String> CocoaCore::openFilePicker(vector<CoreFileExtension> extensions, bool allowMultiple) {
575605
unlockMutex(eventMutex);
576606
vector<String> retVector;

0 commit comments

Comments
 (0)