diff options
author | nea <nea@nea.moe> | 2023-05-24 02:29:20 +0200 |
---|---|---|
committer | nea <nea@nea.moe> | 2023-05-24 02:29:20 +0200 |
commit | 5984383d2c48b4ae84bac1827bc6ca1891af8cf0 (patch) | |
tree | 90aaae93147ce7aad48777be488039626b70512a /src/main/kotlin/moe/nea/firmament/gui/config/StringHandler.kt | |
parent | 5ff50799b6c8baf6dd87ecbf44860d19a4acceab (diff) | |
download | firmament-5984383d2c48b4ae84bac1827bc6ca1891af8cf0.tar.gz firmament-5984383d2c48b4ae84bac1827bc6ca1891af8cf0.tar.bz2 firmament-5984383d2c48b4ae84bac1827bc6ca1891af8cf0.zip |
Common config gui
Diffstat (limited to 'src/main/kotlin/moe/nea/firmament/gui/config/StringHandler.kt')
-rw-r--r-- | src/main/kotlin/moe/nea/firmament/gui/config/StringHandler.kt | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/gui/config/StringHandler.kt b/src/main/kotlin/moe/nea/firmament/gui/config/StringHandler.kt new file mode 100644 index 0000000..b883e21 --- /dev/null +++ b/src/main/kotlin/moe/nea/firmament/gui/config/StringHandler.kt @@ -0,0 +1,32 @@ +package moe.nea.firmament.gui.config + +import io.github.cottonmc.cotton.gui.widget.WLabel +import io.github.cottonmc.cotton.gui.widget.WTextField +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.jsonPrimitive +import net.minecraft.text.Text + +class StringHandler(val config: ManagedConfig) : ManagedConfig.OptionHandler<String> { + override fun toJson(element: String): JsonElement? { + return JsonPrimitive(element) + } + + override fun fromJson(element: JsonElement): String { + return element.jsonPrimitive.toString() + } + + override fun emitGuiElements(opt: ManagedConfig.Option<String>, guiAppender: GuiAppender) { + guiAppender.appendLabeledRow( + opt.labelText, + WTextField(opt.labelText).apply { + suggestion = Text.translatableWithFallback(opt.rawLabelText + ".hint", "") + guiAppender.onReload { text = opt.value } + setChangedListener { + opt.value = it + config.save() + } + } + ) + } +} |