diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter.fla b/DebugExporter.fla
new file mode 100755
index 0000000..9f0dff6
--- /dev/null
+++ b/DebugExporter.fla
Binary files differ
diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter.fla b/DebugExporter.fla
new file mode 100755
index 0000000..9f0dff6
--- /dev/null
+++ b/DebugExporter.fla
Binary files differ
diff --git a/DebugExporter.swf b/DebugExporter.swf
new file mode 100755
index 0000000..3a08579
--- /dev/null
+++ b/DebugExporter.swf
Binary files differ
diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter.fla b/DebugExporter.fla
new file mode 100755
index 0000000..9f0dff6
--- /dev/null
+++ b/DebugExporter.fla
Binary files differ
diff --git a/DebugExporter.swf b/DebugExporter.swf
new file mode 100755
index 0000000..3a08579
--- /dev/null
+++ b/DebugExporter.swf
Binary files differ
diff --git a/Exporter.as b/Exporter.as
index 5adf9dc..98b1198 100644
--- a/Exporter.as
+++ b/Exporter.as
@@ -15,12 +15,13 @@
public static var DefaultPort:int = 7890;
private var driver:Socket = null;
+ private var debug:Boolean = false;
public function Exporter()
{
Instance = this;
try
- {
+ {
NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked);
}
catch (e)
@@ -42,9 +43,15 @@
}
}
- private function ConnectDriver(port)
+ private var connected:Boolean = false;
+ private var lastPort:int;
+ private function ConnectDriver(port:int, firstTime:Boolean = true)
{
- Trace("Attempting to connect to driver");
+ this.lastPort = port;
+ if (firstTime)
+ {
+ Trace("Attempting to connect to driver");
+ }
try
{
var s:Socket = new Socket();
@@ -61,16 +68,32 @@
private function DriverClosed(e)
{
- Quit();
+ connected = false;
+ if (debug)
+ {
+ ConnectDriver(lastPort);
+ }
+ else
+ {
+ Quit();
+ }
}
private function DriverError(e)
{
- Trace(" Failed to connect");
+ if (!debug)
+ {
+ Trace(" Failed to connect");
+ }
+ if (debug && !connected)
+ {
+ setTimeout(ConnectDriver, 500, lastPort, false);
+ }
}
private function DriverConnected(e)
{
+ connected = true;
Trace(" Connected");
driver = e.target as Socket;
driver.addEventListener(ProgressEvent.SOCKET_DATA, DriverRecv);
@@ -239,7 +262,7 @@
trace(str);
traceText.width = stage.stageWidth - 4;
- traceText.height = stage.stageHeight - 4;
+ traceText.height = stage.stageHeight + 100;
if (traceText.text == "")
{
traceText.text = str;
@@ -248,7 +271,17 @@
{
traceText.appendText("\n" + str);
}
- traceText.y = stage.height - traceText.textHeight - 2;
+ while (traceText.textHeight > traceText.height)
+ {
+ var split = traceText.text.indexOf("\n");
+ if (split == -1)
+ {
+ traceText.height = traceText.textHeight + 5;
+ break;
+ }
+ traceText.text = traceText.text.substr(split + 1);
+ }
+ traceText.y = stage.stageHeight - traceText.textHeight - 2;
}
public function Print(str:String, localTrace:Boolean = true)
diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter.fla b/DebugExporter.fla
new file mode 100755
index 0000000..9f0dff6
--- /dev/null
+++ b/DebugExporter.fla
Binary files differ
diff --git a/DebugExporter.swf b/DebugExporter.swf
new file mode 100755
index 0000000..3a08579
--- /dev/null
+++ b/DebugExporter.swf
Binary files differ
diff --git a/Exporter.as b/Exporter.as
index 5adf9dc..98b1198 100644
--- a/Exporter.as
+++ b/Exporter.as
@@ -15,12 +15,13 @@
public static var DefaultPort:int = 7890;
private var driver:Socket = null;
+ private var debug:Boolean = false;
public function Exporter()
{
Instance = this;
try
- {
+ {
NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked);
}
catch (e)
@@ -42,9 +43,15 @@
}
}
- private function ConnectDriver(port)
+ private var connected:Boolean = false;
+ private var lastPort:int;
+ private function ConnectDriver(port:int, firstTime:Boolean = true)
{
- Trace("Attempting to connect to driver");
+ this.lastPort = port;
+ if (firstTime)
+ {
+ Trace("Attempting to connect to driver");
+ }
try
{
var s:Socket = new Socket();
@@ -61,16 +68,32 @@
private function DriverClosed(e)
{
- Quit();
+ connected = false;
+ if (debug)
+ {
+ ConnectDriver(lastPort);
+ }
+ else
+ {
+ Quit();
+ }
}
private function DriverError(e)
{
- Trace(" Failed to connect");
+ if (!debug)
+ {
+ Trace(" Failed to connect");
+ }
+ if (debug && !connected)
+ {
+ setTimeout(ConnectDriver, 500, lastPort, false);
+ }
}
private function DriverConnected(e)
{
+ connected = true;
Trace(" Connected");
driver = e.target as Socket;
driver.addEventListener(ProgressEvent.SOCKET_DATA, DriverRecv);
@@ -239,7 +262,7 @@
trace(str);
traceText.width = stage.stageWidth - 4;
- traceText.height = stage.stageHeight - 4;
+ traceText.height = stage.stageHeight + 100;
if (traceText.text == "")
{
traceText.text = str;
@@ -248,7 +271,17 @@
{
traceText.appendText("\n" + str);
}
- traceText.y = stage.height - traceText.textHeight - 2;
+ while (traceText.textHeight > traceText.height)
+ {
+ var split = traceText.text.indexOf("\n");
+ if (split == -1)
+ {
+ traceText.height = traceText.textHeight + 5;
+ break;
+ }
+ traceText.text = traceText.text.substr(split + 1);
+ }
+ traceText.y = stage.stageHeight - traceText.textHeight - 2;
}
public function Print(str:String, localTrace:Boolean = true)
diff --git a/GraphicExportDef.as b/GraphicExportDef.as
index a7213d6..fb60e89 100755
--- a/GraphicExportDef.as
+++ b/GraphicExportDef.as
@@ -5,6 +5,8 @@
import flash.system.LoaderContext;
import flash.events.*;
import by.blooddy.crypto.*;
+ import flash.system.SecurityDomain;
+
public class GraphicExportDef
{
private var _exportType:int = 1;
@@ -53,7 +55,9 @@
inputLoader = new Loader();
inputLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoaderComplete);
inputLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, LoaderError);
- inputLoader.loadBytes(input, new LoaderContext());
+ var context:LoaderContext = new LoaderContext();
+ context.allowCodeImport = true;
+ inputLoader.loadBytes(input, context);
}
private function LoaderComplete(e)
diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter.fla b/DebugExporter.fla
new file mode 100755
index 0000000..9f0dff6
--- /dev/null
+++ b/DebugExporter.fla
Binary files differ
diff --git a/DebugExporter.swf b/DebugExporter.swf
new file mode 100755
index 0000000..3a08579
--- /dev/null
+++ b/DebugExporter.swf
Binary files differ
diff --git a/Exporter.as b/Exporter.as
index 5adf9dc..98b1198 100644
--- a/Exporter.as
+++ b/Exporter.as
@@ -15,12 +15,13 @@
public static var DefaultPort:int = 7890;
private var driver:Socket = null;
+ private var debug:Boolean = false;
public function Exporter()
{
Instance = this;
try
- {
+ {
NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked);
}
catch (e)
@@ -42,9 +43,15 @@
}
}
- private function ConnectDriver(port)
+ private var connected:Boolean = false;
+ private var lastPort:int;
+ private function ConnectDriver(port:int, firstTime:Boolean = true)
{
- Trace("Attempting to connect to driver");
+ this.lastPort = port;
+ if (firstTime)
+ {
+ Trace("Attempting to connect to driver");
+ }
try
{
var s:Socket = new Socket();
@@ -61,16 +68,32 @@
private function DriverClosed(e)
{
- Quit();
+ connected = false;
+ if (debug)
+ {
+ ConnectDriver(lastPort);
+ }
+ else
+ {
+ Quit();
+ }
}
private function DriverError(e)
{
- Trace(" Failed to connect");
+ if (!debug)
+ {
+ Trace(" Failed to connect");
+ }
+ if (debug && !connected)
+ {
+ setTimeout(ConnectDriver, 500, lastPort, false);
+ }
}
private function DriverConnected(e)
{
+ connected = true;
Trace(" Connected");
driver = e.target as Socket;
driver.addEventListener(ProgressEvent.SOCKET_DATA, DriverRecv);
@@ -239,7 +262,7 @@
trace(str);
traceText.width = stage.stageWidth - 4;
- traceText.height = stage.stageHeight - 4;
+ traceText.height = stage.stageHeight + 100;
if (traceText.text == "")
{
traceText.text = str;
@@ -248,7 +271,17 @@
{
traceText.appendText("\n" + str);
}
- traceText.y = stage.height - traceText.textHeight - 2;
+ while (traceText.textHeight > traceText.height)
+ {
+ var split = traceText.text.indexOf("\n");
+ if (split == -1)
+ {
+ traceText.height = traceText.textHeight + 5;
+ break;
+ }
+ traceText.text = traceText.text.substr(split + 1);
+ }
+ traceText.y = stage.stageHeight - traceText.textHeight - 2;
}
public function Print(str:String, localTrace:Boolean = true)
diff --git a/GraphicExportDef.as b/GraphicExportDef.as
index a7213d6..fb60e89 100755
--- a/GraphicExportDef.as
+++ b/GraphicExportDef.as
@@ -5,6 +5,8 @@
import flash.system.LoaderContext;
import flash.events.*;
import by.blooddy.crypto.*;
+ import flash.system.SecurityDomain;
+
public class GraphicExportDef
{
private var _exportType:int = 1;
@@ -53,7 +55,9 @@
inputLoader = new Loader();
inputLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoaderComplete);
inputLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, LoaderError);
- inputLoader.loadBytes(input, new LoaderContext());
+ var context:LoaderContext = new LoaderContext();
+ context.allowCodeImport = true;
+ inputLoader.loadBytes(input, context);
}
private function LoaderComplete(e)
diff --git a/args.py b/args.py
index 72e946d..a2a64e8 100644
--- a/args.py
+++ b/args.py
@@ -65,6 +65,8 @@
if msg is not None:
return (msg, None)
ret["base"] = b
+ elif arg == "--debug" or arg == "-d":
+ ret["debug"] = True
else:
ret["input"].append(arg)
self.i += 1
diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter.fla b/DebugExporter.fla
new file mode 100755
index 0000000..9f0dff6
--- /dev/null
+++ b/DebugExporter.fla
Binary files differ
diff --git a/DebugExporter.swf b/DebugExporter.swf
new file mode 100755
index 0000000..3a08579
--- /dev/null
+++ b/DebugExporter.swf
Binary files differ
diff --git a/Exporter.as b/Exporter.as
index 5adf9dc..98b1198 100644
--- a/Exporter.as
+++ b/Exporter.as
@@ -15,12 +15,13 @@
public static var DefaultPort:int = 7890;
private var driver:Socket = null;
+ private var debug:Boolean = false;
public function Exporter()
{
Instance = this;
try
- {
+ {
NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked);
}
catch (e)
@@ -42,9 +43,15 @@
}
}
- private function ConnectDriver(port)
+ private var connected:Boolean = false;
+ private var lastPort:int;
+ private function ConnectDriver(port:int, firstTime:Boolean = true)
{
- Trace("Attempting to connect to driver");
+ this.lastPort = port;
+ if (firstTime)
+ {
+ Trace("Attempting to connect to driver");
+ }
try
{
var s:Socket = new Socket();
@@ -61,16 +68,32 @@
private function DriverClosed(e)
{
- Quit();
+ connected = false;
+ if (debug)
+ {
+ ConnectDriver(lastPort);
+ }
+ else
+ {
+ Quit();
+ }
}
private function DriverError(e)
{
- Trace(" Failed to connect");
+ if (!debug)
+ {
+ Trace(" Failed to connect");
+ }
+ if (debug && !connected)
+ {
+ setTimeout(ConnectDriver, 500, lastPort, false);
+ }
}
private function DriverConnected(e)
{
+ connected = true;
Trace(" Connected");
driver = e.target as Socket;
driver.addEventListener(ProgressEvent.SOCKET_DATA, DriverRecv);
@@ -239,7 +262,7 @@
trace(str);
traceText.width = stage.stageWidth - 4;
- traceText.height = stage.stageHeight - 4;
+ traceText.height = stage.stageHeight + 100;
if (traceText.text == "")
{
traceText.text = str;
@@ -248,7 +271,17 @@
{
traceText.appendText("\n" + str);
}
- traceText.y = stage.height - traceText.textHeight - 2;
+ while (traceText.textHeight > traceText.height)
+ {
+ var split = traceText.text.indexOf("\n");
+ if (split == -1)
+ {
+ traceText.height = traceText.textHeight + 5;
+ break;
+ }
+ traceText.text = traceText.text.substr(split + 1);
+ }
+ traceText.y = stage.stageHeight - traceText.textHeight - 2;
}
public function Print(str:String, localTrace:Boolean = true)
diff --git a/GraphicExportDef.as b/GraphicExportDef.as
index a7213d6..fb60e89 100755
--- a/GraphicExportDef.as
+++ b/GraphicExportDef.as
@@ -5,6 +5,8 @@
import flash.system.LoaderContext;
import flash.events.*;
import by.blooddy.crypto.*;
+ import flash.system.SecurityDomain;
+
public class GraphicExportDef
{
private var _exportType:int = 1;
@@ -53,7 +55,9 @@
inputLoader = new Loader();
inputLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoaderComplete);
inputLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, LoaderError);
- inputLoader.loadBytes(input, new LoaderContext());
+ var context:LoaderContext = new LoaderContext();
+ context.allowCodeImport = true;
+ inputLoader.loadBytes(input, context);
}
private function LoaderComplete(e)
diff --git a/args.py b/args.py
index 72e946d..a2a64e8 100644
--- a/args.py
+++ b/args.py
@@ -65,6 +65,8 @@
if msg is not None:
return (msg, None)
ret["base"] = b
+ elif arg == "--debug" or arg == "-d":
+ ret["debug"] = True
else:
ret["input"].append(arg)
self.i += 1
diff --git a/driver.py b/driver.py
index 53a67ea..0a045d6 100644
--- a/driver.py
+++ b/driver.py
@@ -9,9 +9,10 @@
import struct
class Driver:
- def __init__(self, port, use_stdin, use_air = False):
+ def __init__(self, port, use_stdin, exporter_already_running = False, use_air = False):
self.port = port
self.use_stdin = use_stdin
+ self.exporter_already_running = exporter_already_running
self.use_air = use_air
self.stdin = None
self.conn = None
@@ -23,11 +24,12 @@
self.sock.settimeout(0.5)
self.sock.listen(0)
- exporter_proc_args = [os.getcwd() + "/Exporter.exe"]
- if self.use_air:
- exporter_proc_args = [os.getcwd() + "/Exporter.app/Expoter.exe", str(self.port)]
+ if not self.exporter_already_running:
+ exporter_proc_args = [os.getcwd() + "/Exporter.exe"]
+ if self.use_air:
+ exporter_proc_args = [os.getcwd() + "/Exporter.app/Expoter.exe", str(self.port)]
- self.proc = subprocess.Popen(exporter_proc_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ self.proc = subprocess.Popen(exporter_proc_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if self.use_stdin:
self.stdin = Queue.Queue()
@@ -35,7 +37,7 @@
reader.daemon = True
reader.start()
- while self.conn is None and self.proc.returncode is None:
+ while self.conn is None and (self.exporter_already_running or self.proc.returncode is None):
try:
(self.conn, _) = self.sock.accept()
except socket.timeout, e:
@@ -43,9 +45,11 @@
except e:
print e
self.sock.close()
- self.proc.wait()
+ if not self.exporter_already_running:
+ self.proc.wait()
sys.exit(1)
- self.proc.poll()
+ if not self.exporter_already_running:
+ self.proc.poll()
if self.conn:
self.conn.setblocking(False)
@@ -60,7 +64,8 @@
def loop(self, msg_callback, stdin_callback = None):
buf = ""
quit = False
- while self.proc.returncode is None:
+ closed = False
+ while self.exporter_already_running or self.proc.returncode is None:
try:
d = self.conn.recv(4096)
if len(d):
@@ -72,12 +77,16 @@
buf = buf[2+buf_len:]
if not msg_callback(msg):
quit = True
+ else:
+ quit = True
+ closed = True
except socket.error, e:
if e.args[0] == errno.EWOULDBLOCK or e.args[0] == errno.EAGAIN:
pass
else:
print e
quit = True
+ closed = True
if not quit and self.use_stdin and self.stdin.qsize():
line = self.stdin.get()
if line == "":
@@ -86,12 +95,15 @@
if not stdin_callback(line):
quit = True
if quit:
- self.send_json({"command":"exit"})
+ if not closed:
+ self.send_json({"command":"exit"})
self.conn.close()
self.sock.close()
- self.proc.kill()
+ if not self.exporter_already_running:
+ self.proc.kill()
sys.exit(1)
- self.proc.poll()
+ if not self.exporter_already_running:
+ self.proc.poll()
if self.conn:
self.conn.close()
diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter.fla b/DebugExporter.fla
new file mode 100755
index 0000000..9f0dff6
--- /dev/null
+++ b/DebugExporter.fla
Binary files differ
diff --git a/DebugExporter.swf b/DebugExporter.swf
new file mode 100755
index 0000000..3a08579
--- /dev/null
+++ b/DebugExporter.swf
Binary files differ
diff --git a/Exporter.as b/Exporter.as
index 5adf9dc..98b1198 100644
--- a/Exporter.as
+++ b/Exporter.as
@@ -15,12 +15,13 @@
public static var DefaultPort:int = 7890;
private var driver:Socket = null;
+ private var debug:Boolean = false;
public function Exporter()
{
Instance = this;
try
- {
+ {
NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked);
}
catch (e)
@@ -42,9 +43,15 @@
}
}
- private function ConnectDriver(port)
+ private var connected:Boolean = false;
+ private var lastPort:int;
+ private function ConnectDriver(port:int, firstTime:Boolean = true)
{
- Trace("Attempting to connect to driver");
+ this.lastPort = port;
+ if (firstTime)
+ {
+ Trace("Attempting to connect to driver");
+ }
try
{
var s:Socket = new Socket();
@@ -61,16 +68,32 @@
private function DriverClosed(e)
{
- Quit();
+ connected = false;
+ if (debug)
+ {
+ ConnectDriver(lastPort);
+ }
+ else
+ {
+ Quit();
+ }
}
private function DriverError(e)
{
- Trace(" Failed to connect");
+ if (!debug)
+ {
+ Trace(" Failed to connect");
+ }
+ if (debug && !connected)
+ {
+ setTimeout(ConnectDriver, 500, lastPort, false);
+ }
}
private function DriverConnected(e)
{
+ connected = true;
Trace(" Connected");
driver = e.target as Socket;
driver.addEventListener(ProgressEvent.SOCKET_DATA, DriverRecv);
@@ -239,7 +262,7 @@
trace(str);
traceText.width = stage.stageWidth - 4;
- traceText.height = stage.stageHeight - 4;
+ traceText.height = stage.stageHeight + 100;
if (traceText.text == "")
{
traceText.text = str;
@@ -248,7 +271,17 @@
{
traceText.appendText("\n" + str);
}
- traceText.y = stage.height - traceText.textHeight - 2;
+ while (traceText.textHeight > traceText.height)
+ {
+ var split = traceText.text.indexOf("\n");
+ if (split == -1)
+ {
+ traceText.height = traceText.textHeight + 5;
+ break;
+ }
+ traceText.text = traceText.text.substr(split + 1);
+ }
+ traceText.y = stage.stageHeight - traceText.textHeight - 2;
}
public function Print(str:String, localTrace:Boolean = true)
diff --git a/GraphicExportDef.as b/GraphicExportDef.as
index a7213d6..fb60e89 100755
--- a/GraphicExportDef.as
+++ b/GraphicExportDef.as
@@ -5,6 +5,8 @@
import flash.system.LoaderContext;
import flash.events.*;
import by.blooddy.crypto.*;
+ import flash.system.SecurityDomain;
+
public class GraphicExportDef
{
private var _exportType:int = 1;
@@ -53,7 +55,9 @@
inputLoader = new Loader();
inputLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoaderComplete);
inputLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, LoaderError);
- inputLoader.loadBytes(input, new LoaderContext());
+ var context:LoaderContext = new LoaderContext();
+ context.allowCodeImport = true;
+ inputLoader.loadBytes(input, context);
}
private function LoaderComplete(e)
diff --git a/args.py b/args.py
index 72e946d..a2a64e8 100644
--- a/args.py
+++ b/args.py
@@ -65,6 +65,8 @@
if msg is not None:
return (msg, None)
ret["base"] = b
+ elif arg == "--debug" or arg == "-d":
+ ret["debug"] = True
else:
ret["input"].append(arg)
self.i += 1
diff --git a/driver.py b/driver.py
index 53a67ea..0a045d6 100644
--- a/driver.py
+++ b/driver.py
@@ -9,9 +9,10 @@
import struct
class Driver:
- def __init__(self, port, use_stdin, use_air = False):
+ def __init__(self, port, use_stdin, exporter_already_running = False, use_air = False):
self.port = port
self.use_stdin = use_stdin
+ self.exporter_already_running = exporter_already_running
self.use_air = use_air
self.stdin = None
self.conn = None
@@ -23,11 +24,12 @@
self.sock.settimeout(0.5)
self.sock.listen(0)
- exporter_proc_args = [os.getcwd() + "/Exporter.exe"]
- if self.use_air:
- exporter_proc_args = [os.getcwd() + "/Exporter.app/Expoter.exe", str(self.port)]
+ if not self.exporter_already_running:
+ exporter_proc_args = [os.getcwd() + "/Exporter.exe"]
+ if self.use_air:
+ exporter_proc_args = [os.getcwd() + "/Exporter.app/Expoter.exe", str(self.port)]
- self.proc = subprocess.Popen(exporter_proc_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ self.proc = subprocess.Popen(exporter_proc_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if self.use_stdin:
self.stdin = Queue.Queue()
@@ -35,7 +37,7 @@
reader.daemon = True
reader.start()
- while self.conn is None and self.proc.returncode is None:
+ while self.conn is None and (self.exporter_already_running or self.proc.returncode is None):
try:
(self.conn, _) = self.sock.accept()
except socket.timeout, e:
@@ -43,9 +45,11 @@
except e:
print e
self.sock.close()
- self.proc.wait()
+ if not self.exporter_already_running:
+ self.proc.wait()
sys.exit(1)
- self.proc.poll()
+ if not self.exporter_already_running:
+ self.proc.poll()
if self.conn:
self.conn.setblocking(False)
@@ -60,7 +64,8 @@
def loop(self, msg_callback, stdin_callback = None):
buf = ""
quit = False
- while self.proc.returncode is None:
+ closed = False
+ while self.exporter_already_running or self.proc.returncode is None:
try:
d = self.conn.recv(4096)
if len(d):
@@ -72,12 +77,16 @@
buf = buf[2+buf_len:]
if not msg_callback(msg):
quit = True
+ else:
+ quit = True
+ closed = True
except socket.error, e:
if e.args[0] == errno.EWOULDBLOCK or e.args[0] == errno.EAGAIN:
pass
else:
print e
quit = True
+ closed = True
if not quit and self.use_stdin and self.stdin.qsize():
line = self.stdin.get()
if line == "":
@@ -86,12 +95,15 @@
if not stdin_callback(line):
quit = True
if quit:
- self.send_json({"command":"exit"})
+ if not closed:
+ self.send_json({"command":"exit"})
self.conn.close()
self.sock.close()
- self.proc.kill()
+ if not self.exporter_already_running:
+ self.proc.kill()
sys.exit(1)
- self.proc.poll()
+ if not self.exporter_already_running:
+ self.proc.poll()
if self.conn:
self.conn.close()
diff --git a/exporter.py b/exporter.py
index bd73c42..d67d1f4 100755
--- a/exporter.py
+++ b/exporter.py
@@ -10,13 +10,36 @@
from args import *
from job import *
from driver import *
+
+top_level = {("--port","-p"):"wrapper_communication_port", \
+ ("--debug","-d"):None}
+
+per_arg = {("--out","-o"):"out_dir", \
+ ("--base","-b"):"base_dir"}
+
+top_level_all = [k[0][2:] for k in top_level]
+
+def desc_args(args):
+ return " ".join(["[" + "/".join(k) + ("" if args[k] is None else " " + args[k]) + "]" for k in args.keys()])
+
+def list_long_args(args):
+ long_args = [k[0] for k in args]
+ ret = ", ".join(long_args[:-1])
+ if len(long_args) >= 2:
+ ret += " or " + long_args[-1]
+ return ret
+
+top_level_desc = desc_args(top_level)
+top_level_args = list_long_args(top_level)
+
+per_arg_desc = desc_args(per_arg)
def usage():
- print "usage 1: ./exporter.py [--port/-p wrapper_communication_port] [--base/-b base_dir] [--out/-o out_dir] input_file1.src,input_file2.src,..."
+ print "usage 1: ./exporter.py " + top_level_desc + " " + per_arg_desc + " input_file1.src,input_file2.src,..."
print " Exports the assets specified in the given source file(s)"
print
- print "usage 2: ./exporter.py [--port/-p wrapper_communication_port] [--base/-b base_dir] [--out/-o out_dir] -"
- print " Reads full command lines (everything except --port) as lines from stdin"
+ print "usage 2: ./exporter.py " + top_level_desc + " -"
+ print " Reads full command lines (everything except " + per_arg_desc + ") as lines from stdin"
print
print "usage 3: ./export.py --help|-h"
print " Shows this help message"
@@ -47,7 +70,7 @@
jobs = {}
sent_all_jobs = False
-driver = Driver(port, from_stdin)
+driver = Driver(port, from_stdin, exporter_already_running = "debug" in args)
def send_cmd(cmd, **kwargs):
global driver
@@ -87,17 +110,21 @@
return False
return True
parts = shlex.split(line)
- (err, line_args) = ArgParser.parse_args(parts)
+ (err, line_args) = ArgParser().parse_args(parts)
if err is not None:
print err
else:
+ for a in top_level_all:
+ if a in line_args:
+ print "Top level args may not be passed in stdin: " + top_level_args
+ return True
for i in line_args["input"]:
try:
job = Job(in_file = i)
jobs[job.id] = job
+ send_job(job)
except Exception, e:
print e
- send_job(job)
return True
def handle_command(msg_str):
diff --git a/DebugExporter-app.xml b/DebugExporter-app.xml
new file mode 100755
index 0000000..e2ff06e
--- /dev/null
+++ b/DebugExporter-app.xml
@@ -0,0 +1,38 @@
+
+
+
+ DebugExporter
+ 1.0
+ DebugExporter
+
+ DebugExporter
+
+
+ DebugExporter.swf
+ standard
+ false
+ true
+ false
+ portrait
+ auto
+
+
+ false
+ false
+
diff --git a/DebugExporter.fla b/DebugExporter.fla
new file mode 100755
index 0000000..9f0dff6
--- /dev/null
+++ b/DebugExporter.fla
Binary files differ
diff --git a/DebugExporter.swf b/DebugExporter.swf
new file mode 100755
index 0000000..3a08579
--- /dev/null
+++ b/DebugExporter.swf
Binary files differ
diff --git a/Exporter.as b/Exporter.as
index 5adf9dc..98b1198 100644
--- a/Exporter.as
+++ b/Exporter.as
@@ -15,12 +15,13 @@
public static var DefaultPort:int = 7890;
private var driver:Socket = null;
+ private var debug:Boolean = false;
public function Exporter()
{
Instance = this;
try
- {
+ {
NativeApplication.nativeApplication.addEventListener("invoke", ApplicationInvoked);
}
catch (e)
@@ -42,9 +43,15 @@
}
}
- private function ConnectDriver(port)
+ private var connected:Boolean = false;
+ private var lastPort:int;
+ private function ConnectDriver(port:int, firstTime:Boolean = true)
{
- Trace("Attempting to connect to driver");
+ this.lastPort = port;
+ if (firstTime)
+ {
+ Trace("Attempting to connect to driver");
+ }
try
{
var s:Socket = new Socket();
@@ -61,16 +68,32 @@
private function DriverClosed(e)
{
- Quit();
+ connected = false;
+ if (debug)
+ {
+ ConnectDriver(lastPort);
+ }
+ else
+ {
+ Quit();
+ }
}
private function DriverError(e)
{
- Trace(" Failed to connect");
+ if (!debug)
+ {
+ Trace(" Failed to connect");
+ }
+ if (debug && !connected)
+ {
+ setTimeout(ConnectDriver, 500, lastPort, false);
+ }
}
private function DriverConnected(e)
{
+ connected = true;
Trace(" Connected");
driver = e.target as Socket;
driver.addEventListener(ProgressEvent.SOCKET_DATA, DriverRecv);
@@ -239,7 +262,7 @@
trace(str);
traceText.width = stage.stageWidth - 4;
- traceText.height = stage.stageHeight - 4;
+ traceText.height = stage.stageHeight + 100;
if (traceText.text == "")
{
traceText.text = str;
@@ -248,7 +271,17 @@
{
traceText.appendText("\n" + str);
}
- traceText.y = stage.height - traceText.textHeight - 2;
+ while (traceText.textHeight > traceText.height)
+ {
+ var split = traceText.text.indexOf("\n");
+ if (split == -1)
+ {
+ traceText.height = traceText.textHeight + 5;
+ break;
+ }
+ traceText.text = traceText.text.substr(split + 1);
+ }
+ traceText.y = stage.stageHeight - traceText.textHeight - 2;
}
public function Print(str:String, localTrace:Boolean = true)
diff --git a/GraphicExportDef.as b/GraphicExportDef.as
index a7213d6..fb60e89 100755
--- a/GraphicExportDef.as
+++ b/GraphicExportDef.as
@@ -5,6 +5,8 @@
import flash.system.LoaderContext;
import flash.events.*;
import by.blooddy.crypto.*;
+ import flash.system.SecurityDomain;
+
public class GraphicExportDef
{
private var _exportType:int = 1;
@@ -53,7 +55,9 @@
inputLoader = new Loader();
inputLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoaderComplete);
inputLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, LoaderError);
- inputLoader.loadBytes(input, new LoaderContext());
+ var context:LoaderContext = new LoaderContext();
+ context.allowCodeImport = true;
+ inputLoader.loadBytes(input, context);
}
private function LoaderComplete(e)
diff --git a/args.py b/args.py
index 72e946d..a2a64e8 100644
--- a/args.py
+++ b/args.py
@@ -65,6 +65,8 @@
if msg is not None:
return (msg, None)
ret["base"] = b
+ elif arg == "--debug" or arg == "-d":
+ ret["debug"] = True
else:
ret["input"].append(arg)
self.i += 1
diff --git a/driver.py b/driver.py
index 53a67ea..0a045d6 100644
--- a/driver.py
+++ b/driver.py
@@ -9,9 +9,10 @@
import struct
class Driver:
- def __init__(self, port, use_stdin, use_air = False):
+ def __init__(self, port, use_stdin, exporter_already_running = False, use_air = False):
self.port = port
self.use_stdin = use_stdin
+ self.exporter_already_running = exporter_already_running
self.use_air = use_air
self.stdin = None
self.conn = None
@@ -23,11 +24,12 @@
self.sock.settimeout(0.5)
self.sock.listen(0)
- exporter_proc_args = [os.getcwd() + "/Exporter.exe"]
- if self.use_air:
- exporter_proc_args = [os.getcwd() + "/Exporter.app/Expoter.exe", str(self.port)]
+ if not self.exporter_already_running:
+ exporter_proc_args = [os.getcwd() + "/Exporter.exe"]
+ if self.use_air:
+ exporter_proc_args = [os.getcwd() + "/Exporter.app/Expoter.exe", str(self.port)]
- self.proc = subprocess.Popen(exporter_proc_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ self.proc = subprocess.Popen(exporter_proc_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
if self.use_stdin:
self.stdin = Queue.Queue()
@@ -35,7 +37,7 @@
reader.daemon = True
reader.start()
- while self.conn is None and self.proc.returncode is None:
+ while self.conn is None and (self.exporter_already_running or self.proc.returncode is None):
try:
(self.conn, _) = self.sock.accept()
except socket.timeout, e:
@@ -43,9 +45,11 @@
except e:
print e
self.sock.close()
- self.proc.wait()
+ if not self.exporter_already_running:
+ self.proc.wait()
sys.exit(1)
- self.proc.poll()
+ if not self.exporter_already_running:
+ self.proc.poll()
if self.conn:
self.conn.setblocking(False)
@@ -60,7 +64,8 @@
def loop(self, msg_callback, stdin_callback = None):
buf = ""
quit = False
- while self.proc.returncode is None:
+ closed = False
+ while self.exporter_already_running or self.proc.returncode is None:
try:
d = self.conn.recv(4096)
if len(d):
@@ -72,12 +77,16 @@
buf = buf[2+buf_len:]
if not msg_callback(msg):
quit = True
+ else:
+ quit = True
+ closed = True
except socket.error, e:
if e.args[0] == errno.EWOULDBLOCK or e.args[0] == errno.EAGAIN:
pass
else:
print e
quit = True
+ closed = True
if not quit and self.use_stdin and self.stdin.qsize():
line = self.stdin.get()
if line == "":
@@ -86,12 +95,15 @@
if not stdin_callback(line):
quit = True
if quit:
- self.send_json({"command":"exit"})
+ if not closed:
+ self.send_json({"command":"exit"})
self.conn.close()
self.sock.close()
- self.proc.kill()
+ if not self.exporter_already_running:
+ self.proc.kill()
sys.exit(1)
- self.proc.poll()
+ if not self.exporter_already_running:
+ self.proc.poll()
if self.conn:
self.conn.close()
diff --git a/exporter.py b/exporter.py
index bd73c42..d67d1f4 100755
--- a/exporter.py
+++ b/exporter.py
@@ -10,13 +10,36 @@
from args import *
from job import *
from driver import *
+
+top_level = {("--port","-p"):"wrapper_communication_port", \
+ ("--debug","-d"):None}
+
+per_arg = {("--out","-o"):"out_dir", \
+ ("--base","-b"):"base_dir"}
+
+top_level_all = [k[0][2:] for k in top_level]
+
+def desc_args(args):
+ return " ".join(["[" + "/".join(k) + ("" if args[k] is None else " " + args[k]) + "]" for k in args.keys()])
+
+def list_long_args(args):
+ long_args = [k[0] for k in args]
+ ret = ", ".join(long_args[:-1])
+ if len(long_args) >= 2:
+ ret += " or " + long_args[-1]
+ return ret
+
+top_level_desc = desc_args(top_level)
+top_level_args = list_long_args(top_level)
+
+per_arg_desc = desc_args(per_arg)
def usage():
- print "usage 1: ./exporter.py [--port/-p wrapper_communication_port] [--base/-b base_dir] [--out/-o out_dir] input_file1.src,input_file2.src,..."
+ print "usage 1: ./exporter.py " + top_level_desc + " " + per_arg_desc + " input_file1.src,input_file2.src,..."
print " Exports the assets specified in the given source file(s)"
print
- print "usage 2: ./exporter.py [--port/-p wrapper_communication_port] [--base/-b base_dir] [--out/-o out_dir] -"
- print " Reads full command lines (everything except --port) as lines from stdin"
+ print "usage 2: ./exporter.py " + top_level_desc + " -"
+ print " Reads full command lines (everything except " + per_arg_desc + ") as lines from stdin"
print
print "usage 3: ./export.py --help|-h"
print " Shows this help message"
@@ -47,7 +70,7 @@
jobs = {}
sent_all_jobs = False
-driver = Driver(port, from_stdin)
+driver = Driver(port, from_stdin, exporter_already_running = "debug" in args)
def send_cmd(cmd, **kwargs):
global driver
@@ -87,17 +110,21 @@
return False
return True
parts = shlex.split(line)
- (err, line_args) = ArgParser.parse_args(parts)
+ (err, line_args) = ArgParser().parse_args(parts)
if err is not None:
print err
else:
+ for a in top_level_all:
+ if a in line_args:
+ print "Top level args may not be passed in stdin: " + top_level_args
+ return True
for i in line_args["input"]:
try:
job = Job(in_file = i)
jobs[job.id] = job
+ send_job(job)
except Exception, e:
print e
- send_job(job)
return True
def handle_command(msg_str):
diff --git a/session.vim b/session.vim
index 81da199..574e3ff 100644
--- a/session.vim
+++ b/session.vim
@@ -2,10 +2,10 @@
if &cp | set nocp | endif
let s:cpo_save=&cpo
set cpo&vim
-imap
-inoremap pumvisible() ? "\" : "\"
-inoremap pumvisible() ? "\" : "\"
inoremap pumvisible() ? "\" : "\"
+inoremap pumvisible() ? "\" : "\"
+inoremap pumvisible() ? "\" : "\"
+imap
nnoremap :TmuxNavigateLeft
nnoremap :TmuxNavigateDown
nnoremap :TmuxNavigateUp
@@ -31,6 +31,7 @@
set helplang=en
set hidden
set nomodeline
+set printoptions=paper:letter
set ruler
set runtimepath=~/.vim,~/.vim/bundle/JustDo,~/.vim/bundle/YouCompleteMe,~/.vim/bundle/vim-easymotion,~/.vim/bundle/vim-tmux-navigator,~/.vim/bundle/yats.vim,/var/lib/vim/addons,/usr/share/vim/vimfiles,/usr/share/vim/vim74,/usr/share/vim/vimfiles/after,/var/lib/vim/addons/after,~/.vim/after
set sessionoptions=blank,buffers,folds,help,options,tabpages,winsize,sesdir
@@ -48,10 +49,10 @@
badd +1 exporter.py
badd +1 driver.py
badd +1 job.py
-badd +0 args.py
+badd +1 args.py
argglobal
silent! argdel *
-edit args.py
+edit exporter.py
set splitbelow splitright
set nosplitbelow
set nosplitright
@@ -166,7 +167,7 @@
setlocal wrap
setlocal wrapmargin=0
silent! normal! zE
-let s:l = 1 - ((0 * winheight(0) + 20) / 40)
+let s:l = 1 - ((0 * winheight(0) + 27) / 55)
if s:l < 1 | let s:l = 1 | endif
exe s:l
normal! zt