Bigger settings panel

This commit is contained in:
nea
2023-07-31 21:47:41 +02:00
parent c3e1bab941
commit 8b8811db65
3 changed files with 24 additions and 14 deletions

View File

@@ -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()
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 {
val panel = WSplitPanel(
WLabel(Text.translatable("firmament.config.${config.name}")),
WButton(Text.translatable("firmanent.config.edit")).also {
it.setOnClick {
config.showConfigEditor(screen)
}
}, 0, 1, 10, 1)
box.add(WFixedPanel(panel))
it.setSize(40, 18)
}
)
panel.insets = Insets.ROOT_PANEL
panel.backgroundPainter = BackgroundPainter.VANILLA
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) {

View File

@@ -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)>()

View File

@@ -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() {