mirror of
https://github.com/idapython/src
synced 2026-06-08 14:47:00 +00:00
64 lines
1.7 KiB
Python
64 lines
1.7 KiB
Python
"""
|
|
summary: add custom menus to IDA
|
|
|
|
description:
|
|
It is possible to add custom menus to IDA, either at the
|
|
toplevel (i.e., into the menubar), or as submenus of existing
|
|
menus.
|
|
|
|
Notes:
|
|
|
|
* the same action can be present in more than 1 menu
|
|
* this example does not deal with context menus
|
|
|
|
keywords: actions
|
|
|
|
level: beginner
|
|
"""
|
|
|
|
import ida_kernwin
|
|
|
|
# Create custom menus
|
|
ida_kernwin.create_menu("MyToplevelMenu", "&Custom menu", "View")
|
|
ida_kernwin.create_menu("MySubMenu", "Custom s&ubmenu", "View/Print internal flags")
|
|
|
|
# Create some actions
|
|
class greeter_t(ida_kernwin.action_handler_t):
|
|
def __init__(self, greetings):
|
|
ida_kernwin.action_handler_t.__init__(self)
|
|
self.greetings = greetings
|
|
|
|
def activate(self, ctx):
|
|
print(self.greetings)
|
|
|
|
def update(self, ctx):
|
|
return ida_kernwin.AST_ENABLE_ALWAYS
|
|
|
|
ACTION_NAME_0 = "my_action_0"
|
|
ACTION_NAME_1 = "my_action_1"
|
|
for action_name, greetings in [
|
|
(ACTION_NAME_0, "Hello, world"),
|
|
(ACTION_NAME_1, "Hi there"),
|
|
]:
|
|
desc = ida_kernwin.action_desc_t(
|
|
action_name, "Say \"%s\"" % greetings, greeter_t(greetings))
|
|
if ida_kernwin.register_action(desc):
|
|
print("Registered action \"%s\"" % action_name)
|
|
|
|
|
|
# Then, let's attach some actions to them - both core actions
|
|
# and custom ones is allowed (also, any action can be attached
|
|
# to multiple menus.)
|
|
for action_name, path in [
|
|
(ACTION_NAME_0, "Custom menu"),
|
|
(ACTION_NAME_0, "View/Custom submenu/"),
|
|
(ACTION_NAME_1, "Custom menu"),
|
|
(ACTION_NAME_1, "View/Custom submenu/"),
|
|
("About", "Custom menu"),
|
|
("About", "View/Custom submenu/"),
|
|
]:
|
|
ida_kernwin.attach_action_to_menu(
|
|
path,
|
|
action_name,
|
|
ida_kernwin.SETMENU_INS)
|