Browse Source

Adding BuldComplete UI, adding UIWidget state enum, WebGL build now saves settings, adding show in explorer upon build complete

Josh Engebretson 10 years ago
parent
commit
4c0e57e39e

+ 57 - 0
Script/AtomicEditor/ui/modal/build/BuildComplete.ts

@@ -0,0 +1,57 @@
+
+
+class BuildComplete extends Atomic.UIWindow {
+
+    constructor(parent: Atomic.UIWidget, ev: ToolCore.BuildCompleteEvent) {
+
+        super();
+
+        parent.addChild(this);
+
+        this.buildFolder = ev.buildFolder;
+
+        this.text = ev.success ? "Build Complete" : "Build Failed";
+        this.load("AtomicEditor/editor/ui/buildcomplete.tb.txt");
+
+        this.resizeToFitContent();
+        this.center();
+
+        var reveal = <Atomic.UIButton>this.getWidget("reveal");
+
+        if (!ev.success)
+            reveal.setState(Atomic.UI_WIDGET_STATE_DISABLED, true);
+
+
+        this.subscribeToEvent(this, "WidgetEvent", (data) => this.handleWidgetEvent(data));    
+
+    }
+
+    handleWidgetEvent(ev: Atomic.UIWidgetEvent): boolean {
+
+        if (ev.type == Atomic.UI_EVENT_TYPE_CLICK) {
+
+            if (ev.target.id == "reveal") {
+
+                console.log("REVEAL!");
+
+                var utils = new Editor.FileUtils();
+                utils.revealInFinder(this.buildFolder);
+
+            }
+
+            if (ev.target.id == "ok") {
+                // passed up to build output window for now
+                // which closes both
+                return false;
+            }
+
+        }
+
+        return false;
+    }
+
+    buildFolder: string;
+
+}
+
+export = BuildComplete;

+ 7 - 0
Script/AtomicEditor/ui/modal/build/BuildOutput.ts

@@ -1,6 +1,7 @@
 
 import EditorUI = require("../../EditorUI");
 import ModalWindow = require("../ModalWindow");
+import BuildComplete = require("./BuildComplete");
 
 class BuildOutput extends ModalWindow {
 
@@ -25,6 +26,12 @@ class BuildOutput extends ModalWindow {
 
         });
 
+        this.subscribeToEvent("BuildComplete", (ev: ToolCore.BuildCompleteEvent) => {
+
+            new BuildComplete(this, ev);
+
+        });
+
     }
 
     handleWidgetEvent(ev: Atomic.UIWidgetEvent): boolean {

+ 14 - 7
Script/AtomicEditor/ui/modal/build/BuildSettingsWindow.ts

@@ -74,6 +74,18 @@ class BuildSettingsWindow extends ModalWindow {
         this.subscribeToEvent(this, "WidgetEvent", (ev) => this.handleWidgetEvent(ev));
     }
 
+    commitBuildSettings() {
+
+      for (var name in this.platformInfo) {
+
+          <BuildSettingsWidget>(this.platformInfo[name].widget).storeValues();
+      }
+
+        ToolCore.toolSystem.project.saveBuildSettings();
+
+
+    }
+
     handleWidgetEvent(ev: Atomic.UIWidgetEvent): boolean {
 
         if (ev.type == Atomic.UI_EVENT_TYPE_CLICK) {
@@ -87,19 +99,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.commitBuildSettings();
                 this.hide();
                 return true;
             }
 
             if (ev.target.id == "build") {
 
+                this.commitBuildSettings();
                 this.hide();
                 EditorUI.getModelOps().showBuild();
                 return true;

+ 31 - 1
Script/AtomicEditor/ui/modal/build/platforms/WebSettingsWidget.ts

@@ -6,14 +6,44 @@ class WebSettingsWidget extends Atomic.UIWidget {
 
       super();
 
+      this.settings = ToolCore.toolSystem.project.buildSettings.webBuildSettings;
+
       this.load("AtomicEditor/editor/ui/buildsettings_html5.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.refreshWidgets();
+
+    }
+
+    refreshWidgets() {
+
+        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.WebBuildSettings;
+
+
 }
 
 export = WebSettingsWidget;

+ 4 - 8
Script/TypeScript/AtomicWork.d.ts

@@ -244,14 +244,10 @@ declare module ToolCore {
 
     export interface BuildCompleteEvent {
 
-        platformID:number;
-
-    }
-
-    export interface BuildFailedEvent {
-
-        platformID:number;
-        message:string;
+      platformID:number;
+      message:string;
+      success:boolean;
+      buildFolder:string;
 
     }
 

+ 13 - 9
Source/Atomic/UI/UIWidget.cpp

@@ -284,10 +284,14 @@ void UIWidget::Center()
     if (!widget_)
         return;
 
-    // this should center on parent widget, not root
-    UI* ui = GetSubsystem<UI>();
     TBRect rect = widget_->GetRect();
-    TBWidget* root = ui->GetRootWidget();
+    TBWidget* root = widget_->GetParent();
+    if (!root)
+    {
+        UI* ui = GetSubsystem<UI>();
+        ui->GetRootWidget();
+    }
+
     TBRect bounds(0, 0, root->GetRect().w, root->GetRect().h);
     widget_->SetRect(rect.CenterIn(bounds).MoveIn(bounds).Clip(bounds));
 
@@ -425,7 +429,7 @@ void UIWidget::SetId(const String& id)
 
 }
 
-void UIWidget::SetState(/*WIDGET_STATE*/ unsigned state, bool on)
+void UIWidget::SetState(UI_WIDGET_STATE state, bool on)
 {
     if (!widget_)
         return;
@@ -512,7 +516,7 @@ double UIWidget::GetValue()
 }
 
 
-bool UIWidget::GetState(/*WIDGET_STATE*/ unsigned state)
+bool UIWidget::GetState(UI_WIDGET_STATE state)
 {
     if (!widget_)
         return false;
@@ -521,7 +525,7 @@ bool UIWidget::GetState(/*WIDGET_STATE*/ unsigned state)
 
 }
 
-void UIWidget::SetStateRaw(/*WIDGET_STATE*/ unsigned state)
+void UIWidget::SetStateRaw(UI_WIDGET_STATE state)
 {
     if (!widget_)
         return;
@@ -530,12 +534,12 @@ void UIWidget::SetStateRaw(/*WIDGET_STATE*/ unsigned state)
 
 }
 
-/*WIDGET_STATE*/ unsigned UIWidget::GetStateRaw()
+UI_WIDGET_STATE UIWidget::GetStateRaw()
 {
     if (!widget_)
-        return false;
+        return UI_WIDGET_STATE_NONE;
 
-    return (unsigned) widget_->GetStateRaw();
+    return (UI_WIDGET_STATE) widget_->GetStateRaw();
 
 }
 

+ 18 - 4
Source/Atomic/UI/UIWidget.h

@@ -109,6 +109,20 @@ enum UI_TEXT_ALIGN
     UI_TEXT_ALIGN_CENTER = tb::TB_TEXT_ALIGN_CENTER
 };
 
+enum UI_WIDGET_STATE {
+
+    UI_WIDGET_STATE_NONE = tb::WIDGET_STATE_NONE,
+    UI_WIDGET_STATE_DISABLED = tb::WIDGET_STATE_DISABLED,
+    UI_WIDGET_STATE_FOCUSED = tb::WIDGET_STATE_FOCUSED,
+    UI_WIDGET_STATE_PRESSED = tb::WIDGET_STATE_PRESSED,
+    UI_WIDGET_STATE_SELECTED = tb::WIDGET_STATE_SELECTED,
+    UI_WIDGET_STATE_HOVERED = tb::WIDGET_STATE_HOVERED,
+
+    UI_WIDGET_STATE_ALL = tb::WIDGET_STATE_ALL
+
+};
+
+
 class UIView;
 class UILayoutParams;
 class UIFontDescription;
@@ -165,14 +179,14 @@ class UIWidget : public Object, public tb::TBWidgetDelegate
     void SetFocusRecursive();
     void OnFocusChanged(bool focused);
 
-    void SetState(/*WIDGET_STATE*/ unsigned state, bool on);
-    bool GetState(/*WIDGET_STATE*/ unsigned state);
+    void SetState(UI_WIDGET_STATE state, bool on);
+    bool GetState(UI_WIDGET_STATE state);
 
     void SetVisibility(UI_WIDGET_VISIBILITY visibility);
     UI_WIDGET_VISIBILITY GetVisibility();
 
-    void SetStateRaw(/*WIDGET_STATE*/ unsigned state);
-    /*WIDGET_STATE*/ unsigned GetStateRaw();
+    void SetStateRaw(UI_WIDGET_STATE state);
+   UI_WIDGET_STATE GetStateRaw();
 
     void Invalidate();
     void Die();

+ 3 - 3
Source/ToolCore/Build/BuildBase.cpp

@@ -54,9 +54,9 @@ void BuildBase::SendBuildFailure(const String& message)
 {
 
     VariantMap buildError;
-    buildError[BuildFailed::P_PLATFORMID] = platformID_;
-    buildError[BuildFailed::P_MESSAGE] = message;
-    SendEvent(E_BUILDFAILED, buildError);
+    buildError[BuildComplete::P_PLATFORMID] = platformID_;
+    buildError[BuildComplete::P_MESSAGE] = message;
+    SendEvent(E_BUILDCOMPLETE, buildError);
 
 }
 

+ 3 - 6
Source/ToolCore/Build/BuildEvents.h

@@ -14,6 +14,9 @@ namespace ToolCore
 EVENT(E_BUILDCOMPLETE, BuildComplete)
 {
     PARAM(P_PLATFORMID, PlatformID); // unsigned (PLATFORMID)
+    PARAM(P_BUILDFOLDER, BuildFolder); // String
+    PARAM(P_MESSAGE, Message); // String
+    PARAM(P_SUCCESS, Success); // Bool
 }
 
 EVENT(E_BUILDOUTPUT, BuildOutput)
@@ -21,10 +24,4 @@ EVENT(E_BUILDOUTPUT, BuildOutput)
     PARAM(P_TEXT, Text); // string
 }
 
-EVENT(E_BUILDFAILED, BuildFailed)
-{
-    PARAM(P_PLATFORMID, PlatformID); // unsigned (PLATFORMID)
-    PARAM(P_MESSAGE, Message); // String
-}
-
 }

+ 6 - 13
Source/ToolCore/Build/BuildSystem.cpp

@@ -46,22 +46,15 @@ void BuildSystem::QueueBuild(BuildBase* buildBase)
     queuedBuilds_.Push(SharedPtr<BuildBase>(buildBase));
 }
 
-void BuildSystem::BuildComplete(PlatformID platform, const String &buildFolder, bool success, bool fail3D)
+void BuildSystem::BuildComplete(PlatformID platform, const String &buildFolder, bool success, const String& buildMessage)
 {
     VariantMap eventData;
 
-    if (success)
-    {
-        eventData[BuildComplete::P_PLATFORMID] = (unsigned) platform;
-        SendEvent(E_BUILDCOMPLETE, eventData);
-        LOGINFOF("Build Success");
-    }
-    else
-    {
-        eventData[BuildFailed::P_PLATFORMID] = (unsigned) platform;
-        SendEvent(E_BUILDFAILED, eventData);
-        LOGINFOF("Build Failed");
-    }
+    eventData[BuildComplete::P_PLATFORMID] = (unsigned) platform;
+    eventData[BuildComplete::P_BUILDFOLDER] = buildFolder;
+    eventData[BuildComplete::P_SUCCESS] = success;
+    eventData[BuildComplete::P_MESSAGE] = buildMessage;
+    SendEvent(E_BUILDCOMPLETE, eventData);
 
     currentBuild_ = 0;
 }

+ 1 - 1
Source/ToolCore/Build/BuildSystem.h

@@ -32,7 +32,7 @@ public:
 
     bool StartNextBuild();
 
-    void BuildComplete(PlatformID platform, const String& buildFolder, bool success = true, bool fail3D = false);
+    void BuildComplete(PlatformID platform, const String& buildFolder, bool success = true, const String& buildMessage = String::EMPTY);
 
 private:
 

+ 6 - 6
Source/ToolCore/Command/BuildCmd.cpp

@@ -48,12 +48,13 @@ bool BuildCmd::Parse(const Vector<String>& arguments, unsigned startIndex, Strin
 
 void BuildCmd::HandleBuildComplete(StringHash eventType, VariantMap& eventData)
 {
-    Finished();
-}
+    if (!eventData[BuildComplete::P_SUCCESS].GetBool())
+    {
+        Error("Build Failed");
+    }
+    else
+        Finished();
 
-void BuildCmd::HandleBuildFailed(StringHash eventType, VariantMap& eventData)
-{
-    Error("Build Failed");
 }
 
 void BuildCmd::Run()
@@ -88,7 +89,6 @@ void BuildCmd::Run()
     buildSystem->QueueBuild(buildBase);
 
     SubscribeToEvent(E_BUILDCOMPLETE, HANDLER(BuildCmd, HandleBuildComplete));
-    SubscribeToEvent(E_BUILDFAILED, HANDLER(BuildCmd, HandleBuildFailed));
 
     // TODO: parallel/serial builds
     buildSystem->StartNextBuild();

+ 0 - 1
Source/ToolCore/Command/BuildCmd.h

@@ -24,7 +24,6 @@ public:
 private:
 
     void HandleBuildComplete(StringHash eventType, VariantMap& eventData);
-    void HandleBuildFailed(StringHash eventType, VariantMap& eventData);
 
     String buildPlatform_;