瀏覽代碼

Merge pull request #633 from AtomicGameEngine/JME-ATOMIC-WEBVIEW

Adding Atomic WebView subsystem, build updates (code signed OSX), UI fixes, ray casting support, etc
JoshEngebretson 10 年之前
父節點
當前提交
20052b7f0b
共有 100 個文件被更改,包括 617 次插入93 次删除
  1. 0 2
      .gitignore
  2. 3 0
      .gitmodules
  3. 1 0
      Build/CIScripts/BuildLinux.js
  4. 4 3
      Build/CIScripts/BuildMac.js
  5. 1 0
      Build/CIScripts/BuildWindows.js
  6. 3 5
      Build/CIScripts/GenEditorData.js
  7. 10 8
      Build/CIScripts/GenMacEditor.js
  8. 16 10
      Build/CIScripts/GenWindowsEditor.js
  9. 0 53
      Build/CIScripts/Mac/EditorApp/Info.plist
  10. 0 1
      Build/CIScripts/Mac/EditorApp/PkgInfo
  11. 二進制
      Build/CIScripts/Mac/EditorApp/Resources/Atomic.icns
  12. 7 0
      Build/CMake/Modules/AtomicDesktop.cmake
  13. 40 0
      Build/CMake/Modules/AtomicEditor-HelperInfo.plist.template
  14. 43 0
      Build/CMake/Modules/AtomicEditorInfo.plist.template
  15. 5 4
      Build/CMake/Modules/AtomicMac.cmake
  16. 361 0
      Build/CMake/Modules/AtomicWebView.cmake
  17. 2 4
      Build/Scripts/BuildWindows.js
  18. 13 3
      CMakeLists.txt
  19. 80 0
      Data/AtomicEditor/CodeEditor/Editor.html
  20. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ace.js
  21. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-beautify.js
  22. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-chromevox.js
  23. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-elastic_tabstops_lite.js
  24. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-emmet.js
  25. 5 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-error_marker.js
  26. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-keybinding_menu.js
  27. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-language_tools.js
  28. 5 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-linking.js
  29. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-modelist.js
  30. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-old_ie.js
  31. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-searchbox.js
  32. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-settings_menu.js
  33. 5 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-spellcheck.js
  34. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-split.js
  35. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-static_highlight.js
  36. 5 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-statusbar.js
  37. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-textarea.js
  38. 5 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-themelist.js
  39. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/ext-whitespace.js
  40. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/keybinding-emacs.js
  41. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/keybinding-vim.js
  42. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-abap.js
  43. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-abc.js
  44. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-actionscript.js
  45. 1 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-ada.js
  46. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-apache_conf.js
  47. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-applescript.js
  48. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-asciidoc.js
  49. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-assembly_x86.js
  50. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-autohotkey.js
  51. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-batchfile.js
  52. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-c9search.js
  53. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-c_cpp.js
  54. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-cirru.js
  55. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-clojure.js
  56. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-cobol.js
  57. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-coffee.js
  58. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-coldfusion.js
  59. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-csharp.js
  60. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-css.js
  61. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-curly.js
  62. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-d.js
  63. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-dart.js
  64. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-diff.js
  65. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-django.js
  66. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-dockerfile.js
  67. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-dot.js
  68. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-eiffel.js
  69. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-ejs.js
  70. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-elixir.js
  71. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-elm.js
  72. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-erlang.js
  73. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-forth.js
  74. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-ftl.js
  75. 1 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-gcode.js
  76. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-gherkin.js
  77. 1 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-gitignore.js
  78. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-glsl.js
  79. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-gobstones.js
  80. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-golang.js
  81. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-groovy.js
  82. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-haml.js
  83. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-handlebars.js
  84. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-haskell.js
  85. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-haxe.js
  86. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-html.js
  87. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-html_elixir.js
  88. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-html_ruby.js
  89. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-ini.js
  90. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-io.js
  91. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-jack.js
  92. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-jade.js
  93. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-java.js
  94. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-javascript.js
  95. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-json.js
  96. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-jsoniq.js
  97. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-jsp.js
  98. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-jsx.js
  99. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-julia.js
  100. 0 0
      Data/AtomicEditor/CodeEditor/source/ace/mode-latex.js

+ 0 - 2
.gitignore

@@ -21,5 +21,3 @@ node_modules/*
 Script/TypeScript/*
 !Script/TypeScript/AtomicWork.d.ts
 Script/Haxe/*
-
-Submodules/*

+ 3 - 0
.gitmodules

@@ -0,0 +1,3 @@
+[submodule "Submodules/CEF"]
+	path = Submodules/CEF
+	url = ../CEF3Binaries

+ 1 - 0
Build/CIScripts/BuildLinux.js

@@ -56,6 +56,7 @@ namespace('build', function() {
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/ToolCore/ LINUX",
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/Editor/ LINUX",
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/AtomicNET/ LINUX",
+      atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/WebView/ LINUX",
       "cmake -DATOMIC_DEV_BUILD=0 -DLINUX=1 ../../../../",
       "make"
     ];

+ 4 - 3
Build/CIScripts/BuildMac.js

@@ -56,13 +56,14 @@ namespace('build', function() {
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/ToolCore/ MACOSX",
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/Editor/ MACOSX",
       atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/AtomicNET/ MACOSX",
+      atomicTool + " bind " + bcommon.atomicRoot + " Script/Packages/WebView/ MACOSX",
       "cmake -DATOMIC_DEV_BUILD=0 -G Xcode ../../../../",
-      "xcodebuild -target AtomicEditor -configuration Release -parallelizeTargets -jobs 4"
+      "xcodebuild -target AtomicEditor -configuration Release -parallelizeTargets -jobs 4",
+      "cd " + editorBuildDir + "Source/AtomicEditor/Release && zip -r -X " + buildDir + "Bin/AtomicEditor.zip ./AtomicEditor.app"
     ];
 
     jake.exec(cmds, function() {
-      var macEditorBinary = editorBuildDir + "Source/AtomicEditor/Release/AtomicEditor.app/Contents/MacOS/AtomicEditor";
-      fs.copySync(macEditorBinary, buildDir + "Bin/AtomicEditor");
+
       console.log("Built Mac Editor");
       complete();
 

+ 1 - 0
Build/CIScripts/BuildWindows.js

@@ -26,6 +26,7 @@ namespace('build', function() {
       bindCmd + "Script/Packages/ToolCore/ WINDOWS",
       bindCmd + "Script/Packages/Editor/ WINDOWS",
       bindCmd + "Script/Packages/AtomicNET/ WINDOWS",
+      bindCmd + "Script/Packages/WebView/ WINDOWS",
       atomicRoot + "/Build/CIScripts/Windows/CompileAtomic.bat",
     ]
 

+ 3 - 5
Build/CIScripts/GenEditorData.js

@@ -24,6 +24,7 @@ namespace('build', function() {
       bindCmd + "Script/Packages/ToolCore/ WINDOWS",
       bindCmd + "Script/Packages/Editor/ WINDOWS",
       bindCmd + "Script/Packages/AtomicNET/ WINDOWS",
+      bindCmd + "Script/Packages/WebView/ WINDOWS",
     ];
 
     jake.exec(cmds, function() {
@@ -117,16 +118,13 @@ namespace('build', function() {
 
     // Mac App
 
-    fs.copySync(atomicRoot + "Build/CIScripts/Mac/EditorApp",
-      buildDir + "MacApps/EditorApp");
-
     fs.copySync(atomicRoot + "Build/CIScripts/Mac/PlayerApp/",
       buildDir + "MacApps/PlayerApp/");
 
     // Editor Binaries
 
-    fs.copySync(bcommon.artifactsRoot + "Build/Mac/Bin/AtomicEditor",
-      buildDir + "EditorBinaries/Mac/AtomicEditor");
+    fs.copySync(bcommon.artifactsRoot + "Build/Mac/Bin/AtomicEditor.zip",
+      buildDir + "EditorBinaries/Mac/AtomicEditor.zip");
 
     fs.copySync(bcommon.artifactsRoot + "Build/Windows/Bin/AtomicEditor.exe",
       buildDir + "EditorBinaries/Windows/AtomicEditor.exe");

+ 10 - 8
Build/CIScripts/GenMacEditor.js

@@ -19,8 +19,12 @@ namespace('build', function() {
       cmds = [
       "chmod +x " + editorAppFolder + "/Contents/MacOS/AtomicEditor",
       "chmod +x " + editorAppFolder + "/Contents/Resources/ToolData/Deployment/MacOS/AtomicPlayer.app/Contents/MacOS/AtomicPlayer",
-      "security unlock-keychain -p \"jenkins\" /Users/jenkins/Library/Keychains/login.keychain",
-      "codesign -s \"THUNDERBEAST GAMES LLC\" -f -v " + editorAppFolder,
+      "security unlock-keychain -p \"jenkins\" /Users/jenkins/Library/Keychains/login.keychain  ",
+      "codesign --force --verify --verbose --sign \"Developer ID Application: THUNDERBEAST GAMES LLC (C7M5MAQQWR)\" " + editorAppFolder + "/Contents/Frameworks/AtomicEditor\\ Helper.app",
+      "codesign --force --verify --verbose --sign \"Developer ID Application: THUNDERBEAST GAMES LLC (C7M5MAQQWR)\" " + editorAppFolder + "/Contents//Frameworks/AtomicEditor\\ Helper\\ EH.app",
+      "codesign --force --verify --verbose --sign \"Developer ID Application: THUNDERBEAST GAMES LLC (C7M5MAQQWR)\" " + editorAppFolder + "/Contents/Frameworks/AtomicEditor\\ Helper\\ NP.app",
+      "codesign --force --verify --verbose --sign \"Developer ID Application: THUNDERBEAST GAMES LLC (C7M5MAQQWR)\" " + editorAppFolder + "/Contents/Frameworks/Chromium\\ Embedded\\ Framework.framework",
+      "codesign --force --verify --verbose --sign \"Developer ID Application: THUNDERBEAST GAMES LLC (C7M5MAQQWR)\" " + editorAppFolder,      
       "cd " + dstDir + " && zip -r -X " + "./MacEditorInstaller/AtomicEditor_MacOSX_" + bcommon.buildSHA + ".zip ./AtomicEditor.app"
     ];
 
@@ -43,7 +47,8 @@ namespace('build', function() {
 
     bcommon.cleanCreateDir(dstDir);
 
-    cmds = ["unzip " + srcDir + "EditorData.zip -d " + srcDir];
+    cmds = ["unzip " + srcDir + "EditorData.zip -d " + srcDir,
+            "unzip " + srcDir + "EditorBinaries/Mac/AtomicEditor.zip -d " + srcDir + "EditorBinaries/Mac"];
 
     jake.exec(cmds, function() {
 
@@ -51,11 +56,8 @@ namespace('build', function() {
 
       var editorAppFolder = dstDir + "AtomicEditor.app/Contents/";
 
-      fs.copySync(srcDir + "MacApps/EditorApp",
-        editorAppFolder);
-
-      fs.copySync(srcDir + "EditorBinaries/Mac/AtomicEditor",
-        editorAppFolder + "MacOS/AtomicEditor");
+      fs.copySync(srcDir + "EditorBinaries/Mac/AtomicEditor.app",
+        dstDir + "AtomicEditor.app");
 
       fs.copySync(srcDir + "Resources/CoreData",
         editorAppFolder + "Resources/CoreData");

+ 16 - 10
Build/CIScripts/GenWindowsEditor.js

@@ -62,34 +62,40 @@ namespace('build', function() {
 
     jake.exec(cmds, function() {
 
-    console.log("Generating Windows Editor");
+      console.log("Generating Windows Editor");
 
-    var editorAppFolder = dstDir + "AtomicEditor/";
+      var editorAppFolder = dstDir + "AtomicEditor/";
 
-    fs.copySync(srcDir + "EditorBinaries/Windows/AtomicEditor.exe",
+      fs.copySync(srcDir + "EditorBinaries/Windows/AtomicEditor.exe",
       editorAppFolder + "AtomicEditor.exe");
 
-    fs.copySync(srcDir + "EditorBinaries/Windows/D3DCompiler_47.dll",
+      fs.copySync(srcDir + "EditorBinaries/Windows/D3DCompiler_47.dll",
       editorAppFolder + "D3DCompiler_47.dll");
 
-    fs.copySync(srcDir + "Resources/CoreData",
+      fs.copySync(srcDir + "Resources/CoreData",
       editorAppFolder + "Resources/CoreData");
 
-    fs.copySync(srcDir + "Resources/EditorData",
+      fs.copySync(srcDir + "Resources/EditorData",
       editorAppFolder + "Resources/EditorData");
 
-    fs.copySync(srcDir + "Resources/PlayerData",
+      fs.copySync(srcDir + "Resources/PlayerData",
       editorAppFolder + "Resources/PlayerData");
 
-    fs.copySync(srcDir + "Resources/ToolData",
+      fs.copySync(srcDir + "Resources/ToolData",
       editorAppFolder + "Resources/ToolData");
 
-    fs.copySync(srcDir + "AtomicExamples",
+      fs.copySync(srcDir + "AtomicExamples",
       editorAppFolder + "Resources/ToolData/AtomicExamples");
 
-    fs.copySync(srcDir + "Docs",
+      fs.copySync(srcDir + "Docs",
       editorAppFolder + "Resources/ToolData/Docs/JSDocs");
 
+      // CEF
+      var cefRoot = atomicRoot + "Submodules/CEF/Windows/64bit/";
+
+      fs.copySync(cefRoot + "Release", editorAppFolder);
+      fs.copySync(cefRoot + "Resources", editorAppFolder);
+
       complete();
 
     }, {

+ 0 - 53
Build/CIScripts/Mac/EditorApp/Info.plist

@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>BuildMachineOSBuild</key>
-	<string>15B42</string>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>AtomicEditor</string>
-	<key>CFBundleIconFile</key>
-	<string>Atomic.icns</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleLongVersionString</key>
-	<string></string>
-	<key>CFBundlePackageType</key>
-	<string>APPL</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleSupportedPlatforms</key>
-	<array>
-		<string>MacOSX</string>
-	</array>
-	<key>CFBundleVersion</key>
-	<string></string>
-	<key>CSResourcesFileMapped</key>
-	<true/>
-	<key>DTCompiler</key>
-	<string>com.apple.compilers.llvm.clang.1_0</string>
-	<key>DTPlatformBuild</key>
-	<string>7A1001</string>
-	<key>DTPlatformVersion</key>
-	<string>GM</string>
-	<key>DTSDKBuild</key>
-	<string>15A278</string>
-	<key>DTSDKName</key>
-	<string>macosx10.11</string>
-	<key>DTXcode</key>
-	<string>0701</string>
-	<key>DTXcodeBuild</key>
-	<string>7A1001</string>
-	<key>LSEnvironment</key>
-	<dict>
-		<key>URHO3D_PREFIX_PATH</key>
-		<string>../Resources</string>
-	</dict>
-	<key>LSRequiresCarbon</key>
-	<true/>
-	<key>NSHumanReadableCopyright</key>
-	<string></string>
-</dict>
-</plist>

+ 0 - 1
Build/CIScripts/Mac/EditorApp/PkgInfo

@@ -1 +0,0 @@
-APPL????

二進制
Build/CIScripts/Mac/EditorApp/Resources/Atomic.icns


+ 7 - 0
Build/CMake/Modules/AtomicDesktop.cmake

@@ -7,4 +7,11 @@ add_definitions( -DATOMIC_NAVIGATION -DATOMIC_TBUI -DATOMIC_FILEWATCHER -DPOCO_N
 
 set (ATOMIC_LINK_LIBRARIES ${ATOMIC_LINK_LIBRARIES} LibCpuId SQLite)
 
+# Check whether the CEF submodule is available
+if (EXISTS ${CMAKE_SOURCE_DIR}/Submodules/CEF)
+    set(ATOMIC_WEBVIEW TRUE)
+    add_definitions( -DATOMIC_WEBVIEW )
+    include("AtomicWebView")
+endif()
+
 include(AtomicNET)

+ 40 - 0
Build/CMake/Modules/AtomicEditor-HelperInfo.plist.template

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+    <key>CFBundleDevelopmentRegion</key>
+    <string>English</string>
+    <key>CFBundleExecutable</key>
+    <string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
+    <key>CFBundleGetInfoString</key>
+    <string>${MACOSX_BUNDLE_INFO_STRING}</string>
+    <key>CFBundleIconFile</key>
+    <string>${MACOSX_BUNDLE_ICON_FILE}</string>
+    <key>CFBundleIdentifier</key>
+    <string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
+    <key>CFBundleInfoDictionaryVersion</key>
+    <string>6.0</string>
+    <key>CFBundleLongVersionString</key>
+    <string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
+    <key>CFBundleName</key>
+    <string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
+    <key>CFBundlePackageType</key>
+    <string>APPL</string>
+    <key>CFBundleShortVersionString</key>
+    <string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
+    <key>CFBundleSignature</key>
+    <string>????</string>
+    <key>CFBundleVersion</key>
+    <string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
+    <key>CSResourcesFileMapped</key>
+    <true/>
+    <key>LSRequiresCarbon</key>
+    <true/>
+    <key>LSUIElement</key>
+  	<string>1</string>
+  	<key>NSSupportsAutomaticGraphicsSwitching</key>
+  	<true/>
+    <key>NSHumanReadableCopyright</key>
+    <string>${MACOSX_BUNDLE_COPYRIGHT}</string>
+</dict>
+</plist>

+ 43 - 0
Build/CMake/Modules/AtomicEditorInfo.plist.template

@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+    <key>CFBundleDevelopmentRegion</key>
+    <string>English</string>
+    <key>CFBundleExecutable</key>
+    <string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
+    <key>CFBundleGetInfoString</key>
+    <string>${MACOSX_BUNDLE_INFO_STRING}</string>
+    <key>CFBundleIconFile</key>
+    <string>${MACOSX_BUNDLE_ICON_FILE}</string>
+    <key>CFBundleIdentifier</key>
+    <string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
+    <key>CFBundleInfoDictionaryVersion</key>
+    <string>6.0</string>
+    <key>CFBundleLongVersionString</key>
+    <string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
+    <key>CFBundleName</key>
+    <string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
+    <key>CFBundlePackageType</key>
+    <string>APPL</string>
+    <key>CFBundleShortVersionString</key>
+    <string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
+    <key>CFBundleSignature</key>
+    <string>????</string>
+    <key>CFBundleVersion</key>
+    <string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
+    <key>CSResourcesFileMapped</key>
+    <true/>
+    <key>LSRequiresCarbon</key>
+    <true/>
+    <key>NSSupportsAutomaticGraphicsSwitching</key>
+  	<true/>    
+    <key>NSHumanReadableCopyright</key>
+    <string>${MACOSX_BUNDLE_COPYRIGHT}</string>
+    <key>LSEnvironment</key>
+    <dict>
+        <key>URHO3D_PREFIX_PATH</key>
+        <string>../Resources</string>
+    </dict>
+</dict>
+</plist>

+ 5 - 4
Build/CMake/Modules/AtomicMac.cmake

@@ -8,16 +8,17 @@ include(AtomicDesktop)
 # only have 32 bit mono installed, fix this
 # set (CMAKE_OSX_ARCHITECTURES i386)
 
+set(CMAKE_OSX_ARCHITECTURES "x86_64")
+set(CMAKE_OSX_DEPLOYMENT_TARGET  "10.9")
+
 add_definitions(-DATOMIC_PLATFORM_OSX -DATOMIC_OPENGL -DKNET_UNIX)
 
 if (CMAKE_GENERATOR STREQUAL "Xcode")
-
-add_definitions(-DATOMIC_XCODE)
-
+    add_definitions(-DATOMIC_XCODE)
 endif()
 
 list (APPEND ATOMIC_LINK_LIBRARIES GLEW)
 
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -std=gnu++0x")
+set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -std=gnu++11")
 
 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AudioUnit -framework Carbon -framework Cocoa -framework CoreAudio -framework ForceFeedback -framework IOKit -framework OpenGL -framework CoreServices -framework Security")

+ 361 - 0
Build/CMake/Modules/AtomicWebView.cmake

@@ -0,0 +1,361 @@
+
+# Copyright (c) 2014 The Chromium Embedded Framework Authors. All rights
+# reserved. Use of this source code is governed by a BSD-style license that
+# can be found in the LICENSE file.
+
+# Determine the platform.
+
+if("${CMAKE_SYSTEM_NAME}" STREQUAL "Darwin")
+  set(OS_MACOSX 1)
+  set(OS_POSIX 1)
+elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+  set(OS_LINUX 1)
+  set(OS_POSIX 1)
+elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Windows")
+  set(OS_WINDOWS 1)
+endif()
+
+if(CMAKE_SIZEOF_VOID_P MATCHES 8)
+  set(PROJECT_ARCH "x86_64")
+else()
+  set(PROJECT_ARCH "x86")
+endif()
+
+if(OS_MACOSX)
+    set(CEF_STANDARD_LIBS "-lpthread" "-framework Cocoa" "-framework AppKit")
+    set(CEF_LIBTYPE SHARED)
+
+    # using release
+    #set(CEF_BINARY_DIR "${CMAKE_SOURCE_DIR}/Submodules/CEF/MacOSX/$<CONFIGURATION>")
+    set(CEF_BINARY_DIR "${CMAKE_SOURCE_DIR}/Submodules/CEF/MacOSX/Release")
+
+    set(CEF_BINARY_DIR_RELEASE "${CMAKE_SOURCE_DIR}/Submodules/CEF/MacOSX/Release")
+    set(CEF_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/Chromium Embedded Framework.framework/Chromium Embedded Framework")
+
+    # using release
+    set(CEF_BINARY_DIR_DEBUG "${CMAKE_SOURCE_DIR}/Submodules/CEF/MacOSX/Release")
+    set(CEF_LIB_DEBUG "${CEF_BINARY_DIR_DEBUG}/Chromium Embedded Framework.framework/Chromium Embedded Framework")
+
+endif()
+
+if(OS_WINDOWS)
+    set(CEF_BINARY_DIR_RELEASE "${CMAKE_SOURCE_DIR}/Submodules/CEF/Windows/64bit/Release")
+    set(CEF_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/libcef.lib")
+    set(CEF_BINARY_DIR "${CMAKE_SOURCE_DIR}/Submodules/CEF/Windows/64bit/Release")
+    set(CEF_RESOURCE_DIR "${CMAKE_SOURCE_DIR}/Submodules/CEF/Windows/64bit/Resources")
+endif()
+
+if(OS_LINUX)
+    set(CEF_BINARY_DIR_RELEASE "${CMAKE_SOURCE_DIR}/Submodules/CEF/Linux/Release")
+    set(CEF_LIB_RELEASE "${CEF_BINARY_DIR_RELEASE}/libcef.so")
+    set(CEF_BINARY_DIR "${CMAKE_SOURCE_DIR}/Submodules/CEF/Linux/Release")
+    set(CEF_RESOURCE_DIR "${CMAKE_SOURCE_DIR}/Submodules/CEF/Linux/Resources")
+endif()
+
+
+#
+# Shared macros.
+#
+
+# Append platform specific sources to a list of sources.
+macro(APPEND_PLATFORM_SOURCES name_of_list)
+  if(OS_LINUX AND ${name_of_list}_LINUX)
+    list(APPEND ${name_of_list} ${${name_of_list}_LINUX})
+  endif()
+  if(OS_POSIX AND ${name_of_list}_POSIX)
+    list(APPEND ${name_of_list} ${${name_of_list}_POSIX})
+  endif()
+  if(OS_WINDOWS AND ${name_of_list}_WINDOWS)
+    list(APPEND ${name_of_list} ${${name_of_list}_WINDOWS})
+  endif()
+  if(OS_MACOSX AND ${name_of_list}_MACOSX)
+    list(APPEND ${name_of_list} ${${name_of_list}_MACOSX})
+  endif()
+endmacro()
+
+# Add a logical target that can be used to link the specified libraries into an
+# executable target.
+macro(ADD_LOGICAL_TARGET target debug_lib release_lib)
+  add_library(${target} ${CEF_LIBTYPE} IMPORTED)
+  set_target_properties(${target} PROPERTIES
+    IMPORTED_LOCATION "${release_lib}"
+    IMPORTED_LOCATION_DEBUG "${debug_lib}"
+    IMPORTED_LOCATION_RELEASE "${release_lib}"
+    )
+endmacro()
+
+# Determine the target output directory based on platform and generator.
+macro(SET_CEF_TARGET_OUT_DIR)
+  if(${CMAKE_GENERATOR} STREQUAL "Ninja")
+    # Ninja does not create a subdirectory named after the configuration.
+    set(CEF_TARGET_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+  elseif(OS_LINUX)
+    set(CEF_TARGET_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}")
+  else()
+    # ATOMIC: Unix Makefiles not creating Debug/Release?
+
+    if(${CMAKE_GENERATOR} STREQUAL "Xcode" OR ${CMAKE_GENERATOR} STREQUAL "Visual Studio 14 2015 Win64")
+      set(CEF_TARGET_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>")
+    else()
+      set(CEF_TARGET_OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+    endif()
+  endif()
+endmacro()
+
+# Copy a list of files from one directory to another. Relative files paths are maintained.
+macro(COPY_FILES target file_list source_dir target_dir)
+  foreach(FILENAME ${file_list})
+    set(source_file ${source_dir}/${FILENAME})
+    set(target_file ${target_dir}/${FILENAME})
+    if(IS_DIRECTORY ${source_file})
+      add_custom_command(
+        TARGET ${target}
+        POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy_directory "${source_file}" "${target_file}"
+        VERBATIM
+        )
+    else()
+      add_custom_command(
+        TARGET ${target}
+        POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy_if_different "${source_file}" "${target_file}"
+        VERBATIM
+        )
+    endif()
+  endforeach()
+endmacro()
+
+# Rename a directory replacing the target if it already exists.
+macro(RENAME_DIRECTORY target source_dir target_dir)
+  add_custom_command(
+    TARGET ${target}
+    POST_BUILD
+    # Remove the target directory if it already exists.
+    COMMAND ${CMAKE_COMMAND} -E remove_directory "${target_dir}"
+    # Rename the source directory to target directory.
+    COMMAND ${CMAKE_COMMAND} -E rename "${source_dir}" "${target_dir}"
+    VERBATIM
+    )
+endmacro()
+
+
+#
+# Linux macros.
+#
+
+if(OS_LINUX)
+
+# Use pkg-config to find Linux libraries and update compiler/linker variables.
+macro(FIND_LINUX_LIBRARIES libraries)
+  # Read pkg-config info into variables.
+  execute_process(COMMAND pkg-config --cflags ${libraries} OUTPUT_VARIABLE FLL_CFLAGS)
+  execute_process(COMMAND pkg-config --libs-only-L --libs-only-other ${libraries} OUTPUT_VARIABLE FLL_LDFLAGS)
+  execute_process(COMMAND pkg-config --libs-only-l ${libraries} OUTPUT_VARIABLE FLL_LIBS)
+
+  # Strip leading and trailing whitepspace.
+  STRING(STRIP "${FLL_CFLAGS}"  FLL_CFLAGS)
+  STRING(STRIP "${FLL_LDFLAGS}" FLL_LDFLAGS)
+  STRING(STRIP "${FLL_LIBS}"    FLL_LIBS)
+
+  # Update the variables.
+  set(CMAKE_C_FLAGS             "${CMAKE_C_FLAGS} ${FLL_CFLAGS}")
+  set(CMAKE_CXX_FLAGS           "${CMAKE_CXX_FLAGS} ${FLL_CFLAGS}")
+  set(CMAKE_EXE_LINKER_FLAGS    "${CMAKE_EXE_LINKER_FLAGS} ${FLL_LDFLAGS}")
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${FLL_LDFLAGS}")
+  set(CEF_STANDARD_LIBS         "${CEF_STANDARD_LIBS} ${FLL_LIBS}")
+endmacro()
+
+# Set SUID permissions on the specified executable.
+macro(SET_LINUX_SUID_PERMISSIONS target executable)
+  add_custom_command(
+    TARGET ${target}
+    POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E echo ""
+    COMMAND ${CMAKE_COMMAND} -E echo "*** Run the following command manually to set SUID permissions ***"
+    COMMAND ${CMAKE_COMMAND} -E echo "EXE=\"${executable}\" && sudo -- chown root:root $EXE && sudo -- chmod 4755 $EXE"
+    COMMAND ${CMAKE_COMMAND} -E echo ""
+    VERBATIM
+    )
+endmacro()
+
+endif(OS_LINUX)
+
+
+#
+# Mac OS X macros.
+#
+
+if(OS_MACOSX)
+
+# Set Xcode target properties.
+function(SET_XCODE_TARGET_PROPERTIES target)
+  set_target_properties(${target} PROPERTIES
+    XCODE_ATTRIBUTE_ALWAYS_SEARCH_USER_PATHS                    NO
+    XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD                 "gnu++11"   # -std=gnu++11
+    XCODE_ATTRIBUTE_CLANG_LINK_OBJC_RUNTIME                     NO          # -fno-objc-link-runtime
+    XCODE_ATTRIBUTE_CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS  YES         # -Wobjc-missing-property-synthesis
+    XCODE_ATTRIBUTE_COPY_PHASE_STRIP                            NO
+    XCODE_ATTRIBUTE_DEAD_CODE_STRIPPING[variant=Release]        YES         # -Wl,-dead_strip
+    XCODE_ATTRIBUTE_GCC_C_LANGUAGE_STANDARD                     "c99"       # -std=c99
+    XCODE_ATTRIBUTE_GCC_CW_ASM_SYNTAX                           NO          # No -fasm-blocks
+    XCODE_ATTRIBUTE_GCC_DYNAMIC_NO_PIC                          NO
+    XCODE_ATTRIBUTE_GCC_ENABLE_CPP_EXCEPTIONS                   NO          # -fno-exceptions
+    XCODE_ATTRIBUTE_GCC_ENABLE_CPP_RTTI                         NO          # -fno-rtti
+    XCODE_ATTRIBUTE_GCC_ENABLE_PASCAL_STRINGS                   NO          # No -mpascal-strings
+    XCODE_ATTRIBUTE_GCC_INLINES_ARE_PRIVATE_EXTERN              YES         # -fvisibility-inlines-hidden
+    XCODE_ATTRIBUTE_GCC_OBJC_CALL_CXX_CDTORS                    YES         # -fobjc-call-cxx-cdtors
+    XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN                  YES         # -fvisibility=hidden
+    XCODE_ATTRIBUTE_GCC_THREADSAFE_STATICS                      NO          # -fno-threadsafe-statics
+    XCODE_ATTRIBUTE_GCC_TREAT_WARNINGS_AS_ERRORS                YES         # -Werror
+    XCODE_ATTRIBUTE_GCC_VERSION                                 "com.apple.compilers.llvm.clang.1_0"
+    XCODE_ATTRIBUTE_GCC_WARN_ABOUT_MISSING_NEWLINE              YES         # -Wnewline-eof
+    XCODE_ATTRIBUTE_USE_HEADERMAP                               NO
+    OSX_ARCHITECTURES_DEBUG                                     "${CMAKE_OSX_ARCHITECTURES}"
+    OSX_ARCHITECTURES_RELEASE                                   "${CMAKE_OSX_ARCHITECTURES}"
+    )
+endfunction()
+
+# Override default add_library function.
+function(cef_add_library name)
+  add_library(${name} ${ARGN})
+  SET_XCODE_TARGET_PROPERTIES(${name})
+endfunction()
+
+# Override default add_executable function.
+function(cef_add_executable name)
+  add_executable(${name} ${ARGN})
+  SET_XCODE_TARGET_PROPERTIES(${name})
+endfunction()
+
+# Fix the framework link in the helper executable.
+macro(FIX_MACOSX_HELPER_FRAMEWORK_LINK target app_path)
+  add_custom_command(TARGET ${target}
+    POST_BUILD
+    COMMAND install_name_tool -change "@executable_path/Chromium Embedded Framework"
+            "@executable_path/../../../../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework"
+            "${app_path}/Contents/MacOS/${target}"
+    VERBATIM
+    )
+endmacro()
+
+# Fix the framework link in the main executable.
+macro(FIX_MACOSX_MAIN_FRAMEWORK_LINK target app_path)
+  add_custom_command(TARGET ${target}
+    POST_BUILD
+    COMMAND install_name_tool -change "@executable_path/Chromium Embedded Framework"
+            "@executable_path/../Frameworks/Chromium Embedded Framework.framework/Chromium Embedded Framework"
+            "${app_path}/Contents/MacOS/${target}"
+    VERBATIM
+    )
+endmacro()
+
+# Make the other helper app bundles.
+macro(MAKE_MACOSX_HELPERS target app_path)
+  add_custom_command(TARGET ${target}
+    POST_BUILD
+    # The exported variables need to be set for generators other than Xcode.
+    COMMAND export BUILT_PRODUCTS_DIR=${app_path} &&
+            export CONTENTS_FOLDER_PATH=/Contents &&
+            ${CMAKE_SOURCE_DIR}/Submodules/CEF/MacOSX/tools/make_more_helpers.sh "Frameworks" "${target}"
+    WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+    VERBATIM
+    )
+endmacro()
+
+# Manually process and copy over resource files.
+macro(COPY_MACOSX_RESOURCES resource_list prefix_list target source_dir app_path)
+  foreach(FILENAME ${resource_list})
+    # Remove one or more prefixes from the source paths.
+    set(TARGET_FILENAME "${FILENAME}")
+    foreach(PREFIX ${prefix_list})
+      string(REGEX REPLACE "^.*${PREFIX}" "" TARGET_FILENAME ${TARGET_FILENAME})
+    endforeach()
+
+    # Determine the absolute source and target paths.
+    set(TARGET_PATH "${app_path}/Contents/Resources/${TARGET_FILENAME}")
+    if(IS_ABSOLUTE ${FILENAME})
+      set(SOURCE_PATH ${FILENAME})
+    else()
+      set(SOURCE_PATH "${source_dir}/${FILENAME}")
+    endif()
+
+    if(${FILENAME} MATCHES ".xib$")
+      # Change the target file extension.
+      string(REGEX REPLACE ".xib$" ".nib" TARGET_PATH ${TARGET_PATH})
+
+      get_filename_component(TARGET_DIRECTORY ${TARGET_PATH} PATH)
+      add_custom_command(
+        TARGET ${target}
+        POST_BUILD
+        # Create the target directory.
+        COMMAND ${CMAKE_COMMAND} -E make_directory "${TARGET_DIRECTORY}"
+        # Compile the XIB file to a NIB.
+        COMMAND /usr/bin/ibtool --output-format binary1 --compile "${TARGET_PATH}" "${SOURCE_PATH}"
+        VERBATIM
+        )
+    elseif(NOT ${TARGET_FILENAME} STREQUAL "Info.plist")
+      # Copy the file as-is.
+      add_custom_command(
+        TARGET ${target}
+        POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy "${SOURCE_PATH}" "${TARGET_PATH}"
+        VERBATIM
+        )
+    endif()
+  endforeach()
+endmacro()
+
+endif(OS_MACOSX)
+
+
+#
+# Windows macros.
+#
+
+if(OS_WINDOWS)
+
+# Add custom manifest files to an executable target.
+macro(ADD_WINDOWS_MANIFEST manifest_path target)
+  add_custom_command(
+    TARGET ${target}
+    POST_BUILD
+    COMMAND "mt.exe" -nologo
+            -manifest \"${manifest_path}/${target}.exe.manifest\" \"${manifest_path}/compatibility.manifest\"
+            -outputresource:"${CEF_TARGET_OUT_DIR}/${target}.exe"\;\#1
+    COMMENT "Adding manifest..."
+    )
+endmacro()
+
+# List of CEF binary files.
+set(CEF_BINARY_FILES
+  d3dcompiler_43.dll
+  d3dcompiler_47.dll
+  libcef.dll
+  libEGL.dll
+  libGLESv2.dll
+  natives_blob.bin
+  snapshot_blob.bin
+  )
+
+# We don't have a 32 bit build right now
+#if(PROJECT_ARCH STREQUAL "x86")
+# Only used on 32-bit platforms.
+#  set(CEF_BINARY_FILES
+#    ${CEF_BINARY_FILES}
+#    wow_helper.exe
+#    )
+#endif()
+
+# List of CEF resource files.
+set(CEF_RESOURCE_FILES
+  cef.pak
+  cef_100_percent.pak
+  cef_200_percent.pak
+  cef_extensions.pak
+  devtools_resources.pak
+  icudtl.dat
+  locales
+  )
+
+
+endif(OS_WINDOWS)

+ 2 - 4
Build/Scripts/BuildWindows.js

@@ -34,10 +34,8 @@ namespace('build', function() {
     jake.exec(cmds, function() {
 
       // Copy the Editor binaries
-      fs.copySync(buildDir + "Source/AtomicEditor/Release/AtomicEditor.exe",
-        host.artifactsRoot + "AtomicEditor/AtomicEditor.exe");
-      fs.copySync(buildDir + "Source/AtomicEditor/Release/D3DCompiler_47.dll",
-        host.artifactsRoot + "AtomicEditor/D3DCompiler_47.dll");
+      fs.copySync(buildDir + "Source/AtomicEditor/Release",
+        host.artifactsRoot + "AtomicEditor");
 
       // We need some resources to run
       fs.copySync(atomicRoot + "Resources/CoreData",

+ 13 - 3
CMakeLists.txt

@@ -67,10 +67,20 @@ endif()
 
 find_program(CLDOC cldoc)
 if(CLDOC)
+   add_custom_target(docs DEPENDS AtomicEngineDocs)
+endif()
 
-   add_custom_target(docs
-    DEPENDS AtomicEngineDocs
-    )
+if (ATOMIC_WEBVIEW)
+  if(APPLE)
+    include_directories (${CMAKE_SOURCE_DIR}/Submodules/CEF/MacOSX/)
+    add_subdirectory(Submodules/CEF/MacOSX/libcef_dll)
+  elseif(MSVC)
+    include_directories (${CMAKE_SOURCE_DIR}/Submodules/CEF/Windows/64bit)
+    add_subdirectory(Submodules/CEF/Windows/64bit/libcef_dll)
+  else()
+    include_directories (${CMAKE_SOURCE_DIR}/Submodules/CEF/Linux)
+    add_subdirectory(Submodules/CEF/Linux/libcef_dll)
+  endif()
 endif()
 
 add_subdirectory(Source)

+ 80 - 0
Data/AtomicEditor/CodeEditor/Editor.html

@@ -0,0 +1,80 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+  <title>Editor</title>
+  <style type="text/css" media="screen">
+  body {
+    overflow: hidden;
+  }
+
+  #editor {
+    margin: 0;
+    position: absolute;
+    top: 0;
+    bottom: 0;
+    left: 0;
+    right: 0;
+  }
+  </style>
+</head>
+<body>
+
+  <pre id="editor"></pre>
+
+  <script src="./source/ace/ace.js" type="text/javascript" charset="utf-8"></script>
+  <script src="./source/ace/ext-language_tools.js"></script>
+  <script>
+
+  editor = ace.edit("editor");
+
+  editor.setOptions({
+    enableBasicAutocompletion: true,
+    enableSnippets: true,
+    enableLiveAutocompletion: true
+  });
+
+  function saveCode() {
+
+    var data = {
+        message : "saveCode",
+        payload : editor.session.getValue()
+    }
+
+    window.atomicQuery({request: JSON.stringify(data),
+    persistent: false,
+    onSuccess: function(response) { },
+    onFailure: function(error_code, error_message) {console.log("Error getting code")}});
+  }
+
+  function codeLoaded(value) {
+
+    editor.setTheme("ace/theme/monokai");
+    editor.session.setMode("ace/mode/typescript");
+    editor.session.setValue(value);
+    editor.gotoLine(0);    
+
+    editor.getSession().on('change', function(e) {
+      window.atomicQuery({request: 'change',
+      persistent: false,
+      onSuccess: function(response) { },
+      onFailure: function(error_code, error_message) {console.log("Error on change")}});
+    });
+  }
+
+  function loadCode(codeUrl)
+  {
+    var xmlHttp = new XMLHttpRequest();
+    xmlHttp.onreadystatechange = function() {
+      if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
+      codeLoaded(xmlHttp.responseText);
+    }
+    xmlHttp.open("GET", codeUrl, true); // true for asynchronous
+    xmlHttp.send(null);
+  }
+
+  </script>
+
+</body>
+</html>

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ace.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-beautify.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-chromevox.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-elastic_tabstops_lite.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-emmet.js


+ 5 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-error_marker.js

@@ -0,0 +1,5 @@
+;
+                (function() {
+                    ace.require(["ace/ext/error_marker"], function() {});
+                })();
+            

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-keybinding_menu.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-language_tools.js


+ 5 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-linking.js

@@ -0,0 +1,5 @@
+ace.define("ace/ext/linking",["require","exports","module","ace/editor","ace/config"],function(e,t,n){function i(e){var t=e.editor,n=e.getAccelKey();if(n){var t=e.editor,r=e.getDocumentPosition(),i=t.session,s=i.getTokenAt(r.row,r.column);t._emit("linkHover",{position:r,token:s})}}function s(e){var t=e.getAccelKey(),n=e.getButton();if(n==0&&t){var r=e.editor,i=e.getDocumentPosition(),s=r.session,o=s.getTokenAt(i.row,i.column);r._emit("linkClick",{position:i,token:o})}}var r=e("ace/editor").Editor;e("../config").defineOptions(r.prototype,"editor",{enableLinking:{set:function(e){e?(this.on("click",s),this.on("mousemove",i)):(this.off("click",s),this.off("mousemove",i))},value:!1}})});
+                (function() {
+                    ace.require(["ace/ext/linking"], function() {});
+                })();
+            

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-modelist.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-old_ie.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-searchbox.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-settings_menu.js


+ 5 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-spellcheck.js

@@ -0,0 +1,5 @@
+ace.define("ace/ext/spellcheck",["require","exports","module","ace/lib/event","ace/editor","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event");t.contextMenuHandler=function(e){var t=e.target,n=t.textInput.getElement();if(!t.selection.isEmpty())return;var i=t.getCursorPosition(),s=t.session.getWordRange(i.row,i.column),o=t.session.getTextRange(s);t.session.tokenRe.lastIndex=0;if(!t.session.tokenRe.test(o))return;var u="",a=o+" "+u;n.value=a,n.setSelectionRange(o.length,o.length+1),n.setSelectionRange(0,0),n.setSelectionRange(0,o.length);var f=!1;r.addListener(n,"keydown",function l(){r.removeListener(n,"keydown",l),f=!0}),t.textInput.setInputHandler(function(e){console.log(e,a,n.selectionStart,n.selectionEnd);if(e==a)return"";if(e.lastIndexOf(a,0)===0)return e.slice(a.length);if(e.substr(n.selectionEnd)==a)return e.slice(0,-a.length);if(e.slice(-2)==u){var r=e.slice(0,-2);if(r.slice(-1)==" ")return f?r.substring(0,n.selectionEnd):(r=r.slice(0,-1),t.session.replace(s,r),"")}return e})};var i=e("../editor").Editor;e("../config").defineOptions(i.prototype,"editor",{spellcheck:{set:function(e){var n=this.textInput.getElement();n.spellcheck=!!e,e?this.on("nativecontextmenu",t.contextMenuHandler):this.removeListener("nativecontextmenu",t.contextMenuHandler)},value:!0}})});
+                (function() {
+                    ace.require(["ace/ext/spellcheck"], function() {});
+                })();
+            

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-split.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-static_highlight.js


+ 5 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-statusbar.js

@@ -0,0 +1,5 @@
+ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this)).schedule.bind(null,100);e.on("changeStatus",n),e.on("changeSelection",n),e.on("keyboardActivity",n)};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection,i=r.lead;if(!r.isEmpty()){var s=e.getSelectionRange();n("("+(s.end.row-s.start.row)+":"+(s.end.column-s.start.column)+")"," ")}n(i.row+":"+i.column," "),r.rangeCount&&n("["+r.rangeCount+"]"," "),t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s});
+                (function() {
+                    ace.require(["ace/ext/statusbar"], function() {});
+                })();
+            

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-textarea.js


+ 5 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-themelist.js

@@ -0,0 +1,5 @@
+ace.define("ace/ext/themelist",["require","exports","module","ace/lib/fixoldbrowsers"],function(e,t,n){"use strict";e("ace/lib/fixoldbrowsers");var r=[["Chrome"],["Clouds"],["Crimson Editor"],["Dawn"],["Dreamweaver"],["Eclipse"],["GitHub"],["IPlastic"],["Solarized Light"],["TextMate"],["Tomorrow"],["XCode"],["Kuroir"],["KatzenMilch"],["SQL Server","sqlserver","light"],["Ambiance","ambiance","dark"],["Chaos","chaos","dark"],["Clouds Midnight","clouds_midnight","dark"],["Cobalt","cobalt","dark"],["idle Fingers","idle_fingers","dark"],["krTheme","kr_theme","dark"],["Merbivore","merbivore","dark"],["Merbivore Soft","merbivore_soft","dark"],["Mono Industrial","mono_industrial","dark"],["Monokai","monokai","dark"],["Pastel on dark","pastel_on_dark","dark"],["Solarized Dark","solarized_dark","dark"],["Terminal","terminal","dark"],["Tomorrow Night","tomorrow_night","dark"],["Tomorrow Night Blue","tomorrow_night_blue","dark"],["Tomorrow Night Bright","tomorrow_night_bright","dark"],["Tomorrow Night 80s","tomorrow_night_eighties","dark"],["Twilight","twilight","dark"],["Vibrant Ink","vibrant_ink","dark"]];t.themesByName={},t.themes=r.map(function(e){var n=e[1]||e[0].replace(/ /g,"_").toLowerCase(),r={caption:e[0],theme:"ace/theme/"+n,isDark:e[2]=="dark",name:n};return t.themesByName[n]=r,r})});
+                (function() {
+                    ace.require(["ace/ext/themelist"], function() {});
+                })();
+            

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/ext-whitespace.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/keybinding-emacs.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/keybinding-vim.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-abap.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-abc.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-actionscript.js


+ 1 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-ada.js

@@ -0,0 +1 @@
+ace.define("ace/mode/ada_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="abort|else|new|return|abs|elsif|not|reverse|abstract|end|null|accept|entry|select|access|exception|of|separate|aliased|exit|or|some|all|others|subtype|and|for|out|synchronized|array|function|overriding|at|tagged|generic|package|task|begin|goto|pragma|terminate|body|private|then|if|procedure|type|case|in|protected|constant|interface|until||is|raise|use|declare|range|delay|limited|record|when|delta|loop|rem|while|digits|renames|with|do|mod|requeue|xor",t="true|false|null",n="count|min|max|avg|sum|rank|now|coalesce|main",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.AdaHighlightRules=s}),ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./ada_highlight_rules").AdaHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/ada"}.call(u.prototype),t.Mode=u})

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-apache_conf.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-applescript.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-asciidoc.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-assembly_x86.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-autohotkey.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-batchfile.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-c9search.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-c_cpp.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-cirru.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-clojure.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-cobol.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-coffee.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-coldfusion.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-csharp.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-css.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-curly.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-d.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-dart.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-diff.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-django.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-dockerfile.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-dot.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-eiffel.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-ejs.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-elixir.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-elm.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-erlang.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-forth.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-ftl.js


+ 1 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-gcode.js

@@ -0,0 +1 @@
+ace.define("ace/mode/gcode_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="IF|DO|WHILE|ENDWHILE|CALL|ENDIF|SUB|ENDSUB|GOTO|REPEAT|ENDREPEAT|CALL",t="PI",n="ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN",r=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t},"identifier",!0);this.$rules={start:[{token:"comment",regex:"\\(.*\\)"},{token:"comment",regex:"([N])([0-9]+)"},{token:"string",regex:"([G])([0-9]+\\.?[0-9]?)"},{token:"string",regex:"([M])([0-9]+\\.?[0-9]?)"},{token:"constant.numeric",regex:"([-+]?([0-9]*\\.?[0-9]+\\.?))|(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)"},{token:r,regex:"[A-Z]"},{token:"keyword.operator",regex:"EQ|LT|GT|NE|GE|LE|OR|XOR"},{token:"paren.lparen",regex:"[\\[]"},{token:"paren.rparen",regex:"[\\]]"},{token:"text",regex:"\\s+"}]}};r.inherits(s,i),t.GcodeHighlightRules=s}),ace.define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gcode_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gcode_highlight_rules").GcodeHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.$id="ace/mode/gcode"}.call(u.prototype),t.Mode=u})

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-gherkin.js


+ 1 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-gitignore.js

@@ -0,0 +1 @@
+ace.define("ace/mode/gitignore_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment",regex:/^\s*#.*$/},{token:"keyword",regex:/^\s*!.*$/}]},this.normalizeRules()};s.metaData={fileTypes:["gitignore"],name:"Gitignore"},r.inherits(s,i),t.GitignoreHighlightRules=s}),ace.define("ace/mode/gitignore",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/gitignore_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./gitignore_highlight_rules").GitignoreHighlightRules,o=function(){this.HighlightRules=s};r.inherits(o,i),function(){this.lineCommentStart="#",this.$id="ace/mode/gitignore"}.call(o.prototype),t.Mode=o})

File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-glsl.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-gobstones.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-golang.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-groovy.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-haml.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-handlebars.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-haskell.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-haxe.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-html.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-html_elixir.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-html_ruby.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-ini.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-io.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-jack.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-jade.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-java.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-javascript.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-json.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-jsoniq.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-jsp.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-jsx.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-julia.js


File diff suppressed because it is too large
+ 0 - 0
Data/AtomicEditor/CodeEditor/source/ace/mode-latex.js


Some files were not shown because too many files changed in this diff