aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils/repopatterns/RepoPatternGui.kt
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2023-11-18 06:06:18 +0100
committerLinnea Gräf <nea@nea.moe>2023-12-04 20:46:40 +0100
commitac14fe8fe04c44e2e08fa90b5cc8fdce293c2ab1 (patch)
tree79a72c3593d4e0304419c259559b371f12bd5249 /src/main/java/at/hannibal2/skyhanni/utils/repopatterns/RepoPatternGui.kt
parentd9a1a8dda967f40bd4a7a2707bf3ff5411093e7d (diff)
downloadSkyHanni-repopatterns.tar.gz
SkyHanni-repopatterns.tar.bz2
SkyHanni-repopatterns.zip
Add RepoPatternsrepopatterns
RepoPatterns allow us to easily update regexes without creating a new release.
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils/repopatterns/RepoPatternGui.kt')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/repopatterns/RepoPatternGui.kt82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/repopatterns/RepoPatternGui.kt b/src/main/java/at/hannibal2/skyhanni/utils/repopatterns/RepoPatternGui.kt
new file mode 100644
index 000000000..b70d54edd
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/utils/repopatterns/RepoPatternGui.kt
@@ -0,0 +1,82 @@
+package at.hannibal2.skyhanni.utils.repopatterns
+
+import at.hannibal2.skyhanni.SkyHanniMod
+import io.github.moulberry.moulconfig.common.MyResourceLocation
+import io.github.moulberry.moulconfig.gui.GuiContext
+import io.github.moulberry.moulconfig.gui.GuiScreenElementWrapperNew
+import io.github.moulberry.moulconfig.observer.ObservableList
+import io.github.moulberry.moulconfig.xml.Bind
+import io.github.moulberry.moulconfig.xml.XMLUniverse
+
+/**
+ * Gui for analyzing [RepoPattern]s
+ */
+class RepoPatternGui private constructor() {
+ companion object {
+ /**
+ * Open the [RepoPatternGui]
+ */
+ fun open() {
+ SkyHanniMod.screenToOpen = GuiScreenElementWrapperNew(
+ GuiContext(
+ XMLUniverse.getDefaultUniverse()
+ .load(RepoPatternGui(), MyResourceLocation("skyhanni", "gui/regexes.xml"))
+ )
+ )
+ }
+ }
+
+ @field:Bind
+ var search: String = ""
+ var lastSearch = null as String?
+ val allKeys = RepoPatternManager.allPatterns.toList()
+ .sortedBy { it.key }
+ .map { RepoPatternInfo(it) }
+ var searchCache = ObservableList(mutableListOf<RepoPatternInfo>())
+
+
+ class RepoPatternInfo(
+ repoPatternImpl: RepoPatternImpl
+ ) {
+ @field:Bind
+ val key: String = repoPatternImpl.key
+
+ @field:Bind
+ val regex: String = repoPatternImpl.value.pattern()
+
+ @field:Bind
+ val hoverRegex: List<String> = if (repoPatternImpl.isLoadedRemotely) {
+ listOf(
+ "§aLoaded remotely",
+ "§7Remote: " + repoPatternImpl.compiledPattern.pattern(),
+ "§7Local: " + repoPatternImpl.defaultPattern,
+ )
+ } else {
+ listOf("§cLoaded locally", "§7Local: " + repoPatternImpl.defaultPattern)
+ }
+
+ @field:Bind
+ val keyW = listOf(key)
+
+ @field:Bind
+ val overriden: String =
+ if (repoPatternImpl.wasOverridden) "§9Overriden"
+ else if (repoPatternImpl.isLoadedRemotely) "§aRemote"
+ else "§cLocal"
+ }
+
+ @Bind
+ fun poll(): String {
+ if (search != lastSearch) {
+ searchCache.clear()
+ searchCache.addAll(allKeys.filter { search in it.key })
+ lastSearch = search
+ }
+ return ""
+ }
+
+ @Bind
+ fun searchResults(): ObservableList<RepoPatternInfo> {
+ return searchCache
+ }
+}