Ivan Safrin пре 12 година
родитељ
комит
73f9b3742e

+ 20 - 8
IDE/Contents/Source/PolycodeIDEApp.cpp

@@ -357,6 +357,7 @@ void PolycodeIDEApp::openProject() {
 	exts.push_back("polyproject");
 	frame->showFileBrowser(CoreServices::getInstance()->getCore()->getUserHomeDirectory(),	false, exts, false);
 	frame->fileDialog->addEventListener(this, UIEvent::OK_EVENT);
+	frame->fileDialog->action = "openProject";
 #else
 	vector<CoreFileExtension> extensions;
 	CoreFileExtension ext;
@@ -453,7 +454,13 @@ void PolycodeIDEApp::runProject() {
 }
 
 void PolycodeIDEApp::addFiles() {
-	if(projectManager->getActiveProject()) {	
+	if(projectManager->getActiveProject()) {
+#ifdef USE_POLYCODEUI_FILE_DIALOGS
+		std::vector<String> exts;
+		frame->showFileBrowser(CoreServices::getInstance()->getCore()->getUserHomeDirectory(),	false, exts, false);
+		frame->fileDialog->addEventListener(this, UIEvent::OK_EVENT);
+		frame->fileDialog->action = "addFiles";
+#else	
 		vector<CoreFileExtension> extensions;		
 		std::vector<String> files = core->openFilePicker(extensions, true);				
 		
@@ -462,8 +469,9 @@ void PolycodeIDEApp::addFiles() {
 			core->copyDiskItem(files[i], projectManager->activeFolder + "/" + entry.name);
 		}
 		
-		frame->getProjectBrowser()->refreshProject(projectManager->getActiveProject());		
-	}			
+		frame->getProjectBrowser()->refreshProject(projectManager->getActiveProject());
+#endif
+	}		
 }
 
 void PolycodeIDEApp::findText() {
@@ -577,12 +585,16 @@ void PolycodeIDEApp::handleEvent(Event *event) {
 		if(event->getEventCode() == UIEvent::OK_EVENT && event->getEventType() == "UIEvent") {
 			String path = frame->fileDialog->getSelection();
 			if(path != "") {
-				PolycodeProject *project = projectManager->openProject(path);
-				if(project) {
-					projectManager->setActiveProject(project);
-					OSFileEntry projectEntry =	OSFileEntry(project->getProjectFile(), OSFileEntry::TYPE_FILE);
+				if(frame->fileDialog->action == "openProject") {
+					PolycodeProject *project = projectManager->openProject(path);
+					if(project) {
+						projectManager->setActiveProject(project);
+					}
+				} else if(frame->fileDialog->action == "addFiles") {
+					OSFileEntry entry = OSFileEntry(path, OSFileEntry::TYPE_FILE);
+					core->copyDiskItem(path, projectManager->activeFolder + "/" + entry.name);
+					frame->getProjectBrowser()->refreshProject(projectManager->getActiveProject());
 				}
-				
 			}
 		}
 	}

+ 2 - 0
Modules/Contents/UI/Include/PolyUIFileDialog.h

@@ -106,6 +106,8 @@ namespace Polycode {
 			 * 		   (base path + relative path to top level directory)
 			 */
 			String getSelection();
+
+			String action;
 		protected:
 
 			String selection;

+ 4 - 0
Modules/Contents/UI/Source/PolyUIFileDialog.cpp

@@ -118,6 +118,10 @@ UIFileDialog::UIFileDialog(String baseDir, bool foldersOnly, std::vector<String>
 }
 
 bool UIFileDialog::canOpen(String extension) {
+	if(extensions.empty()) {
+		return true;
+	}
+	
 	for(int i=0; i < extensions.size(); i++) {
 		if(extensions[i] == extension) {
 			return true;