""" summary: show, update & hide the progress dialog description: Using the progress dialog (aka 'wait box') primitives. keywords: actions level: beginner """ import time import random import ida_kernwin import ida_hexrays import ida_funcs import idautils perform_decompilation=False # Note: this try/except block below is just there to # let us (at Hex-Rays) test this script in various # situations. try: perform_decompilation = under_test__perform_decompilation except: pass step_sleep = 0.5 ida_kernwin.show_wait_box("Processing") try: all_eas = list(idautils.Functions()) neas = len(all_eas) for i, ea in enumerate(all_eas): if ida_kernwin.user_cancelled(): break ida_kernwin.replace_wait_box("Processing; step %d/%d" % (i+1, neas)) if perform_decompilation: if not ida_hexrays.decompile(ea): print("Decompilation failure: %x" % ea) time.sleep(step_sleep * random.random()) finally: ida_kernwin.hide_wait_box()