aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt
diff options
context:
space:
mode:
authornea <nea@nea.moe>2023-05-24 02:29:20 +0200
committernea <nea@nea.moe>2023-05-24 02:29:20 +0200
commit5984383d2c48b4ae84bac1827bc6ca1891af8cf0 (patch)
tree90aaae93147ce7aad48777be488039626b70512a /src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt
parent5ff50799b6c8baf6dd87ecbf44860d19a4acceab (diff)
downloadfirmament-5984383d2c48b4ae84bac1827bc6ca1891af8cf0.tar.gz
firmament-5984383d2c48b4ae84bac1827bc6ca1891af8cf0.tar.bz2
firmament-5984383d2c48b4ae84bac1827bc6ca1891af8cf0.zip
Common config gui
Diffstat (limited to 'src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt')
-rw-r--r--src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt b/src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt
new file mode 100644
index 0000000..fb0fb1d
--- /dev/null
+++ b/src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt
@@ -0,0 +1,44 @@
+package moe.nea.firmament.gui.config
+
+import io.github.cottonmc.cotton.gui.widget.WGridPanel
+import io.github.cottonmc.cotton.gui.widget.WLabel
+import io.github.cottonmc.cotton.gui.widget.WWidget
+import io.github.cottonmc.cotton.gui.widget.data.VerticalAlignment
+import net.minecraft.text.Text
+
+class GuiAppender(val width: Int) {
+ private var row = 0
+ internal val panel = WGridPanel().also { it.setGaps(4, 4) }
+ internal val reloadables = mutableListOf<(() -> Unit)>()
+ fun set(x: Int, y: Int, w: Int, h: Int, widget: WWidget) {
+ panel.add(widget, x, y, w, h)
+ }
+
+
+ fun onReload(reloadable: () -> Unit) {
+ reloadables.add(reloadable)
+ }
+
+ fun skipRows(r: Int) {
+ row += r
+ }
+
+ fun appendLabeledRow(label: Text, right: WWidget) {
+ appendSplitRow(
+ WLabel(label).setVerticalAlignment(VerticalAlignment.CENTER),
+ right
+ )
+ }
+
+ fun appendSplitRow(left: WWidget, right: WWidget) {
+ val lw = width / 2
+ set(0, row, lw, 1, left)
+ set(lw, row, width - lw, 1, right)
+ skipRows(1)
+ }
+
+ fun appendFullRow(widget: WWidget) {
+ set(0, row, width, 1, widget)
+ skipRows(1)
+ }
+}