feat(plugins): allow to set custom settings page in jadx-gui

This commit is contained in:
Skylot
2023-06-02 20:05:38 +01:00
parent 683cd76cc5
commit a72e6aeafe
31 changed files with 669 additions and 286 deletions
@@ -0,0 +1,30 @@
package jadx.plugins.script
import jadx.api.plugins.gui.ISettingsGroup
import jadx.api.plugins.gui.JadxGuiContext
import jadx.plugins.script.runtime.data.JadxScriptAllOptions
import javax.swing.JPanel
object JadxScriptOptionsUI {
fun setup(guiContext: JadxGuiContext, scriptOptions: JadxScriptAllOptions) {
val settings = guiContext.settings()
val subGroups = scriptOptions.descriptions
.groupBy { it.script }
.map { (script, options) -> settings.buildSettingsGroupForOptions(script, options) }
.toList()
settings.setCustomSettings(EmptyRootGroup("Scripts", subGroups))
}
}
private class EmptyRootGroup(
private val title: String,
private val subGroups: List<ISettingsGroup>,
) : ISettingsGroup {
override fun getTitle() = title
override fun buildComponent() = JPanel()
override fun getSubGroups() = subGroups
}
@@ -16,6 +16,7 @@ class JadxScriptPlugin : JadxPlugin {
val scripts = ScriptEval().process(init, scriptOptions)
if (scripts.isNotEmpty()) {
init.addPass(JadxScriptAfterLoadPass(scripts))
init.guiContext?.let { JadxScriptOptionsUI.setup(it, scriptOptions) }
}
}
}