feat(plugins): allow to set custom settings page in jadx-gui
This commit is contained in:
+30
@@ -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
|
||||
}
|
||||
+1
@@ -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) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user