From 8b8811db65a264a4f12794e6a34c89fe1874c74b Mon Sep 17 00:00:00 2001 From: nea Date: Mon, 31 Jul 2023 21:47:41 +0200 Subject: Bigger settings panel --- .../moe/nea/firmament/gui/config/AllConfigsGui.kt | 28 +++++++++++++--------- .../moe/nea/firmament/gui/config/GuiAppender.kt | 2 +- .../moe/nea/firmament/gui/config/ManagedConfig.kt | 8 +++++-- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt b/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt index fbde4f5..449835e 100644 --- a/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt +++ b/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt @@ -32,10 +32,12 @@ import io.github.cottonmc.cotton.gui.widget.WScrollPanel import io.github.cottonmc.cotton.gui.widget.data.Axis import io.github.cottonmc.cotton.gui.widget.data.Insets import io.ktor.http.* +import kotlin.streams.asSequence import net.minecraft.client.gui.screen.Screen import net.minecraft.text.Text import moe.nea.firmament.features.FeatureManager import moe.nea.firmament.gui.WFixedPanel +import moe.nea.firmament.gui.WSplitPanel import moe.nea.firmament.gui.WTightScrollPanel import moe.nea.firmament.repo.RepoManager import moe.nea.firmament.util.MC @@ -51,26 +53,30 @@ object AllConfigsGui { ) + FeatureManager.allFeatures.mapNotNull { it.config } val box = WBox(Axis.VERTICAL) configs.forEach { config -> - val panel = WGridPanel() + val panel = WSplitPanel( + WLabel(Text.translatable("firmament.config.${config.name}")), + WButton(Text.translatable("firmanent.config.edit")).also { + it.setOnClick { + config.showConfigEditor(screen) + } + it.setSize(40, 18) + } + ) panel.insets = Insets.ROOT_PANEL panel.backgroundPainter = BackgroundPainter.VANILLA - panel.add(WLabel(Text.translatable("firmament.config.${config.name}")), 0, 0, 10, 1) - panel.add(WButton(Text.translatable("firmanent.config.edit")).also { - it.setOnClick { - config.showConfigEditor(screen) - } - }, 0, 1, 10, 1) - box.add(WFixedPanel(panel)) + box.add((panel)) } + box.streamChildren().asSequence() + .forEach { it.setSize(380, 0) } lwgd.setRootPanel(WBox( Axis.VERTICAL ).also { it.insets = Insets.ROOT_PANEL box.layout() - it.add(WFixedPanel((WTightScrollPanel((box)).also { - it.setSize(0, MC.window.scaledHeight / 2) + it.add(WFixedPanel((WScrollPanel((box)).also { + it.setSize(400, 300) }))) - it.setSize(0, MC.window.scaledHeight / 2) + it.setSize(400, 300) }) screen = object : CottonClientScreen(lwgd) { diff --git a/src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt b/src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt index 7b7186a..ddb37d6 100644 --- a/src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt +++ b/src/main/kotlin/moe/nea/firmament/gui/config/GuiAppender.kt @@ -30,7 +30,7 @@ import moe.nea.firmament.gui.WFixedPanel import moe.nea.firmament.gui.WSplitPanel class GuiAppender(val width: Int, val screenAccessor: () -> Screen) { - internal val panel = WBox(Axis.VERTICAL).also { + val panel = WBox(Axis.VERTICAL).also { it.setSize(width, 200) } internal val reloadables = mutableListOf<(() -> Unit)>() diff --git a/src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt b/src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt index 8b4fc43..4d1f1ae 100644 --- a/src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt +++ b/src/main/kotlin/moe/nea/firmament/gui/config/ManagedConfig.kt @@ -23,6 +23,7 @@ import io.github.cottonmc.cotton.gui.client.LightweightGuiDescription import io.github.cottonmc.cotton.gui.widget.WBox import io.github.cottonmc.cotton.gui.widget.WButton import io.github.cottonmc.cotton.gui.widget.WLabel +import io.github.cottonmc.cotton.gui.widget.WScrollPanel import io.github.cottonmc.cotton.gui.widget.data.Axis import io.github.cottonmc.cotton.gui.widget.data.Insets import io.github.cottonmc.cotton.gui.widget.data.VerticalAlignment @@ -40,6 +41,7 @@ import kotlin.time.Duration import net.minecraft.client.gui.screen.Screen import net.minecraft.text.Text import moe.nea.firmament.Firmament +import moe.nea.firmament.gui.WTightScrollPanel import moe.nea.firmament.util.MC import moe.nea.firmament.util.ScreenUtil.setScreenLater @@ -195,7 +197,7 @@ abstract class ManagedConfig(val name: String) { fun getConfigEditor(parent: Screen? = null): CottonClientScreen { val lwgd = LightweightGuiDescription() var screen: Screen? = null - val guiapp = GuiAppender(400, { requireNotNull(screen) { "Screen Accessor called too early" } }) + val guiapp = GuiAppender(400) { requireNotNull(screen) { "Screen Accessor called too early" } } latestGuiAppender = guiapp guiapp.panel.insets = Insets.ROOT_PANEL guiapp.appendFullRow(WBox(Axis.HORIZONTAL).also { @@ -210,7 +212,9 @@ abstract class ManagedConfig(val name: String) { }) sortedOptions.forEach { it.appendToGui(guiapp) } guiapp.reloadables.forEach { it() } - lwgd.setRootPanel(guiapp.panel) + lwgd.setRootPanel(WTightScrollPanel(guiapp.panel).also { + it.setSize(400, 300) + }) screen = object : CottonClientScreen(lwgd) { override fun init() { -- cgit