Trigger requestDraw when changing TextElement text (#89)
* Fix #85 - orx-panel requestDraw() call * Clean up imports
This commit is contained in:
@@ -7,7 +7,6 @@ import org.openrndr.panel.controlManager
|
|||||||
import org.openrndr.panel.elements.button
|
import org.openrndr.panel.elements.button
|
||||||
import org.openrndr.panel.elements.div
|
import org.openrndr.panel.elements.div
|
||||||
import org.openrndr.panel.elements.h1
|
import org.openrndr.panel.elements.h1
|
||||||
import org.openrndr.panel.elements.requestRedraw
|
|
||||||
import org.openrndr.panel.style.*
|
import org.openrndr.panel.style.*
|
||||||
|
|
||||||
fun main() = application {
|
fun main() = application {
|
||||||
@@ -45,31 +44,30 @@ fun main() = application {
|
|||||||
"twist", "swim", "roll", "fly", "dance")
|
"twist", "swim", "roll", "fly", "dance")
|
||||||
.forEachIndexed { i, word ->
|
.forEachIndexed { i, word ->
|
||||||
|
|
||||||
// A fun way of generating a set of colors
|
// A fun way of generating a set of colors
|
||||||
// of similar brightness:
|
// of similar brightness:
|
||||||
// Grab a point on the surface of a sphere
|
// Grab a point on the surface of a sphere
|
||||||
// and treat its coordinates as an rgb color.
|
// and treat its coordinates as an rgb color.
|
||||||
val pos = Vector3.fromSpherical(
|
val pos = Vector3.fromSpherical(
|
||||||
Spherical(i * 19.0, i * 17.0, 0.4))
|
Spherical(i * 19.0, i * 17.0, 0.4))
|
||||||
val rgb = ColorRGBa.fromVector(pos + 0.4)
|
val rgb = ColorRGBa.fromVector(pos + 0.4)
|
||||||
|
|
||||||
button {
|
button {
|
||||||
label = word
|
label = word
|
||||||
style = styleSheet {
|
style = styleSheet {
|
||||||
// Use Color.RGBa() to convert a ColorRGBa
|
// Use Color.RGBa() to convert a ColorRGBa
|
||||||
// color (the standard color datatype)
|
// color (the standard color datatype)
|
||||||
// into "CSS" format:
|
// into "CSS" format:
|
||||||
background = Color.RGBa(rgb)
|
background = Color.RGBa(rgb)
|
||||||
}
|
}
|
||||||
|
|
||||||
// When the button is clicked replace
|
// When the button is clicked replace
|
||||||
// the header text with the button's label
|
// the header text with the button's label
|
||||||
events.clicked.listen {
|
events.clicked.listen {
|
||||||
header.replaceText(it.source.label)
|
header.replaceText(it.source.label)
|
||||||
header.requestRedraw()
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,12 +70,14 @@ class P : TextElement(ElementType("p"))
|
|||||||
abstract class TextElement(et: ElementType) : Element(et) {
|
abstract class TextElement(et: ElementType) : Element(et) {
|
||||||
fun text(text: String) {
|
fun text(text: String) {
|
||||||
append(TextNode(text))
|
append(TextNode(text))
|
||||||
|
requestRedraw()
|
||||||
}
|
}
|
||||||
fun replaceText(text : String) {
|
fun replaceText(text : String) {
|
||||||
if (children.isEmpty()) {
|
if (children.isEmpty()) {
|
||||||
text(text)
|
text(text)
|
||||||
} else {
|
} else {
|
||||||
(children.first() as? TextNode)?.text = text
|
(children.first() as? TextNode)?.text = text
|
||||||
|
requestRedraw()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user