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

Fix for file dialog on Mac, add files to project option

Ivan Safrin 13 лет назад
Родитель
Сommit
35eb2dbaa1

+ 16 - 10
Core/Contents/Source/PolyCocoaCore.mm

@@ -513,21 +513,27 @@ vector<String> CocoaCore::openFilePicker(vector<CoreFileExtension> extensions, b
 	[attachmentPanel setCanChooseDirectories:NO];
 	[attachmentPanel setAllowsMultipleSelection: allowMultiple];
 	
-	NSMutableArray *types = [[NSMutableArray alloc] init];
-	
-	for(int i=0; i < extensions.size(); i++) {	
-		CoreFileExtension extInfo = extensions[i];
-		[types addObject: [NSString stringWithUTF8String: extInfo.extension.c_str()]];
+	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()]];
+		}
 	}
 	
 	if ( [attachmentPanel runModalForDirectory:nil file:nil types:types] == NSOKButton )
 	{
 		NSArray* files = [attachmentPanel filenames];
-		NSString* fileName = [files objectAtIndex:0];
-		retVector.push_back([fileName UTF8String]);
-	} else {
-		retVector.push_back("");
-	}	
+	
+		if(files) {
+			for (int i=0; i < [files count]; i++) {		
+				NSString* fileName = [files objectAtIndex:i];
+				retVector.push_back([fileName UTF8String]);
+			}
+		}
+	}
 	
 	return retVector;
 }

+ 3 - 1
IDE/Contents/Include/PolycodeIDEApp.h

@@ -67,7 +67,9 @@ public:
 	void doRemoveFile();
 	void browseExamples();
 	void newProject();
-	void newFile();	
+	void newFile();
+	
+	void addFiles();
 	
 	void newGroup();
 	void openProject();

+ 16 - 10
IDE/Contents/Source/PolycodeIDEApp.cpp

@@ -222,6 +222,20 @@ void PolycodeIDEApp::runProject() {
 	}
 }
 
+void PolycodeIDEApp::addFiles() {
+	if(projectManager->getActiveProject()) {	
+		vector<CoreFileExtension> extensions;		
+		std::vector<String> files = core->openFilePicker(extensions, true);				
+		
+		for(int i=0; i < files.size(); i++) {
+			OSFileEntry entry = OSFileEntry(files[i], OSFileEntry::TYPE_FILE);
+			core->copyDiskItem(files[i], projectManager->activeFolder + "/" + entry.name);
+		}
+		
+		frame->getProjectBrowser()->refreshProject(projectManager->getActiveProject());		
+	}			
+}
+
 void PolycodeIDEApp::findText() {
 	if(editorManager->getCurrentEditor()) {
 		if(editorManager->getCurrentEditor()->getEditorType() == "PolycodeTextEditor") {
@@ -319,18 +333,10 @@ void PolycodeIDEApp::handleEvent(Event *event) {
 				case PolycodeProjectBrowserEvent::HANDLE_MENU_COMMAND:
 					PolycodeProjectBrowserEvent *bEvent = (PolycodeProjectBrowserEvent*) event;
 					
-/*
-			contextMenu->addOption("Add New File", "add_new_file");
-			contextMenu->addOption("Add New Project", "add_new_project");
-			contextMenu->addOption("Add New Folder", "add_new_folder");			
-			contextMenu->addOption("--------", "");			
-			contextMenu->addOption("Refresh", "refresh");
-			contextMenu->addOption("Rename", "rename");						
-			contextMenu->addOption("--------", "");		
-			contextMenu->addOption("Remove", "remove");	
-*/					
 					if(bEvent->command == "add_new_file") {					
 						newFile();
+					} else if(bEvent->command == "add_files") {
+						addFiles();
 					} else if(bEvent->command == "add_new_project") {
 						newProject();
 					} else if(bEvent->command == "add_new_folder") {				

+ 7 - 4
IDE/Contents/Source/PolycodeProjectBrowser.cpp

@@ -114,11 +114,14 @@ void PolycodeProjectBrowser::handleEvent(Event *event) {
 			if(inputEvent->mouseButton == CoreInput::MOUSE_BUTTON2) {				
 
 			contextMenu = globalMenu->showMenuAtMouse(130);
-			
-			contextMenu->addOption("Add New File", "add_new_file");
-			contextMenu->addOption("Add New Project", "add_new_project");
-			contextMenu->addOption("Add New Folder", "add_new_folder");			
+
+
+			contextMenu->addOption("New File", "add_new_file");
+			contextMenu->addOption("New Project", "add_new_project");
+			contextMenu->addOption("New Folder", "add_new_folder");			
 			contextMenu->addOption("----------------", "");			
+			contextMenu->addOption("Add external files", "add_files");			
+			contextMenu->addOption("----------------", "");
 			contextMenu->addOption("Refresh", "refresh");
 			contextMenu->addOption("Rename", "rename");						
 			contextMenu->addOption("----------------", "");