Add dynamic keyboard dimensions and integrate adjustable knob

Introduced adjustable `keyboardWidth` and `keyboardHeight` for `KeyboardComponent`, making dimensions dynamic. Added a knob component to control keyboard width in `MainView`. Enhanced layouts for flexibility and customization.
This commit is contained in:
2025-06-06 19:25:50 +02:00
parent 6b52e88cb7
commit b48d6f3aca
3 changed files with 32 additions and 5 deletions

View File

@@ -4,10 +4,12 @@ package nl.astraeus.vst.ui.view
import kotlinx.html.div
import kotlinx.html.h1
import kotlinx.html.hr
import kotlinx.html.js.onClickFunction
import kotlinx.html.option
import kotlinx.html.select
import kotlinx.html.span
import kotlinx.html.style
import nl.astraeus.css.properties.AlignItems
import nl.astraeus.css.properties.BoxSizing
import nl.astraeus.css.properties.Display
@@ -39,6 +41,7 @@ import nl.astraeus.vst.ui.css.hover
class MainView : Komponent() {
private var messages: MutableList<String> = ArrayList()
var started = true
var keyboardWidth = 500
fun addMessage(message: String) {
messages.add(message)
@@ -113,7 +116,30 @@ class MainView : Komponent() {
}
}
div {
include(KeyboardComponent())
style = "height: 150px;"
include(
KnobComponent(
value = keyboardWidth.toDouble(),
label = "Keyboard",
minValue = 100.0,
maxValue = 2000.0,
step = 5.0,
width = 100,
height = 120,
) { value ->
keyboardWidth = value.toInt()
requestUpdate()
}
)
}
hr {}
div {
include(KeyboardComponent(
keyboardWidth = keyboardWidth,
keyboardHeight = keyboardWidth / 2,
onNoteDown = { println("Note down: $it") },
onNoteUp = { println("Note up: $it") },
))
}
/*
div {