Browse Source

Persisting Mac build settings

Josh Engebretson 10 years ago
parent
commit
0917164533

+ 4 - 4
Script/AtomicEditor/ui/frames/menus/MainFrameMenu.ts

@@ -141,16 +141,16 @@ class MainFrameMenu extends Atomic.ScriptObject {
         } else if (target.id == "menu build popup") {
 
             if (refid == "build build") {
-                var buildNotification = new Atomic.UIMessageWindow(EditorUI.getMainFrame(), "build_notify");
-                buildNotification.show("Build Notification", "Building is currently unavailable in this development snapshot.", Atomic.UI_MESSAGEWINDOW_SETTINGS_OK, true, 300, 140);
+
+                EditorUI.getModelOps().showBuild();
 
                 return true;
 
             } else if (refid == "build settings") {
 
-              EditorUI.getModelOps().showBuildSettings();
+                EditorUI.getModelOps().showBuildSettings();
 
-              return true;
+                return true;
 
             }
 

+ 15 - 1
Script/AtomicEditor/ui/modal/build/BuildSettingsWindow.ts

@@ -10,6 +10,12 @@ import AndroidSettingsWidget = require("./platforms/AndroidSettingsWidget");
 import IOSSettingsWidget = require("./platforms/IOSSettingsWidget");
 import WebSettingsWidget = require("./platforms/WebSettingsWidget");
 
+interface BuildSettingsWidget {
+
+    storeValues();
+
+}
+
 class BuildSettingsWindow extends ModalWindow {
 
     constructor() {
@@ -80,6 +86,14 @@ class BuildSettingsWindow extends ModalWindow {
             }
 
             if (ev.target.id == "ok") {
+
+                for (var name in this.platformInfo) {
+
+                    <BuildSettingsWidget>(this.platformInfo[name].widget).storeValues();
+                }
+
+                ToolCore.toolSystem.project.saveBuildSettings();
+
                 this.hide();
                 return true;
             }
@@ -89,7 +103,7 @@ class BuildSettingsWindow extends ModalWindow {
                 this.hide();
                 EditorUI.getModelOps().showBuild();
                 return true;
-                
+
             }
 
             if (ev.target.id == "set_current_platform") {

+ 8 - 2
Script/AtomicEditor/ui/modal/build/BuildWindow.ts

@@ -50,6 +50,12 @@ class BuildWindow extends ModalWindow {
                 return true;
             }
 
+            if (ev.target.id == "build") {
+                this.build();
+                this.hide();
+                return true;
+            }
+
             if (ev.target.id == "choose_path") {
 
                 var utils = new Editor.FileUtils();
@@ -67,10 +73,11 @@ class BuildWindow extends ModalWindow {
 
     build() {
 
-        /*
         var buildSystem = ToolCore.buildSystem;
         var toolSystem = ToolCore.toolSystem;
 
+        toolSystem.setCurrentPlatform(toolSystem.getPlatformByName("WEB").platformID);
+
         buildSystem.buildPath = "/Users/josh/Desktop/MyBuilds/";
 
         var project = toolSystem.project;
@@ -79,7 +86,6 @@ class BuildWindow extends ModalWindow {
         var buildBase = platform.newBuild(project);
         buildSystem.queueBuild(buildBase);
         buildSystem.startNextBuild();
-        */
 
     }
 

+ 3 - 0
Script/AtomicEditor/ui/modal/build/platforms/AndroidSettingsWidget.ts

@@ -10,6 +10,9 @@ class AndroidSettingsWidget extends Atomic.UIWidget {
 
     }
 
+    storeValues() {
+    }
+
 }
 
 export = AndroidSettingsWidget;

+ 3 - 0
Script/AtomicEditor/ui/modal/build/platforms/IOSSettingsWidget.ts

@@ -10,6 +10,9 @@ class IOSSettingsWidget extends Atomic.UIWidget {
 
     }
 
+    storeValues() {
+    }
+
 }
 
 export = IOSSettingsWidget;

+ 37 - 3
Script/AtomicEditor/ui/modal/build/platforms/MacSettingsWidget.ts

@@ -2,14 +2,48 @@
 
 class MacSettingsWidget extends Atomic.UIWidget {
 
-  constructor() {
+    constructor() {
 
-      super();
+        super();
 
-      this.load("AtomicEditor/editor/ui/buildsettings_mac.tb.txt");
+        this.settings = ToolCore.toolSystem.project.buildSettings.macBuildSettings;
+
+        this.load("AtomicEditor/editor/ui/buildsettings_mac.tb.txt");
+
+        this.appNameEdit = <Atomic.UIEditField>this.getWidget("app_name");
+        this.packageNameEdit = <Atomic.UIEditField>this.getWidget("app_identifier");
+        this.productNameEdit = <Atomic.UIEditField>this.getWidget("product_name");
+        this.companyNameEdit = <Atomic.UIEditField>this.getWidget("company_name");
+
+        this.refreshWidgetsFromSettings();
 
     }
 
+    refreshWidgetsFromSettings() {
+
+        this.appNameEdit.text = this.settings.appName;
+        this.packageNameEdit.text = this.settings.packageName;
+        this.productNameEdit.text = this.settings.productName;
+        this.companyNameEdit.text = this.settings.companyName;
+    }
+
+    storeValues() {
+
+        this.settings.appName = this.appNameEdit.text;
+        this.settings.packageName = this.packageNameEdit.text;
+        this.settings.productName = this.productNameEdit.text;
+        this.settings.companyName = this.companyNameEdit.text;
+
+    }
+
+    appNameEdit: Atomic.UIEditField;
+    packageNameEdit: Atomic.UIEditField;
+    productNameEdit: Atomic.UIEditField;
+    companyNameEdit: Atomic.UIEditField;
+
+    settings: ToolCore.MacBuildSettings;
+
+
 }
 
 export = MacSettingsWidget;

+ 4 - 0
Script/AtomicEditor/ui/modal/build/platforms/WebSettingsWidget.ts

@@ -10,6 +10,10 @@ class WebSettingsWidget extends Atomic.UIWidget {
 
     }
 
+    storeValues() {
+      
+    }
+
 }
 
 export = WebSettingsWidget;

+ 4 - 0
Script/AtomicEditor/ui/modal/build/platforms/WindowsSettingsWidget.ts

@@ -10,6 +10,10 @@ class WindowsSettingsWidget extends Atomic.UIWidget {
 
     }
 
+    storeValues() {
+      
+    }
+
 }
 
 export = WindowsSettingsWidget;

+ 2 - 1
Script/Packages/ToolCore/ToolCore.json

@@ -7,7 +7,8 @@
 							 "Asset", "AssetDatabase", "AssetImporter", "AudioImporter", "ModelImporter", "MaterialImporter", "AnimationImportInfo",
 							 "PrefabImporter", "JavascriptImporter", "TextureImporter", "SpriterImporter", "PEXImporter", "LicenseSystem",
 						 	 "ProjectUserPrefs", "ProjectBuildSettings",
-						 	 "BuildBase", "BuildSystem", "BuildMac", "BuildWeb", "BuildWindows"],
+						 	 "BuildBase", "BuildSystem", "BuildMac", "BuildWeb", "BuildWindows",
+						 	 "ProjectBuildSettings", "MacBuildSettings"],
 	"typescript_decl" : {
 
 		"AssetDatabase" : [

+ 9 - 0
Script/ToolCore/build/BuildSettings.ts

@@ -8,4 +8,13 @@ class BuildSettings {
 
 }
 
+class MacBuildSettings {
+
+    appName:string;
+    package:string;
+    companyName:string;
+    productName:string;
+
+}
+
 export = BuildSettings;

+ 2 - 1
Source/ToolCore/Project/Project.cpp

@@ -62,11 +62,12 @@ bool Project::LoadUserPrefs()
 
 void Project::SaveBuildSettings()
 {
-
+    buildSettings_->Save(GetProjectPath() + "BuildSettings.json");
 }
 
 bool Project::LoadBuildSettings()
 {
+    buildSettings_->Load(GetProjectPath() + "BuildSettings.json");
     return true;
 }
 

+ 47 - 3
Source/ToolCore/Project/ProjectBuildSettings.cpp

@@ -9,8 +9,36 @@
 namespace ToolCore
 {
 
-ProjectBuildSettings::ProjectBuildSettings(Context* context) : Object(context)
+void MacBuildSettings::Write(JSONValue& parent)
 {
+    JSONValue json = parent.CreateChild("MacBuildSettings");
+
+    json.SetString("appName", appName_);
+    json.SetString("packageName", packageName_);
+    json.SetString("companyName", companyName_);
+    json.SetString("productName", productName_);
+
+}
+
+void MacBuildSettings::Read(JSONValue& parent)
+{
+    JSONValue json = parent.GetChild("MacBuildSettings");
+
+    if (json == JSONValue::EMPTY)
+        return;
+
+    appName_ = json.GetString("appName");
+    packageName_ = json.GetString("packageName");
+    companyName_ = json.GetString("companyName");
+    productName_ = json.GetString("productName");
+
+}
+
+ProjectBuildSettings::ProjectBuildSettings(Context* context) : Object(context),
+    macBuildSettings_(new MacBuildSettings())
+{
+
+
 
 }
 
@@ -21,17 +49,33 @@ ProjectBuildSettings::~ProjectBuildSettings()
 
 bool ProjectBuildSettings::Load(const String& path)
 {
-    return true;
+    SharedPtr<File> file(new File(context_, path));
+    if (!file->IsOpen())
+        return false;
+
+    SharedPtr<JSONFile> jsonFile(new JSONFile(context_));
+    bool result = jsonFile->Load(*file);
+    file->Close();
+
+    JSONValue root = jsonFile->GetRoot();
+    if (root == JSONValue::EMPTY)
+        return false;
+
+    macBuildSettings_->Read(root);
+
+    return result;
 }
 
 void ProjectBuildSettings::Save(const String& path)
 {
     SharedPtr<JSONFile> jsonFile(new JSONFile(context_));
 
-    jsonFile->CreateRoot();
+    JSONValue root = jsonFile->CreateRoot();
 
     SharedPtr<File> file(new File(context_, path, FILE_WRITE));
 
+    macBuildSettings_->Write(root);
+
     jsonFile->Save(*file, String("   "));
 
     file->Close();

+ 37 - 0
Source/ToolCore/Project/ProjectBuildSettings.h

@@ -2,12 +2,43 @@
 #pragma once
 
 #include <Atomic/Core/Object.h>
+#include <Atomic/Resource/JSONValue.h>
 
 using namespace Atomic;
 
 namespace ToolCore
 {
 
+class MacBuildSettings : public RefCounted
+{
+    REFCOUNTED(MacBuildSettings)
+
+public:
+
+    MacBuildSettings() {}
+
+    const String& GetAppName() const { return appName_; }
+    const String& GetPackageName() const { return packageName_; }
+    const String& GetCompanyName() const { return companyName_; }
+    const String& GetProductName() const { return productName_; }
+
+    void SetAppName(const String& name) { appName_ = name; }
+    void SetPackageName(const String& packageName) { packageName_ = packageName; }
+    void SetCompanyName(const String& companyName) { companyName_ = companyName; }
+    void SetProductName(const String& productName) { productName_ = productName; }
+
+    void Write(JSONValue& parent);
+    void Read(JSONValue& parent);
+
+private:
+
+    String appName_;
+    String packageName_;
+    String companyName_;
+    String productName_;
+};
+
+
 class ProjectBuildSettings : public Object
 {
     OBJECT(ProjectBuildSettings);
@@ -18,9 +49,15 @@ public:
     /// Destruct.
     virtual ~ProjectBuildSettings();
 
+    MacBuildSettings* GetMacBuildSettings() { return macBuildSettings_; }
+
     bool Load(const String& path);
     void Save(const String& path);
 
+private:
+
+    SharedPtr<MacBuildSettings> macBuildSettings_;
+
 };
 
 }