diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/GraphicExport-app.xml b/GraphicExport-app.xml index 8d0c013..3fe1fc6 100644 --- a/GraphicExport-app.xml +++ b/GraphicExport-app.xml @@ -31,6 +31,9 @@ false portrait auto + true + true + true false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/GraphicExport-app.xml b/GraphicExport-app.xml index 8d0c013..3fe1fc6 100644 --- a/GraphicExport-app.xml +++ b/GraphicExport-app.xml @@ -31,6 +31,9 @@ false portrait auto + true + true + true false diff --git a/GraphicExport.as b/GraphicExport.as index 4b9b2a6..0dab2f4 100644 --- a/GraphicExport.as +++ b/GraphicExport.as @@ -13,6 +13,7 @@ import flash.display.StageAlign; import flash.display.StageScaleMode; import com.adobe.crypto.MD5; + import flash.desktop.*; import djarts.core.*; import djarts.events.*; @@ -42,14 +43,15 @@ import GraphicExport.AnimPiecePacker; import GraphicExport.ScenePacker; - import flash.filesystem.File; - + import flash.filesystem.*; public class GraphicExport extends MovieClip { var UILayer:MovieClip = new MovieClip(); public static var ISLOCAL = true; + public static var wrapper:Socket = null; + private static var lastData = ""; public function GraphicExport() { @@ -66,8 +68,88 @@ this.removeChild(newGraphicDialog); Init(); + + try + { + NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked); + } + catch (e) + { + // not an air runtime app + ConnectWrapper(7890); // try default port + } + } + public function ApplicationInvoked(e) + { + if (e.arguments.length == 1) + { + ConnectWrapper(parseInt(e.arguments[0])); + } + else + { + StartUI(); + } + } + + private function WrapperIOError(e) + { + Log("Couldn't connect wrapper"); + Log(e.toString()); + StartUI(); + } + + private function WrapperConnect(e:Event) + { + wrapper = e.target as Socket; + Log("Wrapper Connected"); + _strace("Wrapper Connected"); + wrapper.addEventListener(ProgressEvent.SOCKET_DATA, WrapperData); + } + + private function WrapperData(e:ProgressEvent) + { + var data:String = wrapper.readUTFBytes(wrapper.bytesAvailable); + for (var i = 0; i < data.length; i++) + { + var c = data.charAt(i); + if (c == "\n" || c == "\r") + { + if (lastData != "") DispatchCommand(lastData); + lastData = ""; + } + else + { + lastData += c; + } + } + } + + private function DispatchCommand(command) + { + Log("Wrapper Command: " + command); + _strace("exeucting: " + command); + } + + private function ConnectWrapper(port) + { + Log("Attempting to connect wrapper"); + try + { + var s = new Socket(); + s.addEventListener(IOErrorEvent.IO_ERROR, WrapperIOError); + s.addEventListener(Event.CONNECT, WrapperConnect); + s.connect("localhost", port); + } catch (e) + { + Log("Error establishing wrapper connection"); + StartUI(); + return; + } + } + + public function Init() { @@ -89,17 +171,11 @@ FlashConsole.Instance().Admin = true; - //GameData.Instance().LoadData(GameDataLoaded); - stage.addEventListener(Event.ENTER_FRAME, EnterFrame); stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); this.addChild(previewHolder); CreateUI(); - ActivateExportButtons(false); - - GameDataLoaded(); - } var exportButtons:Array = []; @@ -174,7 +250,12 @@ edgeExpand.Checked = PNGExportHelper.UseExpandedBitmaps; this.skeletal_scale.addEventListener(Event.CHANGE, SkeletalScaleChanged); - ShowNewGraphicDialog(); + } + + public function StartUI() + { + ActivateExportButtons(true); + ShowNewGraphicDialog(); } public function ShowNewGraphicDialog() @@ -499,69 +580,20 @@ { fileExport.Save(lastCallback); } - + + /* if (saveMode == UPLOAD) { var uploadURL = ""; fileExport.Upload(uploadURL, assetDef.Folder, lastCallback); } + */ if (saveMode == TEST && lastCallback) lastCallback(); } - var multiImport:MultiImportFileBrowser; - public function GameDataLoaded() - { - ActivateExportButtons(true); - _trace("Game Data Loaded!"); - - multiImport = new MultiImportFileBrowser(); - } - - public function ShowMultiImportDialog() - { - multiImport.Show(this); - multiImport.x = 100; - multiImport.y = 60; - } - - protected var uploadCallback; - public function Upload(filename, data, callback) - { - this.uploadCallback = callback; - var loader = new URLLoader(); - - var receiverURL = ""; - - - var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); - var uploadRequest:URLRequest = new URLRequest(receiverURL+"?name="+filename); - uploadRequest.requestHeaders.push(header); - uploadRequest.method = URLRequestMethod.POST; - uploadRequest.data = data; - - loader.addEventListener(Event.COMPLETE, onLoaded); - loader.addEventListener( IOErrorEvent.IO_ERROR, catchIOError); - - loader.load(uploadRequest); - - _trace("uploading "+filename); - - } - - public function onLoaded(event) - { - _trace("Upload Complete"); - if (uploadCallback) uploadCallback(); - } - - function catchIOError(event:IOErrorEvent) - { - trace("Error caught: "+event.type); - } - } diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/GraphicExport-app.xml b/GraphicExport-app.xml index 8d0c013..3fe1fc6 100644 --- a/GraphicExport-app.xml +++ b/GraphicExport-app.xml @@ -31,6 +31,9 @@ false portrait auto + true + true + true false diff --git a/GraphicExport.as b/GraphicExport.as index 4b9b2a6..0dab2f4 100644 --- a/GraphicExport.as +++ b/GraphicExport.as @@ -13,6 +13,7 @@ import flash.display.StageAlign; import flash.display.StageScaleMode; import com.adobe.crypto.MD5; + import flash.desktop.*; import djarts.core.*; import djarts.events.*; @@ -42,14 +43,15 @@ import GraphicExport.AnimPiecePacker; import GraphicExport.ScenePacker; - import flash.filesystem.File; - + import flash.filesystem.*; public class GraphicExport extends MovieClip { var UILayer:MovieClip = new MovieClip(); public static var ISLOCAL = true; + public static var wrapper:Socket = null; + private static var lastData = ""; public function GraphicExport() { @@ -66,8 +68,88 @@ this.removeChild(newGraphicDialog); Init(); + + try + { + NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked); + } + catch (e) + { + // not an air runtime app + ConnectWrapper(7890); // try default port + } + } + public function ApplicationInvoked(e) + { + if (e.arguments.length == 1) + { + ConnectWrapper(parseInt(e.arguments[0])); + } + else + { + StartUI(); + } + } + + private function WrapperIOError(e) + { + Log("Couldn't connect wrapper"); + Log(e.toString()); + StartUI(); + } + + private function WrapperConnect(e:Event) + { + wrapper = e.target as Socket; + Log("Wrapper Connected"); + _strace("Wrapper Connected"); + wrapper.addEventListener(ProgressEvent.SOCKET_DATA, WrapperData); + } + + private function WrapperData(e:ProgressEvent) + { + var data:String = wrapper.readUTFBytes(wrapper.bytesAvailable); + for (var i = 0; i < data.length; i++) + { + var c = data.charAt(i); + if (c == "\n" || c == "\r") + { + if (lastData != "") DispatchCommand(lastData); + lastData = ""; + } + else + { + lastData += c; + } + } + } + + private function DispatchCommand(command) + { + Log("Wrapper Command: " + command); + _strace("exeucting: " + command); + } + + private function ConnectWrapper(port) + { + Log("Attempting to connect wrapper"); + try + { + var s = new Socket(); + s.addEventListener(IOErrorEvent.IO_ERROR, WrapperIOError); + s.addEventListener(Event.CONNECT, WrapperConnect); + s.connect("localhost", port); + } catch (e) + { + Log("Error establishing wrapper connection"); + StartUI(); + return; + } + } + + public function Init() { @@ -89,17 +171,11 @@ FlashConsole.Instance().Admin = true; - //GameData.Instance().LoadData(GameDataLoaded); - stage.addEventListener(Event.ENTER_FRAME, EnterFrame); stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); this.addChild(previewHolder); CreateUI(); - ActivateExportButtons(false); - - GameDataLoaded(); - } var exportButtons:Array = []; @@ -174,7 +250,12 @@ edgeExpand.Checked = PNGExportHelper.UseExpandedBitmaps; this.skeletal_scale.addEventListener(Event.CHANGE, SkeletalScaleChanged); - ShowNewGraphicDialog(); + } + + public function StartUI() + { + ActivateExportButtons(true); + ShowNewGraphicDialog(); } public function ShowNewGraphicDialog() @@ -499,69 +580,20 @@ { fileExport.Save(lastCallback); } - + + /* if (saveMode == UPLOAD) { var uploadURL = ""; fileExport.Upload(uploadURL, assetDef.Folder, lastCallback); } + */ if (saveMode == TEST && lastCallback) lastCallback(); } - var multiImport:MultiImportFileBrowser; - public function GameDataLoaded() - { - ActivateExportButtons(true); - _trace("Game Data Loaded!"); - - multiImport = new MultiImportFileBrowser(); - } - - public function ShowMultiImportDialog() - { - multiImport.Show(this); - multiImport.x = 100; - multiImport.y = 60; - } - - protected var uploadCallback; - public function Upload(filename, data, callback) - { - this.uploadCallback = callback; - var loader = new URLLoader(); - - var receiverURL = ""; - - - var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); - var uploadRequest:URLRequest = new URLRequest(receiverURL+"?name="+filename); - uploadRequest.requestHeaders.push(header); - uploadRequest.method = URLRequestMethod.POST; - uploadRequest.data = data; - - loader.addEventListener(Event.COMPLETE, onLoaded); - loader.addEventListener( IOErrorEvent.IO_ERROR, catchIOError); - - loader.load(uploadRequest); - - _trace("uploading "+filename); - - } - - public function onLoaded(event) - { - _trace("Upload Complete"); - if (uploadCallback) uploadCallback(); - } - - function catchIOError(event:IOErrorEvent) - { - trace("Error caught: "+event.type); - } - } diff --git a/GraphicExport.exe b/GraphicExport.exe new file mode 100644 index 0000000..97303ae --- /dev/null +++ b/GraphicExport.exe Binary files differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/GraphicExport-app.xml b/GraphicExport-app.xml index 8d0c013..3fe1fc6 100644 --- a/GraphicExport-app.xml +++ b/GraphicExport-app.xml @@ -31,6 +31,9 @@ false portrait auto + true + true + true false diff --git a/GraphicExport.as b/GraphicExport.as index 4b9b2a6..0dab2f4 100644 --- a/GraphicExport.as +++ b/GraphicExport.as @@ -13,6 +13,7 @@ import flash.display.StageAlign; import flash.display.StageScaleMode; import com.adobe.crypto.MD5; + import flash.desktop.*; import djarts.core.*; import djarts.events.*; @@ -42,14 +43,15 @@ import GraphicExport.AnimPiecePacker; import GraphicExport.ScenePacker; - import flash.filesystem.File; - + import flash.filesystem.*; public class GraphicExport extends MovieClip { var UILayer:MovieClip = new MovieClip(); public static var ISLOCAL = true; + public static var wrapper:Socket = null; + private static var lastData = ""; public function GraphicExport() { @@ -66,8 +68,88 @@ this.removeChild(newGraphicDialog); Init(); + + try + { + NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked); + } + catch (e) + { + // not an air runtime app + ConnectWrapper(7890); // try default port + } + } + public function ApplicationInvoked(e) + { + if (e.arguments.length == 1) + { + ConnectWrapper(parseInt(e.arguments[0])); + } + else + { + StartUI(); + } + } + + private function WrapperIOError(e) + { + Log("Couldn't connect wrapper"); + Log(e.toString()); + StartUI(); + } + + private function WrapperConnect(e:Event) + { + wrapper = e.target as Socket; + Log("Wrapper Connected"); + _strace("Wrapper Connected"); + wrapper.addEventListener(ProgressEvent.SOCKET_DATA, WrapperData); + } + + private function WrapperData(e:ProgressEvent) + { + var data:String = wrapper.readUTFBytes(wrapper.bytesAvailable); + for (var i = 0; i < data.length; i++) + { + var c = data.charAt(i); + if (c == "\n" || c == "\r") + { + if (lastData != "") DispatchCommand(lastData); + lastData = ""; + } + else + { + lastData += c; + } + } + } + + private function DispatchCommand(command) + { + Log("Wrapper Command: " + command); + _strace("exeucting: " + command); + } + + private function ConnectWrapper(port) + { + Log("Attempting to connect wrapper"); + try + { + var s = new Socket(); + s.addEventListener(IOErrorEvent.IO_ERROR, WrapperIOError); + s.addEventListener(Event.CONNECT, WrapperConnect); + s.connect("localhost", port); + } catch (e) + { + Log("Error establishing wrapper connection"); + StartUI(); + return; + } + } + + public function Init() { @@ -89,17 +171,11 @@ FlashConsole.Instance().Admin = true; - //GameData.Instance().LoadData(GameDataLoaded); - stage.addEventListener(Event.ENTER_FRAME, EnterFrame); stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); this.addChild(previewHolder); CreateUI(); - ActivateExportButtons(false); - - GameDataLoaded(); - } var exportButtons:Array = []; @@ -174,7 +250,12 @@ edgeExpand.Checked = PNGExportHelper.UseExpandedBitmaps; this.skeletal_scale.addEventListener(Event.CHANGE, SkeletalScaleChanged); - ShowNewGraphicDialog(); + } + + public function StartUI() + { + ActivateExportButtons(true); + ShowNewGraphicDialog(); } public function ShowNewGraphicDialog() @@ -499,69 +580,20 @@ { fileExport.Save(lastCallback); } - + + /* if (saveMode == UPLOAD) { var uploadURL = ""; fileExport.Upload(uploadURL, assetDef.Folder, lastCallback); } + */ if (saveMode == TEST && lastCallback) lastCallback(); } - var multiImport:MultiImportFileBrowser; - public function GameDataLoaded() - { - ActivateExportButtons(true); - _trace("Game Data Loaded!"); - - multiImport = new MultiImportFileBrowser(); - } - - public function ShowMultiImportDialog() - { - multiImport.Show(this); - multiImport.x = 100; - multiImport.y = 60; - } - - protected var uploadCallback; - public function Upload(filename, data, callback) - { - this.uploadCallback = callback; - var loader = new URLLoader(); - - var receiverURL = ""; - - - var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); - var uploadRequest:URLRequest = new URLRequest(receiverURL+"?name="+filename); - uploadRequest.requestHeaders.push(header); - uploadRequest.method = URLRequestMethod.POST; - uploadRequest.data = data; - - loader.addEventListener(Event.COMPLETE, onLoaded); - loader.addEventListener( IOErrorEvent.IO_ERROR, catchIOError); - - loader.load(uploadRequest); - - _trace("uploading "+filename); - - } - - public function onLoaded(event) - { - _trace("Upload Complete"); - if (uploadCallback) uploadCallback(); - } - - function catchIOError(event:IOErrorEvent) - { - trace("Error caught: "+event.type); - } - } diff --git a/GraphicExport.exe b/GraphicExport.exe new file mode 100644 index 0000000..97303ae --- /dev/null +++ b/GraphicExport.exe Binary files differ diff --git a/GraphicExport.fla b/GraphicExport.fla index 4dd9c51..6a5c953 100644 --- a/GraphicExport.fla +++ b/GraphicExport.fla Binary files differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/GraphicExport-app.xml b/GraphicExport-app.xml index 8d0c013..3fe1fc6 100644 --- a/GraphicExport-app.xml +++ b/GraphicExport-app.xml @@ -31,6 +31,9 @@ false portrait auto + true + true + true false diff --git a/GraphicExport.as b/GraphicExport.as index 4b9b2a6..0dab2f4 100644 --- a/GraphicExport.as +++ b/GraphicExport.as @@ -13,6 +13,7 @@ import flash.display.StageAlign; import flash.display.StageScaleMode; import com.adobe.crypto.MD5; + import flash.desktop.*; import djarts.core.*; import djarts.events.*; @@ -42,14 +43,15 @@ import GraphicExport.AnimPiecePacker; import GraphicExport.ScenePacker; - import flash.filesystem.File; - + import flash.filesystem.*; public class GraphicExport extends MovieClip { var UILayer:MovieClip = new MovieClip(); public static var ISLOCAL = true; + public static var wrapper:Socket = null; + private static var lastData = ""; public function GraphicExport() { @@ -66,8 +68,88 @@ this.removeChild(newGraphicDialog); Init(); + + try + { + NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked); + } + catch (e) + { + // not an air runtime app + ConnectWrapper(7890); // try default port + } + } + public function ApplicationInvoked(e) + { + if (e.arguments.length == 1) + { + ConnectWrapper(parseInt(e.arguments[0])); + } + else + { + StartUI(); + } + } + + private function WrapperIOError(e) + { + Log("Couldn't connect wrapper"); + Log(e.toString()); + StartUI(); + } + + private function WrapperConnect(e:Event) + { + wrapper = e.target as Socket; + Log("Wrapper Connected"); + _strace("Wrapper Connected"); + wrapper.addEventListener(ProgressEvent.SOCKET_DATA, WrapperData); + } + + private function WrapperData(e:ProgressEvent) + { + var data:String = wrapper.readUTFBytes(wrapper.bytesAvailable); + for (var i = 0; i < data.length; i++) + { + var c = data.charAt(i); + if (c == "\n" || c == "\r") + { + if (lastData != "") DispatchCommand(lastData); + lastData = ""; + } + else + { + lastData += c; + } + } + } + + private function DispatchCommand(command) + { + Log("Wrapper Command: " + command); + _strace("exeucting: " + command); + } + + private function ConnectWrapper(port) + { + Log("Attempting to connect wrapper"); + try + { + var s = new Socket(); + s.addEventListener(IOErrorEvent.IO_ERROR, WrapperIOError); + s.addEventListener(Event.CONNECT, WrapperConnect); + s.connect("localhost", port); + } catch (e) + { + Log("Error establishing wrapper connection"); + StartUI(); + return; + } + } + + public function Init() { @@ -89,17 +171,11 @@ FlashConsole.Instance().Admin = true; - //GameData.Instance().LoadData(GameDataLoaded); - stage.addEventListener(Event.ENTER_FRAME, EnterFrame); stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); this.addChild(previewHolder); CreateUI(); - ActivateExportButtons(false); - - GameDataLoaded(); - } var exportButtons:Array = []; @@ -174,7 +250,12 @@ edgeExpand.Checked = PNGExportHelper.UseExpandedBitmaps; this.skeletal_scale.addEventListener(Event.CHANGE, SkeletalScaleChanged); - ShowNewGraphicDialog(); + } + + public function StartUI() + { + ActivateExportButtons(true); + ShowNewGraphicDialog(); } public function ShowNewGraphicDialog() @@ -499,69 +580,20 @@ { fileExport.Save(lastCallback); } - + + /* if (saveMode == UPLOAD) { var uploadURL = ""; fileExport.Upload(uploadURL, assetDef.Folder, lastCallback); } + */ if (saveMode == TEST && lastCallback) lastCallback(); } - var multiImport:MultiImportFileBrowser; - public function GameDataLoaded() - { - ActivateExportButtons(true); - _trace("Game Data Loaded!"); - - multiImport = new MultiImportFileBrowser(); - } - - public function ShowMultiImportDialog() - { - multiImport.Show(this); - multiImport.x = 100; - multiImport.y = 60; - } - - protected var uploadCallback; - public function Upload(filename, data, callback) - { - this.uploadCallback = callback; - var loader = new URLLoader(); - - var receiverURL = ""; - - - var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); - var uploadRequest:URLRequest = new URLRequest(receiverURL+"?name="+filename); - uploadRequest.requestHeaders.push(header); - uploadRequest.method = URLRequestMethod.POST; - uploadRequest.data = data; - - loader.addEventListener(Event.COMPLETE, onLoaded); - loader.addEventListener( IOErrorEvent.IO_ERROR, catchIOError); - - loader.load(uploadRequest); - - _trace("uploading "+filename); - - } - - public function onLoaded(event) - { - _trace("Upload Complete"); - if (uploadCallback) uploadCallback(); - } - - function catchIOError(event:IOErrorEvent) - { - trace("Error caught: "+event.type); - } - } diff --git a/GraphicExport.exe b/GraphicExport.exe new file mode 100644 index 0000000..97303ae --- /dev/null +++ b/GraphicExport.exe Binary files differ diff --git a/GraphicExport.fla b/GraphicExport.fla index 4dd9c51..6a5c953 100644 --- a/GraphicExport.fla +++ b/GraphicExport.fla Binary files differ diff --git a/GraphicExport.swf b/GraphicExport.swf index f7addf1..9a77a8b 100644 --- a/GraphicExport.swf +++ b/GraphicExport.swf Binary files differ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/GraphicExport-app.xml b/GraphicExport-app.xml index 8d0c013..3fe1fc6 100644 --- a/GraphicExport-app.xml +++ b/GraphicExport-app.xml @@ -31,6 +31,9 @@ false portrait auto + true + true + true false diff --git a/GraphicExport.as b/GraphicExport.as index 4b9b2a6..0dab2f4 100644 --- a/GraphicExport.as +++ b/GraphicExport.as @@ -13,6 +13,7 @@ import flash.display.StageAlign; import flash.display.StageScaleMode; import com.adobe.crypto.MD5; + import flash.desktop.*; import djarts.core.*; import djarts.events.*; @@ -42,14 +43,15 @@ import GraphicExport.AnimPiecePacker; import GraphicExport.ScenePacker; - import flash.filesystem.File; - + import flash.filesystem.*; public class GraphicExport extends MovieClip { var UILayer:MovieClip = new MovieClip(); public static var ISLOCAL = true; + public static var wrapper:Socket = null; + private static var lastData = ""; public function GraphicExport() { @@ -66,8 +68,88 @@ this.removeChild(newGraphicDialog); Init(); + + try + { + NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked); + } + catch (e) + { + // not an air runtime app + ConnectWrapper(7890); // try default port + } + } + public function ApplicationInvoked(e) + { + if (e.arguments.length == 1) + { + ConnectWrapper(parseInt(e.arguments[0])); + } + else + { + StartUI(); + } + } + + private function WrapperIOError(e) + { + Log("Couldn't connect wrapper"); + Log(e.toString()); + StartUI(); + } + + private function WrapperConnect(e:Event) + { + wrapper = e.target as Socket; + Log("Wrapper Connected"); + _strace("Wrapper Connected"); + wrapper.addEventListener(ProgressEvent.SOCKET_DATA, WrapperData); + } + + private function WrapperData(e:ProgressEvent) + { + var data:String = wrapper.readUTFBytes(wrapper.bytesAvailable); + for (var i = 0; i < data.length; i++) + { + var c = data.charAt(i); + if (c == "\n" || c == "\r") + { + if (lastData != "") DispatchCommand(lastData); + lastData = ""; + } + else + { + lastData += c; + } + } + } + + private function DispatchCommand(command) + { + Log("Wrapper Command: " + command); + _strace("exeucting: " + command); + } + + private function ConnectWrapper(port) + { + Log("Attempting to connect wrapper"); + try + { + var s = new Socket(); + s.addEventListener(IOErrorEvent.IO_ERROR, WrapperIOError); + s.addEventListener(Event.CONNECT, WrapperConnect); + s.connect("localhost", port); + } catch (e) + { + Log("Error establishing wrapper connection"); + StartUI(); + return; + } + } + + public function Init() { @@ -89,17 +171,11 @@ FlashConsole.Instance().Admin = true; - //GameData.Instance().LoadData(GameDataLoaded); - stage.addEventListener(Event.ENTER_FRAME, EnterFrame); stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); this.addChild(previewHolder); CreateUI(); - ActivateExportButtons(false); - - GameDataLoaded(); - } var exportButtons:Array = []; @@ -174,7 +250,12 @@ edgeExpand.Checked = PNGExportHelper.UseExpandedBitmaps; this.skeletal_scale.addEventListener(Event.CHANGE, SkeletalScaleChanged); - ShowNewGraphicDialog(); + } + + public function StartUI() + { + ActivateExportButtons(true); + ShowNewGraphicDialog(); } public function ShowNewGraphicDialog() @@ -499,69 +580,20 @@ { fileExport.Save(lastCallback); } - + + /* if (saveMode == UPLOAD) { var uploadURL = ""; fileExport.Upload(uploadURL, assetDef.Folder, lastCallback); } + */ if (saveMode == TEST && lastCallback) lastCallback(); } - var multiImport:MultiImportFileBrowser; - public function GameDataLoaded() - { - ActivateExportButtons(true); - _trace("Game Data Loaded!"); - - multiImport = new MultiImportFileBrowser(); - } - - public function ShowMultiImportDialog() - { - multiImport.Show(this); - multiImport.x = 100; - multiImport.y = 60; - } - - protected var uploadCallback; - public function Upload(filename, data, callback) - { - this.uploadCallback = callback; - var loader = new URLLoader(); - - var receiverURL = ""; - - - var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); - var uploadRequest:URLRequest = new URLRequest(receiverURL+"?name="+filename); - uploadRequest.requestHeaders.push(header); - uploadRequest.method = URLRequestMethod.POST; - uploadRequest.data = data; - - loader.addEventListener(Event.COMPLETE, onLoaded); - loader.addEventListener( IOErrorEvent.IO_ERROR, catchIOError); - - loader.load(uploadRequest); - - _trace("uploading "+filename); - - } - - public function onLoaded(event) - { - _trace("Upload Complete"); - if (uploadCallback) uploadCallback(); - } - - function catchIOError(event:IOErrorEvent) - { - trace("Error caught: "+event.type); - } - } diff --git a/GraphicExport.exe b/GraphicExport.exe new file mode 100644 index 0000000..97303ae --- /dev/null +++ b/GraphicExport.exe Binary files differ diff --git a/GraphicExport.fla b/GraphicExport.fla index 4dd9c51..6a5c953 100644 --- a/GraphicExport.fla +++ b/GraphicExport.fla Binary files differ diff --git a/GraphicExport.swf b/GraphicExport.swf index f7addf1..9a77a8b 100644 --- a/GraphicExport.swf +++ b/GraphicExport.swf Binary files differ diff --git a/NewGraphicDialog.as b/NewGraphicDialog.as index 78359ad..c2d896d 100644 --- a/NewGraphicDialog.as +++ b/NewGraphicDialog.as @@ -39,9 +39,6 @@ newTestButton.y = testButton.y + (newTestButton.height / 2); addChild(newTestButton); - closeButton.addEventListener(MouseEvent.CLICK, CloseClicked); - (closeButton.getChildAt(0) as MovieClip).stop(); - this.removeChild(typePlaceholderButton); var typeX = typePlaceholderButton.x; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/GraphicExport-app.xml b/GraphicExport-app.xml index 8d0c013..3fe1fc6 100644 --- a/GraphicExport-app.xml +++ b/GraphicExport-app.xml @@ -31,6 +31,9 @@ false portrait auto + true + true + true false diff --git a/GraphicExport.as b/GraphicExport.as index 4b9b2a6..0dab2f4 100644 --- a/GraphicExport.as +++ b/GraphicExport.as @@ -13,6 +13,7 @@ import flash.display.StageAlign; import flash.display.StageScaleMode; import com.adobe.crypto.MD5; + import flash.desktop.*; import djarts.core.*; import djarts.events.*; @@ -42,14 +43,15 @@ import GraphicExport.AnimPiecePacker; import GraphicExport.ScenePacker; - import flash.filesystem.File; - + import flash.filesystem.*; public class GraphicExport extends MovieClip { var UILayer:MovieClip = new MovieClip(); public static var ISLOCAL = true; + public static var wrapper:Socket = null; + private static var lastData = ""; public function GraphicExport() { @@ -66,8 +68,88 @@ this.removeChild(newGraphicDialog); Init(); + + try + { + NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked); + } + catch (e) + { + // not an air runtime app + ConnectWrapper(7890); // try default port + } + } + public function ApplicationInvoked(e) + { + if (e.arguments.length == 1) + { + ConnectWrapper(parseInt(e.arguments[0])); + } + else + { + StartUI(); + } + } + + private function WrapperIOError(e) + { + Log("Couldn't connect wrapper"); + Log(e.toString()); + StartUI(); + } + + private function WrapperConnect(e:Event) + { + wrapper = e.target as Socket; + Log("Wrapper Connected"); + _strace("Wrapper Connected"); + wrapper.addEventListener(ProgressEvent.SOCKET_DATA, WrapperData); + } + + private function WrapperData(e:ProgressEvent) + { + var data:String = wrapper.readUTFBytes(wrapper.bytesAvailable); + for (var i = 0; i < data.length; i++) + { + var c = data.charAt(i); + if (c == "\n" || c == "\r") + { + if (lastData != "") DispatchCommand(lastData); + lastData = ""; + } + else + { + lastData += c; + } + } + } + + private function DispatchCommand(command) + { + Log("Wrapper Command: " + command); + _strace("exeucting: " + command); + } + + private function ConnectWrapper(port) + { + Log("Attempting to connect wrapper"); + try + { + var s = new Socket(); + s.addEventListener(IOErrorEvent.IO_ERROR, WrapperIOError); + s.addEventListener(Event.CONNECT, WrapperConnect); + s.connect("localhost", port); + } catch (e) + { + Log("Error establishing wrapper connection"); + StartUI(); + return; + } + } + + public function Init() { @@ -89,17 +171,11 @@ FlashConsole.Instance().Admin = true; - //GameData.Instance().LoadData(GameDataLoaded); - stage.addEventListener(Event.ENTER_FRAME, EnterFrame); stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); this.addChild(previewHolder); CreateUI(); - ActivateExportButtons(false); - - GameDataLoaded(); - } var exportButtons:Array = []; @@ -174,7 +250,12 @@ edgeExpand.Checked = PNGExportHelper.UseExpandedBitmaps; this.skeletal_scale.addEventListener(Event.CHANGE, SkeletalScaleChanged); - ShowNewGraphicDialog(); + } + + public function StartUI() + { + ActivateExportButtons(true); + ShowNewGraphicDialog(); } public function ShowNewGraphicDialog() @@ -499,69 +580,20 @@ { fileExport.Save(lastCallback); } - + + /* if (saveMode == UPLOAD) { var uploadURL = ""; fileExport.Upload(uploadURL, assetDef.Folder, lastCallback); } + */ if (saveMode == TEST && lastCallback) lastCallback(); } - var multiImport:MultiImportFileBrowser; - public function GameDataLoaded() - { - ActivateExportButtons(true); - _trace("Game Data Loaded!"); - - multiImport = new MultiImportFileBrowser(); - } - - public function ShowMultiImportDialog() - { - multiImport.Show(this); - multiImport.x = 100; - multiImport.y = 60; - } - - protected var uploadCallback; - public function Upload(filename, data, callback) - { - this.uploadCallback = callback; - var loader = new URLLoader(); - - var receiverURL = ""; - - - var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); - var uploadRequest:URLRequest = new URLRequest(receiverURL+"?name="+filename); - uploadRequest.requestHeaders.push(header); - uploadRequest.method = URLRequestMethod.POST; - uploadRequest.data = data; - - loader.addEventListener(Event.COMPLETE, onLoaded); - loader.addEventListener( IOErrorEvent.IO_ERROR, catchIOError); - - loader.load(uploadRequest); - - _trace("uploading "+filename); - - } - - public function onLoaded(event) - { - _trace("Upload Complete"); - if (uploadCallback) uploadCallback(); - } - - function catchIOError(event:IOErrorEvent) - { - trace("Error caught: "+event.type); - } - } diff --git a/GraphicExport.exe b/GraphicExport.exe new file mode 100644 index 0000000..97303ae --- /dev/null +++ b/GraphicExport.exe Binary files differ diff --git a/GraphicExport.fla b/GraphicExport.fla index 4dd9c51..6a5c953 100644 --- a/GraphicExport.fla +++ b/GraphicExport.fla Binary files differ diff --git a/GraphicExport.swf b/GraphicExport.swf index f7addf1..9a77a8b 100644 --- a/GraphicExport.swf +++ b/GraphicExport.swf Binary files differ diff --git a/NewGraphicDialog.as b/NewGraphicDialog.as index 78359ad..c2d896d 100644 --- a/NewGraphicDialog.as +++ b/NewGraphicDialog.as @@ -39,9 +39,6 @@ newTestButton.y = testButton.y + (newTestButton.height / 2); addChild(newTestButton); - closeButton.addEventListener(MouseEvent.CLICK, CloseClicked); - (closeButton.getChildAt(0) as MovieClip).stop(); - this.removeChild(typePlaceholderButton); var typeX = typePlaceholderButton.x; diff --git a/_strace.as b/_strace.as new file mode 100644 index 0000000..e2270cd --- /dev/null +++ b/_strace.as @@ -0,0 +1,12 @@ +package +{ + public function _strace(str) + { + _trace(str); + if (GraphicExport.wrapper != null) + { + GraphicExport.wrapper.writeUTFBytes(str + "\n"); + GraphicExport.wrapper.flush(); + } + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..465d326 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.swp +RECOVER*.fla diff --git a/GraphicExport-app.xml b/GraphicExport-app.xml index 8d0c013..3fe1fc6 100644 --- a/GraphicExport-app.xml +++ b/GraphicExport-app.xml @@ -31,6 +31,9 @@ false portrait auto + true + true + true false diff --git a/GraphicExport.as b/GraphicExport.as index 4b9b2a6..0dab2f4 100644 --- a/GraphicExport.as +++ b/GraphicExport.as @@ -13,6 +13,7 @@ import flash.display.StageAlign; import flash.display.StageScaleMode; import com.adobe.crypto.MD5; + import flash.desktop.*; import djarts.core.*; import djarts.events.*; @@ -42,14 +43,15 @@ import GraphicExport.AnimPiecePacker; import GraphicExport.ScenePacker; - import flash.filesystem.File; - + import flash.filesystem.*; public class GraphicExport extends MovieClip { var UILayer:MovieClip = new MovieClip(); public static var ISLOCAL = true; + public static var wrapper:Socket = null; + private static var lastData = ""; public function GraphicExport() { @@ -66,8 +68,88 @@ this.removeChild(newGraphicDialog); Init(); + + try + { + NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked); + } + catch (e) + { + // not an air runtime app + ConnectWrapper(7890); // try default port + } + } + public function ApplicationInvoked(e) + { + if (e.arguments.length == 1) + { + ConnectWrapper(parseInt(e.arguments[0])); + } + else + { + StartUI(); + } + } + + private function WrapperIOError(e) + { + Log("Couldn't connect wrapper"); + Log(e.toString()); + StartUI(); + } + + private function WrapperConnect(e:Event) + { + wrapper = e.target as Socket; + Log("Wrapper Connected"); + _strace("Wrapper Connected"); + wrapper.addEventListener(ProgressEvent.SOCKET_DATA, WrapperData); + } + + private function WrapperData(e:ProgressEvent) + { + var data:String = wrapper.readUTFBytes(wrapper.bytesAvailable); + for (var i = 0; i < data.length; i++) + { + var c = data.charAt(i); + if (c == "\n" || c == "\r") + { + if (lastData != "") DispatchCommand(lastData); + lastData = ""; + } + else + { + lastData += c; + } + } + } + + private function DispatchCommand(command) + { + Log("Wrapper Command: " + command); + _strace("exeucting: " + command); + } + + private function ConnectWrapper(port) + { + Log("Attempting to connect wrapper"); + try + { + var s = new Socket(); + s.addEventListener(IOErrorEvent.IO_ERROR, WrapperIOError); + s.addEventListener(Event.CONNECT, WrapperConnect); + s.connect("localhost", port); + } catch (e) + { + Log("Error establishing wrapper connection"); + StartUI(); + return; + } + } + + public function Init() { @@ -89,17 +171,11 @@ FlashConsole.Instance().Admin = true; - //GameData.Instance().LoadData(GameDataLoaded); - stage.addEventListener(Event.ENTER_FRAME, EnterFrame); stage.addEventListener(KeyboardEvent.KEY_UP, KeyUp); this.addChild(previewHolder); CreateUI(); - ActivateExportButtons(false); - - GameDataLoaded(); - } var exportButtons:Array = []; @@ -174,7 +250,12 @@ edgeExpand.Checked = PNGExportHelper.UseExpandedBitmaps; this.skeletal_scale.addEventListener(Event.CHANGE, SkeletalScaleChanged); - ShowNewGraphicDialog(); + } + + public function StartUI() + { + ActivateExportButtons(true); + ShowNewGraphicDialog(); } public function ShowNewGraphicDialog() @@ -499,69 +580,20 @@ { fileExport.Save(lastCallback); } - + + /* if (saveMode == UPLOAD) { var uploadURL = ""; fileExport.Upload(uploadURL, assetDef.Folder, lastCallback); } + */ if (saveMode == TEST && lastCallback) lastCallback(); } - var multiImport:MultiImportFileBrowser; - public function GameDataLoaded() - { - ActivateExportButtons(true); - _trace("Game Data Loaded!"); - - multiImport = new MultiImportFileBrowser(); - } - - public function ShowMultiImportDialog() - { - multiImport.Show(this); - multiImport.x = 100; - multiImport.y = 60; - } - - protected var uploadCallback; - public function Upload(filename, data, callback) - { - this.uploadCallback = callback; - var loader = new URLLoader(); - - var receiverURL = ""; - - - var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); - var uploadRequest:URLRequest = new URLRequest(receiverURL+"?name="+filename); - uploadRequest.requestHeaders.push(header); - uploadRequest.method = URLRequestMethod.POST; - uploadRequest.data = data; - - loader.addEventListener(Event.COMPLETE, onLoaded); - loader.addEventListener( IOErrorEvent.IO_ERROR, catchIOError); - - loader.load(uploadRequest); - - _trace("uploading "+filename); - - } - - public function onLoaded(event) - { - _trace("Upload Complete"); - if (uploadCallback) uploadCallback(); - } - - function catchIOError(event:IOErrorEvent) - { - trace("Error caught: "+event.type); - } - } diff --git a/GraphicExport.exe b/GraphicExport.exe new file mode 100644 index 0000000..97303ae --- /dev/null +++ b/GraphicExport.exe Binary files differ diff --git a/GraphicExport.fla b/GraphicExport.fla index 4dd9c51..6a5c953 100644 --- a/GraphicExport.fla +++ b/GraphicExport.fla Binary files differ diff --git a/GraphicExport.swf b/GraphicExport.swf index f7addf1..9a77a8b 100644 --- a/GraphicExport.swf +++ b/GraphicExport.swf Binary files differ diff --git a/NewGraphicDialog.as b/NewGraphicDialog.as index 78359ad..c2d896d 100644 --- a/NewGraphicDialog.as +++ b/NewGraphicDialog.as @@ -39,9 +39,6 @@ newTestButton.y = testButton.y + (newTestButton.height / 2); addChild(newTestButton); - closeButton.addEventListener(MouseEvent.CLICK, CloseClicked); - (closeButton.getChildAt(0) as MovieClip).stop(); - this.removeChild(typePlaceholderButton); var typeX = typePlaceholderButton.x; diff --git a/_strace.as b/_strace.as new file mode 100644 index 0000000..e2270cd --- /dev/null +++ b/_strace.as @@ -0,0 +1,12 @@ +package +{ + public function _strace(str) + { + _trace(str); + if (GraphicExport.wrapper != null) + { + GraphicExport.wrapper.writeUTFBytes(str + "\n"); + GraphicExport.wrapper.flush(); + } + } +} \ No newline at end of file diff --git a/exporter.py b/exporter.py new file mode 100644 index 0000000..b334e76 --- /dev/null +++ b/exporter.py @@ -0,0 +1,57 @@ +#! /usr/bin/python + +import socket +import subprocess +import errno +import sys +import os + +port = 7890 + +s = socket.socket() +s.bind(("localhost", port)) + +args = [os.getcwd() + "/GraphicExport.exe"] +# args = [os.getcwd() + "/GraphicExport.app/GraphicExport.exe", str(port)] +g = subprocess.Popen(args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + +s.settimeout(0.5) +s.listen(0) + +conn = None +while conn is None and g.returncode is None: + try: + (conn, _) = s.accept() + except socket.timeout, e: + pass + except e: + print e + s.close() + g.wait() + sys.exit(1) + g.poll() + +if conn: + conn.setblocking(False) + conn.send("EXPORT|" + "|".join(sys.argv[1:]) + "\n") + +while g.returncode is None: + try: + d = conn.recv(4096) + if len(d): + sys.stdout.write(d) + sys.stdout.flush() + except socket.error, e: + if e.args[0] == errno.EWOULDBLOCK or e.args[0] == errno.EAGAIN: + pass + else: + print e + conn.close() + s.close() + g.wait() + sys.exit(1) + g.poll() + +if (conn): + conn.close() +s.close()