Skip to content

Commit 418432d

Browse files
committed
Add option to put bindings into REPL
1 parent c5890b4 commit 418432d

File tree

3 files changed

+34
-4
lines changed

3 files changed

+34
-4
lines changed

src/main/kotlin/org/scijava/scripting/fx/SciJavaReplFX.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ class SciJavaReplFX(context: Context) {
123123
_prompt.prefHeight = height
124124
}
125125

126+
fun putBindings(bindings: Map<String, *>) = repl.interpreter.bindings.putAll(bindings)
127+
128+
fun putBindings(vararg bindings: Pair<String, *>) = putBindings(mapOf(*bindings))
129+
126130

127131

128132
}

src/main/kotlin/org/scijava/scripting/fx/ScijavaReplFXTabs.kt

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,31 @@ class ScijavaReplFXTabs(
2020
private val exitKeyCombination: Collection<KeyCombination> = setOf (KeyCodeCombination(KeyCode.D, KeyCombination.CONTROL_DOWN)),
2121
private val createNewReplCombination: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.T, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN)),
2222
private val cycleTabsForwardKombination: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.TAB, KeyCombination.CONTROL_DOWN)),
23-
private val cycleTabsBackwardKombination: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.TAB, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN))
23+
private val cycleTabsBackwardKombination: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.TAB, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN)),
24+
private val bindings: Map<String, *> = mapOf<String, Any>()
2425
) {
2526

27+
constructor(
28+
context: Context,
29+
increaseFontKeys: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.EQUALS, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_ANY)),
30+
decreaseFontKeys: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.MINUS, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_ANY)),
31+
evalKeys: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.ENTER, KeyCombination.CONTROL_DOWN)),
32+
exitKeyCombination: Collection<KeyCombination> = setOf (KeyCodeCombination(KeyCode.D, KeyCombination.CONTROL_DOWN)),
33+
createNewReplCombination: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.T, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN)),
34+
cycleTabsForwardKombination: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.TAB, KeyCombination.CONTROL_DOWN)),
35+
cycleTabsBackwardKombination: Collection<KeyCombination> = setOf(KeyCodeCombination(KeyCode.TAB, KeyCombination.CONTROL_DOWN, KeyCombination.SHIFT_DOWN)),
36+
vararg bindings: Pair<String, *>
37+
) : this(
38+
context,
39+
increaseFontKeys,
40+
decreaseFontKeys,
41+
evalKeys,
42+
exitKeyCombination,
43+
createNewReplCombination,
44+
cycleTabsForwardKombination,
45+
cycleTabsBackwardKombination,
46+
mapOf(*bindings))
47+
2648

2749
private val tabPane = TabPane()
2850
.also { it.tabClosingPolicy = TabPane.TabClosingPolicy.ALL_TABS }
@@ -44,8 +66,8 @@ class ScijavaReplFXTabs(
4466

4567
fun createAndAddTab() {
4668
val repl = SciJavaReplFX(context)
47-
48-
repl.setPromptPrefHeight(250.0)
69+
.also { it.setPromptPrefHeight(250.0) }
70+
.also { it.putBindings(bindings) }
4971

5072
repl.node.addEventHandler(KeyEvent.KEY_PRESSED) {
5173
if (increaseFontKeys.any { c -> c.match(it) }) {

src/test/kotlin/org/scijava/scripting/fx/SciJavaReplFXExample.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,17 @@ import javafx.scene.Scene
66
import javafx.scene.layout.StackPane
77
import javafx.stage.Stage
88
import org.scijava.Context
9+
import kotlin.math.sqrt
910

1011
fun main() {
1112

1213
val context = Context()
1314
PlatformImpl.startup {}
1415

15-
val tabPane = ScijavaReplFXTabs(context).also { it.createAndAddTab() }
16+
val tabPane = ScijavaReplFXTabs(
17+
context,
18+
bindings = *arrayOf(Pair("mySqrt", { x: Double -> sqrt(x) })))
19+
.also { it.createAndAddTab() }
1620

1721
val root = StackPane(tabPane.node)
1822
Platform.runLater {

0 commit comments

Comments
 (0)