2
0
luboslenco 2 жил өмнө
parent
commit
933fad6fd7

+ 64 - 0
Sources/arm/ui/TabConsole.hx

@@ -0,0 +1,64 @@
+package arm.ui;
+
+import haxe.io.Bytes;
+import zui.Zui;
+import arm.sys.Path;
+import arm.Enums;
+
+class TabConsole {
+
+	@:access(zui.Zui)
+	public static function draw() {
+		var ui = UISidebar.inst.ui;
+
+		var title = Console.messageTimer > 0 ? Console.message + "        " : tr("Console");
+		var color = Console.messageTimer > 0 ? Console.messageColor : -1;
+
+		var statush = Config.raw.layout[LayoutStatusH];
+		if (ui.tab(UIStatus.inst.statustab, title, false, color) && statush > UIStatus.defaultStatusH * ui.SCALE()) {
+
+			ui.beginSticky();
+			#if (krom_windows || krom_linux || krom_darwin) // Copy
+			if (Config.raw.touch_ui) {
+				ui.row([1 / 4, 1 / 4, 1 / 4]);
+			}
+			else {
+				ui.row([1 / 14, 1 / 14, 1 / 14]);
+			}
+			#else
+			if (Config.raw.touch_ui) {
+				ui.row([1 / 4, 1 / 4]);
+			}
+			else {
+				ui.row([1 / 14, 1 / 14]);
+			}
+			#end
+
+			if (ui.button(tr("Clear"))) {
+				Console.lastTraces = [];
+			}
+			if (ui.button(tr("Export"))) {
+				var str = Console.lastTraces.join("\n");
+				UIFiles.show("txt", true, false, function(path: String) {
+					var f = UIFiles.filename;
+					if (f == "") f = tr("untitled");
+					path = path + Path.sep + f;
+					if (!path.endsWith(".txt")) path += ".txt";
+					Krom.fileSaveBytes(path, Bytes.ofString(str).getData());
+				});
+			}
+			#if (krom_windows || krom_linux || krom_darwin)
+			if (ui.button(tr("Copy"))) {
+				var str = Console.lastTraces.join("\n");
+				Krom.copyToClipboard(str);
+			}
+			#end
+
+			ui.endSticky();
+
+			for (t in Console.lastTraces) {
+				ui.text(t);
+			}
+		}
+	}
+}

+ 85 - 0
Sources/arm/ui/TabScript.hx

@@ -0,0 +1,85 @@
+package arm.ui;
+
+import haxe.io.Bytes;
+import kha.Blob;
+import zui.Zui;
+import zui.Ext;
+import zui.Id;
+import iron.data.Data;
+import arm.sys.Path;
+import arm.Enums;
+
+class TabScript {
+
+	public static var hscript = Id.handle();
+	static var textColoring: TTextColoring = null;
+
+	@:access(zui.Zui)
+	public static function draw() {
+		var ui = UISidebar.inst.ui;
+		var statush = Config.raw.layout[LayoutStatusH];
+		if (ui.tab(UIStatus.inst.statustab, tr("Script")) && statush > UIStatus.defaultStatusH * ui.SCALE()) {
+
+			ui.beginSticky();
+			if (Config.raw.touch_ui) {
+				ui.row([1 / 4, 1 / 4, 1 / 4, 1 / 4]);
+			}
+			else {
+				ui.row([1 / 14, 1 / 14, 1 / 14, 1 / 14]);
+			}
+			if (ui.button(tr("Run"))) {
+				try {
+					js.Lib.eval(hscript.text);
+				}
+				catch(e: Dynamic) {
+					Console.log(e);
+				}
+			}
+			if (ui.button(tr("Clear"))) {
+				hscript.text = "";
+			}
+			if (ui.button(tr("Import"))) {
+				UIFiles.show("js", false, false, function(path: String) {
+					Data.getBlob(path, function(b: Blob) {
+						hscript.text = b.toString();
+						Data.deleteBlob(path);
+					});
+				});
+			}
+			if (ui.button(tr("Export"))) {
+				var str = hscript.text;
+				UIFiles.show("js", true, false, function(path: String) {
+					var f = UIFiles.filename;
+					if (f == "") f = tr("untitled");
+					path = path + Path.sep + f;
+					if (!path.endsWith(".js")) path += ".js";
+					Krom.fileSaveBytes(path, Bytes.ofString(str).getData());
+				});
+			}
+			ui.endSticky();
+
+			var _font = ui.ops.font;
+			var _fontSize = ui.fontSize;
+			Data.getFont("font_mono.ttf", function(f: kha.Font) { ui.ops.font = f; }); // Sync
+			ui.fontSize = 15;
+			Ext.textAreaLineNumbers = true;
+			Ext.textAreaScrollPastEnd = true;
+			Ext.textAreaColoring = getTextColoring();
+			Ext.textArea(ui, hscript);
+			Ext.textAreaLineNumbers = false;
+			Ext.textAreaScrollPastEnd = false;
+			Ext.textAreaColoring = null;
+			ui.ops.font = _font;
+			ui.fontSize = _fontSize;
+		}
+	}
+
+	static function getTextColoring(): TTextColoring {
+		if (textColoring == null) {
+			Data.getBlob("text_coloring.json", function(blob: Blob) {
+				textColoring = haxe.Json.parse(blob.toString());
+			});
+		}
+		return textColoring;
+	}
+}