Repository URL to install this package:
Version:
9.1~250226-1.fc43 ▾
|
"""
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)