From 02fc840c4d2d1d3018fbe45639402a91d1c9de0b Mon Sep 17 00:00:00 2001 From: David Date: Mon, 26 Nov 2018 13:37:27 -0500 Subject: [PATCH] termination updates UI --- .../kotlin/befide/befunge/b93/B93Interpreter.kt | 2 +- ide/src/main/kotlin/befide/ide/ActionView.kt | 17 +++++++++++++---- ide/src/main/kotlin/befide/ide/IOView.kt | 2 ++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/befunge/src/main/kotlin/befide/befunge/b93/B93Interpreter.kt b/befunge/src/main/kotlin/befide/befunge/b93/B93Interpreter.kt index e8c999f..ac14873 100644 --- a/befunge/src/main/kotlin/befide/befunge/b93/B93Interpreter.kt +++ b/befunge/src/main/kotlin/befide/befunge/b93/B93Interpreter.kt @@ -266,7 +266,7 @@ class B93Interpreter : Interpreter { outBuf.delete(0, outBuf.length) outputChanged.invoke(OutputEvent()) ip.mode = IpMode.Inactive - return true + return false } private fun pushDig(dig: Char): Boolean { diff --git a/ide/src/main/kotlin/befide/ide/ActionView.kt b/ide/src/main/kotlin/befide/ide/ActionView.kt index c27f61b..542ffee 100644 --- a/ide/src/main/kotlin/befide/ide/ActionView.kt +++ b/ide/src/main/kotlin/befide/ide/ActionView.kt @@ -1,6 +1,7 @@ package befide.ide import befide.befunge.core.Interpreter +import befide.befunge.state.IpMode import javafx.animation.Animation import javafx.animation.Timeline import javafx.beans.property.SimpleBooleanProperty @@ -13,11 +14,13 @@ import tornadofx.setValue import java.io.File class ActionView(val interp: Interpreter, val codeView: CodeView, val ioView: IOView) : View() { + val stepProperty = SimpleBooleanProperty(false) + var step by stepProperty + var runTimeline: Timeline = timeline(false) { keyframe(Duration.seconds(0.0)) { setOnFinished { - if (!interp.step()) - this@timeline.stop() + step = interp.step() } } keyframe(Duration.seconds(1.0)) {} @@ -51,7 +54,7 @@ class ActionView(val interp: Interpreter, val codeView: CodeView, val ioView: IO interp.funge.values = codeView.values - interp.step() + step = interp.step() } fun stop() { @@ -136,7 +139,7 @@ class ActionView(val interp: Interpreter, val codeView: CodeView, val ioView: IO button("reset") { setOnAction { reset() } - enableWhen(canResetProperty.and(isRunningProperty.not())) + enableWhen(canResetProperty) } separator {} @@ -164,4 +167,10 @@ class ActionView(val interp: Interpreter, val codeView: CodeView, val ioView: IO disableWhen(isRunningProperty) } } + + init { + stepProperty.onChange { + if (!it) stop() + } + } } \ No newline at end of file diff --git a/ide/src/main/kotlin/befide/ide/IOView.kt b/ide/src/main/kotlin/befide/ide/IOView.kt index 166e9b8..5087de2 100644 --- a/ide/src/main/kotlin/befide/ide/IOView.kt +++ b/ide/src/main/kotlin/befide/ide/IOView.kt @@ -36,6 +36,8 @@ class IOView(val interp: Interpreter) : View() { textarea(oldinputProperty) { isEditable = false prefHeight = 0.0 + + oldinputProperty.onChange { scrollTop = Double.MAX_VALUE } } textfield { onAction = EventHandler {