diff options
| author | Linnea Gräf <nea@nea.moe> | 2023-11-18 06:06:18 +0100 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2023-12-04 20:46:40 +0100 |
| commit | ac14fe8fe04c44e2e08fa90b5cc8fdce293c2ab1 (patch) | |
| tree | 79a72c3593d4e0304419c259559b371f12bd5249 /src/main/java/at/hannibal2/skyhanni/utils/repopatterns/RepoPatternGui.kt | |
| parent | d9a1a8dda967f40bd4a7a2707bf3ff5411093e7d (diff) | |
| download | SkyHanni-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.kt | 82 |
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 + } +} |
