Browse Source

Needed to modify the Create Project to copy the entire template directory in first, then add the cache file, then rename the existing .atomic file if there is one. This is so that projects that have more content than just the Resources directory will get all of their necessary pieces moved over.

Shaddock Heath 10 years ago
parent
commit
4eed2289f8
1 changed files with 36 additions and 28 deletions
  1. 36 28
      Script/AtomicEditor/ui/modal/CreateProject.ts

+ 36 - 28
Script/AtomicEditor/ui/modal/CreateProject.ts

@@ -84,47 +84,55 @@ class CreateProject extends ModalWindow {
 
 
         folder = Atomic.addTrailingSlash(folder);
-
         if (!fileSystem.dirExists(folder)) {
 
-            var utils = new Editor.FileUtils();
-            utils.createDirs(folder);
-
-            utils.createDirs(folder + "Cache");
+            // Determine if we have a language template for the selected language.
+            let templateDetail: ProjectTemplates.ProjectTemplateDetail;
+            let selectedLanguage = this.projectLanguageField.text;
 
-            if (!fileSystem.dirExists(folder)) {
-                var message = "Unable to create folder: " + folder + "\n\nPlease choose a different root folder or project name";
-                EditorUI.showModalError("New Project Editor Error", message);
-                return false;
+            for (let i = 0; i < this.projectTemplate.templates.length; i++) {
+                if (this.projectTemplate.templates[i].language === selectedLanguage) {
+                    templateDetail = this.projectTemplate.templates[i];
+                    break;
+                }
             }
-        }
 
-        // Do the creation!
-        let templateDetail: ProjectTemplates.ProjectTemplateDetail;
-        let selectedLanguage = this.projectLanguageField.text;
+            // Do the creation!
+            if (templateDetail) {
 
-        for (let i = 0; i < this.projectTemplate.templates.length; i++) {
-            if (this.projectTemplate.templates[i].language === selectedLanguage) {
-                templateDetail = this.projectTemplate.templates[i];
-                break;
-            }
-        }
+                fileSystem.copyDir(templateDetail.folder, folder);
 
-        if (templateDetail) {
+                var utils = new Editor.FileUtils();
 
-            fileSystem.copyDir(templateDetail.folder + "Resources", folder + "Resources");
+                utils.createDirs(folder + "Cache");
 
-            var file = new Atomic.File(folder + name + ".atomic", Atomic.FILE_WRITE);
-            file.close();
+                if (!fileSystem.dirExists(folder)) {
+                    var message = "Unable to create folder: " + folder + "\n\nPlease choose a different root folder or project name";
+                    EditorUI.showModalError("New Project Editor Error", message);
+                    return false;
+                }
 
-            this.hide();
+                // Look for the .atomic project file and if it exists, then rename it
+                let fileResults = fileSystem.scanDir(folder, "*.atomic", Atomic.SCAN_FILES, false);
+                if (fileResults.length === 1) {
+                    fileSystem.rename(folder + fileResults[0], folder + name + ".atomic");
+                } else {
+                    // Just create the file.  We either don't have one existing, or we have more than one and don't know which one to rename
+                    var file = new Atomic.File(folder + name + ".atomic", Atomic.FILE_WRITE);
+                    file.close();
+                }
 
-            this.sendEvent(EditorEvents.LoadProject, { path: folder });
+                this.hide();
 
-            return true;
-        } else {
-            return false;
+                this.sendEvent(EditorEvents.LoadProject, { path: folder });
+                return true;
+            } else {
+                var message = "Unable to create project for language:  " + selectedLanguage + "\n\nPlease choose a different language";
+                EditorUI.showModalError("New Project Editor Error", message);
+                return false;
+            }
         }
+        return false;
     }
 
     handleWidgetEvent(ev: Atomic.UIWidgetEvent) {