BuildWindow.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. //
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // LICENSE: Atomic Game Engine Editor and Tools EULA
  4. // Please see LICENSE_ATOMIC_EDITOR_AND_TOOLS.md in repository root for
  5. // license information: https://github.com/AtomicGameEngine/AtomicGameEngine
  6. //
  7. import EditorEvents = require("editor/EditorEvents");
  8. import EditorUI = require("ui/EditorUI");
  9. import ModalWindow = require("../ModalWindow");
  10. import ProgressModal = require("../ProgressModal");
  11. import UIEvents = require("../../UIEvents");
  12. import WindowsSettingsWidget = require("./platforms/WindowsSettingsWidget");
  13. import MacSettingsWidget = require("./platforms/MacSettingsWidget");
  14. import AndroidSettingsWidget = require("./platforms/AndroidSettingsWidget");
  15. import IOSSettingsWidget = require("./platforms/IOSSettingsWidget");
  16. import WebSettingsWidget = require("./platforms/WebSettingsWidget");
  17. class BuildWindow extends ModalWindow {
  18. constructor() {
  19. super();
  20. this.init("Build Settings", "AtomicEditor/editor/ui/build.tb.txt");
  21. this.buildPathField = <Atomic.UITextField>this.getWidget("build_path");
  22. this.platformIndicator = <Atomic.UISkinImage>this.getWidget("current_platform_indicator");
  23. var currentPlatform = ToolCore.toolSystem.currentPlatform;
  24. this.buildPathField.text = ToolCore.toolSystem.project.userPrefs.lastBuildPath;
  25. switch (currentPlatform.name) {
  26. case "WINDOWS": this.platformIndicator.skinBg = "LogoWindows"; break;
  27. case "MAC": this.platformIndicator.skinBg = "LogoMac"; break;
  28. case "ANDROID": this.platformIndicator.skinBg = "LogoAndroid"; break;
  29. case "IOS": this.platformIndicator.skinBg = "LogoIOS"; break;
  30. case "WEB": this.platformIndicator.skinBg = "LogoHTML5"; break;
  31. }
  32. this.subscribeToEvent(this, "WidgetEvent", (ev) => this.handleWidgetEvent(ev));
  33. }
  34. handleWidgetEvent(ev: Atomic.UIWidgetEvent): boolean {
  35. if (ev.type == Atomic.UI_EVENT_TYPE_CLICK) {
  36. if (ev.target.id == "cancel") {
  37. this.hide();
  38. return true;
  39. }
  40. if (ev.target.id == "build") {
  41. var toolSystem = ToolCore.toolSystem;
  42. var userPrefs = ToolCore.toolSystem.project.userPrefs;
  43. if (this.buildPathField.text != userPrefs.lastBuildPath) {
  44. userPrefs.lastBuildPath = this.buildPathField.text;
  45. ToolCore.toolSystem.project.saveUserPrefs();
  46. }
  47. if (!userPrefs.lastBuildPath.length || !Atomic.fileSystem.dirExists(userPrefs.lastBuildPath)) {
  48. new Atomic.UIMessageWindow(this, "modal_error").show("Build Folder","Please select an existing build folder", Atomic.UI_MESSAGEWINDOW_SETTINGS_OK, true, 480, 240);
  49. return true;
  50. }
  51. this.hide();
  52. this.build();
  53. return true;
  54. }
  55. if (ev.target.id == "choose_path") {
  56. var utils = new Editor.FileUtils();
  57. var buildPath = utils.getBuildPath("");
  58. if (buildPath && buildPath.length)
  59. this.buildPathField.text = buildPath;
  60. return true;
  61. }
  62. }
  63. }
  64. build() {
  65. var buildSystem = ToolCore.buildSystem;
  66. var toolSystem = ToolCore.toolSystem;
  67. var userPrefs = ToolCore.toolSystem.project.userPrefs;
  68. buildSystem.buildPath = userPrefs.lastBuildPath;
  69. var project = toolSystem.project;
  70. var platform = toolSystem.currentPlatform;
  71. var buildBase = platform.newBuild(project);
  72. EditorUI.getModelOps().showBuildOutput(buildBase);
  73. buildSystem.queueBuild(buildBase);
  74. buildSystem.startNextBuild();
  75. }
  76. buildPathField: Atomic.UITextField;
  77. platformIndicator: Atomic.UISkinImage;
  78. }
  79. export = BuildWindow;
  80. /*
  81. buildPathField_ = delegate_->GetWidgetByIDAndType<TBTextField>(TBIDC("build_path"));
  82. assert(buildPathField_);
  83. String buildPath = project->GetLastBuildPath();
  84. buildPathField_->SetText(buildPath.CString());
  85. window_->ResizeToFitContent();
  86. Center();
  87. AEEditorPlatform platform = editor->GetCurrentPlatform();
  88. TBSkinImage* platformIndicator = window_->GetContentRoot()->GetWidgetByIDAndType<TBSkinImage>(TBIDC("current_platform_indicator"));
  89. assert(platformIndicator);
  90. if (platform == AE_PLATFORM_MAC)
  91. platformIndicator->SetSkinBg(TBIDC("LogoMac"));
  92. else if (platform == AE_PLATFORM_WINDOWS)
  93. platformIndicator->SetSkinBg(TBIDC("LogoWindows"));
  94. else if (platform == AE_PLATFORM_ANDROID)
  95. platformIndicator->SetSkinBg(TBIDC("LogoAndroid"));
  96. else if (platform == AE_PLATFORM_HTML5)
  97. platformIndicator->SetSkinBg(TBIDC("LogoHTML5"));
  98. else if (platform == AE_PLATFORM_IOS)
  99. platformIndicator->SetSkinBg(TBIDC("LogoIOS"));
  100. */