better file selection, rerun handling

This commit is contained in:
2018-11-26 19:12:29 -05:00
parent 4c115f41fb
commit 9dfa3e124f
2 changed files with 31 additions and 10 deletions

View File

@@ -40,6 +40,8 @@ class ActionView(val interp: Interpreter, val codeView: CodeView, val ioView: IO
fun start(rate: Double) { fun start(rate: Double) {
stop() stop()
if (interp.ip.mode == IpMode.Inactive) reset()
isRunning = true isRunning = true
canReset = true canReset = true
@@ -83,23 +85,23 @@ class ActionView(val interp: Interpreter, val codeView: CodeView, val ioView: IO
} }
} }
fun saveAs() { private val chooser: FileChooser = FileChooser().apply {
val fc = FileChooser() title = "Befunge File"
fc.title = "Save Befunge File" extensionFilters.setAll(
FileChooser.ExtensionFilter("Befunge 93", "*.bf", "*.b93"),
FileChooser.ExtensionFilter("Befunge 98", "*.bf", "*.b98"))
}
val file: File? = fc.showSaveDialog(primaryStage) fun saveAs() {
val file: File? = chooser.showSaveDialog(primaryStage)
if (file != null) { if (file != null) {
saveFile = file saveFile = file
save() save()
} }
} }
fun open() { fun open() {
val fc = FileChooser() val file: File? = chooser.showOpenDialog(primaryStage)
fc.title = "Open Befunge File"
val file: File? = fc.showOpenDialog(primaryStage)
if (file != null) { if (file != null) {
saveFile = file saveFile = file
@@ -110,7 +112,7 @@ class ActionView(val interp: Interpreter, val codeView: CodeView, val ioView: IO
} }
} }
fun new(){ fun new() {
clearCode() clearCode()
saveFile = null saveFile = null
editorView.title = "Befide" editorView.title = "Befide"

View File

@@ -131,6 +131,25 @@ class CodeView(val interp: Interpreter) : View() {
labels[cursorPos].value = Value(' ') labels[cursorPos].value = Value(' ')
} }
ch == '\u000d' -> when (cursorDelta) { // return
Vec(1, 0) -> {
move(Vec(0, 1))
cursorPos = Vec(0, cursorPos.y)
}
Vec(-1, 0) -> {
move(Vec(0, -1))
cursorPos = Vec(interp.funge.width - 1, cursorPos.y)
}
Vec(0, 1) -> {
move(Vec(-1, 0))
cursorPos = Vec(cursorPos.x, 0)
}
Vec(0, -1) -> {
move(Vec(1, 0))
cursorPos = Vec(cursorPos.x, interp.funge.height - 1)
}
}
else -> { else -> {
println("'$ch' (${ch.toInt()})") println("'$ch' (${ch.toInt()})")
} }