From ee765a46475d907838697e78968b56155c69da03 Mon Sep 17 00:00:00 2001 From: nea Date: Thu, 25 May 2023 23:33:28 +0200 Subject: Make use of WFixedPanel for the config gui --- .../kotlin/moe/nea/firmament/gui/WFixedPanel.kt | 25 ++++++++++++++++++++++ .../moe/nea/firmament/gui/config/AllConfigsGui.kt | 10 +++++---- 2 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/moe/nea/firmament/gui/WFixedPanel.kt diff --git a/src/main/kotlin/moe/nea/firmament/gui/WFixedPanel.kt b/src/main/kotlin/moe/nea/firmament/gui/WFixedPanel.kt new file mode 100644 index 0000000..4ada681 --- /dev/null +++ b/src/main/kotlin/moe/nea/firmament/gui/WFixedPanel.kt @@ -0,0 +1,25 @@ +package moe.nea.firmament.gui + +import io.github.cottonmc.cotton.gui.widget.WPanel +import io.github.cottonmc.cotton.gui.widget.WWidget + +class WFixedPanel() : WPanel() { + var child: WWidget + set(value) { + children.clear() + setSize(0, 0) + children.add(value) + } + get() = children.single() + + constructor(child: WWidget) : this() { + this.child = child + } + + override fun layout() { + setSize(0, 0) + super.layout() + } + + override fun canResize(): Boolean = false +} 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 6740471..411d7bd 100644 --- a/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt +++ b/src/main/kotlin/moe/nea/firmament/gui/config/AllConfigsGui.kt @@ -26,8 +26,10 @@ import io.github.cottonmc.cotton.gui.widget.WGridPanel import io.github.cottonmc.cotton.gui.widget.WLabel import io.github.cottonmc.cotton.gui.widget.WListPanel import io.github.cottonmc.cotton.gui.widget.data.Insets +import io.ktor.http.* import net.minecraft.text.Text import moe.nea.firmament.features.FeatureManager +import moe.nea.firmament.gui.WFixedPanel import moe.nea.firmament.repo.RepoManager import moe.nea.firmament.util.ScreenUtil.setScreenLater @@ -39,8 +41,9 @@ object AllConfigsGui { lwgd.setRootPanel(WListPanel( listOf( RepoManager.Config - ) + FeatureManager.allFeatures.mapNotNull { it.config }, ::WGridPanel - ) { config, panel -> + ) + FeatureManager.allFeatures.mapNotNull { it.config }, ::WFixedPanel + ) { config, fixedPanel -> + val panel = WGridPanel() panel.insets = Insets.ROOT_PANEL panel.backgroundPainter = BackgroundPainter.VANILLA panel.add(WLabel(Text.translatable("firmament.config.${config.name}")), 0, 0, 10, 1) @@ -49,9 +52,8 @@ object AllConfigsGui { config.showConfigEditor(screen) } }, 0, 1, 10, 1) - println("Panel size: ${panel.width} ${panel.height}") + fixedPanel.child = panel }.also { - it.setListItemHeight(52) it.setSize(10 * 18 + 14 + 16, 300) }) screen = CottonClientScreen(lwgd) -- cgit