Skip to content

Commit

Permalink
hiding accordions, notifications default duration, input fix (this wa…
Browse files Browse the repository at this point in the history
…s pain to debug)
  • Loading branch information
nextdayy committed Nov 13, 2024
1 parent 3648d32 commit 88725d9
Show file tree
Hide file tree
Showing 10 changed files with 77 additions and 48 deletions.
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ kotlin = "2.0.20"
kotlinx-coroutines = "1.8.1"
kotlinx-atomicfu = "0.24.0"
fabric-language-kotlin = "1.12.2+kotlin.2.0.20"
polyui = "1.7.24"
polyui = "1.7.25"
annotations = "24.1.0"
hypixel-modapi = "1.0"
hypixel-data = "0.1.2" # Dep of hypixel-modapi
Expand Down
6 changes: 3 additions & 3 deletions modules/config-impl/api/config-impl.api
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ public abstract class org/polyfrost/oneconfig/api/config/v1/Config {
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lorg/polyfrost/oneconfig/api/config/v1/Config$Category;)V
public final fun addAliases ([Ljava/lang/String;)V
protected fun addCallback (Ljava/lang/String;Ljava/lang/Runnable;)V
protected fun addCallback (Ljava/lang/String;Ljava/util/function/Consumer;)V
protected fun addCallback (Ljava/lang/String;Ljava/util/function/Predicate;)V
protected fun addDependency (Ljava/lang/String;Ljava/lang/String;)V
protected fun addDependency (Ljava/lang/String;Ljava/lang/String;Ljava/util/function/BooleanSupplier;)V
protected fun addDependency (Ljava/lang/String;Ljava/util/function/BooleanSupplier;)V
protected fun addDependency (Ljava/lang/String;Ljava/lang/String;Ljava/util/function/Supplier;)V
protected fun addDependency (Ljava/lang/String;Ljava/lang/String;Z)V
protected fun getProperty (Ljava/lang/String;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public fun getTree ()Lorg/polyfrost/oneconfig/api/config/v1/Tree;
protected fun hideIf (Ljava/lang/String;Ljava/lang/String;)V
protected fun loadFrom (Ljava/lang/String;)V
protected fun loadFrom (Ljava/nio/file/Path;)V
protected fun makeTree (Ljava/lang/String;)Lorg/polyfrost/oneconfig/api/config/v1/Tree;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,12 +104,6 @@ protected <T> void addCallback(String option, Predicate<T> callback) {
((Property<T>) getProperty(option)).addCallback(callback);
}


protected void hideWhenShouldNotDisplay(String option) {
getProperty(option).addMetadata("hideOnDisplayFailure", true);
}


/**
* Add a callback to the specified option path, which is dot-separated for sub-configs.
* <br>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ open class ConfigVisualizer {
protected val stdAccord = Align(main = Align.Main.SpaceBetween, pad = Vec2.ZERO)
protected val ic2text = Align(pad = Vec2(8f, 0f))
protected val stdOpt = Align(cross = Align.Cross.Start, mode = Align.Mode.Vertical, pad = Vec2(0f, 8f))
protected val accordOpt = Align(cross = Align.Cross.Start, pad = Vec2(24f, 12f))
protected val accordOpt = Align(cross = Align.Cross.Start, pad = Vec2(22f, 12f))

/**
* For information, see [create].
Expand Down Expand Up @@ -198,33 +198,59 @@ open class ConfigVisualizer {
index.add(node.title to node.description)
wrapForAccordion(vis.visualize(node), node.title ?: return@map null, node.description).addHideHandler(node)
}

var open = false
val e: Property<*>? = tree.getProp("enabled")
val toWrap: Drawable
var enabled: Property<Boolean>? = null
// asm: signature as it prevents re-wrapping of function
val openInsn: Drawable.(Any?) -> Unit = {
open = !open
val arrow = if (enabled != null) this[1][1] else this[1]
Rotate(arrow, if (!open) PI else 0.0, false, Animations.Default.create(0.2.seconds)).add()
val value = parent[1].height
val anim = Animations.Default.create(0.4.seconds)
val operation = Resize(parent, width = 0f, height = if (open) -value else value, add = true, anim)
addOperation(
object : ComponentOp.Animatable<Component>(parent, anim, onFinish = {
this[1].renders = !open
this[1].isEnabled = !open
}) {
override fun apply(value: Float) {
operation.apply()
// asm: instruct parent (options list) to replace all its children so that they move with it closing
self.parent.position()
// asm: instruct all children of this accordion to update their visibility based on THIS, NOT its parent
self[1].children!!.fastEach { option ->
option.renders = option.intersects(self.x, self.y, self.width, self.height)
}
}
},
)
}

if (e != null && e.type == Boolean::class.java && e.getVisualizer() == null) {
toWrap = Group(
Switch(
lateralStretch = 2f,
size = 21f,
state = e.getAs()
).onToggle {
e.setAs(it)
if (open != !it) (parent.parent as Drawable).openInsn(null)
},
Image("polyui/chevron-down.svg").also { it.rotation = PI }
)
enabled = e as Property<Boolean>
} else {
toWrap = Image("polyui/chevron-down.svg").also { it.rotation = PI }
}
val out = Block(
wrap(Image("polyui/chevron-down.svg".image()).also { it.rotation = PI }, title, desc, icon).events {
self.color = PolyColor.TRANSPARENT
Event.Mouse.Companion.Clicked then {
open = !open
Rotate(this[1], if (!open) PI else 0.0, false, Animations.Default.create(0.2.seconds)).add()
val value = parent[1].height
val anim = Animations.Default.create(0.4.seconds)
val operation = Resize(parent, width = 0f, height = if (open) -value else value, add = true, anim)
addOperation(
object : ComponentOp.Animatable<Component>(parent, anim, onFinish = {
this[1].renders = !open
this[1].isEnabled = !open
}) {
override fun apply(value: Float) {
operation.apply()
// asm: instruct parent (options list) to replace all its children so that they move with it closing
self.parent.position()
// asm: instruct all children of this accordion to update their visibility based on THIS, NOT its parent
self[1].children!!.fastEach {
it.renders = it.intersects(self.x, self.y, self.width, self.height)
}
}
},
)
true
wrap(toWrap, title, desc, icon).also {
it.color = PolyColor.TRANSPARENT
it.onClick {
if(enabled != null && !enabled.getAs<Boolean>()) return@onClick
this.openInsn(null)
}
},
Group(
Expand Down Expand Up @@ -291,7 +317,7 @@ open class ConfigVisualizer {
if (s == Property.Display.HIDDEN) {
hidden = true
if (!initialized) {
this.afterParentInit {
this.afterParentInit(Int.MAX_VALUE) {
layoutIgnored = true
x = -100f
y = -100f
Expand Down
16 changes: 11 additions & 5 deletions modules/config/api/config.api
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ public abstract class org/polyfrost/oneconfig/api/config/v1/Property : org/polyf
public final fun addCallback (Ljava/util/function/Predicate;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun addCallback ([Ljava/util/function/Predicate;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun addDisplayCondition (Ljava/util/Collection;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun addDisplayCondition (Ljava/util/function/BooleanSupplier;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun addDisplayCondition (Lorg/polyfrost/oneconfig/api/config/v1/Property;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun addDisplayCondition ([Ljava/util/function/BooleanSupplier;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun addDisplayCondition (Ljava/util/function/Supplier;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun addDisplayCondition (Lorg/polyfrost/oneconfig/api/config/v1/Property;Z)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun addDisplayCondition ([Ljava/util/function/Supplier;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun canDisplay ()Z
protected final fun clearCallbacks ()V
protected final fun clearDisplayConditions ()V
Expand All @@ -72,8 +72,6 @@ public abstract class org/polyfrost/oneconfig/api/config/v1/Property : org/polyf
public fun onDisplayChange (Ljava/util/function/Consumer;)V
public fun overwrite (Lorg/polyfrost/oneconfig/api/config/v1/Node;)V
public static fun recast (Lorg/polyfrost/oneconfig/api/config/v1/Property;)Lorg/polyfrost/oneconfig/api/config/v1/Property;
public final fun removeCallback (Ljava/util/function/Predicate;)V
public final fun removeDisplayCondition (Ljava/util/function/BooleanSupplier;)V
public fun revaluateDisplay ()V
public final fun set (Ljava/lang/Object;)V
protected abstract fun set0 (Ljava/lang/Object;)V
Expand All @@ -83,6 +81,14 @@ public abstract class org/polyfrost/oneconfig/api/config/v1/Property : org/polyf
public final fun toString ()Ljava/lang/String;
}

public final class org/polyfrost/oneconfig/api/config/v1/Property$Display : java/lang/Enum {
public static final field DISABLED Lorg/polyfrost/oneconfig/api/config/v1/Property$Display;
public static final field HIDDEN Lorg/polyfrost/oneconfig/api/config/v1/Property$Display;
public static final field SHOWN Lorg/polyfrost/oneconfig/api/config/v1/Property$Display;
public static fun valueOf (Ljava/lang/String;)Lorg/polyfrost/oneconfig/api/config/v1/Property$Display;
public static fun values ()[Lorg/polyfrost/oneconfig/api/config/v1/Property$Display;
}

public final class org/polyfrost/oneconfig/api/config/v1/Property$KtProperty : org/polyfrost/oneconfig/api/config/v1/Property {
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lkotlin/reflect/KMutableProperty0;Ljava/lang/Class;)V
public fun get ()Ljava/lang/Object;
Expand Down
3 changes: 2 additions & 1 deletion modules/ui/api/ui.api
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
public final class org/polyfrost/oneconfig/api/ui/v1/Notifications {
public static final field INSTANCE Lorg/polyfrost/oneconfig/api/ui/v1/Notifications;
public static final fun enqueue (Lorg/polyfrost/oneconfig/api/ui/v1/Notifications$Type;Ljava/lang/String;J)Lorg/polyfrost/polyui/component/impl/Block;
public static final fun enqueue (Lorg/polyfrost/oneconfig/api/ui/v1/Notifications$Type;Ljava/lang/String;)Lorg/polyfrost/polyui/component/impl/Block;
public static final fun enqueue (Lorg/polyfrost/oneconfig/api/ui/v1/Notifications$Type;Ljava/lang/String;Ljava/lang/String;)Lorg/polyfrost/polyui/component/impl/Block;
public static final fun enqueue (Lorg/polyfrost/oneconfig/api/ui/v1/Notifications$Type;Ljava/lang/String;Ljava/lang/String;J)Lorg/polyfrost/polyui/component/impl/Block;
public static synthetic fun enqueue$default (Lorg/polyfrost/oneconfig/api/ui/v1/Notifications$Type;Ljava/lang/String;Ljava/lang/String;JILjava/lang/Object;)Lorg/polyfrost/polyui/component/impl/Block;
public static final fun enqueueCustom ([Lorg/polyfrost/polyui/component/Component;Lorg/polyfrost/polyui/animate/Animation;)Lorg/polyfrost/polyui/component/impl/Block;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ object Notifications {

@JvmOverloads
@JvmStatic
fun enqueue(type: Type, title: String = type.title, description: String, durationNanos: Long) = enqueueCustom(
fun enqueue(type: Type, title: String = type.title, description: String, durationNanos: Long = 5.seconds) = enqueueCustom(
Block(
Image("polyui/chevron-down.svg".image(), size = Vec2(32f, 32f)),
Text(title, fontSize = 14f).setFont { medium },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ object KeybindManager {

@JvmStatic
fun translateKey(inputManager: InputManager, key: Int, character: Char, state: Boolean) {
if (character != '\u0000') {
if (character != '\u0000' && (character.isLetterOrDigit() || character.isWhitespace())) {
inputManager.keyTyped(character)
}

Expand All @@ -125,8 +125,7 @@ object KeybindManager {
// modern fix because glfwModCharCallback doesn't work correctly
if (inputManager.mods > 1 && key < 255) {
inputManager.keyTyped((key + 32).toChar())
}
inputManager.keyDown(key)
} else inputManager.keyDown(key)
} else {
keysMap[key]?.let { inputManager.keyUp(it); return }
val m = modsMap[key]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,6 @@ public void onScreenClose() {
private void death(Exception e) {
Platform.screen().close();
LOGGER.error("Unexpected error", e);
Notifications.enqueue(Notifications.Type.Error, "An unexpected error occurred with this screen.\nPlease report this to the developer!", 5_000_000_000L);
Notifications.enqueue(Notifications.Type.Error, "An unexpected error occurred with this screen.\nPlease report this to the developer!");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,9 @@ private static void main() {

@Accordion(title = "an accordion", description = "AAAAAAAAAAAAAAAAAAAAAAAAAAH", index = 4)
public static class AinnerAAAA {
@Include
public static boolean enabled = true;

@Text(title = "Text")
public static String text = "Hello world!";

Expand Down

0 comments on commit 88725d9

Please sign in to comment.