Просмотр исходного кода

Implemented saveFilePicker on OS X

Ivan Safrin 11 лет назад
Родитель
Сommit
a8d3b1351a
2 измененных файлов с 31 добавлено и 0 удалено
  1. 1 0
      Core/Contents/Include/PolyCocoaCore.h
  2. 30 0
      Core/Contents/Source/PolyCocoaCore.mm

+ 1 - 0
Core/Contents/Include/PolyCocoaCore.h

@@ -132,6 +132,7 @@ namespace Polycode {
 		void removeDiskItem(const String& itemPath);
 		String openFolderPicker();
 		vector<String> openFilePicker(vector<CoreFileExtension> extensions, bool allowMultiple);
+        String saveFilePicker(std::vector<CoreFileExtension> extensions);
 		
 		String executeExternalCommand(String command, String args, String inDirectory="");
 		

+ 30 - 0
Core/Contents/Source/PolyCocoaCore.mm

@@ -571,6 +571,36 @@ String CocoaCore::openFolderPicker() {
 	}	
 }
 
+String CocoaCore::saveFilePicker(std::vector<CoreFileExtension> extensions) {
+	unlockMutex(eventMutex);	    
+    String retString;
+  	NSSavePanel *attachmentPanel = [NSSavePanel savePanel];
+    
+	[attachmentPanel setCanCreateDirectories: YES];
+
+	NSMutableArray *types = nil;
+    
+	if(extensions.size() > 0) {
+		types = [[NSMutableArray alloc] init];
+		for(int i=0; i < extensions.size(); i++) {
+			CoreFileExtension extInfo = extensions[i];
+			[types addObject: [NSString stringWithUTF8String: extInfo.extension.c_str()]];
+		}
+	}
+	[attachmentPanel setAllowedFileTypes:types];
+    
+	if ( [attachmentPanel runModal] == NSOKButton )
+	{
+		NSURL* url = [attachmentPanel URL];
+        if(url) {
+            NSString* fileName = [url path];
+            retString = [fileName UTF8String];
+		}
+	}
+    
+    return retString;
+}
+
 vector<String> CocoaCore::openFilePicker(vector<CoreFileExtension> extensions, bool allowMultiple) {
 	unlockMutex(eventMutex);	
 	vector<String> retVector;