ida_kernwin
===========

.. py:module:: ida_kernwin

.. autoapi-nested-parse::

   Defines the interface between the kernel and the UI.

   It contains:
   * the UI dispatcher notification codes (ui_notification_t)
   * convenience functions for UI services
   * structures which hold information about the lines (disassembly, structures, enums) generated by the kernel
   * functions to interact with the user (dialog boxes)
   * some string and conversion functions. 


       



Attributes
----------

.. autoapisummary::

   ida_kernwin.MAX_SPACES_ADDED
   ida_kernwin.mbox_internal
   ida_kernwin.mbox_info
   ida_kernwin.mbox_warning
   ida_kernwin.mbox_error
   ida_kernwin.mbox_nomem
   ida_kernwin.mbox_feedback
   ida_kernwin.mbox_readerror
   ida_kernwin.mbox_writeerror
   ida_kernwin.mbox_filestruct
   ida_kernwin.mbox_wait
   ida_kernwin.mbox_hide
   ida_kernwin.mbox_replace
   ida_kernwin.chtype_generic
   ida_kernwin.chtype_idasgn
   ida_kernwin.chtype_entry
   ida_kernwin.chtype_name
   ida_kernwin.chtype_stkvar_xref
   ida_kernwin.chtype_xref
   ida_kernwin.chtype_func
   ida_kernwin.chtype_segm
   ida_kernwin.chtype_strpath
   ida_kernwin.chtype_idatil
   ida_kernwin.chtype_srcp
   ida_kernwin.chtype_struct
   ida_kernwin.chtype_enum
   ida_kernwin.chtype_enum_by_value_and_size
   ida_kernwin.beep_default
   ida_kernwin.TCCRT_INVALID
   ida_kernwin.TCCRT_FLAT
   ida_kernwin.TCCRT_GRAPH
   ida_kernwin.TCCRT_PROXIMITY
   ida_kernwin.TCCPT_INVALID
   ida_kernwin.TCCPT_PLACE
   ida_kernwin.TCCPT_SIMPLELINE_PLACE
   ida_kernwin.TCCPT_IDAPLACE
   ida_kernwin.TCCPT_TIPLACE
   ida_kernwin.VME_UNKNOWN
   ida_kernwin.VME_LEFT_BUTTON
   ida_kernwin.VME_RIGHT_BUTTON
   ida_kernwin.VME_MID_BUTTON
   ida_kernwin.SETMENU_POSMASK
   ida_kernwin.SETMENU_INS
   ida_kernwin.SETMENU_APP
   ida_kernwin.SETMENU_FIRST
   ida_kernwin.SETMENU_ENSURE_SEP
   ida_kernwin.CREATETB_ADV
   ida_kernwin.HIF_IDENTIFIER
   ida_kernwin.HIF_REGISTER
   ida_kernwin.HIF_LOCKED
   ida_kernwin.HIF_NOCASE
   ida_kernwin.HIF_USE_SLOT
   ida_kernwin.HIF_SLOT_SHIFT
   ida_kernwin.HIF_SLOT_0
   ida_kernwin.HIF_SLOT_1
   ida_kernwin.HIF_SLOT_2
   ida_kernwin.HIF_SLOT_3
   ida_kernwin.HIF_SLOT_4
   ida_kernwin.HIF_SLOT_5
   ida_kernwin.HIF_SLOT_6
   ida_kernwin.HIF_SLOT_7
   ida_kernwin.REG_HINTS_MARKER
   ida_kernwin.REG_HINTS_MARKER_LEN
   ida_kernwin.SRCDBG_HINTS_MARKER
   ida_kernwin.SRCDBG_HINTS_MARKER_LEN
   ida_kernwin.CDVF_NOLINES
   ida_kernwin.CDVF_LINEICONS
   ida_kernwin.CDVF_STATUSBAR
   ida_kernwin.IDCHK_OK
   ida_kernwin.IDCHK_ARG
   ida_kernwin.IDCHK_KEY
   ida_kernwin.IDCHK_MAX
   ida_kernwin.WCLS_SAVE
   ida_kernwin.WCLS_NO_CONTEXT
   ida_kernwin.WCLS_DONT_SAVE_SIZE
   ida_kernwin.WCLS_DELETE_LATER
   ida_kernwin.WCLS_CLOSE_LATER
   ida_kernwin.DP_LEFT
   ida_kernwin.DP_TOP
   ida_kernwin.DP_RIGHT
   ida_kernwin.DP_BOTTOM
   ida_kernwin.DP_INSIDE
   ida_kernwin.DP_TAB
   ida_kernwin.DP_BEFORE
   ida_kernwin.DP_FLOATING
   ida_kernwin.DP_SZHINT
   ida_kernwin.SVF_COPY_LINES
   ida_kernwin.SVF_LINES_BYPTR
   ida_kernwin.CVNF_LAZY
   ida_kernwin.CVNF_JUMP
   ida_kernwin.CVNF_ACT
   ida_kernwin.WOPN_RESTORE
   ida_kernwin.WOPN_PERSIST
   ida_kernwin.WOPN_CLOSED_BY_ESC
   ida_kernwin.WOPN_NOT_CLOSED_BY_ESC
   ida_kernwin.WOPN_DP_MASK
   ida_kernwin.WOPN_DP_SHIFT
   ida_kernwin.WOPN_DP_LEFT
   ida_kernwin.WOPN_DP_TOP
   ida_kernwin.WOPN_DP_RIGHT
   ida_kernwin.WOPN_DP_BOTTOM
   ida_kernwin.WOPN_DP_INSIDE
   ida_kernwin.WOPN_DP_TAB
   ida_kernwin.WOPN_DP_BEFORE
   ida_kernwin.WOPN_DP_FLOATING
   ida_kernwin.WOPN_DP_SZHINT
   ida_kernwin.WOPN_DP_INSIDE_BEFORE
   ida_kernwin.WOPN_DP_TAB_BEFORE
   ida_kernwin.RENADDR_IDA
   ida_kernwin.RENADDR_HR
   ida_kernwin.CVLF_USE_MOUSE
   ida_kernwin.cvar
   ida_kernwin.IDALIB_API_MAGIC
   ida_kernwin.DEFAULT_PLACE_LNNUM
   ida_kernwin.PCF_EA_CAPABLE
   ida_kernwin.PCF_MAKEPLACE_ALLOCATES
   ida_kernwin.LECVT_CANCELED
   ida_kernwin.LECVT_ERROR
   ida_kernwin.LECVT_OK
   ida_kernwin.LECVT_WITHIN_LISTING
   ida_kernwin.CK_TRACE
   ida_kernwin.CK_TRACE_OVL
   ida_kernwin.CK_EXTRA1
   ida_kernwin.CK_EXTRA2
   ida_kernwin.CK_EXTRA3
   ida_kernwin.CK_EXTRA4
   ida_kernwin.CK_EXTRA5
   ida_kernwin.CK_EXTRA6
   ida_kernwin.CK_EXTRA7
   ida_kernwin.CK_EXTRA8
   ida_kernwin.CK_EXTRA9
   ida_kernwin.CK_EXTRA10
   ida_kernwin.CK_EXTRA11
   ida_kernwin.CK_EXTRA12
   ida_kernwin.CK_EXTRA13
   ida_kernwin.CK_EXTRA14
   ida_kernwin.CK_EXTRA15
   ida_kernwin.CK_EXTRA16
   ida_kernwin.LROEF_MASK
   ida_kernwin.LROEF_FULL_LINE
   ida_kernwin.LROEF_CPS_RANGE
   ida_kernwin.BWN_UNKNOWN
   ida_kernwin.BWN_EXPORTS
   ida_kernwin.BWN_IMPORTS
   ida_kernwin.BWN_NAMES
   ida_kernwin.BWN_FUNCS
   ida_kernwin.BWN_STRINGS
   ida_kernwin.BWN_SEGS
   ida_kernwin.BWN_SEGREGS
   ida_kernwin.BWN_SELS
   ida_kernwin.BWN_SIGNS
   ida_kernwin.BWN_TILS
   ida_kernwin.BWN_TICSR
   ida_kernwin.BWN_CALLS
   ida_kernwin.BWN_PROBS
   ida_kernwin.BWN_BPTS
   ida_kernwin.BWN_THREADS
   ida_kernwin.BWN_MODULES
   ida_kernwin.BWN_TRACE
   ida_kernwin.BWN_CALL_STACK
   ida_kernwin.BWN_XREFS
   ida_kernwin.BWN_SEARCH
   ida_kernwin.BWN_FRAME
   ida_kernwin.BWN_NAVBAND
   ida_kernwin.BWN_DISASM
   ida_kernwin.BWN_HEXVIEW
   ida_kernwin.BWN_NOTEPAD
   ida_kernwin.BWN_OUTPUT
   ida_kernwin.BWN_CLI
   ida_kernwin.BWN_WATCH
   ida_kernwin.BWN_LOCALS
   ida_kernwin.BWN_STKVIEW
   ida_kernwin.BWN_CHOOSER
   ida_kernwin.BWN_SHORTCUTCSR
   ida_kernwin.BWN_SHORTCUTWIN
   ida_kernwin.BWN_CPUREGS
   ida_kernwin.BWN_SO_STRUCTS
   ida_kernwin.BWN_SO_OFFSETS
   ida_kernwin.BWN_CMDPALCSR
   ida_kernwin.BWN_CMDPALWIN
   ida_kernwin.BWN_SNIPPETS
   ida_kernwin.BWN_CUSTVIEW
   ida_kernwin.BWN_ADDRWATCH
   ida_kernwin.BWN_PSEUDOCODE
   ida_kernwin.BWN_CALLS_CALLERS
   ida_kernwin.BWN_CALLS_CALLEES
   ida_kernwin.BWN_MDVIEWCSR
   ida_kernwin.BWN_DISASM_ARROWS
   ida_kernwin.BWN_CV_LINE_INFOS
   ida_kernwin.BWN_SRCPTHMAP_CSR
   ida_kernwin.BWN_SRCPTHUND_CSR
   ida_kernwin.BWN_UNDOHIST
   ida_kernwin.BWN_SNIPPETS_CSR
   ida_kernwin.BWN_SCRIPTS_CSR
   ida_kernwin.BWN_BOOKMARKS
   ida_kernwin.BWN_TILIST
   ida_kernwin.BWN_TIL_VIEW
   ida_kernwin.BWN_TYPE_EDITOR
   ida_kernwin.BWN_MICROCODE
   ida_kernwin.BWN_XREF_TREE
   ida_kernwin.IWID_EXPORTS
   ida_kernwin.IWID_IMPORTS
   ida_kernwin.IWID_NAMES
   ida_kernwin.IWID_FUNCS
   ida_kernwin.IWID_STRINGS
   ida_kernwin.IWID_SEGS
   ida_kernwin.IWID_SEGREGS
   ida_kernwin.IWID_SELS
   ida_kernwin.IWID_SIGNS
   ida_kernwin.IWID_TILS
   ida_kernwin.IWID_TICSR
   ida_kernwin.IWID_CALLS
   ida_kernwin.IWID_PROBS
   ida_kernwin.IWID_BPTS
   ida_kernwin.IWID_THREADS
   ida_kernwin.IWID_MODULES
   ida_kernwin.IWID_TRACE
   ida_kernwin.IWID_CALL_STACK
   ida_kernwin.IWID_XREFS
   ida_kernwin.IWID_SEARCH
   ida_kernwin.IWID_FRAME
   ida_kernwin.IWID_NAVBAND
   ida_kernwin.IWID_DISASM
   ida_kernwin.IWID_HEXVIEW
   ida_kernwin.IWID_NOTEPAD
   ida_kernwin.IWID_OUTPUT
   ida_kernwin.IWID_CLI
   ida_kernwin.IWID_WATCH
   ida_kernwin.IWID_LOCALS
   ida_kernwin.IWID_STKVIEW
   ida_kernwin.IWID_CHOOSER
   ida_kernwin.IWID_SHORTCUTCSR
   ida_kernwin.IWID_SHORTCUTWIN
   ida_kernwin.IWID_CPUREGS
   ida_kernwin.IWID_SO_STRUCTS
   ida_kernwin.IWID_SO_OFFSETS
   ida_kernwin.IWID_CMDPALCSR
   ida_kernwin.IWID_CMDPALWIN
   ida_kernwin.IWID_SNIPPETS
   ida_kernwin.IWID_CUSTVIEW
   ida_kernwin.IWID_ADDRWATCH
   ida_kernwin.IWID_PSEUDOCODE
   ida_kernwin.IWID_CALLS_CALLERS
   ida_kernwin.IWID_CALLS_CALLEES
   ida_kernwin.IWID_MDVIEWCSR
   ida_kernwin.IWID_DISASM_ARROWS
   ida_kernwin.IWID_CV_LINE_INFOS
   ida_kernwin.IWID_SRCPTHMAP_CSR
   ida_kernwin.IWID_SRCPTHUND_CSR
   ida_kernwin.IWID_UNDOHIST
   ida_kernwin.IWID_SNIPPETS_CSR
   ida_kernwin.IWID_SCRIPTS_CSR
   ida_kernwin.IWID_BOOKMARKS
   ida_kernwin.IWID_TILIST
   ida_kernwin.IWID_TIL_VIEW
   ida_kernwin.IWID_TYPE_EDITOR
   ida_kernwin.IWID_XREF_TREE
   ida_kernwin.IWID_ANY_LISTING
   ida_kernwin.IWID_EA_LISTING
   ida_kernwin.IWID_ALL
   ida_kernwin.IDA_DEBUG_DREFS
   ida_kernwin.IDA_DEBUG_OFFSET
   ida_kernwin.IDA_DEBUG_FLIRT
   ida_kernwin.IDA_DEBUG_IDP
   ida_kernwin.IDA_DEBUG_LDR
   ida_kernwin.IDA_DEBUG_PLUGIN
   ida_kernwin.IDA_DEBUG_IDS
   ida_kernwin.IDA_DEBUG_CONFIG
   ida_kernwin.IDA_DEBUG_CHECKMEM
   ida_kernwin.IDA_DEBUG_LICENSE
   ida_kernwin.IDA_DEBUG_DEMANGLE
   ida_kernwin.IDA_DEBUG_QUEUE
   ida_kernwin.IDA_DEBUG_ROLLBACK
   ida_kernwin.IDA_DEBUG_ALREADY
   ida_kernwin.IDA_DEBUG_TIL
   ida_kernwin.IDA_DEBUG_NOTIFY
   ida_kernwin.IDA_DEBUG_DEBUGGER
   ida_kernwin.IDA_DEBUG_APPCALL
   ida_kernwin.IDA_DEBUG_SRCDBG
   ida_kernwin.IDA_DEBUG_ACCESSIBILITY
   ida_kernwin.IDA_DEBUG_NETWORK
   ida_kernwin.IDA_DEBUG_INTERNET
   ida_kernwin.IDA_DEBUG_SIMPLEX
   ida_kernwin.IDA_DEBUG_DBGINFO
   ida_kernwin.IDA_DEBUG_LUMINA
   ida_kernwin.IDA_DEBUG_THEMES
   ida_kernwin.IDA_DEBUG_REGEX
   ida_kernwin.IDA_DEBUG_SUBPROC
   ida_kernwin.IDA_DEBUG_RANGECB
   ida_kernwin.IDA_DEBUG_ALWAYS
   ida_kernwin.AST_ENABLE_ALWAYS
   ida_kernwin.AST_ENABLE_FOR_IDB
   ida_kernwin.AST_ENABLE_FOR_WIDGET
   ida_kernwin.AST_ENABLE
   ida_kernwin.AST_DISABLE_ALWAYS
   ida_kernwin.AST_DISABLE_FOR_IDB
   ida_kernwin.AST_DISABLE_FOR_WIDGET
   ida_kernwin.AST_DISABLE
   ida_kernwin.CH_MODAL
   ida_kernwin.CH_KEEP
   ida_kernwin.CH_MULTI
   ida_kernwin.CH_MULTI_EDIT
   ida_kernwin.CH_NOBTNS
   ida_kernwin.CH_ATTRS
   ida_kernwin.CH_UNUSED
   ida_kernwin.CH_FORCE_DEFAULT
   ida_kernwin.CH_CAN_INS
   ida_kernwin.CH_CAN_DEL
   ida_kernwin.CH_CAN_EDIT
   ida_kernwin.CH_CAN_REFRESH
   ida_kernwin.CH_QFLT
   ida_kernwin.CH_QFTYP_SHIFT
   ida_kernwin.CH_QFTYP_DEFAULT
   ida_kernwin.CH_QFTYP_NORMAL
   ida_kernwin.CH_QFTYP_WHOLE_WORDS
   ida_kernwin.CH_QFTYP_REGEX
   ida_kernwin.CH_QFTYP_FUZZY
   ida_kernwin.CH_QFTYP_MASK
   ida_kernwin.CH_NO_STATUS_BAR
   ida_kernwin.CH_RESTORE
   ida_kernwin.CH_RENAME_IS_EDIT
   ida_kernwin.CH_BUILTIN_SHIFT
   ida_kernwin.CH_BUILTIN_MASK
   ida_kernwin.CH_HAS_DIRTREE
   ida_kernwin.CH_TM_NO_TREE
   ida_kernwin.CH_TM_FOLDERS_ONLY
   ida_kernwin.CH_TM_FULL_TREE
   ida_kernwin.CH_TM_SHIFT
   ida_kernwin.CH_TM_MASK
   ida_kernwin.CH_HAS_DIFF
   ida_kernwin.CH_NO_SORT
   ida_kernwin.CH_NO_FILTER
   ida_kernwin.CH_NON_PERSISTED_TREE
   ida_kernwin.CH2_LAZY_LOADED
   ida_kernwin.CH2_HAS_INODE2INDEX
   ida_kernwin.CHCOL_PLAIN
   ida_kernwin.CHCOL_PATH
   ida_kernwin.CHCOL_HEX
   ida_kernwin.CHCOL_DEC
   ida_kernwin.CHCOL_EA
   ida_kernwin.CHCOL_FNAME
   ida_kernwin.CHCOL_FORMAT
   ida_kernwin.CHCOL_DEFHIDDEN
   ida_kernwin.CHCOL_DRAGHINT
   ida_kernwin.CHCOL_INODENAME
   ida_kernwin.CHITEM_BOLD
   ida_kernwin.CHITEM_ITALIC
   ida_kernwin.CHITEM_UNDER
   ida_kernwin.CHITEM_STRIKE
   ida_kernwin.CHITEM_GRAY
   ida_kernwin.CHOOSER_NOMAINMENU
   ida_kernwin.CHOOSER_NOSTATUSBAR
   ida_kernwin.GCRF_HIGH_BIT
   ida_kernwin.GCRF_HEADER
   ida_kernwin.GCRF_SELECTION
   ida_kernwin.GCRF_CURRENT
   ida_kernwin.GCRF_ALL
   ida_kernwin.nat_lib
   ida_kernwin.nat_fun
   ida_kernwin.nat_cod
   ida_kernwin.nat_dat
   ida_kernwin.nat_und
   ida_kernwin.nat_ext
   ida_kernwin.nat_err
   ida_kernwin.nat_gap
   ida_kernwin.nat_cur
   ida_kernwin.nat_auto
   ida_kernwin.nat_lum
   ida_kernwin.nat_hlo
   ida_kernwin.nat_last
   ida_kernwin.CVH_USERDATA
   ida_kernwin.CVH_KEYDOWN
   ida_kernwin.CVH_POPUP
   ida_kernwin.CVH_DBLCLICK
   ida_kernwin.CVH_CURPOS
   ida_kernwin.CVH_CLOSE
   ida_kernwin.CVH_CLICK
   ida_kernwin.CVH_QT_AWARE
   ida_kernwin.CVH_HELP
   ida_kernwin.CVH_MOUSEMOVE
   ida_kernwin.CDVH_USERDATA
   ida_kernwin.CDVH_SRCVIEW
   ida_kernwin.CDVH_LINES_CLICK
   ida_kernwin.CDVH_LINES_DBLCLICK
   ida_kernwin.CDVH_LINES_POPUP
   ida_kernwin.CDVH_LINES_DRAWICON
   ida_kernwin.CDVH_LINES_LINENUM
   ida_kernwin.CDVH_LINES_ICONMARGIN
   ida_kernwin.CDVH_LINES_RADIX
   ida_kernwin.CDVH_LINES_ALIGNMENT
   ida_kernwin.VES_SHIFT
   ida_kernwin.VES_ALT
   ida_kernwin.VES_CTRL
   ida_kernwin.VES_MOUSE_LEFT
   ida_kernwin.VES_MOUSE_RIGHT
   ida_kernwin.VES_MOUSE_MIDDLE
   ida_kernwin.VES_META
   ida_kernwin.msg_activated
   ida_kernwin.msg_deactivated
   ida_kernwin.msg_click
   ida_kernwin.msg_dblclick
   ida_kernwin.msg_closed
   ida_kernwin.msg_keydown
   ida_kernwin.view_activated
   ida_kernwin.view_deactivated
   ida_kernwin.view_keydown
   ida_kernwin.view_click
   ida_kernwin.view_dblclick
   ida_kernwin.view_curpos
   ida_kernwin.view_created
   ida_kernwin.view_close
   ida_kernwin.view_switched
   ida_kernwin.view_mouse_over
   ida_kernwin.view_loc_changed
   ida_kernwin.view_mouse_moved
   ida_kernwin.iek_unknown
   ida_kernwin.iek_shortcut
   ida_kernwin.iek_key_press
   ida_kernwin.iek_key_release
   ida_kernwin.iek_mouse_button_press
   ida_kernwin.iek_mouse_button_release
   ida_kernwin.iek_mouse_wheel
   ida_kernwin.MFF_FAST
   ida_kernwin.MFF_READ
   ida_kernwin.MFF_WRITE
   ida_kernwin.MFF_NOWAIT
   ida_kernwin.UIJMP_ACTIVATE
   ida_kernwin.UIJMP_DONTPUSH
   ida_kernwin.UIJMP_VIEWMASK
   ida_kernwin.UIJMP_ANYVIEW
   ida_kernwin.UIJMP_IDAVIEW
   ida_kernwin.UIJMP_IDAVIEW_NEW
   ida_kernwin.ACF_HAS_SELECTION
   ida_kernwin.ACF_XTRN_EA
   ida_kernwin.ACF_HAS_FIELD_DIRTREE_SELECTION
   ida_kernwin.ACF_HAS_SOURCE
   ida_kernwin.ACF_HAS_TYPE_REF
   ida_kernwin.AHF_VERSION
   ida_kernwin.AHF_VERSION_MASK
   ida_kernwin.ADF_OWN_HANDLER
   ida_kernwin.ADF_NO_UNDO
   ida_kernwin.ADF_OT_MASK
   ida_kernwin.ADF_OT_PLUGIN
   ida_kernwin.ADF_OT_PLUGMOD
   ida_kernwin.ADF_OT_PROCMOD
   ida_kernwin.ADF_GLOBAL
   ida_kernwin.ADF_NO_HIGHLIGHT
   ida_kernwin.ADF_CHECKABLE
   ida_kernwin.ADF_CHECKED
   ida_kernwin.AA_NONE
   ida_kernwin.AA_LABEL
   ida_kernwin.AA_SHORTCUT
   ida_kernwin.AA_TOOLTIP
   ida_kernwin.AA_ICON
   ida_kernwin.AA_STATE
   ida_kernwin.AA_CHECKABLE
   ida_kernwin.AA_CHECKED
   ida_kernwin.AA_VISIBILITY
   ida_kernwin.ASKBTN_YES
   ida_kernwin.ASKBTN_NO
   ida_kernwin.ASKBTN_CANCEL
   ida_kernwin.ASKBTN_BTN1
   ida_kernwin.ASKBTN_BTN2
   ida_kernwin.ASKBTN_BTN3
   ida_kernwin.HIST_SEG
   ida_kernwin.HIST_CMT
   ida_kernwin.HIST_SRCH
   ida_kernwin.HIST_IDENT
   ida_kernwin.HIST_FILE
   ida_kernwin.HIST_TYPE
   ida_kernwin.HIST_CMD
   ida_kernwin.HIST_DIR
   ida_kernwin.HIST_IDENT2
   ida_kernwin.CLNL_RTRIM
   ida_kernwin.CLNL_LTRIM
   ida_kernwin.CLNL_FINDCMT
   ida_kernwin.CLNL_TRIM
   ida_kernwin.S2EAOPT_NOCALC
   ida_kernwin.IK_CANCEL
   ida_kernwin.IK_BACK
   ida_kernwin.IK_TAB
   ida_kernwin.IK_CLEAR
   ida_kernwin.IK_RETURN
   ida_kernwin.IK_SHIFT
   ida_kernwin.IK_CONTROL
   ida_kernwin.IK_MENU
   ida_kernwin.IK_PAUSE
   ida_kernwin.IK_CAPITAL
   ida_kernwin.IK_KANA
   ida_kernwin.IK_ESCAPE
   ida_kernwin.IK_MODECHANGE
   ida_kernwin.IK_SPACE
   ida_kernwin.IK_PRIOR
   ida_kernwin.IK_NEXT
   ida_kernwin.IK_END
   ida_kernwin.IK_HOME
   ida_kernwin.IK_LEFT
   ida_kernwin.IK_UP
   ida_kernwin.IK_RIGHT
   ida_kernwin.IK_DOWN
   ida_kernwin.IK_SELECT
   ida_kernwin.IK_PRINT
   ida_kernwin.IK_EXECUTE
   ida_kernwin.IK_SNAPSHOT
   ida_kernwin.IK_INSERT
   ida_kernwin.IK_DELETE
   ida_kernwin.IK_HELP
   ida_kernwin.IK_LWIN
   ida_kernwin.IK_RWIN
   ida_kernwin.IK_APPS
   ida_kernwin.IK_SLEEP
   ida_kernwin.IK_NUMPAD0
   ida_kernwin.IK_NUMPAD1
   ida_kernwin.IK_NUMPAD2
   ida_kernwin.IK_NUMPAD3
   ida_kernwin.IK_NUMPAD4
   ida_kernwin.IK_NUMPAD5
   ida_kernwin.IK_NUMPAD6
   ida_kernwin.IK_NUMPAD7
   ida_kernwin.IK_NUMPAD8
   ida_kernwin.IK_NUMPAD9
   ida_kernwin.IK_MULTIPLY
   ida_kernwin.IK_ADD
   ida_kernwin.IK_SEPARATOR
   ida_kernwin.IK_SUBTRACT
   ida_kernwin.IK_DECIMAL
   ida_kernwin.IK_DIVIDE
   ida_kernwin.IK_F1
   ida_kernwin.IK_F2
   ida_kernwin.IK_F3
   ida_kernwin.IK_F4
   ida_kernwin.IK_F5
   ida_kernwin.IK_F6
   ida_kernwin.IK_F7
   ida_kernwin.IK_F8
   ida_kernwin.IK_F9
   ida_kernwin.IK_F10
   ida_kernwin.IK_F11
   ida_kernwin.IK_F12
   ida_kernwin.IK_F13
   ida_kernwin.IK_F14
   ida_kernwin.IK_F15
   ida_kernwin.IK_F16
   ida_kernwin.IK_F17
   ida_kernwin.IK_F18
   ida_kernwin.IK_F19
   ida_kernwin.IK_F20
   ida_kernwin.IK_F21
   ida_kernwin.IK_F22
   ida_kernwin.IK_F23
   ida_kernwin.IK_F24
   ida_kernwin.IK_NUMLOCK
   ida_kernwin.IK_SCROLL
   ida_kernwin.IK_OEM_FJ_MASSHOU
   ida_kernwin.IK_OEM_FJ_TOUROKU
   ida_kernwin.IK_LSHIFT
   ida_kernwin.IK_RSHIFT
   ida_kernwin.IK_LCONTROL
   ida_kernwin.IK_RCONTROL
   ida_kernwin.IK_LMENU
   ida_kernwin.IK_RMENU
   ida_kernwin.IK_BROWSER_BACK
   ida_kernwin.IK_BROWSER_FORWARD
   ida_kernwin.IK_BROWSER_REFRESH
   ida_kernwin.IK_BROWSER_STOP
   ida_kernwin.IK_BROWSER_SEARCH
   ida_kernwin.IK_BROWSER_FAVORITES
   ida_kernwin.IK_BROWSER_HOME
   ida_kernwin.IK_VOLUME_MUTE
   ida_kernwin.IK_VOLUME_DOWN
   ida_kernwin.IK_VOLUME_UP
   ida_kernwin.IK_MEDIA_NEXT_TRACK
   ida_kernwin.IK_MEDIA_PREV_TRACK
   ida_kernwin.IK_MEDIA_STOP
   ida_kernwin.IK_MEDIA_PLAY_PAUSE
   ida_kernwin.IK_LAUNCH_MAIL
   ida_kernwin.IK_LAUNCH_MEDIA_SELECT
   ida_kernwin.IK_LAUNCH_APP1
   ida_kernwin.IK_LAUNCH_APP2
   ida_kernwin.IK_OEM_1
   ida_kernwin.IK_OEM_PLUS
   ida_kernwin.IK_OEM_COMMA
   ida_kernwin.IK_OEM_MINUS
   ida_kernwin.IK_OEM_PERIOD
   ida_kernwin.IK_OEM_2
   ida_kernwin.IK_OEM_3
   ida_kernwin.IK_OEM_4
   ida_kernwin.IK_OEM_5
   ida_kernwin.IK_OEM_6
   ida_kernwin.IK_OEM_7
   ida_kernwin.IK_OEM_102
   ida_kernwin.IK_PLAY
   ida_kernwin.IK_ZOOM
   ida_kernwin.IK_OEM_CLEAR
   ida_kernwin.CB_INIT
   ida_kernwin.CB_YES
   ida_kernwin.CB_CLOSE
   ida_kernwin.CB_INVISIBLE
   ida_kernwin.CB_DESTROYING
   ida_kernwin.CB_NO
   ida_kernwin.CB_CANCEL
   ida_kernwin.SETMENU_IF_ENABLED
   ida_kernwin.CH_NOIDB
   ida_kernwin.BWN_TILVIEW
   ida_kernwin.IWID_TILVIEW
   ida_kernwin.BWN_LOCTYPS
   ida_kernwin.IWID_LOCTYPS
   ida_kernwin.BWN_DISASMS
   ida_kernwin.IWID_DISASMS
   ida_kernwin.CHOOSER_NO_SELECTION
   ida_kernwin.CHOOSER_MULTI_SELECTION
   ida_kernwin.CHOOSER_POPUP_MENU
   ida_kernwin.CHOOSER_MENU_EDIT
   ida_kernwin.CHOOSER_MENU_JUMP
   ida_kernwin.CHOOSER_MENU_SEARCH
   ida_kernwin.CH_NOIDB
   ida_kernwin.place_t_as_idaplace_t
   ida_kernwin.place_t_as_simpleline_place_t
   ida_kernwin.place_t_as_tiplace_t


Classes
-------

.. autoapisummary::

   ida_kernwin.chooser_row_info_vec_t
   ida_kernwin.tagged_line_section_vec_t
   ida_kernwin.jobj_wrapper_t
   ida_kernwin.UI_Hooks
   ida_kernwin.disasm_line_t
   ida_kernwin.line_rendering_output_entries_refs_t
   ida_kernwin.section_lines_refs_t
   ida_kernwin.sections_lines_refs_t
   ida_kernwin.text_t
   ida_kernwin.sync_source_vec_t
   ida_kernwin.place_t
   ida_kernwin.simpleline_t
   ida_kernwin.simpleline_place_t
   ida_kernwin.idaplace_t
   ida_kernwin.tiplace_t
   ida_kernwin.sync_source_t
   ida_kernwin.synced_group_t
   ida_kernwin.twinpos_t
   ida_kernwin.twinline_t
   ida_kernwin.linearray_t
   ida_kernwin.lines_rendering_input_t
   ida_kernwin.line_rendering_output_entry_t
   ida_kernwin.lines_rendering_output_t
   ida_kernwin.line_section_t
   ida_kernwin.tagged_line_section_t
   ida_kernwin.tagged_line_sections_t
   ida_kernwin.listing_location_t
   ida_kernwin.chooser_item_attrs_t
   ida_kernwin.chooser_row_info_t
   ida_kernwin.chooser_stdact_desc_t
   ida_kernwin.chooser_base_t
   ida_kernwin.renderer_pos_info_t
   ida_kernwin.view_mouse_event_location_t
   ida_kernwin.view_mouse_event_t
   ida_kernwin.input_event_t
   ida_kernwin.input_event_shortcut_data_t
   ida_kernwin.input_event_keyboard_data_t
   ida_kernwin.input_event_mouse_data_t
   ida_kernwin.ui_requests_t
   ida_kernwin.action_ctx_base_cur_sel_t
   ida_kernwin.action_ctx_base_t
   ida_kernwin.action_desc_t
   ida_kernwin.addon_info_t
   ida_kernwin.strarray_t
   ida_kernwin.disasm_text_t
   ida_kernwin.action_handler_t
   ida_kernwin.quick_widget_commands_t
   ida_kernwin.disabled_script_timeout_t
   ida_kernwin.Choose
   ida_kernwin.textctrl_info_t
   ida_kernwin.Form
   ida_kernwin.cli_t
   ida_kernwin.View_Hooks
   ida_kernwin.CustomIDAMemo
   ida_kernwin.IDAViewWrapper
   ida_kernwin.simplecustviewer_t
   ida_kernwin.PluginForm


Functions
---------

.. autoapisummary::

   ida_kernwin.refresh_choosers
   ida_kernwin.textctrl_info_t_create
   ida_kernwin.textctrl_info_t_destroy
   ida_kernwin.textctrl_info_t_get_clink
   ida_kernwin.textctrl_info_t_get_clink_ptr
   ida_kernwin.register_timer
   ida_kernwin.unregister_timer
   ida_kernwin.choose_idasgn
   ida_kernwin.get_highlight
   ida_kernwin.py_load_custom_icon_fn
   ida_kernwin.py_load_custom_icon_data
   ida_kernwin.msg
   ida_kernwin.warning
   ida_kernwin.error
   ida_kernwin.ask_text
   ida_kernwin.ask_str
   ida_kernwin.process_ui_action
   ida_kernwin.del_hotkey
   ida_kernwin.add_hotkey
   ida_kernwin.take_database_snapshot
   ida_kernwin.restore_database_snapshot
   ida_kernwin.execute_sync
   ida_kernwin.execute_ui_requests
   ida_kernwin.register_action
   ida_kernwin.get_registered_actions
   ida_kernwin.attach_dynamic_action_to_popup
   ida_kernwin.py_chooser_base_t_get_row
   ida_kernwin.gen_disasm_text
   ida_kernwin.set_nav_colorizer
   ida_kernwin.call_nav_colorizer
   ida_kernwin.msg_get_lines
   ida_kernwin.TWidget__from_ptrval__
   ida_kernwin.add_spaces
   ida_kernwin.show_wait_box
   ida_kernwin.hide_wait_box
   ida_kernwin.get_kernel_version
   ida_kernwin.is_ida_library
   ida_kernwin.l_compare2
   ida_kernwin.l_equals
   ida_kernwin.is_tif_cursor_header
   ida_kernwin.is_tif_cursor_footer
   ida_kernwin.is_tif_cursor_index
   ida_kernwin.internal_register_place_class
   ida_kernwin.get_place_class
   ida_kernwin.get_place_class_template
   ida_kernwin.is_place_class_ea_capable
   ida_kernwin.get_place_class_id
   ida_kernwin.request_refresh
   ida_kernwin.clear_refresh_request
   ida_kernwin.is_refresh_requested
   ida_kernwin.is_chooser_widget
   ida_kernwin.is_action_enabled
   ida_kernwin.cancel_exec_request
   ida_kernwin.cancel_thread_exec_requests
   ida_kernwin.set_execute_sync_availability
   ida_kernwin.get_synced_group
   ida_kernwin.banner
   ida_kernwin.is_msg_inited
   ida_kernwin.refresh_idaview
   ida_kernwin.refresh_idaview_anyway
   ida_kernwin.analyzer_options
   ida_kernwin.get_screen_ea
   ida_kernwin.get_opnum
   ida_kernwin.get_cursor
   ida_kernwin.get_output_cursor
   ida_kernwin.get_curline
   ida_kernwin.open_url
   ida_kernwin.get_hexdump_ea
   ida_kernwin.get_key_code
   ida_kernwin.lookup_key_code
   ida_kernwin.refresh_navband
   ida_kernwin.refresh_chooser
   ida_kernwin.close_chooser
   ida_kernwin.set_dock_pos
   ida_kernwin.get_icon_id_by_name
   ida_kernwin.free_custom_icon
   ida_kernwin.unregister_action
   ida_kernwin.create_toolbar
   ida_kernwin.delete_toolbar
   ida_kernwin.create_menu
   ida_kernwin.delete_menu
   ida_kernwin.attach_action_to_menu
   ida_kernwin.detach_action_from_menu
   ida_kernwin.attach_action_to_toolbar
   ida_kernwin.detach_action_from_toolbar
   ida_kernwin.register_and_attach_to_menu
   ida_kernwin.display_widget
   ida_kernwin.close_widget
   ida_kernwin.activate_widget
   ida_kernwin.find_widget
   ida_kernwin.get_current_widget
   ida_kernwin.get_widget_type
   ida_kernwin.get_widget_title
   ida_kernwin.custom_viewer_jump
   ida_kernwin.ea_viewer_history_push_and_jump
   ida_kernwin.get_ea_viewer_history_info
   ida_kernwin.refresh_custom_viewer
   ida_kernwin.repaint_custom_viewer
   ida_kernwin.jumpto
   ida_kernwin.get_custom_viewer_place
   ida_kernwin.get_custom_viewer_location
   ida_kernwin.is_idaq
   ida_kernwin.attach_action_to_popup
   ida_kernwin.detach_action_from_popup
   ida_kernwin.update_action_label
   ida_kernwin.update_action_shortcut
   ida_kernwin.update_action_tooltip
   ida_kernwin.update_action_icon
   ida_kernwin.update_action_state
   ida_kernwin.update_action_checkable
   ida_kernwin.update_action_checked
   ida_kernwin.update_action_visibility
   ida_kernwin.get_action_label
   ida_kernwin.get_action_shortcut
   ida_kernwin.get_action_tooltip
   ida_kernwin.get_action_icon
   ida_kernwin.get_action_state
   ida_kernwin.get_action_checkable
   ida_kernwin.get_action_checked
   ida_kernwin.get_action_visibility
   ida_kernwin.set_custom_viewer_qt_aware
   ida_kernwin.get_custom_viewer_curline
   ida_kernwin.get_custom_viewer_place_xcoord
   ida_kernwin.get_user_input_event
   ida_kernwin.get_output_curline
   ida_kernwin.get_output_selected_text
   ida_kernwin.get_current_viewer
   ida_kernwin.get_last_widget
   ida_kernwin.prompt_function_prototype
   ida_kernwin.parse_tagged_line_sections
   ida_kernwin.get_view_renderer_type
   ida_kernwin.set_view_renderer_type
   ida_kernwin.create_empty_widget
   ida_kernwin.msg_clear
   ida_kernwin.msg_save
   ida_kernwin.get_active_modal_widget
   ida_kernwin.get_navband_pixel
   ida_kernwin.get_navband_ea
   ida_kernwin.get_window_id
   ida_kernwin.is_idaview
   ida_kernwin.read_selection
   ida_kernwin.read_range_selection
   ida_kernwin.unmark_selection
   ida_kernwin.create_code_viewer
   ida_kernwin.set_code_viewer_handler
   ida_kernwin.set_code_viewer_user_data
   ida_kernwin.get_viewer_user_data
   ida_kernwin.get_viewer_place_type
   ida_kernwin.set_code_viewer_line_handlers
   ida_kernwin.set_code_viewer_lines_icon_margin
   ida_kernwin.set_code_viewer_lines_alignment
   ida_kernwin.set_code_viewer_lines_radix
   ida_kernwin.set_code_viewer_is_source
   ida_kernwin.get_tab_size
   ida_kernwin.clr_cancelled
   ida_kernwin.set_cancelled
   ida_kernwin.user_cancelled
   ida_kernwin.ui_load_new_file
   ida_kernwin.ui_run_debugger
   ida_kernwin.load_dbg_dbginfo
   ida_kernwin.add_idc_hotkey
   ida_kernwin.set_highlight
   ida_kernwin.open_exports_window
   ida_kernwin.open_imports_window
   ida_kernwin.open_names_window
   ida_kernwin.open_funcs_window
   ida_kernwin.open_strings_window
   ida_kernwin.open_segments_window
   ida_kernwin.open_segregs_window
   ida_kernwin.open_selectors_window
   ida_kernwin.open_signatures_window
   ida_kernwin.open_tils_window
   ida_kernwin.open_loctypes_window
   ida_kernwin.open_til_view_window
   ida_kernwin.open_calls_window
   ida_kernwin.open_problems_window
   ida_kernwin.open_bpts_window
   ida_kernwin.open_threads_window
   ida_kernwin.open_modules_window
   ida_kernwin.open_trace_window
   ida_kernwin.open_stack_window
   ida_kernwin.open_xrefs_window
   ida_kernwin.open_frame_window
   ida_kernwin.open_navband_window
   ida_kernwin.open_disasm_window
   ida_kernwin.open_hexdump_window
   ida_kernwin.open_notepad_window
   ida_kernwin.open_bookmarks_window
   ida_kernwin.sync_sources
   ida_kernwin.choose_til
   ida_kernwin.choose_entry
   ida_kernwin.choose_name
   ida_kernwin.choose_stkvar_xref
   ida_kernwin.choose_xref
   ida_kernwin.choose_enum
   ida_kernwin.choose_enum_by_value
   ida_kernwin.choose_func
   ida_kernwin.choose_segm
   ida_kernwin.choose_struct
   ida_kernwin.choose_srcp
   ida_kernwin.get_chooser_obj
   ida_kernwin.get_chooser_rows
   ida_kernwin.enable_chooser_item_attrs
   ida_kernwin.replace_wait_box
   ida_kernwin.beep
   ida_kernwin.display_copyright_warning
   ida_kernwin.ask_for_feedback
   ida_kernwin.info
   ida_kernwin.nomem
   ida_kernwin.ask_yn
   ida_kernwin.ask_buttons
   ida_kernwin.ask_ident2
   ida_kernwin.ask_file
   ida_kernwin.register_addon
   ida_kernwin.addon_count
   ida_kernwin.get_addon_info
   ida_kernwin.get_addon_info_idx
   ida_kernwin.qcleanline
   ida_kernwin.strarray
   ida_kernwin.ea2str
   ida_kernwin.str2ea
   ida_kernwin.str2ea_ex
   ida_kernwin.atoea
   ida_kernwin.get_user_strlist_options
   ida_kernwin.del_idc_hotkey
   ida_kernwin.load_custom_icon
   ida_kernwin.ask_long
   ida_kernwin.ask_addr
   ida_kernwin.ask_seg
   ida_kernwin.ask_ident
   ida_kernwin.choose_find
   ida_kernwin.choose_refresh
   ida_kernwin.choose_close
   ida_kernwin.choose_get_widget
   ida_kernwin.choose_choose
   ida_kernwin.choose_activate
   ida_kernwin.choose_create_embedded_chobj
   ida_kernwin.get_chooser_data
   ida_kernwin.textctrl_info_t_assign
   ida_kernwin.textctrl_info_t_set_text
   ida_kernwin.textctrl_info_t_get_text
   ida_kernwin.textctrl_info_t_set_flags
   ida_kernwin.textctrl_info_t_get_flags
   ida_kernwin.textctrl_info_t_set_tabsize
   ida_kernwin.textctrl_info_t_get_tabsize
   ida_kernwin.formchgcbfa_enable_field
   ida_kernwin.formchgcbfa_show_field
   ida_kernwin.formchgcbfa_move_field
   ida_kernwin.formchgcbfa_get_focused_field
   ida_kernwin.formchgcbfa_set_focused_field
   ida_kernwin.formchgcbfa_refresh_field
   ida_kernwin.formchgcbfa_close
   ida_kernwin.formchgcbfa_get_field_value
   ida_kernwin.formchgcbfa_set_field_value
   ida_kernwin.py_get_ask_form
   ida_kernwin.py_get_open_form
   ida_kernwin.py_register_compiled_form
   ida_kernwin.py_unregister_compiled_form
   ida_kernwin.ask_form
   ida_kernwin.open_form
   ida_kernwin.install_command_interpreter
   ida_kernwin.remove_command_interpreter
   ida_kernwin.pyidag_bind
   ida_kernwin.pyidag_unbind
   ida_kernwin.pyscv_init
   ida_kernwin.pyscv_refresh
   ida_kernwin.pyscv_get_current_line
   ida_kernwin.pyscv_is_focused
   ida_kernwin.pyscv_count
   ida_kernwin.pyscv_show
   ida_kernwin.pyscv_close
   ida_kernwin.pyscv_jumpto
   ida_kernwin.pyscv_get_line
   ida_kernwin.pyscv_get_pos
   ida_kernwin.pyscv_clear_lines
   ida_kernwin.pyscv_add_line
   ida_kernwin.pyscv_insert_line
   ida_kernwin.pyscv_patch_line
   ida_kernwin.pyscv_del_line
   ida_kernwin.pyscv_get_selection
   ida_kernwin.pyscv_get_current_word
   ida_kernwin.pyscv_edit_line
   ida_kernwin.pyscv_get_widget
   ida_kernwin.plgform_new
   ida_kernwin.plgform_show
   ida_kernwin.plgform_close
   ida_kernwin.plgform_get_widget


Module Contents
---------------

.. py:class:: chooser_row_info_vec_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: push_back(*args) -> chooser_row_info_t &


   .. py:method:: pop_back() -> None


   .. py:method:: size() -> size_t


   .. py:method:: empty() -> bool


   .. py:method:: at(_idx: size_t) -> chooser_row_info_t const &


   .. py:method:: qclear() -> None


   .. py:method:: clear() -> None


   .. py:method:: resize(*args) -> None


   .. py:method:: grow(*args) -> None


   .. py:method:: capacity() -> size_t


   .. py:method:: reserve(cnt: size_t) -> None


   .. py:method:: truncate() -> None


   .. py:method:: swap(r: chooser_row_info_vec_t) -> None


   .. py:method:: extract() -> chooser_row_info_t *


   .. py:method:: inject(s: chooser_row_info_t, len: size_t) -> None


   .. py:method:: begin(*args) -> qvector< chooser_row_info_t >::const_iterator


   .. py:method:: end(*args) -> qvector< chooser_row_info_t >::const_iterator


   .. py:method:: insert(it: chooser_row_info_t, x: chooser_row_info_t) -> qvector< chooser_row_info_t >::iterator


   .. py:method:: erase(*args) -> qvector< chooser_row_info_t >::iterator


   .. py:method:: find(*args) -> qvector< chooser_row_info_t >::const_iterator


   .. py:method:: has(x: chooser_row_info_t) -> bool


   .. py:method:: add_unique(x: chooser_row_info_t) -> bool


   .. py:method:: append(x: chooser_row_info_t) -> None


   .. py:method:: extend(x: chooser_row_info_vec_t) -> None


   .. py:attribute:: front


   .. py:attribute:: back


.. py:class:: tagged_line_section_vec_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: push_back(*args) -> tagged_line_section_t &


   .. py:method:: pop_back() -> None


   .. py:method:: size() -> size_t


   .. py:method:: empty() -> bool


   .. py:method:: at(_idx: size_t) -> tagged_line_section_t const &


   .. py:method:: qclear() -> None


   .. py:method:: clear() -> None


   .. py:method:: resize(*args) -> None


   .. py:method:: grow(*args) -> None


   .. py:method:: capacity() -> size_t


   .. py:method:: reserve(cnt: size_t) -> None


   .. py:method:: truncate() -> None


   .. py:method:: swap(r: tagged_line_section_vec_t) -> None


   .. py:method:: extract() -> tagged_line_section_t *


   .. py:method:: inject(s: tagged_line_section_t, len: size_t) -> None


   .. py:method:: begin(*args) -> qvector< tagged_line_section_t >::const_iterator


   .. py:method:: end(*args) -> qvector< tagged_line_section_t >::const_iterator


   .. py:method:: insert(it: tagged_line_section_t, x: tagged_line_section_t) -> qvector< tagged_line_section_t >::iterator


   .. py:method:: erase(*args) -> qvector< tagged_line_section_t >::iterator


   .. py:method:: find(*args) -> qvector< tagged_line_section_t >::const_iterator


   .. py:method:: has(x: tagged_line_section_t) -> bool


   .. py:method:: add_unique(x: tagged_line_section_t) -> bool


   .. py:method:: append(x: tagged_line_section_t) -> None


   .. py:method:: extend(x: tagged_line_section_vec_t) -> None


   .. py:attribute:: front


   .. py:attribute:: back


.. py:function:: refresh_choosers() -> None

.. py:function:: textctrl_info_t_create() -> PyObject *

.. py:function:: textctrl_info_t_destroy(py_obj: PyObject *) -> bool

.. py:function:: textctrl_info_t_get_clink(_self: PyObject *) -> textctrl_info_t *

.. py:function:: textctrl_info_t_get_clink_ptr(_self: PyObject *) -> PyObject *

.. py:function:: register_timer(interval, callback)

   Register a timer

   :param interval: Interval in milliseconds
   :param callback: A Python callable that takes no parameters and returns an integer.
                    The callback may return:
                    -1   : to unregister the timer
                    >= 0 : the new or same timer interval
   :returns: None or a timer object


.. py:function:: unregister_timer(timer_obj)

   Unregister a timer

   NOTE: After the timer has been deleted, the timer_obj will become invalid.

   :param timer_obj: a timer object previously returned by a register_timer()
   :returns: Boolean


.. py:function:: choose_idasgn()

   Opens the signature chooser

   :returns: None or the selected signature name


.. py:function:: get_highlight(v, flags=0)

   Returns the currently highlighted identifier and flags

   :param v: The UI widget to operate on
   :param flags: Optionally specify a slot (see kernwin.hpp), current otherwise
   :returns: a tuple (text, flags), or None if nothing
            is highlighted or in case of error.


.. py:function:: py_load_custom_icon_fn(filename: str) -> int

.. py:function:: py_load_custom_icon_data(data: PyObject *, format: str) -> int

.. py:function:: msg(message)

   Display a message in the message window

   :param message: message to print


.. py:function:: warning(message)

   Display a message in a warning message box

   :param message: message to print


.. py:function:: error(message)

   Display a fatal message in a message box and quit IDA

   :param format: message to print


.. py:function:: ask_text(max_size: int, defval: str, prompt: str) -> Union[str, None]

   Asks for a long text

   :param max_size: Maximum text length, 0 for unlimited
   :param defval: The default value
   :param prompt: The prompt value
   :returns: None or the entered string


.. py:function:: ask_str(defval, hist, prompt)

   Asks for a long text

   :param defval: The default value
   :param hist:   history id
   :param prompt: The prompt value
   :returns: None or the entered string


.. py:function:: process_ui_action(name: str, flags: int = 0)

   Invokes an IDA UI action by name

   :param name:  action name
   :param flags: reserved
   :returns: Boolean


.. py:function:: del_hotkey(ctx)

   Deletes a previously registered function hotkey

   :param ctx: Hotkey context previously returned by add_hotkey()

   :returns: Boolean.


.. py:function:: add_hotkey(hotkey, callable)

   Associates a function call with a hotkey.
   Callable 'callable' will be called each time the hotkey is pressed

   :param hotkey: The hotkey
   :param callable: Callable

   :returns: Context object on success or None on failure.


.. py:function:: take_database_snapshot(snapshot) -> Tuple[bool, str]

   Take a database snapshot.

   :param snapshot: the snapshot object
   :returns: a tuple (success, error-message)


.. py:function:: restore_database_snapshot(snapshot, callback, userdata) -> bool

   Restore a database snapshot.

   Note: This call is asynchronous. When it is completed, the callback will be triggered.

   :param snapshot: the snapshot object
   :param callback: a callback function
   :param userdata: payload to pass to the callback
   :returns: success


.. py:function:: execute_sync(callable, reqf)

   Executes a function in the context of the main thread.
   If the current thread not the main thread, then the call is queued and
   executed afterwards.

   :param callable: A python callable object, must return an integer value
   :param reqf: one of MFF_ flags
   :returns: -1 or the return value of the callable


.. py:function:: execute_ui_requests(callable_list)

   Inserts a list of callables into the UI message processing queue.
   When the UI is ready it will call one callable.
   A callable can request to be called more than once if it returns True.

   NOTE: A callable should return True if it wants to be called more than once.

   :param callable_list: A list of python callable objects.
   :returns: Boolean. False if the list contains a non callable item


.. py:class:: jobj_wrapper_t(*args, **kwargs)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: get_dict() -> dict

      Retrieve the contents of this object, as a dict

      :returns: a dict containing all kvp's in this object



.. py:class:: UI_Hooks(_flags: int = 0, _hkcb_flags: int = 1)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: hook() -> bool


   .. py:method:: unhook() -> bool


   .. py:method:: range() -> None

      The disassembly range has been changed ( idainfo::min_ea ... idainfo::max_ea). UI should redraw the scrollbars. See also: ui_lock_range_refresh 
                
      :returns: void



   .. py:method:: idcstart() -> None

      Start of IDC engine work. 
                
      :returns: void



   .. py:method:: idcstop() -> None

      Stop of IDC engine work. 
                
      :returns: void



   .. py:method:: suspend() -> None

      Suspend graphical interface. Only the text version. Interface should respond to it. 
                
      :returns: void



   .. py:method:: resume() -> None

      Resume the suspended graphical interface. Only the text version. Interface should respond to it 
                
      :returns: void



   .. py:method:: saving() -> None

      The kernel is flushing its buffers to the disk. The user interface should save its state. Parameters: none Returns: none 
                



   .. py:method:: saved(path: str) -> None

      The kernel has saved the database. This callback just informs the interface. Note that at the time this notification is sent, the internal paths are not updated yet, and calling get_path(PATH_TYPE_IDB) will return the previous path. 
                
      :param path: (const char *) the database path
      :returns: void



   .. py:method:: database_closed() -> None

      The database has been closed. See also processor_t::closebase, it occurs earlier. See also ui_initing_database. This is not the same as IDA exiting. If you need to perform cleanup at the exiting time, use qatexit(). 
                
      :returns: void



   .. py:method:: debugger_menu_change(enable: bool) -> None

      debugger menu modification detected 
                
      :param enable: (bool) true: debugger menu has been added, or a different debugger has been selected false: debugger menu will be removed (user switched to "No debugger")
      :returns: void



   .. py:method:: widget_visible(widget: TWidget *) -> None

      TWidget is displayed on the screen. Use this event to populate the window with controls 
                
      :param widget: (TWidget *)
      :returns: void



   .. py:method:: widget_closing(widget: TWidget *) -> None

      TWidget is about to close. This event precedes ui_widget_invisible. Use this to perform some possible actions relevant to the lifecycle of this widget 
                
      :param widget: (TWidget *)
      :returns: void



   .. py:method:: widget_invisible(widget: TWidget *) -> None

      TWidget is being closed. Use this event to destroy the window controls 
                
      :param widget: (TWidget *)
      :returns: void



   .. py:method:: get_ea_hint(ea: ida_idaapi.ea_t) -> PyObject *

      ui wants to display a simple hint for an address. Use this event to generate a custom hint See also more generic ui_get_item_hint 
                
      :param ea: (::ea_t)
      :returns: true if generated a hint



   .. py:method:: get_item_hint(ea: ida_idaapi.ea_t, max_lines: int) -> PyObject *

      ui wants to display multiline hint for an item. See also more generic ui_get_custom_viewer_hint 
                
      :param ea: (ea_t) or item id like a structure or enum member
      :param max_lines: (int) maximal number of lines
      :returns: true if generated a hint



   .. py:method:: get_custom_viewer_hint(viewer: TWidget *, place: place_t) -> PyObject *

      ui wants to display a hint for a viewer (idaview or custom). Every subscriber is supposed to append the hint lines to HINT and increment IMPORTANT_LINES accordingly. Completely overwriting the existing lines in HINT is possible but not recommended. If the REG_HINTS_MARKER sequence is found in the returned hints string, it will be replaced with the contents of the "regular" hints. If the SRCDBG_HINTS_MARKER sequence is found in the returned hints string, it will be replaced with the contents of the source-level debugger-generated hints. The following keywords might appear at the beginning of the returned hints: HIGHLIGHT text
       where text will be highlighted CAPTION caption
       caption for the hint widget 
                
      :param viewer: (TWidget*) viewer
      :param place: (place_t *) current position in the viewer
      :returns: 0: continue collecting hints with other subscribers
      :returns: 1: stop collecting hints



   .. py:method:: database_inited(is_new_database: int, idc_script: str) -> None

      database initialization has completed. the kernel is about to run idc scripts 
                
      :param is_new_database: (int)
      :param idc_script: (const char *) - may be nullptr
      :returns: void See also ui_initing_database. This event is called for both new and old databases.



   .. py:method:: ready_to_run() -> None

      all UI elements have been initialized. Automatic plugins may hook to this event to perform their tasks. 
                
      :returns: void



   .. py:method:: preprocess_action(name: str) -> int

      ida ui is about to handle a user action. 
                
      :param name: (const char *) ui action name. these names can be looked up in ida[tg]ui.cfg
      :returns: 0: ok
      :returns: nonzero: a plugin has handled the command



   .. py:method:: postprocess_action() -> None

      an ida ui action has been handled



   .. py:method:: get_chooser_item_attrs(chooser: chooser_base_t, n: size_t, attrs: chooser_item_attrs_t) -> None

      get item-specific attributes for a chooser. This callback is generated only after enable_chooser_attrs() 
                
      :param chooser: (const chooser_base_t *)
      :param n: (::size_t)
      :param attrs: (chooser_item_attrs_t *)
      :returns: void



   .. py:method:: updating_actions(ctx: action_ctx_base_t) -> None

      IDA is about to update all actions. If your plugin needs to perform expensive operations more than once (e.g., once per action it registers), you should do them only once, right away. 
                
      :param ctx: (action_update_ctx_t *)
      :returns: void



   .. py:method:: updated_actions() -> None

      IDA is done updating actions. 
                
      :returns: void



   .. py:method:: populating_widget_popup(widget: TWidget *, popup_handle: TPopupMenu *, ctx: action_ctx_base_t = None) -> None

      IDA is populating the context menu for a widget. This is your chance to attach_action_to_popup().
      Have a look at ui_finish_populating_widget_popup, if you want to augment the context menu with your own actions after the menu has had a chance to be properly populated by the owning component or plugin (which typically does it on ui_populating_widget_popup.)

      :param widget: (TWidget *)
      :param popup_handle: (TPopupMenu *)
      :param ctx: (const action_activation_ctx_t *)
      :returns: void



   .. py:method:: finish_populating_widget_popup(widget: TWidget *, popup_handle: TPopupMenu *, ctx: action_ctx_base_t = None) -> None

      IDA is about to be done populating the context menu for a widget. This is your chance to attach_action_to_popup().

      :param widget: (TWidget *)
      :param popup_handle: (TPopupMenu *)
      :param ctx: (const action_activation_ctx_t *)
      :returns: void



   .. py:method:: plugin_loaded(plugin_info: plugin_info_t const *) -> None

      The plugin was loaded in memory. 
                
      :param plugin_info: (const plugin_info_t *)



   .. py:method:: plugin_unloading(plugin_info: plugin_info_t const *) -> None

      The plugin is about to be unloaded 
                
      :param plugin_info: (const plugin_info_t *)



   .. py:method:: current_widget_changed(widget: TWidget *, prev_widget: TWidget *) -> None

      The currently-active TWidget changed. 
                
      :param widget: (TWidget *)
      :param prev_widget: (TWidget *)
      :returns: void



   .. py:method:: screen_ea_changed(ea: ida_idaapi.ea_t, prev_ea: ida_idaapi.ea_t) -> None

      The "current address" changed 
                
      :param ea: (ea_t)
      :param prev_ea: (ea_t)
      :returns: void



   .. py:method:: create_desktop_widget(title: str, cfg: jobj_wrapper_t) -> PyObject *

      create a widget, to be placed in the widget tree (at desktop-creation time.) 
                
      :param title: (const char *)
      :param cfg: (const jobj_t *)
      :returns: TWidget * the created widget, or null



   .. py:method:: get_lines_rendering_info(out: lines_rendering_output_t, widget: TWidget const *, info: lines_rendering_input_t) -> None

      get lines rendering information 
                
      :param out: (lines_rendering_output_t *)
      :param widget: (const TWidget *)
      :param info: (const lines_rendering_input_t *)
      :returns: void



   .. py:method:: get_widget_config(widget: TWidget const *, cfg: jobj_t *) -> PyObject *

      retrieve the widget configuration (it will be passed back at ui_create_desktop_widget-, and ui_set_widget_config-time) 
                
      :param widget: (const TWidget *)
      :param cfg: (jobj_t *)
      :returns: void



   .. py:method:: set_widget_config(widget: TWidget const *, cfg: jobj_wrapper_t) -> None

      set the widget configuration 
                
      :param widget: (const TWidget *)
      :param cfg: (const jobj_t *)
      :returns: void



   .. py:method:: initing_database() -> None

      database initialization has started. 
                
      :returns: void See also ui_database_inited. This event is called for both new and old databases.



   .. py:method:: destroying_procmod(procmod: procmod_t) -> None

      The processor module is about to be destroyed 
                
      :param procmod: (const procmod_t *)



   .. py:method:: destroying_plugmod(plugmod: plugmod_t, entry: plugin_t const *) -> None

      The plugin object is about to be destroyed 
                
      :param plugmod: (const plugmod_t *)
      :param entry: (const plugin_t *)



   .. py:method:: desktop_applied(name: str, from_idb: bool, type: int) -> None

      a desktop has been applied 
                
      :param name: (const char *) the desktop name
      :param from_idb: (bool) the desktop was stored in the IDB (false if it comes from the registry)
      :param type: (int) the desktop type (1-disassembly, 2-debugger, 3-merge)



.. py:function:: register_action(desc: action_desc_t) -> bool

   Create a new action (ui_register_action). After an action has been created, it is possible to attach it to menu items (attach_action_to_menu()), or to popup menus (attach_action_to_popup()).
   Because the actions will need to call the handler's activate() and update() methods at any time, you shouldn't build your action handler on the stack.
   Please see the SDK's "ht_view" plugin for an example how to register actions. 
           
   :param desc: action to register
   :returns: success


.. py:function:: get_registered_actions() -> List[str]

   Get a list with the names of all currently-registered actions.

   :returns: the list of action names


.. py:function:: attach_dynamic_action_to_popup(unused, popup_handle, desc, popuppath=None, flags=0)

   Create & insert an action into the widget's popup menu
   (::ui_attach_dynamic_action_to_popup).
   Note: The action description in the 'desc' parameter is modified by
         this call so you should prepare a new description for each call.
   For example:
       desc = ida_kernwin.action_desc_t(None, 'Dynamic popup action', Handler())
       ida_kernwin.attach_dynamic_action_to_popup(form, popup, desc)

   :param unused:       deprecated; should be None
   :param popup_handle: target popup
   :param desc:         action description of type action_desc_t
   :param popuppath:    can be None
   :param flags:        a combination of SETMENU_ constants
   :returns: success


.. py:class:: disasm_line_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: at
      :type:  place_t *


   .. py:attribute:: line
      :type:  str


   .. py:attribute:: prefix_color
      :type:  color_t


   .. py:attribute:: bg_color
      :type:  bgcolor_t


   .. py:attribute:: is_default
      :type:  bool


.. py:function:: py_chooser_base_t_get_row(chobj: chooser_base_t, n: size_t) -> PyObject *

.. py:function:: gen_disasm_text(text: disasm_text_t, ea1: ida_idaapi.ea_t, ea2: ida_idaapi.ea_t, truncate_lines: bool) -> None

   Generate disassembly text for a range. 
           
   :param text: result
   :param ea1: start address
   :param ea2: end address
   :param truncate_lines: (on idainfo::margin)


.. py:function:: set_nav_colorizer(callback)

   Set a new colorizer for the navigation band.

   The 'callback' is a function of 2 arguments:
      - ea (the EA to colorize for)
      - nbytes (the number of bytes at that EA)
   and must return a 'long' value.

   The previous colorizer is returned, allowing
   the new 'callback' to use 'call_nav_colorizer'
   with it.

   Note that the previous colorizer is returned
   only the first time set_nav_colorizer() is called:
   due to the way the colorizers API is defined in C,
   it is impossible to chain more than 2 colorizers
   in IDAPython: the original, IDA-provided colorizer,
   and a user-provided one.

   Example: colorizer inverting the color provided by the IDA colorizer:
       def my_colorizer(ea, nbytes):
           global ida_colorizer
           orig = ida_kernwin.call_nav_colorizer(ida_colorizer, ea, nbytes)
           return long(~orig)

       ida_colorizer = ida_kernwin.set_nav_colorizer(my_colorizer)

   :param callback: the new colorizer


.. py:function:: call_nav_colorizer(colorizer, ea: ida_idaapi.ea_t, nbytes: int)

   To be used with the IDA-provided colorizer, that is
   returned as result of the first call to set_nav_colorizer().

   :param colorizer: the Python colorizer to call
   :param ea: the address to colorize
   :param nbytes: the size of the range to colorize


.. py:function:: msg_get_lines(count: int = -1) -> PyObject *

   Retrieve the last 'count' lines from the output window, in reverse order (from most recent, to least recent) 
           
   :param count: The number of lines to retrieve. -1 means: all


.. py:function:: TWidget__from_ptrval__(ptrval: size_t) -> TWidget *

.. py:data:: MAX_SPACES_ADDED

.. py:function:: add_spaces(s: str, len: size_t) -> str

   Add space characters to the colored string so that its length will be at least 'len' characters. Don't trim the string if it is longer than 'len'. 
           
   :param len: the desired length of the string
   :returns: pointer to the end of input string


.. py:function:: show_wait_box(message: str) -> None

   Display a dialog box with "Please wait...". The behavior of the dialog box can be configured with well-known 
   tokens, that should be placed at the start of the format string: 
    "NODELAY\n": the dialog will show immediately, instead of 
    appearing after usual grace threshold 
    "HIDECANCEL\n": the cancel button won't be added to the dialog box 
    and user_cancelled() will always return false (but 
    can be called to refresh UI) 
    Using "HIDECANCEL" implies "NODELAY" 
   Plugins must call hide_wait_box() to close the dialog box, otherwise 
   the user interface will remain disabled. 
    Note that, if the wait dialog is already visible, show_wait_box() will 
    1) push the currently-displayed text on a stack 
    2) display the new text 
   Then, when hide_wait_box() is called, if that stack isn't empty its top 
   label will be popped and restored in the wait dialog. 
   This implies that a plugin should call hide_wait_box() exactly as many 
   times as it called show_wait_box(), or the wait dialog might remain 
   visible and block the UI. 
   Also, in case the plugin knows the wait dialog is currently displayed, 
   alternatively it can call replace_wait_box(), to replace the text of the
   dialog without pushing the currently-displayed text on the stack. 
           


.. py:function:: hide_wait_box() -> None

   Hide the "Please wait dialog box".


.. py:class:: line_rendering_output_entries_refs_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: push_back(*args) -> line_rendering_output_entry_t *&


   .. py:method:: pop_back() -> None


   .. py:method:: size() -> size_t


   .. py:method:: empty() -> bool


   .. py:method:: at(_idx: size_t) -> line_rendering_output_entry_t *const &


   .. py:method:: qclear() -> None


   .. py:method:: clear() -> None


   .. py:method:: resize(*args) -> None


   .. py:method:: capacity() -> size_t


   .. py:method:: reserve(cnt: size_t) -> None


   .. py:method:: truncate() -> None


   .. py:method:: swap(r: line_rendering_output_entries_refs_t) -> None


   .. py:method:: extract() -> line_rendering_output_entry_t **


   .. py:method:: inject(s: line_rendering_output_entry_t **, len: size_t) -> None


   .. py:method:: begin(*args) -> qvector< line_rendering_output_entry_t * >::const_iterator


   .. py:method:: end(*args) -> qvector< line_rendering_output_entry_t * >::const_iterator


   .. py:method:: insert(it: qvector< line_rendering_output_entry_t * >::iterator, x: line_rendering_output_entry_t) -> qvector< line_rendering_output_entry_t * >::iterator


   .. py:method:: erase(*args) -> qvector< line_rendering_output_entry_t * >::iterator


   .. py:method:: find(*args) -> qvector< line_rendering_output_entry_t * >::const_iterator


   .. py:method:: has(x: line_rendering_output_entry_t) -> bool


   .. py:method:: add_unique(x: line_rendering_output_entry_t) -> bool


   .. py:method:: append(x: line_rendering_output_entry_t) -> None


   .. py:method:: extend(x: line_rendering_output_entries_refs_t) -> None


   .. py:attribute:: front


   .. py:attribute:: back


.. py:class:: section_lines_refs_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: push_back(*args) -> twinline_t const *&


   .. py:method:: pop_back() -> None


   .. py:method:: size() -> size_t


   .. py:method:: empty() -> bool


   .. py:method:: at(_idx: size_t) -> twinline_t const *const &


   .. py:method:: qclear() -> None


   .. py:method:: clear() -> None


   .. py:method:: resize(*args) -> None


   .. py:method:: capacity() -> size_t


   .. py:method:: reserve(cnt: size_t) -> None


   .. py:method:: truncate() -> None


   .. py:method:: swap(r: section_lines_refs_t) -> None


   .. py:method:: extract() -> twinline_t const **


   .. py:method:: inject(s: twinline_t const **, len: size_t) -> None


   .. py:method:: begin(*args) -> qvector< twinline_t const * >::const_iterator


   .. py:method:: end(*args) -> qvector< twinline_t const * >::const_iterator


   .. py:method:: insert(it: qvector< twinline_t const * >::iterator, x: twinline_t) -> qvector< twinline_t const * >::iterator


   .. py:method:: erase(*args) -> qvector< twinline_t const * >::iterator


   .. py:method:: find(*args) -> qvector< twinline_t const * >::const_iterator


   .. py:method:: has(x: twinline_t) -> bool


   .. py:method:: add_unique(x: twinline_t) -> bool


   .. py:method:: append(x: twinline_t) -> None


   .. py:method:: extend(x: section_lines_refs_t) -> None


   .. py:attribute:: front


   .. py:attribute:: back


.. py:class:: sections_lines_refs_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: push_back(*args) -> section_lines_refs_t &


   .. py:method:: pop_back() -> None


   .. py:method:: size() -> size_t


   .. py:method:: empty() -> bool


   .. py:method:: at(_idx: size_t) -> section_lines_refs_t const &


   .. py:method:: qclear() -> None


   .. py:method:: clear() -> None


   .. py:method:: resize(*args) -> None


   .. py:method:: grow(*args) -> None


   .. py:method:: capacity() -> size_t


   .. py:method:: reserve(cnt: size_t) -> None


   .. py:method:: truncate() -> None


   .. py:method:: swap(r: sections_lines_refs_t) -> None


   .. py:method:: extract() -> section_lines_refs_t *


   .. py:method:: inject(s: section_lines_refs_t, len: size_t) -> None


   .. py:method:: begin(*args) -> qvector< section_lines_refs_t >::const_iterator


   .. py:method:: end(*args) -> qvector< section_lines_refs_t >::const_iterator


   .. py:method:: insert(it: qvector< section_lines_refs_t >::iterator, x: section_lines_refs_t) -> qvector< section_lines_refs_t >::iterator


   .. py:method:: erase(*args) -> qvector< section_lines_refs_t >::iterator


   .. py:method:: find(*args) -> qvector< section_lines_refs_t >::const_iterator


   .. py:method:: has(x: section_lines_refs_t) -> bool


   .. py:method:: add_unique(x: section_lines_refs_t) -> bool


   .. py:method:: append(x: section_lines_refs_t) -> None


   .. py:method:: extend(x: sections_lines_refs_t) -> None


   .. py:attribute:: front


   .. py:attribute:: back


.. py:class:: text_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: push_back(*args) -> twinline_t &


   .. py:method:: pop_back() -> None


   .. py:method:: size() -> size_t


   .. py:method:: empty() -> bool


   .. py:method:: at(_idx: size_t) -> twinline_t const &


   .. py:method:: qclear() -> None


   .. py:method:: clear() -> None


   .. py:method:: resize(*args) -> None


   .. py:method:: grow(*args) -> None


   .. py:method:: capacity() -> size_t


   .. py:method:: reserve(cnt: size_t) -> None


   .. py:method:: truncate() -> None


   .. py:method:: swap(r: text_t) -> None


   .. py:method:: extract() -> twinline_t *


   .. py:method:: inject(s: twinline_t, len: size_t) -> None


   .. py:method:: begin(*args) -> qvector< twinline_t >::const_iterator


   .. py:method:: end(*args) -> qvector< twinline_t >::const_iterator


   .. py:method:: insert(it: twinline_t, x: twinline_t) -> qvector< twinline_t >::iterator


   .. py:method:: erase(*args) -> qvector< twinline_t >::iterator


   .. py:method:: append(x: twinline_t) -> None


   .. py:method:: extend(x: text_t) -> None


   .. py:attribute:: front


   .. py:attribute:: back


.. py:class:: sync_source_vec_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: push_back(x: sync_source_t) -> None


   .. py:method:: pop_back() -> None


   .. py:method:: size() -> size_t


   .. py:method:: empty() -> bool


   .. py:method:: at(_idx: size_t) -> sync_source_t const &


   .. py:method:: qclear() -> None


   .. py:method:: clear() -> None


   .. py:method:: capacity() -> size_t


   .. py:method:: reserve(cnt: size_t) -> None


   .. py:method:: truncate() -> None


   .. py:method:: swap(r: sync_source_vec_t) -> None


   .. py:method:: extract() -> sync_source_t *


   .. py:method:: inject(s: sync_source_t, len: size_t) -> None


   .. py:method:: begin(*args) -> qvector< sync_source_t >::const_iterator


   .. py:method:: end(*args) -> qvector< sync_source_t >::const_iterator


   .. py:method:: insert(it: sync_source_t, x: sync_source_t) -> qvector< sync_source_t >::iterator


   .. py:method:: erase(*args) -> qvector< sync_source_t >::iterator


   .. py:method:: find(*args) -> qvector< sync_source_t >::const_iterator


   .. py:method:: has(x: sync_source_t) -> bool


   .. py:method:: add_unique(x: sync_source_t) -> bool


   .. py:method:: append(x: sync_source_t) -> None


   .. py:method:: extend(x: sync_source_vec_t) -> None


   .. py:attribute:: front


   .. py:attribute:: back


.. py:data:: mbox_internal

   internal error


.. py:data:: mbox_info

.. py:data:: mbox_warning

.. py:data:: mbox_error

.. py:data:: mbox_nomem

.. py:data:: mbox_feedback

.. py:data:: mbox_readerror

.. py:data:: mbox_writeerror

.. py:data:: mbox_filestruct

.. py:data:: mbox_wait

.. py:data:: mbox_hide

.. py:data:: mbox_replace

.. py:data:: chtype_generic

   the generic choose() function


.. py:data:: chtype_idasgn

   see choose_idasgn()


.. py:data:: chtype_entry

   see choose_entry()


.. py:data:: chtype_name

   see choose_name()


.. py:data:: chtype_stkvar_xref

   see choose_stkvar_xref()


.. py:data:: chtype_xref

   see choose_xref()


.. py:data:: chtype_func

   see choose_func()


.. py:data:: chtype_segm

   see choose_segm()


.. py:data:: chtype_strpath

   see choose_struc_path()


.. py:data:: chtype_idatil

   see choose_til()


.. py:data:: chtype_srcp

   see choose_srcp()


.. py:data:: chtype_struct

   see choose_struct()


.. py:data:: chtype_enum

   see choose_enum()


.. py:data:: chtype_enum_by_value_and_size

   see choose_enum_by_value()


.. py:data:: beep_default

.. py:data:: TCCRT_INVALID

   invalid


.. py:data:: TCCRT_FLAT

   flat view


.. py:data:: TCCRT_GRAPH

   graph view


.. py:data:: TCCRT_PROXIMITY

   proximity view


.. py:data:: TCCPT_INVALID

   invalid


.. py:data:: TCCPT_PLACE

   place_t


.. py:data:: TCCPT_SIMPLELINE_PLACE

   simpleline_place_t


.. py:data:: TCCPT_IDAPLACE

   idaplace_t


.. py:data:: TCCPT_TIPLACE

   tiplace_t


.. py:data:: VME_UNKNOWN

   unknown mouse button


.. py:data:: VME_LEFT_BUTTON

   left mouse button


.. py:data:: VME_RIGHT_BUTTON

   right mouse button


.. py:data:: VME_MID_BUTTON

   middle mouse button


.. py:data:: SETMENU_POSMASK

.. py:data:: SETMENU_INS

   add menu item before the specified path (default)


.. py:data:: SETMENU_APP

   add menu item after the specified path


.. py:data:: SETMENU_FIRST

   add item to the beginning of menu


.. py:data:: SETMENU_ENSURE_SEP

   make sure there is a separator before the action


.. py:data:: CREATETB_ADV

   toolbar is for 'advanced mode' only


.. py:data:: HIF_IDENTIFIER

   text is an identifier (i.e., when searching for the current highlight, SEARCH_IDENT will be used)


.. py:data:: HIF_REGISTER

   text represents a register (aliases/subregisters will be highlit as well)


.. py:data:: HIF_LOCKED

   locked; clicking/moving the cursor around doesn't change the highlight


.. py:data:: HIF_NOCASE

   case insensitive


.. py:data:: HIF_USE_SLOT

   use the given number, or just use the "floating" highlight


.. py:data:: HIF_SLOT_SHIFT

   position of the 3 top bits specifying which highlight to use


.. py:data:: HIF_SLOT_0

   operate on slot 0


.. py:data:: HIF_SLOT_1

   operate on slot 1


.. py:data:: HIF_SLOT_2

   operate on slot 2


.. py:data:: HIF_SLOT_3

   operate on slot 3


.. py:data:: HIF_SLOT_4

   operate on slot 4


.. py:data:: HIF_SLOT_5

   operate on slot 5


.. py:data:: HIF_SLOT_6

   operate on slot 6


.. py:data:: HIF_SLOT_7

   operate on slot 7


.. py:data:: REG_HINTS_MARKER

.. py:data:: REG_HINTS_MARKER_LEN

.. py:data:: SRCDBG_HINTS_MARKER

.. py:data:: SRCDBG_HINTS_MARKER_LEN

.. py:data:: CDVF_NOLINES

   don't show line numbers


.. py:data:: CDVF_LINEICONS

   icons can be drawn over the line control


.. py:data:: CDVF_STATUSBAR

   keep the status bar in the custom viewer


.. py:data:: IDCHK_OK

   ok


.. py:data:: IDCHK_ARG

   bad argument(s)


.. py:data:: IDCHK_KEY

   bad hotkey name


.. py:data:: IDCHK_MAX

   too many IDC hotkeys


.. py:data:: WCLS_SAVE

   save state in desktop config


.. py:data:: WCLS_NO_CONTEXT

   don't change the current context (useful for toolbars)


.. py:data:: WCLS_DONT_SAVE_SIZE

   don't save size of the window


.. py:data:: WCLS_DELETE_LATER

   assign the deletion of the widget to the UI loop ///<


.. py:data:: WCLS_CLOSE_LATER

.. py:data:: DP_LEFT

   Dock src_form to the left of dest_form.


.. py:data:: DP_TOP

   Dock src_form above dest_form.


.. py:data:: DP_RIGHT

   Dock src_form to the right of dest_form.


.. py:data:: DP_BOTTOM

   Dock src_form below dest_form.


.. py:data:: DP_INSIDE

   Create a new tab bar with both src_form and dest_form.


.. py:data:: DP_TAB

   Place src_form into a tab next to dest_form, if dest_form is in a tab bar (otherwise the same as DP_INSIDE) 
           


.. py:data:: DP_BEFORE

   Place src_form before dst_form in the tab bar instead of after; used with DP_INSIDE or DP_TAB. 
           


.. py:data:: DP_FLOATING

   Make src_form floating.


.. py:data:: DP_SZHINT

   When floating or in a splitter (i.e., not tabbed), use the widget's size hint to determine the best geometry (Qt only) 
           


.. py:data:: SVF_COPY_LINES

   keep a local copy of '*lines'


.. py:data:: SVF_LINES_BYPTR

   remember the 'lines' ptr. do not make a copy of '*lines'


.. py:data:: CVNF_LAZY

   try and move the cursor to a line displaying the place_t if possible. This might disregard the Y position in case of success 
           


.. py:data:: CVNF_JUMP

   push the current position in this viewer's lochist_t before going to the new location 
           


.. py:data:: CVNF_ACT

   activate (i.e., switch to) the viewer. Activation is performed before the new lochist_entry_t instance is actually copied to the viewer's lochist_t (otherwise, if the viewer was invisible its on_location_changed() handler wouldn't be called.) 
           


.. py:data:: WOPN_RESTORE

   if the widget was the only widget in a floating area the last time it was closed, it will be restored as floating, with the same position+size as before 
           


.. py:data:: WOPN_PERSIST

   widget will remain available when starting or stopping debugger sessions


.. py:data:: WOPN_CLOSED_BY_ESC

   override idagui.cfg:CLOSED_BY_ESC: esc will close


.. py:data:: WOPN_NOT_CLOSED_BY_ESC

   override idagui.cfg:CLOSED_BY_ESC: esc will not close


.. py:data:: WOPN_DP_MASK

.. py:data:: WOPN_DP_SHIFT

.. py:data:: WOPN_DP_LEFT

   Dock widget to the left of dest_ctrl.


.. py:data:: WOPN_DP_TOP

   Dock widget above dest_ctrl.


.. py:data:: WOPN_DP_RIGHT

   Dock widget to the right of dest_ctrl.


.. py:data:: WOPN_DP_BOTTOM

   Dock widget below dest_ctrl.


.. py:data:: WOPN_DP_INSIDE

   Create a new tab bar with both widget and dest_ctrl.


.. py:data:: WOPN_DP_TAB

   Place widget into a tab next to dest_ctrl, if dest_ctrl is in a tab bar (otherwise the same as WOPN_DP_INSIDE) 
           


.. py:data:: WOPN_DP_BEFORE

   Place widget before dst_form in the tab bar instead of after; used with WOPN_DP_INSIDE and WOPN_DP_TAB 
           


.. py:data:: WOPN_DP_FLOATING

   Make widget floating.


.. py:data:: WOPN_DP_SZHINT

   when floating or in a splitter (i.e., not tabbed), use the widget's size hint to determine the best geometry (Qt only) 
           


.. py:data:: WOPN_DP_INSIDE_BEFORE

.. py:data:: WOPN_DP_TAB_BEFORE

.. py:data:: RENADDR_IDA

   dialog for "IDA View"


.. py:data:: RENADDR_HR

   dialog for "Pseudocode"; additional flags:
   * 0x01 Library function
   * 0x02 Mark as decompiled 


           


.. py:data:: CVLF_USE_MOUSE

   Fetch the location from the mouse, instead of caret in the listing.


.. py:function:: get_kernel_version() -> str

   Get IDA kernel version (in a string like "5.1").


.. py:function:: is_ida_library(path: char * = None, pathsize: size_t = 0, handle: void ** = None) -> bool

.. py:class:: place_t(*args, **kwargs)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: lnnum
      :type:  int

      Number of line within the current object.



   .. py:method:: touval(ud: void *) -> int

      Map the location to a number. This mapping is used to draw the vertical scrollbar. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t



   .. py:method:: clone() -> place_t *

      Clone the location. 
              
      :returns: a pointer to a copy of the current location in dynamic memory



   .. py:method:: copyfrom(_from: place_t) -> None

      Copy the specified location object to the current object.



   .. py:method:: makeplace(ud: void *, x: int, lnnum: int) -> place_t *

      Map a number to a location. When the user clicks on the scrollbar and drags it, we need to determine the location corresponding to the new scrollbar position. This function is used to determine it. It builds a location object for the specified 'x' and returns a pointer to it. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :param x: number to map
      :param lnnum: line number to initialize 'lnnum'
      :returns: a freshly allocated object. See also PCF_MAKEPLACE_ALLOCATES



   .. py:method:: compare(t2: place_t) -> int

      Deprecated. Please consider compare2(const place_t *, void *) instead.



   .. py:method:: adjust(ud: void *) -> None

      Adjust the current location to point to a displayable object. This function validates the location and makes sure that it points to an existing object. For example, if the location points to the middle of an instruction, it will be adjusted to point to the beginning of the instruction. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t



   .. py:method:: prev(ud: void *) -> bool

      Move to the previous displayable location. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :returns: success



   .. py:method:: next(ud: void *) -> bool

      Move to the next displayable location. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :returns: success



   .. py:method:: beginning(ud: void *) -> bool

      Are we at the first displayable object?. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :returns: true if the current location points to the first displayable object



   .. py:method:: ending(ud: void *) -> bool

      Are we at the last displayable object?. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :returns: true if the current location points to the last displayable object



   .. py:method:: serialize() -> None

      Serialize this instance. It is fundamental that all instances of a particular subclass of of place_t occupy the same number of bytes when serialized. 
              



   .. py:method:: id() -> int

      Get the place's ID (i.e., the value returned by register_place_class()) 
              
      :returns: the id



   .. py:method:: name() -> str

      Get this place type name. All instances of a given class must return the same string. 
              
      :returns: the place type name. Please try and pick something that is not too generic, as it might clash w/ other plugins. A good practice is to prefix the class name with the name of your plugin. E.g., "myplugin:srcplace_t".



   .. py:method:: toea() -> ida_idaapi.ea_t

      Map the location to an ea_t. 
              
      :returns: the corresponding ea_t, or BADADDR;



   .. py:method:: rebase(arg2: segm_move_infos_t const &) -> bool

      Rebase the place instance 
              
      :returns: true if place was rebased, false otherwise



   .. py:method:: enter(arg2: uint32 *) -> place_t *

      Visit this place, possibly 'unhiding' a section of text. If entering that place required some expanding, a place_t should be returned that represents that section, plus some flags for later use by 'leave()'. 
              
      :returns: a place_t corresponding to the beginning of the section of text that had to be expanded. That place_t's leave() will be called with the flags contained in 'out_flags' when the user navigates away from it.



   .. py:method:: leave(arg2: int) -> None

      Leave this place, possibly 'hiding' a section of text that was previously expanded (at enter()-time.) 
              



   .. py:method:: compare2(t2: place_t, arg3: void *) -> int

      Compare two locations except line numbers (lnnum). This function is used to organize loops. For example, if the user has selected an range, its boundaries are remembered as location objects. Any operation within the selection will have the following look: for ( loc=starting_location; loc < ending_location; loc.next() ) In this loop, the comparison function is used. 
              
      :param t2: the place to compare this one to.
      :returns: -1: if the current location is less than 't2'
      :returns: 0: if the current location is equal to than 't2'
      :returns: 1: if the current location is greater than 't2'



   .. py:method:: equals(t2: place_t, ud: void *) -> bool

      Compare two places for equality, ignoring line numbers (lnnum). This is semantically different than `compare2`, although by default it is implemented in terms of it for backwards-compatibility. `compare2` implements a three-way comparison to see if two places *sort* less than, equal to, or grater than. This method actually looks for equality. Thus, `t1->equals(t2, ud)` implies `t1->compare2(t2, ud) == 0`, but the reverse is not always true. An example of this is for adjustable places that are sensitive to the x-cursor position, and need to compare differently as a result.

      :returns: true if the two places match / are equal.



   .. py:method:: deserialize(_in: bytevec_t const &) -> bool

      De-serialize into this instance. 'pptr' should be incremented by as many bytes as de-serialization consumed. 
              
      :returns: whether de-serialization was successful



   .. py:method:: as_idaplace_t(p: place_t) -> idaplace_t *
      :staticmethod:



   .. py:method:: as_simpleline_place_t(p: place_t) -> simpleline_place_t *
      :staticmethod:



   .. py:method:: as_tiplace_t(p: place_t) -> tiplace_t *
      :staticmethod:



   .. py:method:: generate(ud, maxsize: int) -> Tuple[List[str], int, int, int]

      Generate text lines for the current location.

      :param ud: The user data object
      :param maxsize: The maximum number of lines to generate
      :returns: a tuple (lines-of-text, default-line-number, prefix-color, background-color)



.. py:data:: cvar

.. py:data:: IDALIB_API_MAGIC

.. py:data:: DEFAULT_PLACE_LNNUM

.. py:function:: l_compare2(t1: place_t, t2: place_t, ud: void *) -> int

.. py:function:: l_equals(t1: place_t, t2: place_t, ud: void *) -> bool

.. py:class:: simpleline_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: line
      :type:  str

      line text



   .. py:attribute:: color
      :type:  color_t

      line prefix color



   .. py:attribute:: bgcolor
      :type:  bgcolor_t

      line background color



.. py:class:: simpleline_place_t(*args, **kwargs)

   Bases: :py:obj:`place_t`


   .. py:attribute:: thisown


   .. py:attribute:: n
      :type:  int

      line number



.. py:class:: idaplace_t(*args, **kwargs)

   Bases: :py:obj:`place_t`


   .. py:attribute:: thisown


   .. py:attribute:: ea
      :type:  ida_idaapi.ea_t

      address



.. py:function:: is_tif_cursor_header(c: tif_cursor_t) -> bool

.. py:function:: is_tif_cursor_footer(c: tif_cursor_t) -> bool

.. py:function:: is_tif_cursor_index(c: tif_cursor_t) -> bool

.. py:class:: tiplace_t(*args, **kwargs)

   Bases: :py:obj:`place_t`


   .. py:attribute:: thisown


   .. py:attribute:: ordinal
      :type:  int


   .. py:attribute:: cursor
      :type:  tif_cursor_t


   .. py:method:: valid_ord() -> bool


   .. py:method:: reset() -> None


   .. py:method:: is_header() -> bool


   .. py:method:: is_footer() -> bool


   .. py:method:: is_index() -> bool


   .. py:method:: set_header() -> None


   .. py:method:: set_footer() -> None


   .. py:method:: calc_udm_offset(ud: void const *, p_udmidx: ssize_t * = None, p_bitoff: int * = None) -> uint64

      for structs: calculate the offset that corresponds to the tiplace. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :param p_udmidx: place to return the index of the current udt member, if any. if there is no member at the current offset, return -1
      :param p_bitoff: place to return the bit offset of the item from the beginning of the bit bucket if there no bitfields, return -1
      :returns: the current offset or uint64(-1)



   .. py:method:: set_index_by_offset(ud: void *, offset: uint64) -> None

      for structs: calculate the index that corresponds to the offset and set it. 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :param offset: offset of udt member



   .. py:method:: get_kind(ud: void const *) -> type_t

      get the kind of type this place represents 
              
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :returns: one of BTF_TYPEDEF, BTF_STRUCT, BTF_UNION, BTF_ENUM or BT_UNK



   .. py:method:: fill_type_ref(out: til_type_ref_t, ud: void const *) -> bool

      fill the type information for use in actions 
              
      :param out: pointer to storage
      :param ud: pointer to user-defined context data. Is supplied by linearray_t
      :returns: success



.. py:data:: PCF_EA_CAPABLE

   toea() implementation returns meaningful data


.. py:data:: PCF_MAKEPLACE_ALLOCATES

   makeplace() returns a freshly allocated (i.e., non-static) instance. All new code should pass that flag to register_place_class(), and the corresponding makeplace() class implementation should return new instances. 
           


.. py:function:: internal_register_place_class(tmplate: place_t, flags: int, owner: plugin_t const *, sdk_version: int) -> int

.. py:function:: get_place_class(out_flags: int *, out_sdk_version: int *, id: int) -> place_t const *

   Get information about a previously-registered place_t class. See also register_place_class(). 
           
   :param out_flags: output flags (can be nullptr)
   :param out_sdk_version: sdk version the place was created with (can be nullptr)
   :param id: place class ID
   :returns: the place_t template, or nullptr if not found


.. py:function:: get_place_class_template(id: int) -> place_t const *

   See get_place_class()


.. py:function:: is_place_class_ea_capable(id: int) -> bool

   See get_place_class()


.. py:function:: get_place_class_id(name: str) -> int

   Get the place class ID for the place that has been registered as 'name'. 
           
   :param name: the class name
   :returns: the place class ID, or -1 if not found


.. py:class:: sync_source_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: is_register() -> bool


   .. py:method:: is_widget() -> bool


   .. py:method:: get_widget() -> TWidget const *


   .. py:method:: get_register() -> str


.. py:class:: synced_group_t

   Bases: :py:obj:`sync_source_vec_t`


   .. py:attribute:: thisown


   .. py:method:: has_widget(v: TWidget const *) -> bool


   .. py:method:: has_register(r: str) -> bool


   .. py:method:: has(ss: sync_source_t) -> bool


.. py:data:: LECVT_CANCELED

.. py:data:: LECVT_ERROR

.. py:data:: LECVT_OK

.. py:data:: LECVT_WITHIN_LISTING

.. py:class:: twinpos_t(t: place_t = None, x0: int = 0)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: at
      :type:  place_t *

      location in view



   .. py:attribute:: x
      :type:  int

      cursor x



   .. py:method:: place_as_idaplace_t()


   .. py:method:: place_as_simpleline_place_t()


   .. py:method:: place_as_tiplace_t()


   .. py:method:: place(view)


.. py:class:: twinline_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: at
      :type:  place_t *

      location in view



   .. py:attribute:: line
      :type:  str

      line contents



   .. py:attribute:: prefix_color
      :type:  color_t

      line prefix color



   .. py:attribute:: bg_color
      :type:  bgcolor_t

      line background color



   .. py:attribute:: is_default
      :type:  bool

      is this the default line of the current location?



.. py:class:: linearray_t(_ud: void *)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: set_place(new_at: place_t) -> int

      Position the array. This function must be called before calling any other member functions. 
              
      :param new_at: new position of the array. linearray will make a clone of this object.
      :returns: the delta of lines that the linearray_t had to adjust the place by. 
      For example, if the place_t has a lnnum of 5, but it turns out, upon generating lines, 
      that the number of lines for that particular place is only 2, then 3 will be returned.



   .. py:method:: copy_from(src: linearray_t) -> None

      Copy information from one linearray to another. Only linearray objects with compatible 'ud' fields can be copied. 
              



   .. py:method:: get_place() -> place_t *

      Get the current place. If called before down(), then returns place of line which will be returned by down(). If called after up(), then returns place if line returned by up(). 
              



   .. py:method:: get_bg_color() -> bgcolor_t

      Get current background color. (the same behavior as with get_place(): good before down() and after up()) 
              



   .. py:method:: get_pfx_color() -> bgcolor_t

      Get current prefix color. (the same behavior as with get_place(): good before down() and after up()) 
              



   .. py:method:: get_dlnnum() -> int

      Get default line number. (the same behavior as with get_place(): good before down() and after up()) 
              



   .. py:method:: get_linecnt() -> int

      Get number of lines for the current place. (the same behavior as with get_place(): good before down() and after up()) 
              



   .. py:method:: userdata() -> void *

      Get pointer to user data.



   .. py:method:: set_userdata(userd: void *) -> None

      Change the user data.



   .. py:method:: beginning() -> bool

      Are we at the beginning?



   .. py:method:: ending() -> bool


   .. py:method:: down() -> str

      Get the next line going downwards. 'at' for the retrieved line is correct BEFORE calling this function. 
              



   .. py:method:: up() -> str

      Get the next line going upwards. 'at' for the retrieved line is correct AFTER calling this function. 
              



   .. py:method:: set_max_lines(n: int) -> None

      Set max number of lines to generate for a place. 0 means to use the default value, MAX_ITEM_LINES from ida.cfg 
              



.. py:class:: lines_rendering_input_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: cb
      :type:  int


   .. py:attribute:: sections_lines
      :type:  sections_lines_refs_t

      references to the lines that are used for rendering 
              



   .. py:attribute:: sync_group
      :type:  synced_group_t const *

      the 'synced' group 'widget' (see ui_get_lines_rendering_info) belongs to, or nullptr 
              



.. py:data:: CK_TRACE

   traced address


.. py:data:: CK_TRACE_OVL

   overlay trace address


.. py:data:: CK_EXTRA1

   extra background overlay #1


.. py:data:: CK_EXTRA2

   extra background overlay #2


.. py:data:: CK_EXTRA3

   extra background overlay #3


.. py:data:: CK_EXTRA4

   extra background overlay #4


.. py:data:: CK_EXTRA5

   extra background overlay #5


.. py:data:: CK_EXTRA6

   extra background overlay #6


.. py:data:: CK_EXTRA7

   extra background overlay #7


.. py:data:: CK_EXTRA8

   extra background overlay #8


.. py:data:: CK_EXTRA9

   extra background overlay #9


.. py:data:: CK_EXTRA10

   extra background overlay #10


.. py:data:: CK_EXTRA11

   extra background overlay #11


.. py:data:: CK_EXTRA12

   extra background overlay #12


.. py:data:: CK_EXTRA13

   extra background overlay #13


.. py:data:: CK_EXTRA14

   extra background overlay #14


.. py:data:: CK_EXTRA15

   extra background overlay #15


.. py:data:: CK_EXTRA16

   extra background overlay #16


.. py:data:: LROEF_MASK

.. py:data:: LROEF_FULL_LINE

   full line background


.. py:data:: LROEF_CPS_RANGE

   background for range of chars


.. py:class:: line_rendering_output_entry_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: line
      :type:  twinline_t const *


   .. py:attribute:: flags
      :type:  int

      line_rendering_output_entry_t flags



   .. py:attribute:: bg_color
      :type:  bgcolor_t


   .. py:attribute:: cpx
      :type:  int

      number of char to start from, valid if LROEF_CPS_RANGE



   .. py:attribute:: nchars
      :type:  int

      chars count, valid if LROEF_CPS_RANGE



   .. py:method:: is_bg_color_empty() -> bool


   .. py:method:: is_bg_color_key() -> bool


   .. py:method:: is_bg_color_direct() -> bool


.. py:class:: lines_rendering_output_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: entries
      :type:  line_rendering_output_entries_refs_t


   .. py:attribute:: flags
      :type:  int


   .. py:method:: clear() -> None


   .. py:method:: swap(r: lines_rendering_output_t) -> None


.. py:class:: line_section_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: start
      :type:  cpidx_t


   .. py:attribute:: length
      :type:  cplen_t


   .. py:method:: contains(x: cpidx_t) -> bool


   .. py:method:: is_open() -> bool


   .. py:method:: is_closed() -> bool


   .. py:method:: valid() -> bool


.. py:class:: tagged_line_section_t

   Bases: :py:obj:`line_section_t`


   .. py:attribute:: thisown


   .. py:attribute:: tag
      :type:  color_t


   .. py:method:: valid() -> bool


   .. py:method:: valid_in(_in: str) -> bool


   .. py:method:: substr(_in: str, end: tagged_line_section_t = None) -> bool


.. py:class:: tagged_line_sections_t

   Bases: :py:obj:`tagged_line_section_vec_t`


   .. py:attribute:: thisown


   .. py:method:: first(tag: color_t) -> tagged_line_section_t const *


   .. py:method:: sections_at(out: tagged_line_sections_t, x: cpidx_t, tag: color_t = 0) -> None


   .. py:method:: nearest_at(x: cpidx_t, tag: color_t = 0) -> tagged_line_section_t const *


   .. py:method:: nearest_before(range: tagged_line_section_t, start: cpidx_t, tag: color_t = 0) -> tagged_line_section_t const *


   .. py:method:: nearest_after(range: tagged_line_section_t, start: cpidx_t, tag: color_t = 0) -> tagged_line_section_t const *


.. py:class:: listing_location_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: cb
      :type:  int


   .. py:attribute:: loc
      :type:  lochist_entry_t const *


   .. py:attribute:: text
      :type:  str


   .. py:attribute:: tagged_sections
      :type:  tagged_line_sections_t const *


.. py:function:: request_refresh(mask: uint64, cnd: bool = True) -> None

   Request a refresh of a builtin window. 
           
   :param mask: Window refresh flags
   :param cnd: set if true or clear flag otherwise


.. py:function:: clear_refresh_request(mask: uint64) -> None

.. py:function:: is_refresh_requested(mask: uint64) -> bool

   Get a refresh request state 
           
   :param mask: Window refresh flags
   :returns: the state (set or cleared)


.. py:data:: BWN_UNKNOWN

   unknown window


.. py:data:: BWN_EXPORTS

   exports


.. py:data:: BWN_IMPORTS

   imports


.. py:data:: BWN_NAMES

   names


.. py:data:: BWN_FUNCS

   functions


.. py:data:: BWN_STRINGS

   strings


.. py:data:: BWN_SEGS

   segments


.. py:data:: BWN_SEGREGS

   segment registers


.. py:data:: BWN_SELS

   selectors


.. py:data:: BWN_SIGNS

   signatures


.. py:data:: BWN_TILS

   type libraries


.. py:data:: BWN_TICSR

   type library widget's (e.g., "Local types") chooser


.. py:data:: BWN_CALLS

   function calls


.. py:data:: BWN_PROBS

   problems


.. py:data:: BWN_BPTS

   breakpoints


.. py:data:: BWN_THREADS

   threads


.. py:data:: BWN_MODULES

   modules


.. py:data:: BWN_TRACE

   tracing view


.. py:data:: BWN_CALL_STACK

   call stack


.. py:data:: BWN_XREFS

   xrefs


.. py:data:: BWN_SEARCH

   search results


.. py:data:: BWN_FRAME

   function frame


.. py:data:: BWN_NAVBAND

   navigation band


.. py:data:: BWN_DISASM

   disassembly views


.. py:data:: BWN_HEXVIEW

   hex view


.. py:data:: BWN_NOTEPAD

   notepad


.. py:data:: BWN_OUTPUT

   the text area, in the output window


.. py:data:: BWN_CLI

   the command-line, in the output window


.. py:data:: BWN_WATCH

   the 'watches' debugger window


.. py:data:: BWN_LOCALS

   the 'locals' debugger window


.. py:data:: BWN_STKVIEW

   the 'Stack view' debugger window


.. py:data:: BWN_CHOOSER

   a non-builtin chooser


.. py:data:: BWN_SHORTCUTCSR

   the shortcuts chooser (Qt version only)


.. py:data:: BWN_SHORTCUTWIN

   the shortcuts window (Qt version only)


.. py:data:: BWN_CPUREGS

   one of the 'General registers', 'FPU register', ... debugger windows


.. py:data:: BWN_SO_STRUCTS

   the 'Structure offsets' dialog's 'Structures and Unions' panel


.. py:data:: BWN_SO_OFFSETS

   the 'Structure offsets' dialog's offset panel


.. py:data:: BWN_CMDPALCSR

   the command palette chooser (Qt version only)


.. py:data:: BWN_CMDPALWIN

   the command palette window (Qt version only)


.. py:data:: BWN_SNIPPETS

   the 'Execute script' window


.. py:data:: BWN_CUSTVIEW

   custom viewers


.. py:data:: BWN_ADDRWATCH

   the 'Watch List' window


.. py:data:: BWN_PSEUDOCODE

   hexrays decompiler views


.. py:data:: BWN_CALLS_CALLERS

   function calls, callers


.. py:data:: BWN_CALLS_CALLEES

   function calls, callees


.. py:data:: BWN_MDVIEWCSR

   lumina metadata view chooser


.. py:data:: BWN_DISASM_ARROWS

   disassembly arrows widget


.. py:data:: BWN_CV_LINE_INFOS

   custom viewers' lineinfo widget


.. py:data:: BWN_SRCPTHMAP_CSR

   "Source paths..."'s path mappings chooser


.. py:data:: BWN_SRCPTHUND_CSR

   "Source paths..."'s undesired paths chooser


.. py:data:: BWN_UNDOHIST

   Undo history.


.. py:data:: BWN_SNIPPETS_CSR

   the list of snippets in the 'Execute script' window


.. py:data:: BWN_SCRIPTS_CSR

   the "Recent scripts" chooser


.. py:data:: BWN_BOOKMARKS

   a persistent 'Bookmarks' widget


.. py:data:: BWN_TILIST

   a type listing widget


.. py:data:: BWN_TIL_VIEW

   a type library's toplevel widget


.. py:data:: BWN_TYPE_EDITOR

   a type editor


.. py:data:: BWN_MICROCODE

   microcode view (part of hexrays decompiler)


.. py:data:: BWN_XREF_TREE

   xref tree widget


.. py:data:: IWID_EXPORTS

   exports


.. py:data:: IWID_IMPORTS

   imports


.. py:data:: IWID_NAMES

   names


.. py:data:: IWID_FUNCS

   functions


.. py:data:: IWID_STRINGS

   strings


.. py:data:: IWID_SEGS

   segments


.. py:data:: IWID_SEGREGS

   segment registers


.. py:data:: IWID_SELS

   selectors


.. py:data:: IWID_SIGNS

   signatures


.. py:data:: IWID_TILS

   type libraries


.. py:data:: IWID_TICSR

   type library widget's (e.g., "Local types") chooser


.. py:data:: IWID_CALLS

   function calls


.. py:data:: IWID_PROBS

   problems


.. py:data:: IWID_BPTS

   breakpoints


.. py:data:: IWID_THREADS

   threads


.. py:data:: IWID_MODULES

   modules


.. py:data:: IWID_TRACE

   tracing view


.. py:data:: IWID_CALL_STACK

   call stack


.. py:data:: IWID_XREFS

   xrefs


.. py:data:: IWID_SEARCH

   search results


.. py:data:: IWID_FRAME

   function frame


.. py:data:: IWID_NAVBAND

   navigation band


.. py:data:: IWID_DISASM

   disassembly views


.. py:data:: IWID_HEXVIEW

   hex views


.. py:data:: IWID_NOTEPAD

   notepad


.. py:data:: IWID_OUTPUT

   output


.. py:data:: IWID_CLI

   input line


.. py:data:: IWID_WATCH

   watches


.. py:data:: IWID_LOCALS

   locals


.. py:data:: IWID_STKVIEW

   stack view


.. py:data:: IWID_CHOOSER

   chooser


.. py:data:: IWID_SHORTCUTCSR

   shortcuts chooser


.. py:data:: IWID_SHORTCUTWIN

   shortcuts window


.. py:data:: IWID_CPUREGS

   registers


.. py:data:: IWID_SO_STRUCTS

   stroff


.. py:data:: IWID_SO_OFFSETS

   stroff


.. py:data:: IWID_CMDPALCSR

   command palette


.. py:data:: IWID_CMDPALWIN

   command palette


.. py:data:: IWID_SNIPPETS

   snippets


.. py:data:: IWID_CUSTVIEW

   custom viewers


.. py:data:: IWID_ADDRWATCH

   address watches


.. py:data:: IWID_PSEUDOCODE

   decompiler


.. py:data:: IWID_CALLS_CALLERS

   funcalls, callers


.. py:data:: IWID_CALLS_CALLEES

   funcalls, callees


.. py:data:: IWID_MDVIEWCSR

   lumina md view


.. py:data:: IWID_DISASM_ARROWS

   arrows widget


.. py:data:: IWID_CV_LINE_INFOS

   lineinfo widget


.. py:data:: IWID_SRCPTHMAP_CSR

   mappings chooser


.. py:data:: IWID_SRCPTHUND_CSR

   undesired chooser


.. py:data:: IWID_UNDOHIST

   Undo history.


.. py:data:: IWID_SNIPPETS_CSR

   snippets chooser


.. py:data:: IWID_SCRIPTS_CSR

   recent scripts


.. py:data:: IWID_BOOKMARKS

   bookmarks list


.. py:data:: IWID_TILIST

   type listing


.. py:data:: IWID_TIL_VIEW

   type library's toplevel widget


.. py:data:: IWID_TYPE_EDITOR

   a type editor


.. py:data:: IWID_XREF_TREE

   xref tree widget


.. py:data:: IWID_ANY_LISTING

   anything that uses a listing widget


.. py:data:: IWID_EA_LISTING

   anything that can be used to represent data/code at an address


.. py:data:: IWID_ALL

   mask


.. py:function:: is_chooser_widget(t: twidget_type_t) -> bool

   Does the given widget type specify a chooser widget?


.. py:data:: IDA_DEBUG_DREFS

   drefs


.. py:data:: IDA_DEBUG_OFFSET

   offsets


.. py:data:: IDA_DEBUG_FLIRT

   flirt


.. py:data:: IDA_DEBUG_IDP

   idp module


.. py:data:: IDA_DEBUG_LDR

   ldr module


.. py:data:: IDA_DEBUG_PLUGIN

   plugin module


.. py:data:: IDA_DEBUG_IDS

   ids files


.. py:data:: IDA_DEBUG_CONFIG

   config file


.. py:data:: IDA_DEBUG_CHECKMEM

   check heap consistency


.. py:data:: IDA_DEBUG_LICENSE

   licensing


.. py:data:: IDA_DEBUG_DEMANGLE

   demangler


.. py:data:: IDA_DEBUG_QUEUE

   queue


.. py:data:: IDA_DEBUG_ROLLBACK

   rollback


.. py:data:: IDA_DEBUG_ALREADY

   already data or code


.. py:data:: IDA_DEBUG_TIL

   type system


.. py:data:: IDA_DEBUG_NOTIFY

   show all notifications


.. py:data:: IDA_DEBUG_DEBUGGER

   debugger


.. py:data:: IDA_DEBUG_APPCALL

   appcall


.. py:data:: IDA_DEBUG_SRCDBG

   source debugging


.. py:data:: IDA_DEBUG_ACCESSIBILITY

   accessibility


.. py:data:: IDA_DEBUG_NETWORK

   network


.. py:data:: IDA_DEBUG_INTERNET

   internet connection (for API backward compatibility)


.. py:data:: IDA_DEBUG_SIMPLEX

   full stack analysis


.. py:data:: IDA_DEBUG_DBGINFO

   handling of debug info (e.g. pdb, dwarf)


.. py:data:: IDA_DEBUG_LUMINA

   lumina related


.. py:data:: IDA_DEBUG_THEMES

   themes


.. py:data:: IDA_DEBUG_REGEX

   regular expression


.. py:data:: IDA_DEBUG_SUBPROC

   sub process


.. py:data:: IDA_DEBUG_RANGECB

   range-based entities like segments, functions and so on


.. py:data:: IDA_DEBUG_ALWAYS

   everything


.. py:data:: AST_ENABLE_ALWAYS

   enable action and do not call action_handler_t::update() anymore


.. py:data:: AST_ENABLE_FOR_IDB

   enable action for the current idb. call action_handler_t::update() when a database is opened/closed 
             


.. py:data:: AST_ENABLE_FOR_WIDGET

   enable action for the current widget. call action_handler_t::update() when a widget gets/loses focus 
             


.. py:data:: AST_ENABLE

   enable action - call action_handler_t::update() when anything changes


.. py:data:: AST_DISABLE_ALWAYS

   disable action and do not call action_handler_t::action() anymore


.. py:data:: AST_DISABLE_FOR_IDB

   analog of AST_ENABLE_FOR_IDB


.. py:data:: AST_DISABLE_FOR_WIDGET

   analog of AST_ENABLE_FOR_WIDGET


.. py:data:: AST_DISABLE

   analog of AST_ENABLE


.. py:function:: is_action_enabled(s: action_state_t) -> bool

   Check if the given action state is one of AST_ENABLE*.


.. py:data:: CH_MODAL

   Modal chooser.


.. py:data:: CH_KEEP

   The chooser instance's lifecycle is not tied to the lifecycle of the widget showing its contents. Closing the widget will not destroy the chooser structure. This allows for, e.g., static global chooser instances that don't need to be allocated on the heap. Also stack-allocated chooser instances must set this bit. 
           


.. py:data:: CH_MULTI

   The chooser will allow multi-selection (only for GUI choosers). This bit is set when using the chooser_multi_t structure. 
           


.. py:data:: CH_MULTI_EDIT

   Obsolete.


.. py:data:: CH_NOBTNS

   do not display ok/cancel/help/search buttons. Meaningful only for gui modal windows because non-modal windows do not have any buttons anyway. Text mode does not have them neither. 
           


.. py:data:: CH_ATTRS

   generate ui_get_chooser_item_attrs (gui only)


.. py:data:: CH_UNUSED

.. py:data:: CH_FORCE_DEFAULT

   if a non-modal chooser was already open, change selection to the default one 
           


.. py:data:: CH_CAN_INS

   allow to insert new items


.. py:data:: CH_CAN_DEL

   allow to delete existing item(s)


.. py:data:: CH_CAN_EDIT

   allow to edit existing item(s)


.. py:data:: CH_CAN_REFRESH

   allow to refresh chooser


.. py:data:: CH_QFLT

   open with quick filter enabled and focused


.. py:data:: CH_QFTYP_SHIFT

.. py:data:: CH_QFTYP_DEFAULT

   set quick filtering type to the possible existing default for this chooser


.. py:data:: CH_QFTYP_NORMAL

   normal (i.e., lexicographical) quick filter type


.. py:data:: CH_QFTYP_WHOLE_WORDS

   whole words quick filter type


.. py:data:: CH_QFTYP_REGEX

   regex quick filter type


.. py:data:: CH_QFTYP_FUZZY

   fuzzy search quick filter type


.. py:data:: CH_QFTYP_MASK

.. py:data:: CH_NO_STATUS_BAR

   don't show a status bar


.. py:data:: CH_RESTORE

   restore floating position if present (equivalent of WOPN_RESTORE) (GUI version only)


.. py:data:: CH_RENAME_IS_EDIT

   triggering a 'edit/rename' (i.e., F2 shortcut) on a cell, should call the edit() callback for the corresponding row. 
           


.. py:data:: CH_BUILTIN_SHIFT

.. py:data:: CH_BUILTIN_MASK

   Mask for builtin chooser numbers. Plugins should not use them.


.. py:data:: CH_HAS_DIRTREE

   The chooser can provide a dirtree_t, meaning a tree-like structure can be provided to the user (instead of a flat table) 
           


.. py:data:: CH_TM_NO_TREE

   chooser will show in no-tree mode


.. py:data:: CH_TM_FOLDERS_ONLY

   chooser will show in folders-only mode


.. py:data:: CH_TM_FULL_TREE

   chooser will show in full-tree mode


.. py:data:: CH_TM_SHIFT

.. py:data:: CH_TM_MASK

.. py:data:: CH_HAS_DIFF

   The chooser can be used in a diffing/merging workflow.


.. py:data:: CH_NO_SORT

   The chooser will not have sorting abilities.


.. py:data:: CH_NO_FILTER

   The chooser will not have filtering abilities.


.. py:data:: CH_NON_PERSISTED_TREE

   the chooser tree is not persisted (it is not loaded on startup and is not saved on exit) 
           


.. py:data:: CH2_LAZY_LOADED

   The chooser is lazy-loaded; it receives the callback do_lazy_load_dir() (only meaningful when CH_HAS_DIRTREE is set) 
           


.. py:data:: CH2_HAS_INODE2INDEX

.. py:data:: CHCOL_PLAIN

   plain string


.. py:data:: CHCOL_PATH

   file path. TUI IDA will truncate excessive cell lengths starting at their beginning, and prepending the resulting text with "..." order to leave the filename visible 
           


.. py:data:: CHCOL_HEX

   hexadecimal number


.. py:data:: CHCOL_DEC

   decimal number


.. py:data:: CHCOL_EA

   address


.. py:data:: CHCOL_FNAME

   function name. If a chooser column has this flag set and implements chooser_base_t::get_ea(), rows background colors will be automatically set to match the navigator's "Library function", "Lumina function" and "External symbol" colors 
           


.. py:data:: CHCOL_FORMAT

   column format mask


.. py:data:: CHCOL_DEFHIDDEN

   column should be hidden by default


.. py:data:: CHCOL_DRAGHINT

   the column number that will be used to build hints for the dragging undo label. This should be provided for at most one column for any given chooser. 
           


.. py:data:: CHCOL_INODENAME

   if CH_HAS_DIRTREE has been specified, this instructs the chooser that this column shows the inode name. This should be provided for at most one column for any given chooser. 
           


.. py:data:: CHITEM_BOLD

   display the item in bold


.. py:data:: CHITEM_ITALIC

   display the item in italic


.. py:data:: CHITEM_UNDER

   underline the item


.. py:data:: CHITEM_STRIKE

   strikeout the item


.. py:data:: CHITEM_GRAY

   gray out the item


.. py:data:: CHOOSER_NOMAINMENU

   do not display main menu


.. py:data:: CHOOSER_NOSTATUSBAR

   do not display status bar (obsolete. Use CH_NO_STATUS_BAR instead)


.. py:class:: chooser_item_attrs_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: flags
      :type:  int

      Chooser item property bits



   .. py:attribute:: color
      :type:  bgcolor_t

      item color



   .. py:method:: reset() -> None


.. py:class:: chooser_row_info_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: texts
      :type:  qstrvec_t

      texts, one per chooser column



   .. py:attribute:: attrs
      :type:  chooser_item_attrs_t

      styling attributes



   .. py:attribute:: icon
      :type:  int

      icon number



.. py:data:: GCRF_HIGH_BIT

.. py:data:: GCRF_HEADER

   Return header texts.


.. py:data:: GCRF_SELECTION

   Return selected rows.


.. py:data:: GCRF_CURRENT

   Return the current row.


.. py:data:: GCRF_ALL

   Return all rows.


.. py:class:: chooser_stdact_desc_t(_label: str = None, _tooltip: str = None, _icon: int = -1)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: version
      :type:  int

      to support the backward compatibility



   .. py:attribute:: label
      :type:  str

      see action_desc_t



   .. py:attribute:: tooltip
      :type:  str


   .. py:attribute:: icon
      :type:  int


   .. py:method:: ucb(arg0: action_ctx_base_t) -> action_state_t

      the update callback, see action_handler_t::update() When the update callback is called from the chooser UI engine, it can be sure that ctx.source.chooser is a valid pointer to chooser_base_t and that there are selected items for the Delete and Edit actions. 
              



.. py:class:: chooser_base_t(*args, **kwargs)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: x0
      :type:  int

      screen position, Functions: generic list choosers



   .. py:attribute:: y0
      :type:  int


   .. py:attribute:: x1
      :type:  int


   .. py:attribute:: y1
      :type:  int


   .. py:attribute:: width
      :type:  int

      (in chars)



   .. py:attribute:: height
      :type:  int

      (in chars)



   .. py:attribute:: title
      :type:  str

      menu title (includes ptr to help). May have chooser title prefixes (see "Chooser
      title" above). 
             



   .. py:attribute:: columns
      :type:  int

      number of columns



   .. py:attribute:: widths
      :type:  int const *

      column widths
      * low 16 bits of each value hold the column width
      * high 16 bits are flags (see Chooser column flags) 


              



   .. py:attribute:: header
      :type:  char const *const *

      header line; contains the tooltips, and column name for each of 'columns' columns. When tooltips need to be provided, the syntax should be: "#tooltip#column-name". (Otherwise, the syntax is simply "column-name".) 
              



   .. py:attribute:: icon
      :type:  int

      default icon



   .. py:attribute:: POPUP_INS


   .. py:attribute:: POPUP_DEL


   .. py:attribute:: POPUP_EDIT


   .. py:attribute:: POPUP_REFRESH


   .. py:attribute:: NSTDPOPUPS


   .. py:attribute:: popup_names
      :type:  qstring [chooser_base_t::NSTDPOPUPS]

      array of custom labels of the standard actions. Used to replace labels for these actions. 
      An empty name means that the default name will be used. 
              



   .. py:attribute:: deflt_col
      :type:  int

      Column that will have focus.



   .. py:method:: is_same(other: chooser_base_t) -> bool

      do the current and the given objects hold the same data?



   .. py:method:: can_ins() -> bool

      is an operation allowed?



   .. py:method:: can_del() -> bool


   .. py:method:: can_edit() -> bool


   .. py:method:: can_refresh() -> bool


   .. py:method:: popup_allowed(stdact_idx: int) -> bool

      is a standard action allowed?



   .. py:method:: is_status_bar_hidden() -> bool


   .. py:method:: should_restore_geometry() -> bool


   .. py:method:: is_modal() -> bool

      is choose modal?



   .. py:method:: has_widget_lifecycle() -> bool

      should chooser object be deleted when the widget gets destroyed?



   .. py:method:: is_multi() -> bool

      is multi-selection allowed?



   .. py:method:: ask_item_attrs() -> bool

      should chooser generate ui_get_chooser_item_attrs events?



   .. py:method:: is_force_default() -> bool

      should selection of the already opened non-modal chooser be changed?



   .. py:method:: get_builtin_number() -> uint

      get number of the built-in chooser



   .. py:method:: is_quick_filter_visible_initially() -> bool


   .. py:method:: get_quick_filter_initial_mode() -> int


   .. py:method:: has_dirtree() -> bool


   .. py:method:: has_diff_capability() -> bool


   .. py:method:: can_sort() -> bool


   .. py:method:: can_filter() -> bool


   .. py:method:: should_rename_trigger_edit() -> bool


   .. py:method:: is_dirtree_persisted() -> bool


   .. py:method:: is_lazy_loaded() -> bool


   .. py:method:: has_inode_to_index() -> bool


   .. py:method:: get_count() -> size_t

      get the number of elements in the chooser



   .. py:method:: get_ea(arg2: size_t) -> ida_idaapi.ea_t

      get the address of an element. When this function returns valid addresses: * If any column has the `CHCOL_FNAME` flag, rows will be colored according to the attributes of the functions who own those addresses (extern, library function, Lumina, ... - similar to what the "Functions" widget does) * When a selection is present and the user presses `<Enter>` (`<Shift+Enter>` if the chooser is modal), IDA will jump to that address (through jumpto()) 
              
      :returns: the effective address, BADADDR if the element has no address



   .. py:method:: get_row(n: int) -> Tuple[List[str], int, chooser_item_attrs_t]

      Get data & attributes for a row in a chooser.

      :param n: The row number
      :returns: a tuple (list-of-strings, icon-id, row-attributes)



.. py:data:: nat_lib

.. py:data:: nat_fun

.. py:data:: nat_cod

.. py:data:: nat_dat

.. py:data:: nat_und

.. py:data:: nat_ext

.. py:data:: nat_err

.. py:data:: nat_gap

.. py:data:: nat_cur

.. py:data:: nat_auto

.. py:data:: nat_lum

.. py:data:: nat_hlo

.. py:data:: nat_last

.. py:data:: CVH_USERDATA

.. py:data:: CVH_KEYDOWN

   see custom_viewer_keydown_t


.. py:data:: CVH_POPUP

   see custom_viewer_popup_t


.. py:data:: CVH_DBLCLICK

   see custom_viewer_dblclick_t


.. py:data:: CVH_CURPOS

   see custom_viewer_curpos_t


.. py:data:: CVH_CLOSE

   see custom_viewer_close_t


.. py:data:: CVH_CLICK

   see custom_viewer_click_t


.. py:data:: CVH_QT_AWARE

   see set_custom_viewer_qt_aware()


.. py:data:: CVH_HELP

   see custom_viewer_help_t


.. py:data:: CVH_MOUSEMOVE

   see custom_viewer_mouse_moved_t


.. py:data:: CDVH_USERDATA

   see set_code_viewer_user_data()


.. py:data:: CDVH_SRCVIEW

   see set_code_viewer_is_source()


.. py:data:: CDVH_LINES_CLICK

   see code_viewer_lines_click_t


.. py:data:: CDVH_LINES_DBLCLICK

   see code_viewer_lines_click_t


.. py:data:: CDVH_LINES_POPUP

   see code_viewer_lines_click_t


.. py:data:: CDVH_LINES_DRAWICON

   see code_viewer_lines_icon_t


.. py:data:: CDVH_LINES_LINENUM

   see code_viewer_lines_linenum_t


.. py:data:: CDVH_LINES_ICONMARGIN

   see set_code_viewer_lines_icon_margin()


.. py:data:: CDVH_LINES_RADIX

   see set_code_viewer_lines_radix()


.. py:data:: CDVH_LINES_ALIGNMENT

   see set_code_viewer_lines_alignment()


.. py:data:: VES_SHIFT

   state & 1 => Shift is pressed 
   state & 2 => Alt is pressed 
   state & 4 => Ctrl is pressed 
   state & 8 => Mouse left button is pressed 
   state & 16 => Mouse right button is pressed 
   state & 32 => Mouse middle button is pressed 
   state & 128 => Meta is pressed (OSX only) 
           


.. py:data:: VES_ALT

.. py:data:: VES_CTRL

.. py:data:: VES_MOUSE_LEFT

.. py:data:: VES_MOUSE_RIGHT

.. py:data:: VES_MOUSE_MIDDLE

.. py:data:: VES_META

.. py:data:: msg_activated

   The message window is activated. 
             


.. py:data:: msg_deactivated

   The message window is deactivated. 
             


.. py:data:: msg_click

   Click event. 
             


.. py:data:: msg_dblclick

   Double click event. 
             


.. py:data:: msg_closed

   View closed. 
             


.. py:data:: msg_keydown

   Key down event. 
             


.. py:class:: renderer_pos_info_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: node
      :type:  int

      the node, or -1 if the current renderer is not a graph renderer. 
              



   .. py:attribute:: cx
      :type:  short

      the X coords of the character in the current line. When in graph mode: X coords of the character in 'node'. 
      When in flat mode: X coords of the character in the line, w/o 
      taking scrolling into consideration. 
              



   .. py:attribute:: cy
      :type:  short

      the Y coords of the character. When in graph mode: Y coords of the character in 'node'. 
      When in flat mode: Line number, starting from the top. 
              



   .. py:attribute:: sx
      :type:  short

      the number of chars that are scrolled (flat mode only)



.. py:class:: view_mouse_event_location_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: ea
      :type:  ida_idaapi.ea_t

      flat view (rtype == TCCRT_FLAT)



   .. py:attribute:: item
      :type:  selection_item_t const *

      graph views (rtype != TCCRT_FLAT). nullptr if mouse is not currently over an item. 
              



.. py:class:: view_mouse_event_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: rtype
      :type:  tcc_renderer_type_t

      type of renderer that received the event



   .. py:attribute:: x
      :type:  int

      screen x coordinate



   .. py:attribute:: y
      :type:  int

      screen y coordinate



   .. py:attribute:: location
      :type:  view_mouse_event_t::location_t

      location where event was generated



   .. py:attribute:: state
      :type:  view_event_state_t

      contains information about what buttons are CURRENTLY pressed on the keyboard and mouse. view_mouse_event_t instances created in functions like mouseReleaseEvent() won't contain any information about the mouse, because it has been released. 
              



   .. py:attribute:: button
      :type:  vme_button_t

      represents which mouse button was responsible for generating the event. This field does not care about the current state of the mouse. 
              



   .. py:attribute:: renderer_pos
      :type:  renderer_pos_info_t

      position where event was generated, relative to the renderer



.. py:data:: view_activated

   A view is activated 
             


.. py:data:: view_deactivated

   A view is deactivated 
             


.. py:data:: view_keydown

   Key down event 
             


.. py:data:: view_click

   Click event 
             


.. py:data:: view_dblclick

   Double click event 
             


.. py:data:: view_curpos

   Cursor position changed 
             


.. py:data:: view_created

   A view is being created. 
             


.. py:data:: view_close

   View closed 
             


.. py:data:: view_switched

   A view's renderer has changed. 
             


.. py:data:: view_mouse_over

   The user moved the mouse over (or out of) a node or an edge. This is only relevant in a graph view. 
             


.. py:data:: view_loc_changed

   The location for the view has changed (can be either the place_t, the renderer_info_t, or both.) 
             


.. py:data:: view_mouse_moved

   The mouse moved on the view 
             


.. py:data:: iek_unknown

.. py:data:: iek_shortcut

.. py:data:: iek_key_press

.. py:data:: iek_key_release

.. py:data:: iek_mouse_button_press

.. py:data:: iek_mouse_button_release

.. py:data:: iek_mouse_wheel

.. py:class:: input_event_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: cb
      :type:  int

      size marker



   .. py:attribute:: kind
      :type:  input_event_kind_t

      the kind of event



   .. py:attribute:: modifiers
      :type:  input_event_modifiers_t

      current keyboard (and mouse) modifiers



   .. py:attribute:: target
      :type:  TWidget *

      the target widget



   .. py:attribute:: source
      :type:  void *

      the source event, should it be required for detailed inform (e.g., a QEvent in the GUI version of IDA)



   .. py:attribute:: shortcut
      :type:  input_event_t::input_event_shortcut_data_t


   .. py:attribute:: keyboard
      :type:  input_event_t::input_event_keyboard_data_t


   .. py:attribute:: mouse
      :type:  input_event_t::input_event_mouse_data_t


   .. py:method:: get_source_QEvent()


   .. py:method:: get_target_QWidget()


.. py:class:: input_event_shortcut_data_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: action_name
      :type:  str


.. py:class:: input_event_keyboard_data_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: key
      :type:  int


   .. py:attribute:: text
      :type:  char [8]


.. py:class:: input_event_mouse_data_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: x
      :type:  int


   .. py:attribute:: y
      :type:  int


   .. py:attribute:: button
      :type:  vme_button_t


.. py:data:: MFF_FAST

   Execute code as soon as possible. this mode is ok for calling ui related functions that do not query the database. 
           


.. py:data:: MFF_READ

   Execute code only when ida is idle and it is safe to query the database. This mode is recommended only for code that does not modify the database. (nb: ida may be in the middle of executing another user request, for example it may be waiting for him to enter values into a modal dialog box) 
           


.. py:data:: MFF_WRITE

   Execute code only when ida is idle and it is safe to modify the database. in particular, this flag will suspend execution if there is a modal dialog box on the screen. this mode can be used to call any ida api function. MFF_WRITE implies MFF_READ 
           


.. py:data:: MFF_NOWAIT

   Do not wait for the request to be executed. the caller should ensure that the request is not destroyed until the execution completes. if not, the request will be ignored. the request must be created using the 'new' operator to use it with this flag. it can be used in cancel_exec_request(). This flag can be used to delay the code execution until the next UI loop run even from the main thread. 
           


.. py:class:: ui_requests_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


.. py:data:: UIJMP_ACTIVATE

   activate the new window


.. py:data:: UIJMP_DONTPUSH

   do not remember the current address in the navigation history 
           


.. py:data:: UIJMP_VIEWMASK

.. py:data:: UIJMP_ANYVIEW

   jump in any ea_t-capable view


.. py:data:: UIJMP_IDAVIEW

   jump in idaview


.. py:data:: UIJMP_IDAVIEW_NEW

   jump in new idaview


.. py:class:: action_ctx_base_cur_sel_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: to
      :type:  twinpos_t

      end of selection



   .. py:method:: reset() -> None


.. py:class:: action_ctx_base_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: reset() -> None

      Invalidate all context info.



   .. py:attribute:: widget
      :type:  TWidget *


   .. py:attribute:: widget_type
      :type:  twidget_type_t

      type of current widget



   .. py:attribute:: widget_title
      :type:  str

      title of current widget



   .. py:attribute:: chooser
      :type:  chooser_base_t *

      the underlying chooser_base_t (if 'widget' is a chooser widget)



   .. py:attribute:: chooser_selection
      :type:  sizevec_t

      current chooser selection (0-based)



   .. py:attribute:: action
      :type:  str

      action name



   .. py:attribute:: cur_flags
      :type:  int

      Current address information. see Action context property bits.



   .. py:method:: has_flag(flag: int) -> bool

      Check if the given flag is set.



   .. py:attribute:: cur_ea
      :type:  ida_idaapi.ea_t

      the current EA of the position in the view



   .. py:attribute:: cur_value
      :type:  int

      the possible address, or value the cursor is positioned on



   .. py:attribute:: cur_func
      :type:  func_t *

      the current function



   .. py:attribute:: cur_fchunk
      :type:  func_t *

      the current function chunk



   .. py:attribute:: cur_seg
      :type:  segment_t *

      the current segment



   .. py:attribute:: cur_sel
      :type:  action_ctx_base_cur_sel_t

      the currently selected range. also see ACF_HAS_SELECTION



   .. py:attribute:: regname
      :type:  str

      register name (if widget_type == BWN_CPUREGS and context menu opened on register)



   .. py:attribute:: focus
      :type:  TWidget *

      The focused widget in case it is not the 'form' itself (e.g., the 'quick filter' input in choosers.)



   .. py:attribute:: graph
      :type:  interactive_graph_t *

      the current graph (if in a graph view)



   .. py:attribute:: graph_selection
      :type:  screen_graph_selection_t *

      the current graph selection (if in a graph view)



   .. py:attribute:: hovered
      :type:  selection_item_t const *

      the current item being hovered (if in a graph view)



   .. py:attribute:: dirtree_selection
      :type:  dirtree_selection_t *

      the current dirtree_t selection (if applicable)



   .. py:attribute:: type_ref
      :type:  til_type_ref_t *

      a reference to the current type (if 'widget' is a type listing widget; nullptr otherwise)



   .. py:attribute:: cur_extracted_ea


   .. py:attribute:: form


   .. py:attribute:: form_type


   .. py:attribute:: form_title


.. py:data:: ACF_HAS_SELECTION

   there is currently a valid selection


.. py:data:: ACF_XTRN_EA

   cur_ea is in 'externs' segment


.. py:data:: ACF_HAS_FIELD_DIRTREE_SELECTION

   'dirtree_selection' field is present


.. py:data:: ACF_HAS_SOURCE

   'source' field is present


.. py:data:: ACF_HAS_TYPE_REF

   'type_ref' field is present


.. py:data:: AHF_VERSION

   action handler version (used by action_handler_t::flags)


.. py:data:: AHF_VERSION_MASK

   mask for action_handler_t::flags


.. py:class:: action_desc_t(name: str, label: str, handler: PyObject *, shortcut: str = None, tooltip: str = None, icon: int = -1, flags: int = 0)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: cb
      :type:  int

      size of this structure



   .. py:attribute:: name
      :type:  str

      the internal name of the action; must be unique. a way to reduce possible conflicts is to prefix it with some specific prefix. E.g., "myplugin:doSthg". 
              



   .. py:attribute:: label
      :type:  str

      the label of the action, possibly with an accelerator key definition (e.g., "~J~ump to operand") 
              



   .. py:attribute:: owner
      :type:  void const *

      either the plugin_t, or plugmod_t responsible for registering the action. Can be nullptr Please see ACTION_DESC_LITERAL_PLUGMOD 
              



   .. py:attribute:: shortcut
      :type:  str

      an optional shortcut definition. E.g., "Ctrl+Enter"



   .. py:attribute:: tooltip
      :type:  str

      an optional tooltip for the action



   .. py:attribute:: icon
      :type:  int

      an optional icon ID to use



   .. py:attribute:: flags
      :type:  int

      See Action flags.



.. py:data:: ADF_OWN_HANDLER

   handler is owned by the action; it'll be destroyed when the action is unregistered. Use DYNACTION_DESC_LITERAL to set this bit. 
           


.. py:data:: ADF_NO_UNDO

   the action does not create an undo point. useful for actions that do not modify the database. 
           


.. py:data:: ADF_OT_MASK

   Owner type mask.


.. py:data:: ADF_OT_PLUGIN

   Owner is a plugin_t.


.. py:data:: ADF_OT_PLUGMOD

   Owner is a plugmod_t.


.. py:data:: ADF_OT_PROCMOD

   Owner is a procmod_t.


.. py:data:: ADF_GLOBAL

   Register the action globally, so that it's available even if no IDB is present 
           


.. py:data:: ADF_NO_HIGHLIGHT

   After activating, do not update the highlight according to what's under the cursor (listings only.) 
           


.. py:data:: ADF_CHECKABLE

   action is checkable


.. py:data:: ADF_CHECKED

   starts in a checked state (requires ADF_CHECKABLE)


.. py:data:: AA_NONE

   no effect


.. py:data:: AA_LABEL

   see update_action_label()


.. py:data:: AA_SHORTCUT

   see update_action_shortcut()


.. py:data:: AA_TOOLTIP

   see update_action_tooltip()


.. py:data:: AA_ICON

   see update_action_icon()


.. py:data:: AA_STATE

   see update_action_state()


.. py:data:: AA_CHECKABLE

   see update_action_checkable()


.. py:data:: AA_CHECKED

   see update_action_checked()


.. py:data:: AA_VISIBILITY

   see update_action_visibility()


.. py:function:: cancel_exec_request(req_id: int) -> bool

   Try to cancel an asynchronous exec request (::ui_cancel_exec_request). 
           
   :param req_id: request id
   :returns: true: successfully canceled
   :returns: false: request has already been processed.


.. py:function:: cancel_thread_exec_requests(tid: __qthread_t) -> int

   Try to cancel asynchronous exec requests created by the specified thread. 
           
   :param tid: thread id
   :returns: number of the canceled requests.


.. py:function:: set_execute_sync_availability(tid: __qthread_t, availability: execute_sync_availability_t) -> execute_sync_availability_t

   Set the availability of the execute_sync functionality for the given thread
   Setting it to `esa_unavailable` will cause the existing requests for this thread to be cancelled. Setting it to `esa_release` will clear the status for this thread, and should be issued right before a call to `qthread_free` is issued.

   :param tid: thread id
   :param availability: the availability
   :returns: the previous availability


.. py:function:: get_synced_group(w: TWidget const *) -> synced_group_t const *

   Get the group of widgets/registers this view is synchronized with 
           
   :param w: the widget
   :returns: the group of widgets/registers, or nullptr


.. py:function:: banner(wait: int) -> bool

   Show a banner dialog box (ui_banner). 
           
   :param wait: time to wait before closing
   :returns: 1: ok
   :returns: 0: esc was pressed


.. py:function:: is_msg_inited() -> bool

   Can we use msg() functions?


.. py:function:: refresh_idaview() -> None

   Refresh marked windows (ui_refreshmarked)


.. py:function:: refresh_idaview_anyway() -> None

   Refresh all disassembly views (ui_refresh), forces an immediate refresh. Please consider request_refresh() instead 
           


.. py:function:: analyzer_options() -> None

   Allow the user to set analyzer options. (show a dialog box) (ui_analyzer_options)


.. py:function:: get_screen_ea() -> ida_idaapi.ea_t

   Get the address at the screen cursor (ui_screenea)


.. py:function:: get_opnum() -> int

   Get current operand number, -1 means no operand (ui_get_opnum)


.. py:function:: get_cursor() -> int *, int *

   Get the cursor position on the screen (ui_get_cursor). 
           
   :returns: true: pointers are filled
   :returns: false: no disassembly window open


.. py:function:: get_output_cursor() -> int *, int *

   Get coordinates of the output window's cursor (ui_get_output_cursor). 
           
   :returns: false: the output window has been destroyed.
   :returns: true: pointers are filled


.. py:function:: get_curline() -> str

   Get current line from the disassemble window (ui_get_curline). 
           
   :returns: cptr current line with the color codes (use tag_remove() to remove the color codes)


.. py:function:: open_url(url: str) -> None

   Open the given url (ui_open_url)


.. py:function:: get_hexdump_ea(hexdump_num: int) -> ida_idaapi.ea_t

   Get the current address in a hex view. 
           
   :param hexdump_num: number of hexview window


.. py:function:: get_key_code(keyname: str) -> ushort

   Get keyboard key code by its name (ui_get_key_code)


.. py:function:: lookup_key_code(key: int, shift: int, is_qt: bool) -> ushort

   Get shortcut code previously created by ui_get_key_code. 
           
   :param key: key constant
   :param shift: modifiers
   :param is_qt: are we using gui version?


.. py:function:: refresh_navband(force: bool) -> None

   Refresh navigation band if changed (ui_refresh_navband). 
           
   :param force: refresh regardless


.. py:function:: refresh_chooser(title: str) -> bool

   Mark a non-modal custom chooser for a refresh (ui_refresh_chooser). 
           
   :param title: title of chooser
   :returns: success


.. py:function:: close_chooser(title: str) -> bool

   Close a non-modal chooser (ui_close_chooser). 
           
   :param title: window title of chooser to close
   :returns: success


.. py:function:: set_dock_pos(src_ctrl, dest_ctrl, orient, left=0, top=0, right=0, bottom=0)

   Sets the dock orientation of a window relatively to another window.

   Use the left, top, right, bottom parameters if DP_FLOATING is used,
   or if you want to specify the width of docked windows.

   :param src_ctrl: Source docking control
   :param dest_ctrl: Destination docking control
   :param orient: One of DP_XXXX constants
   :returns: Boolean

   Example:
       set_dock_pos('Structures', 'Enums', DP_RIGHT) <- docks the Structures window to the right of Enums window


.. py:function:: get_icon_id_by_name(icon_name: str) -> int

   Retrieve the id of the icon by name (ui_get_icon_id_by_name). 
           
   :param icon_name: full name of the icon
   :returns: icon id


.. py:function:: free_custom_icon(icon_id)

   Frees an icon loaded with load_custom_icon()

   :param icon_id: The ID of the icon to free


.. py:function:: unregister_action(name: str) -> bool

   Delete a previously-registered action (ui_unregister_action). 
           
   :param name: name of action
   :returns: success


.. py:function:: create_toolbar(name: str, label: str, before: str = None, flags: int = 0) -> bool

   Create a toolbar with the given name, label and optional position 
           
   :param name: name of toolbar (must be unique)
   :param label: label of toolbar
   :param before: if non-nullptr, the toolbar before which the new toolbar will be inserted
   :param flags: a combination of create toolbar flags, to determine toolbar position
   :returns: success


.. py:function:: delete_toolbar(name: str) -> bool

   Delete an existing toolbar 
           
   :param name: name of toolbar
   :returns: success


.. py:function:: create_menu(name: str, label: str, menupath: str = None) -> bool

   Create a menu with the given name, label and optional position, either in the menubar, or as a submenu. If 'menupath' is non-nullptr, it provides information about where the menu should be positioned. First, IDA will try and resolve the corresponding menu by its name. If such an existing menu is found and is present in the menubar, then the new menu will be inserted in the menubar before it. Otherwise, IDA will try to resolve 'menupath' as it would for attach_action_to_menu() and, if found, add the new menu like so: 
        The new 'My menu' submenu will appear in the 'Comments' submenu
        before the 'Enter comment..." command
        "My menu", "Edit/Comments/Enter comment...");


        The new 'My menu' submenu will appear at the end of the
        'Comments' submenu.
        "My menu", "Edit/Comments/");


           
   :param name: name of menu (must be unique)
   :param label: label of menu
   :param menupath: where should the menu be inserted
   :returns: success


.. py:function:: delete_menu(name: str) -> bool

   Delete an existing menu 
           
   :param name: name of menu
   :returns: success


.. py:function:: attach_action_to_menu(menupath: str, name: str, flags: int = 0) -> bool

   Attach a previously-registered action to the menu (ui_attach_action_to_menu). 
           
   :param menupath: path to the menu item after or before which the insertion will take place. 

   * Example: Debug/StartProcess
   * Whitespace, punctuation are ignored.
   * It is allowed to specify only the prefix of the menu item.
   * Comparison is case insensitive.
   * menupath may start with the following prefixes:
   * [S] - modify the main menu of the structure window
   * [E] - modify the main menu of the enum window
   :param name: the action name
   :param flags: a combination of Set menu flags, to determine menu item position
   :returns: success


.. py:function:: detach_action_from_menu(menupath: str, name: str) -> bool

   Detach an action from the menu (ui_detach_action_from_menu). 
           
   :param menupath: path to the menu item
   :param name: the action name
   :returns: success


.. py:function:: attach_action_to_toolbar(toolbar_name: str, name: str) -> bool

   Attach an action to an existing toolbar (ui_attach_action_to_toolbar). 
           
   :param toolbar_name: the name of the toolbar
   :param name: the action name
   :returns: success


.. py:function:: detach_action_from_toolbar(toolbar_name: str, name: str) -> bool

   Detach an action from the toolbar (ui_detach_action_from_toolbar). 
           
   :param toolbar_name: the name of the toolbar
   :param name: the action name
   :returns: success


.. py:function:: register_and_attach_to_menu(menupath: str, name: str, label: str, shortcut: str, flags: int, handler: action_handler_t *, owner: void *, action_desc_t_flags: int) -> bool

   Helper.
   You are not encouraged to use this, as it mixes flags for both register_action(), and attach_action_to_menu().
   The only reason for its existence is to make it simpler to port existing plugins to the new actions API. 
           


.. py:function:: display_widget(widget: TWidget *, options: int, dest_ctrl: str = None) -> None

   Display a widget, dock it if not done before 
           
   :param widget: widget to display
   :param options: Widget open flags
   :param dest_ctrl: where to dock: if nullptr or invalid then use the active docker if there is not create a new tab relative to current active tab


.. py:function:: close_widget(widget: TWidget *, options: int) -> None

   Close widget (ui_close_widget, only gui version). 
           
   :param widget: pointer to the widget to close
   :param options: Form close flags


.. py:function:: activate_widget(widget: TWidget *, take_focus: bool) -> None

   Activate widget (only gui version) (ui_activate_widget). 
           
   :param widget: existing widget to display
   :param take_focus: give focus to given widget


.. py:function:: find_widget(caption: str) -> TWidget *

   Find widget with the specified caption (only gui version) (ui_find_widget). NB: this callback works only with the tabbed widgets! 
           
   :param caption: title of tab, or window title if widget is not tabbed
   :returns: pointer to the TWidget, nullptr if none is found


.. py:function:: get_current_widget() -> TWidget *

   Get a pointer to the current widget (ui_get_current_widget).


.. py:function:: get_widget_type(widget: TWidget *) -> twidget_type_t

   Get the type of the TWidget * (ui_get_widget_type).


.. py:function:: get_widget_title(widget: TWidget *) -> str

   Get the TWidget's title (ui_get_widget_title).


.. py:function:: custom_viewer_jump(v: TWidget *, loc: lochist_entry_t const &, flags: int = 0) -> bool

   Append 'loc' to the viewer's history, and cause the viewer to display it. 
           
   :param v: (TWidget *)
   :param loc: (const lochist_entry_t &)
   :param flags: (uint32) or'ed combination of CVNF_* values
   :returns: success


.. py:function:: ea_viewer_history_push_and_jump(v: TWidget *, ea: ida_idaapi.ea_t, x: int, y: int, lnnum: int) -> bool

   Push current location in the history and jump to the given location (ui_ea_viewer_history_push_and_jump). This will jump in the given ea viewer and also in other synchronized views. 
           
   :param v: ea viewer
   :param ea: jump destination
   :param x: coords on screen
   :param y: coords on screen
   :param lnnum: desired line number of given address


.. py:function:: get_ea_viewer_history_info(nback: int *, nfwd: int *, v: TWidget *) -> bool

   Get information about what's in the history (ui_ea_viewer_history_info). 
           
   :param nback: number of available back steps
   :param nfwd: number of available forward steps
   :param v: ea viewer
   :returns: false: if the given ea viewer does not exist
   :returns: true: otherwise


.. py:function:: refresh_custom_viewer(custom_viewer: TWidget *) -> None

   Refresh custom ida viewer (ui_refresh_custom_viewer)


.. py:function:: repaint_custom_viewer(custom_viewer: TWidget *) -> None

   Repaint the given widget immediately (ui_repaint_qwidget)


.. py:function:: jumpto(*args) -> bool

   This function has the following signatures:

       0. jumpto(ea: ida_idaapi.ea_t, opnum: int=-1, uijmp_flags: int=UIJMP_ACTIVATE) -> bool
       1. jumpto(custom_viewer: TWidget *, place: place_t *, x: int, y: int) -> bool

   # 0: jumpto(ea: ida_idaapi.ea_t, opnum: int=-1, uijmp_flags: int=UIJMP_ACTIVATE) -> bool

   Jump to the specified address (ui_jumpto). 
           
   :returns: success

   # 1: jumpto(custom_viewer: TWidget *, place: place_t *, x: int, y: int) -> bool

   Set cursor position in custom ida viewer. 
           
   :returns: success


.. py:function:: get_custom_viewer_place(custom_viewer: TWidget *, mouse: bool) -> int *, int *

   Get current place in a custom viewer (ui_get_curplace).
   See also the more complete get_custom_viewer_location()

   :param custom_viewer: view
   :param mouse: mouse position (otherwise cursor position)


.. py:function:: get_custom_viewer_location(*args) -> bool

   Get information about the current location in a listing

   This function has the following signatures:

       1. get_custom_viewer_location(out_entry: ida_moves.lochist_entry_t, widget: TWidget, mouse: bool=False) -> bool
       2. get_custom_viewer_location(out_entry: ida_kernwin.listing_location_t, widget: TWidget, flags: int=0) -> bool

   The 2nd form is a superset of the 1st, and retrieves
   the text (and tags) of the text.


.. py:function:: is_idaq()

   Returns True or False depending if IDAPython is hosted by IDAQ


.. py:function:: attach_action_to_popup(widget: TWidget *, popup_handle: TPopupMenu *, name: str, popuppath: str = None, flags: int = 0) -> bool

   Insert a previously-registered action into the widget's popup menu (ui_attach_action_to_popup). This function has two "modes": 'single-shot', and 'permanent'. 
           
   :param widget: target widget
   :param popup_handle: target popup menu
   * if non-nullptr, the action is added to this popup menu invocation (i.e., 'single-shot')
   * if nullptr, the action is added to a list of actions that should always be present in context menus for this widget (i.e., 'permanent'.)
   :param name: action name
   :param popuppath: can be nullptr
   :param flags: a combination of SETMENU_ flags (see Set menu flags)
   :returns: success


.. py:function:: detach_action_from_popup(widget: TWidget *, name: str) -> bool

   Remove a previously-registered action, from the list of 'permanent' context menu actions for this widget (ui_detach_action_from_popup). This only makes sense if the action has been added to 'widget's list of permanent popup actions by calling attach_action_to_popup in 'permanent' mode. 
           
   :param widget: target widget
   :param name: action name


.. py:function:: update_action_label(name: str, label: str) -> bool

   Update an action's label (ui_update_action_attr). 
           
   :param name: action name
   :param label: new label
   :returns: success


.. py:function:: update_action_shortcut(name: str, shortcut: str) -> bool

   Update an action's shortcut (ui_update_action_attr). 
           
   :param name: action name
   :param shortcut: new shortcut
   :returns: success


.. py:function:: update_action_tooltip(name: str, tooltip: str) -> bool

   Update an action's tooltip (ui_update_action_attr). 
           
   :param name: action name
   :param tooltip: new tooltip
   :returns: success


.. py:function:: update_action_icon(name: str, icon: int) -> bool

   Update an action's icon (ui_update_action_attr). 
           
   :param name: action name
   :param icon: new icon id
   :returns: success


.. py:function:: update_action_state(name: str, state: action_state_t) -> bool

   Update an action's state (ui_update_action_attr). 
           
   :param name: action name
   :param state: new state
   :returns: success


.. py:function:: update_action_checkable(name: str, checkable: bool) -> bool

   Update an action's checkability (ui_update_action_attr). 
           
   :param name: action name
   :param checkable: new checkability
   :returns: success


.. py:function:: update_action_checked(name: str, checked: bool) -> bool

   Update an action's checked state (ui_update_action_attr). 
           
   :param name: action name
   :param checked: new checked state
   :returns: success


.. py:function:: update_action_visibility(name: str, visible: bool) -> bool

   Update an action's visibility (ui_update_action_attr). 
           
   :param name: action name
   :param visible: new visibility
   :returns: success


.. py:function:: get_action_label(name: str) -> str

   Get an action's label (ui_get_action_attr). 
           
   :param name: the action name
   :returns: success


.. py:function:: get_action_shortcut(name: str) -> str

   Get an action's shortcut (ui_get_action_attr). 
           
   :param name: the action name
   :returns: success


.. py:function:: get_action_tooltip(name: str) -> str

   Get an action's tooltip (ui_get_action_attr). 
           
   :param name: the action name
   :returns: success


.. py:function:: get_action_icon(name: str) -> int *

   Get an action's icon (ui_get_action_attr). 
           
   :param name: the action name
   :returns: success


.. py:function:: get_action_state(name: str) -> action_state_t *

   Get an action's state (ui_get_action_attr). 
           
   :param name: the action name
   :returns: success


.. py:function:: get_action_checkable(name: str) -> bool *

   Get an action's checkability (ui_get_action_attr). 
           
   :param name: the action name
   :returns: success


.. py:function:: get_action_checked(name: str) -> bool *

   Get an action's checked state (ui_get_action_attr). 
           
   :param name: the action name
   :returns: success


.. py:function:: get_action_visibility(name: str) -> bool *

   Get an action's visibility (ui_get_action_attr). 
           
   :param name: the action name
   :returns: success


.. py:function:: set_custom_viewer_qt_aware(custom_viewer: TWidget *) -> bool

   Allow the given viewer to interpret Qt events (ui_set_custom_viewer_handler)


.. py:function:: get_custom_viewer_curline(custom_viewer: TWidget *, mouse: bool) -> str

   Get current line of custom viewer (ui_get_custom_viewer_curline). The returned line contains color codes
   See also the more powerful get_custom_viewer_location()

   :param custom_viewer: view
   :param mouse: mouse position (otherwise cursor position)
   :returns: pointer to contents of current line


.. py:function:: get_custom_viewer_place_xcoord(custom_viewer: TWidget *, pline: place_t, pitem: place_t) -> int

   Get the X position of the item, in the line 
           
   :param custom_viewer: the widget
   :param pline: a place corresponding to the line
   :param pitem: a place corresponding to the item
   :returns: -1: if 'pitem' is not included in the line
   :returns: -2: if 'pitem' points at the entire line
   :returns: >=: 0 for the X coordinate within the pline, where pitem points


.. py:function:: get_user_input_event(out: input_event_t) -> bool

   Get the current user input event (mouse button press, key press, ...) It is sometimes desirable to be able to tell when a certain situation happens (e.g., 'view_curpos' gets triggered); this function exists to provide that context (GUI version only) 
           
   :param out: the input event data
   :returns: false if we are not currently processing a user input event


.. py:function:: get_output_curline(mouse: bool) -> str

   Get current line of output window (ui_get_output_curline). 
           
   :param mouse: current for mouse pointer?
   :returns: false if output contains no text


.. py:function:: get_output_selected_text() -> str

   Returns selected text from output window (ui_get_output_selected_text). 
           
   :returns: true if there is a selection


.. py:function:: get_current_viewer() -> TWidget *

   Get current ida viewer (idaview or custom viewer) (ui_get_current_viewer)


.. py:function:: get_last_widget(*args) -> TWidget *

   Get last ida viewer (idaview or custom viewer) (ui_get_last_widget) 
           
   :param mask: an OR'ed set of IWID_* to limit the search to
   :returns: the viewer, if found


.. py:function:: prompt_function_prototype(out_tif: tinfo_t, pfn: func_t *, tif: tinfo_t, name: str) -> str

   Open function prototype editor to edit function type and create new type. Allows to change the function prototype either in the "old" one-liner mode or in the new multi-line editor, which supports shortcuts, etc. Note: changes will not apply! It is the caller's job to apply the resulting out_tif. Parameters: 
           
   :param out_tif: - (tinfo_t *) tif for created type
   :param pfn: - (func_t *) editing function
   :param tif: - (tinfo_t *) current function type
   :param name: - (const char *) function name
   :returns: true if new type created successfully


.. py:function:: parse_tagged_line_sections(out: tagged_line_sections_t, line: str) -> bool

   Collect tagged sections in a color-tagged line (produced by `place_t::generate`)

   :param out: sections storage
   :param line: input line
   :returns: success


.. py:function:: get_view_renderer_type(v: TWidget *) -> tcc_renderer_type_t

   Get the type of renderer currently in use in the given view (ui_get_renderer_type)


.. py:function:: set_view_renderer_type(v: TWidget *, rt: tcc_renderer_type_t) -> None

   Set the type of renderer to use in a view (ui_set_renderer_type)


.. py:function:: create_empty_widget(title: str, icon: int = -1) -> TWidget *

   Create an empty widget, serving as a container for custom user widgets 
           


.. py:function:: msg_clear() -> None

   Clear the "Output" window.


.. py:function:: msg_save(path: str) -> bool

   Save the "Output" window contents into a file 
           
   :param path: The path of the file to save the contents into. An empty path means that the user will be prompted for the destination and, if the file already exists, the user will be asked to confirm before overriding its contents. Upon return, 'path' will contain the path that the user chose.
   :returns: success


.. py:function:: get_active_modal_widget() -> TWidget *

   Get the current, active modal TWidget instance. Note that in this context, the "wait dialog" is not considered: this function will return nullptr even if it is currently shown. 
           
   :returns: TWidget * the active modal widget, or nullptr


.. py:function:: get_navband_pixel(ea)

   Maps an address, onto a pixel coordinate within the navigation band

   :param ea: The address to map
   :returns: a list [pixel, is_vertical]


.. py:function:: get_navband_ea(pixel: int) -> ida_idaapi.ea_t

   Translate the pixel position on the navigation band, into an address.


.. py:function:: get_window_id(name: str = None) -> void *

   Get the system-specific window ID (GUI version only) 
           
   :param name: name of the window (nullptr means the main IDA window)
   :returns: the low-level window ID


.. py:function:: is_idaview(v: TWidget *) -> bool

   Is the given custom view an idaview? (ui_is_idaview)


.. py:function:: read_selection(v, p1, p2)

   Read the user selection, and store its information in p1 (from) and p2 (to).

   This can be used as follows:


   >>> p1 = ida_kernwin.twinpos_t()
   p2 = ida_kernwin.twinpos_t()
   view = ida_kernwin.get_current_viewer()
   ida_kernwin.read_selection(view, p1, p2)


   At that point, p1 and p2 hold information for the selection.
   But, the 'at' property of p1 and p2 is not properly typed.
   To specialize it, call #place() on it, passing it the view
   they were retrieved from. Like so:


   >>> place0 = p1.place(view)
   place1 = p2.place(view)


   This will effectively "cast" the place into a specialized type,
   holding proper information, depending on the view type (e.g.,
   disassembly, structures, enums, ...)

   :param v: The view to retrieve the selection for.
   :param p1: Storage for the "from" part of the selection.
   :param p2: Storage for the "to" part of the selection.
   :returns: a bool value indicating success.


.. py:function:: read_range_selection(v: TWidget *) -> ea_t *, ea_t *

   Get the address range for the selected range boundaries, this is the convenient function for read_selection() 
           
   :param v: view, nullptr means the last active window containing addresses
   :returns: 0: no range is selected
   :returns: 1: ok, start ea and end ea are filled


.. py:function:: unmark_selection() -> None

   Unmark selection (ui_unmarksel)


.. py:function:: create_code_viewer(custview: TWidget *, flags: int = 0, parent: TWidget * = None) -> TWidget *

   Create a code viewer (ui_create_code_viewer). A code viewer contains on the left side a widget representing the line numbers, and on the right side, the child widget passed as parameter. It will inherit its title from the child widget.

   :param custview: the custom view to be added
   :param flags: Code viewer flags
   :param parent: widget to contain the new code viewer


.. py:function:: set_code_viewer_handler(code_viewer: TWidget *, handler_id: custom_viewer_handler_id_t, handler_or_data: void *) -> void *

   Set a handler for a code viewer event (ui_set_custom_viewer_handler). 
           
   :param code_viewer: the code viewer
   :param handler_id: one of CDVH_ in custom_viewer_handler_id_t
   :param handler_or_data: can be a handler or data. see examples in Functions: custom viewer handlers
   :returns: old value of the handler or data


.. py:function:: set_code_viewer_user_data(code_viewer: TWidget *, ud: void *) -> bool

   Set the user data on a code viewer (ui_set_custom_viewer_handler).


.. py:function:: get_viewer_user_data(viewer: TWidget *) -> void *

   Get the user data from a custom viewer (ui_get_viewer_user_data)


.. py:function:: get_viewer_place_type(viewer: TWidget *) -> tcc_place_type_t

   Get the type of place_t instances a viewer uses & creates (ui_get_viewer_place_type).


.. py:function:: set_code_viewer_line_handlers(code_viewer: TWidget *, click_handler: code_viewer_lines_click_t *, popup_handler: code_viewer_lines_click_t *, dblclick_handler: code_viewer_lines_click_t *, drawicon_handler: code_viewer_lines_icon_t *, linenum_handler: code_viewer_lines_linenum_t *) -> None

   Set handlers for code viewer line events. Any of these handlers may be nullptr 
           


.. py:function:: set_code_viewer_lines_icon_margin(code_viewer: TWidget *, margin: int) -> bool

   Set space allowed for icons in the margin of a code viewer (ui_set_custom_viewer_handler).


.. py:function:: set_code_viewer_lines_alignment(code_viewer: TWidget *, align: int) -> bool

   Set alignment for lines in a code viewer (ui_set_custom_viewer_handler).


.. py:function:: set_code_viewer_lines_radix(code_viewer: TWidget *, radix: int) -> bool

   Set radix for values displayed in a code viewer (ui_set_custom_viewer_handler).


.. py:function:: set_code_viewer_is_source(code_viewer: TWidget *) -> bool

   Specify that the given code viewer is used to display source code (ui_set_custom_viewer_handler).


.. py:function:: get_tab_size(path: str) -> int

   Get the size of a tab in spaces (ui_get_tab_size). 
           
   :param path: the path of the source view for which the tab size is requested.
   * if nullptr, the default size is returned.


.. py:function:: clr_cancelled() -> None

   Clear "Cancelled" flag (ui_clr_cancelled)


.. py:function:: set_cancelled() -> None

   Set "Cancelled" flag (ui_set_cancelled)


.. py:function:: user_cancelled() -> bool

   Test the cancellation flag (ui_test_cancelled). 
           
   :returns: true: Cancelled, a message is displayed
   :returns: false: Not cancelled


.. py:function:: ui_load_new_file(temp_file: str, filename: str, pli: linput_t **, neflags: ushort, ploaders: load_info_t **) -> bool

   Display a load file dialog and load file (ui_load_file). 
           
   :param temp_file: name of the file with the extracted archive member.
   :param filename: the name of input file as is, library or archive name
   :param pli: loader input source, may be changed to point to temp_file
   :param neflags: combination of NEF_... bits (see Load file flags)
   :param ploaders: list of loaders which accept file, may be changed for loaders of temp_file
   :returns: true: file was successfully loaded
   :returns: false: otherwise


.. py:function:: ui_run_debugger(dbgopts: str, exename: str, argc: int, argv: char const *const *) -> bool

   Load a debugger plugin and run the specified program (ui_run_dbg). 
           
   :param dbgopts: value of the -r command line switch
   :param exename: name of the file to run
   :param argc: number of arguments for the executable
   :param argv: argument vector
   :returns: success


.. py:function:: load_dbg_dbginfo(*args) -> bool

   Load debugging information from a file. 
           
   :param path: path to file
   :param li: loader input. if nullptr, check DBG_NAME_KEY
   :param base: loading address
   :param verbose: dump status to message window


.. py:function:: add_idc_hotkey(hotkey: str, idcfunc: str) -> int

   Add hotkey for IDC function (ui_add_idckey). 
           
   :param hotkey: hotkey name
   :param idcfunc: IDC function name
   :returns: IDC hotkey error codes


.. py:function:: set_highlight(viewer: TWidget *, str: set_highlight.str, flags: int) -> bool

   Set the highlighted identifier in the viewer (ui_set_highlight). 
           
   :param viewer: the viewer
   :param str: the text to match, or nullptr to remove current
   :param flags: combination of HIF_... bits (see set_highlight flags)
   :returns: false if an error occurred


.. py:function:: open_exports_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the exports window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_imports_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the exports window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_names_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the names window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_funcs_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the 'Functions' window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_strings_window(*args) -> TWidget *

   Open the 'Strings' window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :param selstart: only display strings that occur within this range
   :param selend: only display strings that occur within this range
   :returns: pointer to resulting window


.. py:function:: open_segments_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the segments window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_segregs_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the segment registers window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_selectors_window() -> TWidget *

   Open the selectors window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_signatures_window() -> TWidget *

   Open the signatures window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_tils_window() -> TWidget *

   Open the type libraries window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_loctypes_window(ordinal: int, cursor: tif_cursor_t const * = None) -> TWidget *

   Open the local types window (ui_open_builtin2). 
           
   :param ordinal: ordinal of type to select by default
   :param cursor: cursor to the type member
   :returns: pointer to resulting window


.. py:function:: open_til_view_window(tif: tinfo_t, cursor: tif_cursor_t const * = None) -> TWidget *

   Open the sub-til window (ui_open_builtin2). 
           
   :param tif: tif to open
   :param cursor: cursor to the type member
   :returns: pointer to resulting window


.. py:function:: open_calls_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the function calls window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_problems_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the problems window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_bpts_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the breakpoints window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_threads_window() -> TWidget *

   Open the threads window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_modules_window() -> TWidget *

   Open the modules window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_trace_window() -> TWidget *

   Open the tracing window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_stack_window() -> TWidget *

   Open the call stack window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_xrefs_window(ea: ida_idaapi.ea_t) -> TWidget *

   Open the cross references window (ui_open_builtin). 
           
   :param ea: index of entry to select by default
   :returns: pointer to resulting window


.. py:function:: open_frame_window(pfn: func_t *, offset: int) -> TWidget *

   Open the frame window for the given function (ui_open_builtin). 
           
   :param pfn: function to analyze
   :param offset: offset where the cursor is placed
   :returns: pointer to resulting window if 'pfn' is a valid function and the window was displayed, 
    nullptr otherwise


.. py:function:: open_navband_window(ea: ida_idaapi.ea_t, zoom: int) -> TWidget *

   Open the navigation band window (ui_open_builtin). 
           
   :param ea: sets the address of the navband arrow
   :param zoom: sets the navband zoom level
   :returns: pointer to resulting window


.. py:function:: open_disasm_window(window_title: str, ranges: rangevec_t = None) -> TWidget *

   Open a disassembly view (ui_open_builtin). 
           
   :param window_title: title of view to open
   :param ranges: if != nullptr, then display a flow chart with the specified ranges
   :returns: pointer to resulting window


.. py:function:: open_hexdump_window(window_title: str) -> TWidget *

   Open a hexdump view (ui_open_builtin). 
           
   :param window_title: title of view to open
   :returns: pointer to resulting window


.. py:function:: open_notepad_window() -> TWidget *

   Open the notepad window (ui_open_builtin). 
           
   :returns: pointer to resulting window


.. py:function:: open_bookmarks_window(w: TWidget *) -> TWidget *

   Open the bookmarks window (ui_open_builtin). 
           
   :param w: The widget for which the bookmarks will open. For example, this can be an IDAView, or Enums view, etc.
   :returns: pointer to resulting window


.. py:function:: sync_sources(what: sync_source_t, _with: sync_source_t, sync: bool) -> bool

   [Un]synchronize sources 
           
   :returns: success


.. py:function:: choose_til() -> str

   Choose a type library (ui_choose, chtype_idatil). 
           
   :returns: true: 'buf' was filled with the name of the selected til
   :returns: false: otherwise


.. py:function:: choose_entry(title: str) -> ida_idaapi.ea_t

   Choose an entry point (ui_choose, chtype_entry). 
           
   :param title: chooser title
   :returns: ea of selected entry point, BADADDR if none selected


.. py:function:: choose_name(title: str) -> ida_idaapi.ea_t

   Choose a name (ui_choose, chtype_name). 
           
   :param title: chooser title
   :returns: ea of selected name, BADADDR if none selected


.. py:function:: choose_stkvar_xref(pfn: func_t *, srkvar_tid: tid_t) -> ida_idaapi.ea_t

   Choose an xref to a stack variable (ui_choose, chtype_name). 
           
   :param pfn: function
   :param srkvar_tid: frame variable TID
   :returns: ea of the selected xref, BADADDR if none selected


.. py:function:: choose_xref(to: ida_idaapi.ea_t) -> ida_idaapi.ea_t

   Choose an xref to an address (ui_choose, chtype_xref). 
           
   :param to: referenced address
   :returns: ea of selected xref, BADADDR if none selected


.. py:function:: choose_enum(out: tinfo_t, title: str, default_ord: int) -> bool

   Choose an enum (ui_choose, chtype_enum). 
           
   :param out: the selected enum type
   :param title: chooser title
   :param default_ord: ordinal of enum to select by default
   :returns: true: the selected type is in OUT
   :returns: false: nothing was selected


.. py:function:: choose_enum_by_value(out: tinfo_t, title: str, default_ord: int, value: uint64, nbytes: int) -> uchar *

   Choose an enum, restricted by value & size (ui_choose, chtype_enum_by_value_and_size). If the given value cannot be found initially, this function will ask if the user would like to import a standard enum. 
           
   :param out: the selected enum type
   :param title: chooser title
   :param default_ord: ordinal of enum to select by default
   :param value: value to search for
   :param nbytes: size of value
   :returns: true: the selected type is in OUT
   :returns: false: nothing was selected


.. py:function:: choose_func(title: str, default_ea: ida_idaapi.ea_t) -> func_t *

   Choose a function (ui_choose, chtype_func). 
           
   :param title: chooser title
   :param default_ea: ea of function to select by default
   :returns: pointer to function that was selected, nullptr if none selected


.. py:function:: choose_segm(title: str, default_ea: ida_idaapi.ea_t) -> segment_t *

   Choose a segment (ui_choose, chtype_segm). 
           
   :param title: chooser title
   :param default_ea: ea of segment to select by default
   :returns: pointer to segment that was selected, nullptr if none selected


.. py:function:: choose_struct(out: tinfo_t, title: str) -> bool

   Choose a structure (ui_choose, chtype_struct). 
           
   :param out: the selected structure type
   :param title: chooser title
   :returns: true: the selected type is in OUT
   :returns: false: nothing was selected


.. py:function:: choose_srcp(title: str) -> sreg_range_t *

   Choose a segment register change point (ui_choose, chtype_srcp). 
           
   :param title: chooser title
   :returns: pointer to segment register range of selected change point, nullptr if none selected


.. py:function:: get_chooser_obj(chooser_caption: str) -> void *

   Get the underlying object of the specified chooser (ui_get_chooser_obj).
   This attemps to find the choser by its title and, if found, returns the result of calling its chooser_base_t::get_chooser_obj() method.

   :returns: the object that was used to create the chooser


.. py:function:: get_chooser_rows(out: chooser_row_info_vec_t, chooser_caption: str, what: size_t) -> bool

   Get the chooser contents corresponding to the rows indicated by "what". 
           
   :param out: A vector of chooser_row_info_t, one entry per returned row.
   :param chooser_caption: The caption that identifies the desired chooser.
   :param what: Either one of the GCRF_ flags, or a row index.
   :returns: Success.


.. py:function:: enable_chooser_item_attrs(chooser_caption: str, enable: bool) -> bool

   Enable item-specific attributes for chooser items (ui_enable_chooser_item_attrs). For example: color list items differently depending on a criterium. 
   If enabled, the chooser will generate ui_get_chooser_item_attrs 
   events that can be intercepted by a plugin to modify the item attributes. 
   This event is generated only in the GUI version of IDA. 
   Specifying CH_ATTRS bit at the chooser creation time has the same effect. 
           
   :returns: success


.. py:function:: replace_wait_box(*args) -> None

   Replace the label of "Please wait dialog box".


.. py:function:: beep(beep_type: beep_t = beep_default) -> None

   Issue a beeping sound (ui_beep). 
           
   :param beep_type: beep_t


.. py:function:: display_copyright_warning() -> bool

   Display copyright warning (ui_copywarn). 
           
   :returns: yes/no


.. py:function:: ask_for_feedback(*args) -> None

   Show a message box asking to send the input file to [support@hex-rays.com](mailto:support@hex-rays.com). 
           
   :param format: the reason why the input file is bad


.. py:function:: info(*args) -> ssize_t

.. py:function:: nomem(*args) -> None

.. py:data:: ASKBTN_YES

   Yes button.


.. py:data:: ASKBTN_NO

   No button.


.. py:data:: ASKBTN_CANCEL

   Cancel button.


.. py:data:: ASKBTN_BTN1

   First (Yes) button.


.. py:data:: ASKBTN_BTN2

   Second (No) button.


.. py:data:: ASKBTN_BTN3

   Third (Cancel) button.


.. py:function:: ask_yn(*args) -> int

   Display a dialog box and get choice from "Yes", "No", "Cancel". 
           
   :param deflt: default choice: one of Button IDs
   :param format: The question in printf() style format
   :returns: the selected button (one of Button IDs). Esc key returns ASKBTN_CANCEL.


.. py:function:: ask_buttons(*args) -> int

   Display a dialog box and get choice from maximum three possibilities (ui_ask_buttons). 
           
   :param Yes: text for the first button
   :param No: text for the second button
   :param Cancel: text for the third button
   :param deflt: default choice: one of Button IDs
   :param format: printf-style format string for question. It may have some prefixes, see below.
   :returns: one of Button IDs specifying the selected button (Esc key returns Cancel/3rd button value)


.. py:data:: HIST_SEG

   segment names


.. py:data:: HIST_CMT

   comments


.. py:data:: HIST_SRCH

   search substrings


.. py:data:: HIST_IDENT

   identifiers. usually CPU register names are forbidden


.. py:data:: HIST_FILE

   file names


.. py:data:: HIST_TYPE

   type declarations


.. py:data:: HIST_CMD

   commands


.. py:data:: HIST_DIR

   directory names (text version only)


.. py:data:: HIST_IDENT2

   identifiers, including CPU register names


.. py:function:: ask_ident2(*args) -> bool

   Display a dialog box and wait for the user to input an identifier. If the user enters a non-valid identifier, this function displays a warning and allows the user to correct it. CPU register names are permitted. 
           
   :param str: qstring to fill. Can contain the default value. Cannot be nullptr.
   :param format: printf() style format string with the question
   :returns: false if the user cancelled the dialog, otherwise returns true.


.. py:function:: ask_file(*args) -> char *

.. py:class:: addon_info_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: cb
      :type:  size_t


   .. py:attribute:: id
      :type:  str


   .. py:attribute:: name
      :type:  str


   .. py:attribute:: producer
      :type:  str


   .. py:attribute:: version
      :type:  str


   .. py:attribute:: url
      :type:  str


   .. py:attribute:: freeform
      :type:  str


   .. py:attribute:: custom_data
      :type:  void const *


   .. py:attribute:: custom_size
      :type:  size_t


.. py:function:: register_addon(info: addon_info_t) -> int

   Register an add-on. Show its info in the About box. For plugins, should be called from init() function (repeated calls with the same product code overwrite previous entries) returns: index of the add-on in the list, or -1 on error 
           


.. py:function:: addon_count() -> int

   Get number of installed addons.


.. py:function:: get_addon_info(id: str, info: addon_info_t) -> bool

   Get info about a registered addon with a given product code. info->cb must be valid! NB: all pointers are invalidated by next call to register_addon or get_addon_info 
           
   :returns: false if not found


.. py:function:: get_addon_info_idx(index: int, info: addon_info_t) -> bool

   Get info about a registered addon with specific index. info->cb must be valid! NB: all pointers are invalidated by next call to register_addon or get_addon_info 
           
   :returns: false if index is out of range


.. py:class:: strarray_t

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:attribute:: code
      :type:  int


   .. py:attribute:: text
      :type:  str


.. py:data:: CLNL_RTRIM

   Remove trailing space characters.


.. py:data:: CLNL_LTRIM

   Remove leading space characters.


.. py:data:: CLNL_FINDCMT

   Search for the comment symbol everywhere in the line, not only at the beginning.


.. py:data:: CLNL_TRIM

.. py:function:: qcleanline(*args) -> str

   Performs some cleanup operations to a line. 
           
   :param buf: string to modify
   :param cmt_char: character that denotes the start of a comment:
   * the entire text is removed if the line begins with this character (ignoring leading spaces)
   * all text after (and including) this character is removed if flag CLNL_FINDCMT is set
   :param flags: a combination of line cleanup flags. defaults to CLNL_TRIM
   :returns: length of line


.. py:function:: strarray(array: strarray_t, array_size: size_t, code: int) -> str

   Find a line with the specified code in the strarray_t array. If the last element of the array has code==0 then it is considered as the default entry. 
   If no default entry exists and the code is not found, strarray() returns "". 
           


.. py:function:: ea2str(ea: ida_idaapi.ea_t) -> str

   Convert linear address to UTF-8 string.


.. py:function:: str2ea(*args) -> uint64 *

   Convert string to linear address. Tries to interpret the string as: 
   1) "current IP" keyword if supported by assembler (e.g. "$" in x86) 
   2) segment:offset expression, where "segment" may be a name or a fixed segment register (e.g. cs, ds) 
   3) just segment name/register (translated to segment's start address) 
   4) a name in the database (or debug name during debugging) 
   5) hexadecimal value without prefix or suffix 
   6) +delta or -delta, where numerical 'delta' is added to or subtracted from 'screen_ea' 
   7) register name (only during debugging) 
   8) if all else fails, try to evaluate 'str' as an IDC expression

   :param str: string to parse
   :param screen_ea: the current address in the disassembly/pseudocode view
   :returns: success


.. py:function:: str2ea_ex(*args) -> uint64 *

   Same as str2ea() but possibly with some steps skipped. 
           
   :param out: the buffer to put the result
   :param str: string to parse
   :param screen_ea: the current address in the disassembly/pseudocode view
   :param flags: see String to address conversion flags
   :returns: success


.. py:data:: S2EAOPT_NOCALC

   don't try to interpret string as IDC (or current extlang) expression


.. py:function:: atoea(str: atoea.str) -> uint64 *

   Convert a number in C notation to an address. decimal: 1234 
   octal: 0123 
   hexadecimal: 0xabcd 
   binary: 0b00101010 
           
   :param str: the string to parse


.. py:data:: IK_CANCEL

.. py:data:: IK_BACK

.. py:data:: IK_TAB

.. py:data:: IK_CLEAR

.. py:data:: IK_RETURN

.. py:data:: IK_SHIFT

.. py:data:: IK_CONTROL

.. py:data:: IK_MENU

.. py:data:: IK_PAUSE

.. py:data:: IK_CAPITAL

.. py:data:: IK_KANA

.. py:data:: IK_ESCAPE

.. py:data:: IK_MODECHANGE

.. py:data:: IK_SPACE

.. py:data:: IK_PRIOR

.. py:data:: IK_NEXT

.. py:data:: IK_END

.. py:data:: IK_HOME

.. py:data:: IK_LEFT

.. py:data:: IK_UP

.. py:data:: IK_RIGHT

.. py:data:: IK_DOWN

.. py:data:: IK_SELECT

.. py:data:: IK_PRINT

.. py:data:: IK_EXECUTE

.. py:data:: IK_SNAPSHOT

.. py:data:: IK_INSERT

.. py:data:: IK_DELETE

.. py:data:: IK_HELP

.. py:data:: IK_LWIN

.. py:data:: IK_RWIN

.. py:data:: IK_APPS

.. py:data:: IK_SLEEP

.. py:data:: IK_NUMPAD0

.. py:data:: IK_NUMPAD1

.. py:data:: IK_NUMPAD2

.. py:data:: IK_NUMPAD3

.. py:data:: IK_NUMPAD4

.. py:data:: IK_NUMPAD5

.. py:data:: IK_NUMPAD6

.. py:data:: IK_NUMPAD7

.. py:data:: IK_NUMPAD8

.. py:data:: IK_NUMPAD9

.. py:data:: IK_MULTIPLY

.. py:data:: IK_ADD

.. py:data:: IK_SEPARATOR

.. py:data:: IK_SUBTRACT

.. py:data:: IK_DECIMAL

.. py:data:: IK_DIVIDE

.. py:data:: IK_F1

.. py:data:: IK_F2

.. py:data:: IK_F3

.. py:data:: IK_F4

.. py:data:: IK_F5

.. py:data:: IK_F6

.. py:data:: IK_F7

.. py:data:: IK_F8

.. py:data:: IK_F9

.. py:data:: IK_F10

.. py:data:: IK_F11

.. py:data:: IK_F12

.. py:data:: IK_F13

.. py:data:: IK_F14

.. py:data:: IK_F15

.. py:data:: IK_F16

.. py:data:: IK_F17

.. py:data:: IK_F18

.. py:data:: IK_F19

.. py:data:: IK_F20

.. py:data:: IK_F21

.. py:data:: IK_F22

.. py:data:: IK_F23

.. py:data:: IK_F24

.. py:data:: IK_NUMLOCK

.. py:data:: IK_SCROLL

.. py:data:: IK_OEM_FJ_MASSHOU

.. py:data:: IK_OEM_FJ_TOUROKU

.. py:data:: IK_LSHIFT

.. py:data:: IK_RSHIFT

.. py:data:: IK_LCONTROL

.. py:data:: IK_RCONTROL

.. py:data:: IK_LMENU

.. py:data:: IK_RMENU

.. py:data:: IK_BROWSER_BACK

.. py:data:: IK_BROWSER_FORWARD

.. py:data:: IK_BROWSER_REFRESH

.. py:data:: IK_BROWSER_STOP

.. py:data:: IK_BROWSER_SEARCH

.. py:data:: IK_BROWSER_FAVORITES

.. py:data:: IK_BROWSER_HOME

.. py:data:: IK_VOLUME_MUTE

.. py:data:: IK_VOLUME_DOWN

.. py:data:: IK_VOLUME_UP

.. py:data:: IK_MEDIA_NEXT_TRACK

.. py:data:: IK_MEDIA_PREV_TRACK

.. py:data:: IK_MEDIA_STOP

.. py:data:: IK_MEDIA_PLAY_PAUSE

.. py:data:: IK_LAUNCH_MAIL

.. py:data:: IK_LAUNCH_MEDIA_SELECT

.. py:data:: IK_LAUNCH_APP1

.. py:data:: IK_LAUNCH_APP2

.. py:data:: IK_OEM_1

.. py:data:: IK_OEM_PLUS

.. py:data:: IK_OEM_COMMA

.. py:data:: IK_OEM_MINUS

.. py:data:: IK_OEM_PERIOD

.. py:data:: IK_OEM_2

.. py:data:: IK_OEM_3

.. py:data:: IK_OEM_4

.. py:data:: IK_OEM_5

.. py:data:: IK_OEM_6

.. py:data:: IK_OEM_7

.. py:data:: IK_OEM_102

.. py:data:: IK_PLAY

.. py:data:: IK_ZOOM

.. py:data:: IK_OEM_CLEAR

.. py:data:: CB_INIT

.. py:data:: CB_YES

.. py:data:: CB_CLOSE

.. py:data:: CB_INVISIBLE

.. py:data:: CB_DESTROYING

.. py:data:: CB_NO

.. py:data:: CB_CANCEL

.. py:function:: get_user_strlist_options(out: strwinsetup_t *) -> None

.. py:function:: del_idc_hotkey(hotkey: str) -> bool

.. py:class:: disasm_text_t(*args)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: push_back(*args) -> disasm_line_t &


   .. py:method:: pop_back() -> None


   .. py:method:: size() -> size_t


   .. py:method:: empty() -> bool


   .. py:method:: at(_idx: size_t) -> disasm_line_t const &


   .. py:method:: qclear() -> None


   .. py:method:: clear() -> None


   .. py:method:: resize(*args) -> None


   .. py:method:: grow(*args) -> None


   .. py:method:: capacity() -> size_t


   .. py:method:: reserve(cnt: size_t) -> None


   .. py:method:: truncate() -> None


   .. py:method:: swap(r: disasm_text_t) -> None


   .. py:method:: extract() -> disasm_line_t *


   .. py:method:: inject(s: disasm_line_t, len: size_t) -> None


   .. py:method:: begin(*args) -> qvector< disasm_line_t >::const_iterator


   .. py:method:: end(*args) -> qvector< disasm_line_t >::const_iterator


   .. py:method:: insert(it: disasm_line_t, x: disasm_line_t) -> qvector< disasm_line_t >::iterator


   .. py:method:: erase(*args) -> qvector< disasm_line_t >::iterator


   .. py:method:: append(x: disasm_line_t) -> None


   .. py:method:: extend(x: disasm_text_t) -> None


   .. py:attribute:: front


   .. py:attribute:: back


.. py:function:: load_custom_icon(file_name=None, data=None, format=None)

   Load an icon from a file (ui_load_custom_icon_file). Also see load_custom_icon(const void *, unsigned int, const char *) 
           
   :param file_name: path to file
   :returns: icon id


.. py:function:: ask_long(defval: int, prompt: str) -> Union[int, None]

   Display a dialog box and wait for the user to input a number

   :param defval: The placeholder value
   :param prompt: The prompt to show
   :returns: the number entered by the user, or None if the dialog was canceled


.. py:function:: ask_addr(defval: ida_idaapi.ea_t, prompt: str) -> Union[ida_idaapi.ea_t, None]

   Display a dialog box and wait for the user to input an address

   :param defval: The placeholder value
   :param prompt: The prompt to show
   :returns: the address entered by the user, or None if the dialog was canceled


.. py:function:: ask_seg(defval: int, prompt: str) -> Union[int, None]

   Display a dialog box and wait for the user to input an segment name.
   This function allows to enter segment register names, segment base
   paragraphs, segment names to denote a segment.

   :param defval: The placeholder value
   :param prompt: The prompt to show
   :returns: the selector of the segment entered by the user, or None if the dialog was canceled


.. py:function:: ask_ident(defval: str, prompt: str) -> bool

   Display a dialog box and wait for the user to input an identifier. If the user enters a non-valid identifier, this function displays a warning and allows the user to correct it. CPU register names are usually forbidden. 
           
   :returns: false if the user cancelled the dialog, otherwise returns true.


.. py:class:: action_handler_t

   Bases: :py:obj:`object`


   .. py:method:: activate(ctx)

      Activate an action. This function implements the core behavior of an action. It is called when the action is triggered, from a menu, from a popup menu, from the toolbar, or programmatically. 
              
      :returns: non-zero: all IDA windows will be refreshed



   .. py:method:: update(ctx)

      Update an action. This is called when the context of the UI changed, and we need to let the action update some of its properties if needed (label, icon, ...)
      In addition, this lets IDA know whether the action is enabled, and when it should be queried for availability again.
      Note: This callback is not meant to change anything in the application's state, except by calling one (or many) of the "update_action_*()" functions on this very action. 
              



.. py:class:: quick_widget_commands_t(callback)

   .. py:attribute:: callback


   .. py:attribute:: cmds
      :value: []



   .. py:method:: add(caption, flags, menu_index, icon, emb, shortcut)


   .. py:method:: populate_popup(widget, popup)


.. py:class:: disabled_script_timeout_t

   Bases: :py:obj:`object`


.. py:data:: SETMENU_IF_ENABLED
   :value: 4


.. py:data:: CH_NOIDB

.. py:data:: BWN_TILVIEW

.. py:data:: IWID_TILVIEW

.. py:data:: BWN_LOCTYPS

.. py:data:: IWID_LOCTYPS

.. py:data:: BWN_DISASMS

.. py:data:: IWID_DISASMS

.. py:data:: CHOOSER_NO_SELECTION

.. py:data:: CHOOSER_MULTI_SELECTION

.. py:data:: CHOOSER_POPUP_MENU

.. py:data:: CHOOSER_MENU_EDIT

.. py:data:: CHOOSER_MENU_JUMP

.. py:data:: CHOOSER_MENU_SEARCH

.. py:function:: choose_find(title: str) -> Union[object, None]

   Retrieve the chooser object by title

   :param title: the chooser title
   :returns: the chooser, or None


.. py:function:: choose_refresh(_self: PyObject *) -> None

.. py:function:: choose_close(_self: PyObject *) -> None

.. py:function:: choose_get_widget(_self: PyObject *) -> TWidget *

.. py:function:: choose_choose(_self: PyObject *) -> PyObject *

.. py:function:: choose_activate(_self: PyObject *) -> None

.. py:function:: choose_create_embedded_chobj(_self: PyObject *) -> PyObject *

.. py:function:: get_chooser_data(title: str, n: int) -> List[str]

   Get the text corresponding to the index N in the chooser data.
   Use -1 to get the header.

   :param title: The chooser title
   :returns: a list of strings, or None


.. py:data:: CH_NOIDB

.. py:class:: Choose(title, cols, flags=0, popup_names=None, icon=-1, x1=-1, y1=-1, x2=-1, y2=-1, deflt=None, embedded=False, width=None, height=None, forbidden_cb=0, flags2=0)

   Bases: :py:obj:`object`


   Chooser wrapper class.

   Some constants are defined in this class.
   Please refer to kernwin.hpp for more information.


   .. py:attribute:: CH_MODAL

      Modal chooser.



   .. py:attribute:: CH_MULTI

      The chooser will allow multi-selection (only for GUI choosers). This bit is set when using the chooser_multi_t structure. 
              



   .. py:attribute:: CH_NOBTNS

      do not display ok/cancel/help/search buttons. Meaningful only for gui modal windows because non-modal windows do not have any buttons anyway. Text mode does not have them neither. 
              



   .. py:attribute:: CH_ATTRS

      generate ui_get_chooser_item_attrs (gui only)



   .. py:attribute:: CH_NOIDB

      use the chooser even without an open database, same as x0=-2



   .. py:attribute:: CH_FORCE_DEFAULT

      if a non-modal chooser was already open, change selection to the default one 
              



   .. py:attribute:: CH_CAN_INS

      allow to insert new items



   .. py:attribute:: CH_CAN_DEL

      allow to delete existing item(s)



   .. py:attribute:: CH_CAN_EDIT

      allow to edit existing item(s)



   .. py:attribute:: CH_CAN_REFRESH

      allow to refresh chooser



   .. py:attribute:: CH_QFLT

      open with quick filter enabled and focused



   .. py:attribute:: CH_QFTYP_SHIFT


   .. py:attribute:: CH_QFTYP_DEFAULT

      set quick filtering type to the possible existing default for this chooser



   .. py:attribute:: CH_QFTYP_NORMAL

      normal (i.e., lexicographical) quick filter type



   .. py:attribute:: CH_QFTYP_WHOLE_WORDS

      whole words quick filter type



   .. py:attribute:: CH_QFTYP_REGEX

      regex quick filter type



   .. py:attribute:: CH_QFTYP_FUZZY

      fuzzy search quick filter type



   .. py:attribute:: CH_QFTYP_MASK


   .. py:attribute:: CH_NO_STATUS_BAR

      don't show a status bar



   .. py:attribute:: CH_RESTORE

      restore floating position if present (equivalent of WOPN_RESTORE) (GUI version only)



   .. py:attribute:: CH_RENAME_IS_EDIT

      triggering a 'edit/rename' (i.e., F2 shortcut) on a cell, should call the edit() callback for the corresponding row. 
              



   .. py:attribute:: CH_BUILTIN_SHIFT


   .. py:attribute:: CH_BUILTIN_MASK

      Mask for builtin chooser numbers. Plugins should not use them.



   .. py:attribute:: CH_HAS_DIRTREE

      The chooser can provide a dirtree_t, meaning a tree-like structure can be provided to the user (instead of a flat table) 
              



   .. py:attribute:: CH_HAS_DIFF

      The chooser can be used in a diffing/merging workflow.



   .. py:attribute:: CHCOL_PLAIN

      plain string



   .. py:attribute:: CHCOL_PATH

      file path. TUI IDA will truncate excessive cell lengths starting at their beginning, and prepending the resulting text with "..." order to leave the filename visible 
              



   .. py:attribute:: CHCOL_HEX

      hexadecimal number



   .. py:attribute:: CHCOL_DEC

      decimal number



   .. py:attribute:: CHCOL_EA

      address



   .. py:attribute:: CHCOL_FNAME

      function name. If a chooser column has this flag set and implements chooser_base_t::get_ea(), rows background colors will be automatically set to match the navigator's "Library function", "Lumina function" and "External symbol" colors 
              



   .. py:attribute:: CHCOL_FORMAT

      column format mask



   .. py:attribute:: CHCOL_DEFHIDDEN

      column should be hidden by default



   .. py:attribute:: CHCOL_DRAGHINT

      the column number that will be used to build hints for the dragging undo label. This should be provided for at most one column for any given chooser. 
              



   .. py:attribute:: CHCOL_INODENAME

      if CH_HAS_DIRTREE has been specified, this instructs the chooser that this column shows the inode name. This should be provided for at most one column for any given chooser. 
              



   .. py:attribute:: NO_SELECTION
      :value: -1


      there is no selected item



   .. py:attribute:: EMPTY_CHOOSER
      :value: -2


      the chooser is initialized



   .. py:attribute:: ALREADY_EXISTS
      :value: -3


      the non-modal chooser with the same data is already open



   .. py:attribute:: NO_ATTR
      :value: -4


      some mandatory attribute is missing



   .. py:attribute:: NOTHING_CHANGED
      :value: 0



   .. py:attribute:: ALL_CHANGED
      :value: 1



   .. py:attribute:: SELECTION_CHANGED
      :value: 2



   .. py:class:: UI_Hooks_Trampoline(v)

      Bases: :py:obj:`UI_Hooks`


      .. py:attribute:: v


      .. py:method:: populating_widget_popup(widget, popup_handle)

         IDA is populating the context menu for a widget. This is your chance to attach_action_to_popup().
         Have a look at ui_finish_populating_widget_popup, if you want to augment the context menu with your own actions after the menu has had a chance to be properly populated by the owning component or plugin (which typically does it on ui_populating_widget_popup.)

         :param widget: (TWidget *)
         :param popup_handle: (TPopupMenu *)
         :param ctx: (const action_activation_ctx_t *)
         :returns: void




   .. py:attribute:: title


   .. py:attribute:: flags
      :value: 0



   .. py:attribute:: flags2
      :value: 0



   .. py:attribute:: cols


   .. py:attribute:: deflt
      :value: None



   .. py:attribute:: popup_names
      :value: None



   .. py:attribute:: icon
      :value: -1



   .. py:attribute:: x1
      :value: -1



   .. py:attribute:: y1
      :value: -1



   .. py:attribute:: x2
      :value: -1



   .. py:attribute:: y2
      :value: -1



   .. py:attribute:: embedded
      :value: False



   .. py:attribute:: width
      :value: None



   .. py:attribute:: height
      :value: None



   .. py:attribute:: forbidden_cb
      :value: 0



   .. py:attribute:: ui_hooks_trampoline
      :value: None



   .. py:method:: Embedded(create_chobj=False)

      Creates an embedded chooser (as opposed to Show())
      :returns: Returns 0 on success or NO_ATTR



   .. py:method:: GetEmbSelection()

      Deprecated. For embedded choosers, the selection is
      available through 'Form.EmbeddedChooserControl.selection'



   .. py:method:: Show(modal=False)

      Activates or creates a chooser window
      :param modal: Display as modal dialog
      :returns: For all choosers it will return NO_ATTR if some mandatory
               attribute is missing. The mandatory attributes are: flags,
               title, cols, OnGetSize(), OnGetLine();
               For modal choosers it will return the selected item index (0-based),
               or NO_SELECTION if no selection,
               or EMPTY_CHOOSER if the OnRefresh() callback returns EMPTY_CHOOSER;
               For non-modal choosers it will return 0
               or ALREADY_EXISTS if the chooser was already open and is active now;



   .. py:method:: Activate()

      Activates a visible chooser



   .. py:method:: Refresh()

      Causes the refresh callback to trigger



   .. py:method:: Close()

      Closes the chooser



   .. py:method:: GetWidget()

      Return the TWidget underlying this view.

      :returns: The TWidget underlying this view, or None.



   .. py:method:: adjust_last_item(n)

      Helper for OnDeleteLine() and OnRefresh() callbacks.
      They can be finished by the following line:
      return [Choose.ALL_CHANGED] + self.adjust_last_item(n)
      :param n: line number of the remaining select item
      :returns: list of selected lines numbers (one element or empty)



   .. py:method:: AddCommand(caption, flags=_ida_kernwin.CHOOSER_POPUP_MENU, menu_index=-1, icon=-1, emb=None, shortcut=None)


   .. py:method:: OnPopup(widget, popup_handle)


   .. py:method:: OnInit()

      Initialize the chooser and populate it.

      This callback is optional



   .. py:method:: OnGetSize()

      Get the number of elements in the chooser.

      This callback is mandatory

      :returns: the number of elements



   .. py:method:: OnGetLine(n)

      Get data for an element

      This callback is mandatory

      :param n: the index to fetch data for
      :returns: a list of strings



   .. py:method:: OnGetIcon(n)

      Get an icon to associate with the first cell of an element

      :param n: index of the element
      :returns: an icon ID



   .. py:method:: OnGetLineAttr(n)

      Get attributes for an element

      :param n: index of the element
      :returns: a tuple (color, flags)



   .. py:method:: OnInsertLine(sel)

      User asked to insert an element

      :param sel: the current selection
      :returns: a tuple (changed, selection)



   .. py:method:: OnDeleteLine(sel)

      User deleted an element

      :param sel: the current selection
      :returns: a tuple (changed, selection)



   .. py:method:: OnEditLine(sel)

      User asked to edit an element.

      :param sel: the current selection
      :returns: a tuple (changed, selection)



   .. py:method:: OnSelectLine(sel)

      User pressed the enter key, or double-clicked a selection

      :param sel: the current selection
      :returns: a tuple (changed, selection)



   .. py:method:: OnSelectionChange(sel)

      Selection changed

      :param sel: the new selection



   .. py:method:: OnRefresh(sel)

      The chooser needs to be refreshed.
      It returns the new positions of the selected items.

      :param sel: the current selection
      :returns: a tuple (changed, selection)



   .. py:method:: OnClose()

      The chooser window is closed.



   .. py:method:: OnGetEA(n)

      Get the address of an element

      When this function returns valid addresses:
        * If any column has the `CHCOL_FNAME` flag, rows will
          be colored according to the attributes of the functions
          who own those addresses (extern, library function,
          Lumina, ... - similar to what the "Functions" widget does)
        * When a selection is present and the user presses `<Enter>`
          (`<Shift+Enter>` if the chooser is modal), IDA will jump
          to that address (through jumpto())
      :param n: element number (0-based)
      :returns: the effective address, ida_idaapi.BADADDR if the element has no address



   .. py:method:: OnGetDirTree()

      Get the dirtree_t that will be used to present a tree-like
      structure to the user (see CH_HAS_DIRTREE)

      :returns: the dirtree_t, or None



   .. py:method:: OnIndexToInode(n)

      Map an element index to a dirtree_t inode

      This callback is mandatory if CH_HAS_DIRTREE is specified

      :param n: index of the element
      :returns: the inode number



   .. py:method:: OnIndexToDiffpos(n)

      Map an element index to a diffpos_t

      This callback is mandatory if CH_HAS_DIFF is specified

      :param n: index of the element
      :returns: the diffpos



   .. py:method:: OnLazyLoadDir(path)

      Callback for lazy-loaded, dirtree-based choosers;
      the function will be called when a folder is expanded and it has
      not been loaded before. The implementation should use the
      given dirtree's link() or mkdir() methods to add the folder contents.

      :param path: an absolute dirtree path to the directory that is being expanded
      :returns: success



.. py:function:: textctrl_info_t_assign(_self: PyObject *, other: PyObject *) -> bool

.. py:function:: textctrl_info_t_set_text(_self: PyObject *, s: str) -> bool

.. py:function:: textctrl_info_t_get_text(_self: PyObject *) -> str

.. py:function:: textctrl_info_t_set_flags(_self: PyObject *, flags: unsigned int) -> bool

.. py:function:: textctrl_info_t_get_flags(_self: PyObject *) -> unsigned int

.. py:function:: textctrl_info_t_set_tabsize(_self: PyObject *, tabsize: unsigned int) -> bool

.. py:function:: textctrl_info_t_get_tabsize(_self: PyObject *) -> unsigned int

.. py:function:: formchgcbfa_enable_field(p_fa: size_t, fid: int, enable: bool) -> bool

.. py:function:: formchgcbfa_show_field(p_fa: size_t, fid: int, show: bool) -> bool

.. py:function:: formchgcbfa_move_field(p_fa: size_t, fid: int, x: int, y: int, w: int, h: int) -> bool

.. py:function:: formchgcbfa_get_focused_field(p_fa: size_t) -> int

.. py:function:: formchgcbfa_set_focused_field(p_fa: size_t, fid: int) -> bool

.. py:function:: formchgcbfa_refresh_field(p_fa: size_t, fid: int) -> None

.. py:function:: formchgcbfa_close(p_fa: size_t, close_normally: int) -> None

.. py:function:: formchgcbfa_get_field_value(p_fa: size_t, fid: int, ft: int, sz: size_t) -> PyObject *

.. py:function:: formchgcbfa_set_field_value(p_fa: size_t, fid: int, ft: int, py_val: PyObject *) -> bool

.. py:function:: py_get_ask_form() -> size_t

.. py:function:: py_get_open_form() -> size_t

.. py:function:: py_register_compiled_form(py_form: PyObject *) -> None

.. py:function:: py_unregister_compiled_form(py_form: PyObject *) -> None

.. py:class:: textctrl_info_t(text='', flags=0, tabsize=0)

   Bases: :py:obj:`ida_idaapi.py_clinked_object_t`


   Class representing textctrl_info_t


   .. py:attribute:: TXTF_AUTOINDENT
      :value: 1


      Auto-indent on new line



   .. py:attribute:: TXTF_ACCEPTTABS
      :value: 2


      Tab key inserts 'tabsize' spaces



   .. py:attribute:: TXTF_READONLY
      :value: 4


      Text cannot be edited (but can be selected and copied)



   .. py:attribute:: TXTF_SELECTED
      :value: 8


      Shows the field with its text selected



   .. py:attribute:: TXTF_MODIFIED
      :value: 16


      Gets/sets the modified status



   .. py:attribute:: TXTF_FIXEDFONT
      :value: 32


      The control uses IDA's fixed font



   .. py:method:: assign(other)

      Copies the contents of 'other' to 'self'



   .. py:attribute:: value

      Alias for the text property



   .. py:attribute:: text

      in, out: text control value



   .. py:attribute:: flags

      Text control property bits 
              



   .. py:attribute:: tabsize

      how many spaces a single tab will indent



.. py:class:: Form(form, controls)

   Bases: :py:obj:`object`


   .. py:attribute:: FT_ASCII
      :value: 'A'


      Ascii string - char *



   .. py:attribute:: FT_SEG
      :value: 'S'


      Segment - sel_t *



   .. py:attribute:: FT_HEX
      :value: 'N'


      Hex number - uval_t *



   .. py:attribute:: FT_SHEX
      :value: 'n'


      Signed hex number - sval_t *



   .. py:attribute:: FT_COLOR
      :value: 'K'


      Color button - bgcolor_t *



   .. py:attribute:: FT_ADDR
      :value: '$'


      Address - ea_t *



   .. py:attribute:: FT_UINT64
      :value: 'L'


      default base uint64 - uint64



   .. py:attribute:: FT_INT64
      :value: 'l'


      default base int64 - int64



   .. py:attribute:: FT_RAWHEX
      :value: 'M'


      Hex number, no 0x prefix - uval_t *



   .. py:attribute:: FT_FILE
      :value: 'f'


      File browse - char * at least QMAXPATH



   .. py:attribute:: FT_DEC
      :value: 'D'


      Decimal number - sval_t *



   .. py:attribute:: FT_OCT
      :value: 'O'


      Octal number, C notation - sval_t *



   .. py:attribute:: FT_BIN
      :value: 'Y'


      Binary number, 0b prefix - sval_t *



   .. py:attribute:: FT_CHAR
      :value: 'H'


      Char value -- sval_t *



   .. py:attribute:: FT_IDENT
      :value: 'I'


      Identifier - char * at least MAXNAMELEN



   .. py:attribute:: FT_BUTTON
      :value: 'B'


      Button - def handler(code)



   .. py:attribute:: FT_DIR
      :value: 'F'


      Path to directory - char * at least QMAXPATH



   .. py:attribute:: FT_TYPE
      :value: 'T'


      Type declaration - char * at least MAXSTR



   .. py:attribute:: FT_FORMCHG
      :value: '%/'


      Form change callback - formchgcb_t



   .. py:attribute:: FT_ECHOOSER
      :value: 'E'


      Embedded chooser - idaapi.Choose



   .. py:attribute:: FT_MULTI_LINE_TEXT
      :value: 't'


      Multi text control - textctrl_info_t



   .. py:attribute:: FT_DROPDOWN_LIST
      :value: 'b'


      Dropdown list control - Form.DropdownControl



   .. py:attribute:: FT_HTML_LABEL
      :value: 'h'


      HTML label to display (only for GUI version, and for dynamic labels; no input)



   .. py:attribute:: FT_CHKGRP
      :value: 'C'



   .. py:attribute:: FT_CHKGRP2
      :value: 'c'



   .. py:attribute:: FT_RADGRP
      :value: 'R'



   .. py:attribute:: FT_RADGRP2
      :value: 'r'



   .. py:method:: create_string_buffer(value, size=None)
      :staticmethod:



   .. py:method:: fieldtype_to_ctype(tp, i64=False)
      :staticmethod:


      Factory method returning a ctype class corresponding to the field type string



   .. py:class:: NumericArgument(tp, value, i64=None)

      Bases: :py:obj:`object`


      Argument representing various integer arguments (ushort, uint32, uint64, etc...)
      :param tp: One of Form.FT_XXX


      .. py:attribute:: DefI64
         :value: False



      .. py:attribute:: arg


      .. py:attribute:: value



   .. py:class:: StringArgument(size=None, value=None)

      Bases: :py:obj:`object`


      Argument representing a character buffer


      .. py:attribute:: size
         :value: None



      .. py:attribute:: arg


      .. py:attribute:: value



   .. py:class:: Control

      Bases: :py:obj:`object`


      .. py:attribute:: id
         :value: 0


         Automatically assigned control ID



      .. py:attribute:: input_field_index
         :value: None


         If this control is an input field, once Compile() returns this will hold its index. This is used only to compute the possible STARTITEM index



      .. py:attribute:: arg
         :value: None


         Control argument value. This could be one element or a list/tuple (for multiple args per control)



      .. py:attribute:: form
         :value: None


         Reference to the parent form. It is filled by Form.Add()



      .. py:attribute:: form_hasattr
         :value: False



      .. py:method:: get_tag()

         Control tag character. One of Form.FT_XXXX.
         The form class will expand the {} notation and replace them with the tags



      .. py:method:: get_arg()

         Control returns the parameter to be pushed on the stack
         (Of ask_form())



      .. py:method:: free()

         Free the control



      .. py:method:: is_input_field()

         Return True if this field acts as an input




   .. py:class:: LabelControl(tp)

      Bases: :py:obj:`Control`


      Base class for static label control


      .. py:attribute:: tp


      .. py:method:: get_tag()

         Control tag character. One of Form.FT_XXXX.
         The form class will expand the {} notation and replace them with the tags




   .. py:class:: StringLabel(value, tp=None, size=ida_pro.MAXSTR)

      Bases: :py:obj:`LabelControl`


      String label control


      .. py:attribute:: size


      .. py:attribute:: arg

         Control argument value. This could be one element or a list/tuple (for multiple args per control)




   .. py:class:: NumericLabel(value, tp=None)

      Bases: :py:obj:`LabelControl`, :py:obj:`NumericArgument`


      Numeric label control



   .. py:class:: GroupItemControl(tag, parent)

      Bases: :py:obj:`Control`


      Base class for group control items


      .. py:attribute:: tag


      .. py:attribute:: parent


      .. py:attribute:: pos
         :value: 0



      .. py:method:: assign_pos()


      .. py:method:: get_tag()

         Control tag character. One of Form.FT_XXXX.
         The form class will expand the {} notation and replace them with the tags



      .. py:method:: is_input_field()

         Return True if this field acts as an input




   .. py:class:: ChkGroupItemControl(tag, parent)

      Bases: :py:obj:`GroupItemControl`


      Checkbox group item control


      .. py:attribute:: checked

         Get/Sets checkbox item check status




   .. py:class:: RadGroupItemControl(tag, parent)

      Bases: :py:obj:`GroupItemControl`


      Radiobox group item control


      .. py:attribute:: selected

         Get/Sets radiobox item selection status




   .. py:class:: GroupControl(children_names, tag, value=0)

      Bases: :py:obj:`Control`, :py:obj:`NumericArgument`


      Base class for group controls


      .. py:attribute:: children_names


      .. py:attribute:: tag


      .. py:method:: next_child_pos()


      .. py:method:: get_tag()

         Control tag character. One of Form.FT_XXXX.
         The form class will expand the {} notation and replace them with the tags




   .. py:class:: ChkGroupControl(children_names, value=0, secondary=False)

      Bases: :py:obj:`GroupControl`


      Checkbox group control class.
      It holds a set of checkbox controls


      .. py:attribute:: ItemClass
         :value: None


         Group control item factory class instance
         We need this because later we won't be treating ChkGroupControl or RadGroupControl
         individually, instead we will be working with GroupControl in general.




   .. py:class:: RadGroupControl(children_names, value=0, secondary=False)

      Bases: :py:obj:`GroupControl`


      Radiobox group control class.
      It holds a set of radiobox controls


      .. py:attribute:: ItemClass
         :value: None




   .. py:class:: InputControl(tp, width, swidth, hlp=None, is_relative_offset=False)

      Bases: :py:obj:`Control`


      Generic form input control.
      It could be numeric control, string control, directory/file browsing, etc...


      .. py:attribute:: tp


      .. py:attribute:: width


      .. py:attribute:: swidth


      .. py:attribute:: hlp
         :value: None



      .. py:attribute:: is_relative_offset
         :value: False



      .. py:method:: get_tag()

         Control tag character. One of Form.FT_XXXX.
         The form class will expand the {} notation and replace them with the tags



      .. py:method:: is_input_field()

         Return True if this field acts as an input




   .. py:class:: NumericInput(tp=None, value=0, width=50, swidth=10, hlp=None, is_relative_offset=False, i64=None)

      Bases: :py:obj:`InputControl`, :py:obj:`NumericArgument`


      A composite class serving as a base numeric input control class



   .. py:class:: ColorInput(value=0)

      Bases: :py:obj:`NumericInput`


      Color button input control



   .. py:class:: StringInput(tp=None, width=ida_pro.MAXSTR, swidth=40, hlp=None, value=None, size=None)

      Bases: :py:obj:`InputControl`, :py:obj:`StringArgument`


      Base string input control class.
      This class also constructs a StringArgument



   .. py:class:: FileInput(width=512, swidth=80, save=False, open=False, hlp=None, value=None)

      Bases: :py:obj:`StringInput`


      File Open/Save input control



   .. py:class:: DirInput(width=512, swidth=80, hlp=None, value=None)

      Bases: :py:obj:`StringInput`


      Directory browsing control



   .. py:class:: ButtonInput(handler, code='', swidth='', hlp=None)

      Bases: :py:obj:`InputControl`


      Button control.
      A handler along with a 'code' (numeric value) can be associated with the button.
      This way one handler can handle many buttons based on the button code (or in other terms id or tag)


      .. py:attribute:: handler


      .. py:attribute:: arg

         Control argument value. This could be one element or a list/tuple (for multiple args per control)



      .. py:method:: helper_cb(button_code, p_fa)


      .. py:method:: is_input_field()

         Return True if this field acts as an input




   .. py:class:: FormChangeCb(handler)

      Bases: :py:obj:`Control`


      Form change handler.
      This can be thought of like a dialog procedure.
      Everytime a form action occurs, this handler will be called along with the control id.
      The programmer can then call various form actions accordingly:
        - EnableField
        - ShowField
        - MoveField
        - GetFieldValue
        - etc...

      Special control IDs: -1 (The form is initialized) and -2 (Ok has been clicked)



      .. py:attribute:: handler


      .. py:attribute:: arg

         Control argument value. This could be one element or a list/tuple (for multiple args per control)



      .. py:method:: helper_cb(fid, p_fa)


      .. py:method:: get_tag()

         Control tag character. One of Form.FT_XXXX.
         The form class will expand the {} notation and replace them with the tags



      .. py:method:: free()

         Free the control




   .. py:class:: EmbeddedChooserControl(chooser=None, swidth=40, hlp=None)

      Bases: :py:obj:`InputControl`


      Embedded chooser control.
      This control links to a Chooser2 control created with the 'embedded=True'


      .. py:attribute:: selobj


      .. py:attribute:: arg

         Control argument value. This could be one element or a list/tuple (for multiple args per control)



      .. py:attribute:: chooser
         :value: None



      .. py:attribute:: size
         :value: 0



      .. py:attribute:: value

         Returns the embedded chooser instance



      .. py:attribute:: selection

         Returns the selection



      .. py:method:: free()

         Frees the embedded chooser data




   .. py:class:: DropdownListControl(items=[], readonly=True, selval=0, width=50, swidth=50, hlp=None)

      Bases: :py:obj:`InputControl`, :py:obj:`ida_pro._qstrvec_t`


      Dropdown control
      This control allows manipulating a dropdown control


      .. py:attribute:: readonly
         :value: True



      .. py:attribute:: arg

         Control argument value. This could be one element or a list/tuple (for multiple args per control)



      .. py:attribute:: value


      .. py:attribute:: selval

         Read/write the selection value.
         The value is used as an item index in readonly mode or text value in editable mode
         This value can be used only after the form has been closed.



      .. py:method:: free()

         Free the control



      .. py:method:: set_items(items)

         Sets the dropdown list items




   .. py:class:: MultiLineTextControl(text='', flags=0, tabsize=0, width=50, swidth=50, hlp=None)

      Bases: :py:obj:`InputControl`, :py:obj:`textctrl_info_t`


      Multi line text control.
      This class inherits from textctrl_info_t. Thus the attributes are also inherited
      This control allows manipulating a multilinetext control


      .. py:attribute:: arg

         Control argument value. This could be one element or a list/tuple (for multiple args per control)



      .. py:method:: free()

         Free the control




   .. py:attribute:: form

      Form string



   .. py:attribute:: controls

      Dictionary of controls



   .. py:attribute:: title
      :value: None


      The Form title. It will be filled when the form is compiled



   .. py:attribute:: modal
      :value: True


      By default, forms are modal



   .. py:attribute:: openform_flags
      :value: 0


      If non-modal, these flags will be passed to open_form.
      This is an OR'ed combination of the PluginForm.FORM_* values.



   .. py:method:: Free()

      Frees all resources associated with a compiled form.
      Make sure you call this function when you finish using the form.



   .. py:method:: Add(name, ctrl, mkattr=True)

      Low level function. Prefer AddControls() to this function.
      This function adds one control to the form.

      :param name: Control name
      :param ctrl: Control object
      :param mkattr: Create control name / control object as a form attribute



   .. py:method:: FindControlById(id)

      Finds a control instance given its id



   .. py:method:: AddControls(controls, mkattr=True)

      Adds controls from a dictionary.
      The dictionary key is the control name and the value is a Form.Control object
      :param controls: The control dictionary



   .. py:method:: CompileEx(form)

      Low level function.
      Compiles (parses the form syntax and adds the control) the form string and
      returns the argument list to be passed the argument list to ask_form().

      The form controls are wrapped inside curly braces: {ControlName}.

      A special operator can be used to return the index of a given control by its name: {id:ControlName}.
      This is useful when you use the STARTITEM form keyword to set the initially focused control.
      (note that, technically, the index is not the same as the ID; that's because STARTITEM
      uses raw, 0-based indexes rather than control IDs to determine the focused widget.)

      :param form: Compiles the form and returns the arguments needed to be passed to ask_form()



   .. py:method:: Compile()

      Compiles a form and returns the form object (self) and the argument list.
      The form object will contain object names corresponding to the form elements

      :returns: It will raise an exception on failure. Otherwise the return value is ignored



   .. py:method:: Compiled()

      Checks if the form has already been compiled

      :returns: Boolean



   .. py:method:: Execute()

      Displays a modal dialog containing the compiled form.
      :returns: 1 - ok ; 0 - cancel



   .. py:method:: Open()

      Opens a widget containing the compiled form.



   .. py:method:: EnableField(ctrl, enable)

      Enable or disable an input field
      :returns: False - no such control



   .. py:method:: ShowField(ctrl, show)

      Show or hide an input field
      :returns: False - no such control



   .. py:method:: MoveField(ctrl, x, y, w, h)

      Move/resize an input field

      :returns: False - no such fiel



   .. py:method:: GetFocusedField()

      Get currently focused input field.
      :returns: None if no field is selected otherwise the control ID



   .. py:method:: SetFocusedField(ctrl)

      Set currently focused input field
      :returns: False - no such control



   .. py:method:: RefreshField(ctrl)

      Refresh a field
      :returns: False - no such control



   .. py:method:: Close(close_normally)

      Close the form
      :param close_normally: 1: form is closed normally as if the user pressed Enter. 0: form is closed abnormally as if the user pressed Esc
      :returns: None



   .. py:method:: GetControlValue(ctrl)

      Returns the control's value depending on its type
      :param ctrl: Form control instance
      :returns: color button, radio controls: integer
      :returns: file/dir input, string input and string label: string
      :returns: embedded chooser control (0-based indices of selected items): integer list
      :returns: for multilinetext control: textctrl_info_t
      :returns: dropdown list controls: string (when editable) or index (when readonly)
      :returns: None: on failure



   .. py:method:: SetControlValue(ctrl, value)

      Set the control's value depending on its type
      :param ctrl: Form control instance
      :param value: embedded chooser: a 0-base indices list to select embedded chooser items
      :param value: multilinetext: a textctrl_info_t
      :param value: dropdown list: an integer designating the selection index if readonly
                                   a string designating the edit control value if not readonly
      :returns: Boolean true on success



   .. py:method:: ControlToFieldTypeIdAndSize(ctrl)
      :staticmethod:


      Converts a control object to a tuple containing the field id
      and the associated buffer size



.. py:function:: ask_form(*args)

   Display a dialog box and wait for the user. If the form contains the "BUTTON NO <title>" keyword, then the return values are the same as in the ask_yn() function (Button IDs) 
           
   :param form: dialog box as a string. see ask_form()/open_form()
   :returns: 0: no memory to display or form syntax error (a warning is displayed in this case). the user pressed the 'No' button (if the form has it) or the user cancelled the dialog otherwise. all variables retain their original values.
   :returns: 1: ok, all input fields are filled and validated.
   :returns: -1: the form has the 'No' button and the user cancelled the dialog


.. py:function:: open_form(*args)

   Display a dockable modeless dialog box and return a handle to it. The modeless form can be closed in the following ways:
   * by pressing the small 'x' in the window title
   * by calling form_actions_t::close() from the form callback (form_actions_t)



   :param form: dialog box as a string. see ask_form()/open_form()
   :param flags: Widget open flags
   :returns: handle to the form or nullptr. the handle can be used with TWidget functions: close_widget()/activate_widget()/etc


.. py:function:: install_command_interpreter(py_obj: PyObject *) -> int

   Install command line interpreter (ui_install_cli)


.. py:function:: remove_command_interpreter(cli_idx: int) -> None

   Remove command line interpreter (ui_install_cli)


.. py:class:: cli_t

   Bases: :py:obj:`ida_idaapi.pyidc_opaque_object_t`


   cli_t wrapper class.

   This class allows you to implement your own command line interface handlers.


   .. py:method:: register(flags=0, sname=None, lname=None, hint=None)

      Registers the CLI.

      :param flags: Feature bits. No bits are defined yet, must be 0
      :param sname: Short name (displayed on the button)
      :param lname: Long name (displayed in the menu)
      :param hint:  Hint for the input line

      :returns: Boolean: True-Success, False-Failed



   .. py:method:: unregister()

      Unregisters the CLI (if it was registered)



   .. py:method:: OnExecuteLine(line)

      The user pressed Enter. The CLI is free to execute the line immediately or ask for more lines.

      This callback is mandatory.

      :param line: typed line(s)
      :returns: Boolean: True-executed line, False-ask for more lines



   .. py:method:: OnKeydown(line, x, sellen, vkey, shift)

      A keyboard key has been pressed
      This is a generic callback and the CLI is free to do whatever it wants.

      This callback is optional.

      :param line: current input line
      :param x: current x coordinate of the cursor
      :param sellen: current selection length (usually 0)
      :param vkey: virtual key code. if the key has been handled, it should be returned as zero
      :param shift: shift state

      :returns: None - Nothing was changed
      :returns: tuple(line, x, sellen, vkey): if either of the input line or the x coordinate or the selection length has been modified.
      :returns: It is possible to return a tuple with None elements to preserve old values. Example: tuple(new_line, None, None, None) or tuple(new_line)



   .. py:method:: OnFindCompletions(line, x)

      The user pressed Tab. Return a list of completions

      This callback is optional.

      :param line: the current line (string)
      :param x: the index where the cursor is (int)

      :returns: None if no completion could be generated, otherwise a tuple:
          (completions : Sequence[str], hints : Sequence[str], docs: Sequence[str],
            match_start: int, match_end: int)



.. py:class:: View_Hooks(_flags: int = 0, _hkcb_flags: int = 1)

   Bases: :py:obj:`object`


   .. py:attribute:: thisown


   .. py:method:: hook() -> bool


   .. py:method:: unhook() -> bool


   .. py:method:: view_activated(view: TWidget *) -> None

      A view is activated 
                
      :param view: (TWidget *)



   .. py:method:: view_deactivated(view: TWidget *) -> None

      A view is deactivated 
                
      :param view: (TWidget *)



   .. py:method:: view_keydown(view: TWidget *, key: int, state: view_event_state_t) -> None

      Key down event 
                
      :param view: (TWidget *)
      :param key: (int)
      :param state: (::view_event_state_t)



   .. py:method:: view_click(view: TWidget *, event: view_mouse_event_t) -> None

      Click event 
                
      :param view: (TWidget *)
      :param event: (const view_mouse_event_t *)



   .. py:method:: view_dblclick(view: TWidget *, event: view_mouse_event_t) -> None

      Double click event 
                
      :param view: (TWidget *)
      :param event: (const view_mouse_event_t *)



   .. py:method:: view_curpos(view: TWidget *) -> None

      Cursor position changed 
                
      :param view: (TWidget *)



   .. py:method:: view_created(view: TWidget *) -> None

      A view is being created. 
                
      :param view: (TWidget *)



   .. py:method:: view_close(view: TWidget *) -> None

      View closed 
                
      :param view: (TWidget *)



   .. py:method:: view_switched(view: TWidget *, rt: tcc_renderer_type_t) -> None

      A view's renderer has changed. 
                
      :param view: (TWidget *)
      :param rt: (tcc_renderer_type_t)



   .. py:method:: view_mouse_over(view: TWidget *, event: view_mouse_event_t) -> None

      The user moved the mouse over (or out of) a node or an edge. This is only relevant in a graph view. 
                
      :param view: (TWidget *)
      :param event: (const view_mouse_event_t *)



   .. py:method:: view_loc_changed(view: TWidget *, now: lochist_entry_t const *, was: lochist_entry_t const *) -> None

      The location for the view has changed (can be either the place_t, the renderer_info_t, or both.) 
                
      :param view: (TWidget *)
      :param now: (const lochist_entry_t *)
      :param was: (const lochist_entry_t *)



   .. py:method:: view_mouse_moved(view: TWidget *, event: view_mouse_event_t) -> None

      The mouse moved on the view 
                
      :param view: (TWidget *)
      :param event: (const view_mouse_event_t *)



.. py:class:: CustomIDAMemo

   Bases: :py:obj:`View_Hooks`


   .. py:method:: view_activated(view)

      A view is activated 
                
      :param view: (TWidget *)



   .. py:method:: view_deactivated(view)

      A view is deactivated 
                
      :param view: (TWidget *)



   .. py:method:: view_keydown(view, key, state)

      Key down event 
                
      :param view: (TWidget *)
      :param key: (int)
      :param state: (::view_event_state_t)



   .. py:method:: view_click(view, ve)

      Click event 
                
      :param view: (TWidget *)
      :param event: (const view_mouse_event_t *)



   .. py:method:: view_dblclick(view, ve)

      Double click event 
                
      :param view: (TWidget *)
      :param event: (const view_mouse_event_t *)



   .. py:method:: view_curpos(view, *args)

      Cursor position changed 
                
      :param view: (TWidget *)



   .. py:method:: view_close(view, *args)

      View closed 
                
      :param view: (TWidget *)



   .. py:method:: view_switched(view, rt)

      A view's renderer has changed. 
                
      :param view: (TWidget *)
      :param rt: (tcc_renderer_type_t)



   .. py:method:: view_mouse_over(view, ve)

      The user moved the mouse over (or out of) a node or an edge. This is only relevant in a graph view. 
                
      :param view: (TWidget *)
      :param event: (const view_mouse_event_t *)



   .. py:method:: view_loc_changed(view, now, was)

      The location for the view has changed (can be either the place_t, the renderer_info_t, or both.) 
                
      :param view: (TWidget *)
      :param now: (const lochist_entry_t *)
      :param was: (const lochist_entry_t *)



   .. py:method:: view_mouse_moved(view, ve)

      The mouse moved on the view 
                
      :param view: (TWidget *)
      :param event: (const view_mouse_event_t *)



   .. py:method:: Refresh()

      Refreshes the view. This causes the OnRefresh() to be called



   .. py:method:: GetCurrentRendererType()


   .. py:method:: SetCurrentRendererType(rtype)

      Set the current view's renderer.

      :param rtype: The renderer type. Should be one of the idaapi.TCCRT_* values.



   .. py:method:: SetNodeInfo(node_index, node_info, flags)

      Set the properties for the given node.

      Example usage (set second nodes's bg color to red):
        inst = ...
        p = idaapi.node_info_t()
        p.bg_color = 0x00ff0000
        inst.SetNodeInfo(1, p, idaapi.NIF_BG_COLOR)

      :param node_index: The node index.
      :param node_info: An idaapi.node_info_t instance.
      :param flags: An OR'ed value of NIF_* values.



   .. py:method:: SetNodesInfos(values)

      Set the properties for the given nodes.

      Example usage (set first three nodes's bg color to purple):
        inst = ...
        p = idaapi.node_info_t()
        p.bg_color = 0x00ff00ff
        inst.SetNodesInfos({0 : p, 1 : p, 2 : p})

      :param values: A dictionary of 'int -> node_info_t' objects.



   .. py:method:: GetNodeInfo(*args)

      Get the properties for the given node.

      :param ni: A node_info_t instance
      :param node: The index of the node.
      :returns: success



   .. py:method:: DelNodesInfos(*nodes)

      Delete the properties for the given node(s).

      :param nodes: A list of node IDs



   .. py:method:: CreateGroups(groups_infos)

      Send a request to modify the graph by creating a
      (set of) group(s), and perform an animation.

      Each object in the 'groups_infos' list must be of the format:
      {
        "nodes" : [<int>, <int>, <int>, ...] # The list of nodes to group
        "text" : <string>                    # The synthetic text for that group
      }

      :param groups_infos: A list of objects that describe those groups.
      :returns: A [<int>, <int>, ...] list of group nodes, or None (failure).



   .. py:method:: DeleteGroups(groups, new_current=-1)

      Send a request to delete the specified groups in the graph,
      and perform an animation.

      :param groups: A list of group node numbers.
      :param new_current: A node to focus on after the groups have been deleted
      :returns: True on success, False otherwise.



   .. py:method:: SetGroupsVisibility(groups, expand, new_current=-1)

      Send a request to expand/collapse the specified groups in the graph,
      and perform an animation.

      :param groups: A list of group node numbers.
      :param expand: True to expand the group, False otherwise.
      :param new_current: A node to focus on after the groups have been expanded/collapsed.
      :returns: True on success, False otherwise.



   .. py:method:: GetWidget()

      Return the TWidget underlying this view.

      :returns: The TWidget underlying this view, or None.



   .. py:method:: GetWidgetAsGraphViewer()

      Return the graph_viewer_t underlying this view.

      :returns: The graph_viewer_t underlying this view, or None.



.. py:function:: pyidag_bind(_self: PyObject *) -> bool

.. py:function:: pyidag_unbind(_self: PyObject *) -> bool

.. py:class:: IDAViewWrapper(title)

   Bases: :py:obj:`CustomIDAMemo`


   Deprecated. Use View_Hooks instead.

   Because the lifecycle of an IDAView is not trivial to track (e.g., a user
   might close, then re-open the same disassembly view), this wrapper doesn't
   bring anything superior to the View_Hooks: quite the contrary, as the
   latter is much more generic (and better maps IDA's internal model.)


   .. py:method:: Bind()


   .. py:method:: Unbind()


.. py:function:: pyscv_init(py_link: PyObject *, title: str) -> PyObject *

.. py:function:: pyscv_refresh(py_this: PyObject *) -> bool

.. py:function:: pyscv_get_current_line(py_this: PyObject *, mouse: bool, notags: bool) -> PyObject *

.. py:function:: pyscv_is_focused(py_this: PyObject *) -> bool

.. py:function:: pyscv_count(py_this: PyObject *) -> size_t

.. py:function:: pyscv_show(py_this: PyObject *) -> bool

.. py:function:: pyscv_close(py_this: PyObject *) -> None

.. py:function:: pyscv_jumpto(py_this: PyObject *, ln: size_t, x: int, y: int) -> bool

.. py:function:: pyscv_get_line(py_this: PyObject *, nline: size_t) -> PyObject *

.. py:function:: pyscv_get_pos(py_this: PyObject *, mouse: bool) -> PyObject *

.. py:function:: pyscv_clear_lines(py_this: PyObject *) -> PyObject *

.. py:function:: pyscv_add_line(py_this: PyObject *, py_sl: PyObject *) -> bool

.. py:function:: pyscv_insert_line(py_this: PyObject *, nline: size_t, py_sl: PyObject *) -> bool

.. py:function:: pyscv_patch_line(py_this: PyObject *, nline: size_t, offs: size_t, value: int) -> bool

.. py:function:: pyscv_del_line(py_this: PyObject *, nline: size_t) -> bool

.. py:function:: pyscv_get_selection(py_this: PyObject *) -> PyObject *

.. py:function:: pyscv_get_current_word(py_this: PyObject *, mouse: bool) -> PyObject *

.. py:function:: pyscv_edit_line(py_this: PyObject *, nline: size_t, py_sl: PyObject *) -> bool

.. py:function:: pyscv_get_widget(py_this: PyObject *) -> TWidget *

.. py:class:: simplecustviewer_t

   Bases: :py:obj:`object`


   The base class for implementing simple custom viewers


   .. py:class:: UI_Hooks_Trampoline(v)

      Bases: :py:obj:`UI_Hooks`


      .. py:attribute:: v


      .. py:method:: populating_widget_popup(form, popup_handle)

         IDA is populating the context menu for a widget. This is your chance to attach_action_to_popup().
         Have a look at ui_finish_populating_widget_popup, if you want to augment the context menu with your own actions after the menu has had a chance to be properly populated by the owning component or plugin (which typically does it on ui_populating_widget_popup.)

         :param widget: (TWidget *)
         :param popup_handle: (TPopupMenu *)
         :param ctx: (const action_activation_ctx_t *)
         :returns: void




   .. py:attribute:: ui_hooks_trampoline


   .. py:method:: OnPopup(form, popup_handle)

      Context menu popup is about to be shown. Create items dynamically if you wish
      :returns: Boolean. True if you handled the event



   .. py:method:: Create(title)

      Creates the custom view. This should be the first method called after instantiation

      :param title: The title of the view
      :returns: Boolean whether it succeeds or fails. It may fail if a window with the same title is already open.
               In this case better close existing windows



   .. py:method:: Close()

      Destroys the view.
      One has to call Create() afterwards.
      Show() can be called and it will call Create() internally.
      :returns: Boolean



   .. py:method:: Show()

      Shows an already created view. It the view was closed, then it will call Create() for you
      :returns: Boolean



   .. py:method:: Refresh()


   .. py:method:: RefreshCurrent()

      Refreshes the current line only



   .. py:method:: Count()

      Returns the number of lines in the view



   .. py:method:: GetSelection()

      Returns the selected range or None
      :returns: tuple(x1, y1, x2, y2), or None if no selection



   .. py:method:: ClearLines()

      Clears all the lines



   .. py:method:: AddLine(line, fgcolor=None, bgcolor=None)

      Adds a colored line to the view
      :returns: Boolean



   .. py:method:: InsertLine(lineno, line, fgcolor=None, bgcolor=None)

      Inserts a line in the given position
      :returns: Boolean



   .. py:method:: EditLine(lineno, line, fgcolor=None, bgcolor=None)

      Edits an existing line.
      :returns: Boolean



   .. py:method:: PatchLine(lineno, offs, value)

      Patches an existing line character at the given offset. This is a low level function. You must know what you're doing



   .. py:method:: DelLine(lineno)

      Deletes an existing line
      :returns: Boolean



   .. py:method:: GetLine(lineno)

      Returns a line
      :param lineno: The line number
      :returns: a tuple (colored_line, fgcolor, bgcolor), or None



   .. py:method:: GetCurrentWord(mouse=0)

      Returns the current word
      :param mouse: Use mouse position or cursor position
      :returns: None if failed or a String containing the current word at mouse or cursor



   .. py:method:: GetCurrentLine(mouse=0, notags=0)

      Returns the current line.
      :param mouse: Current line at mouse pos
      :param notags: If True then tag_remove() will be called before returning the line
      :returns: Returns the current line (colored or uncolored) or None on failure



   .. py:method:: GetPos(mouse=0)

      Returns the current cursor or mouse position.
      :param mouse: return mouse position
      :returns: Returns a tuple (lineno, x, y)



   .. py:method:: GetLineNo(mouse=0)

      Calls GetPos() and returns the current line number or -1 on failure



   .. py:method:: Jump(lineno, x=0, y=0)


   .. py:method:: IsFocused()

      Returns True if the current view is the focused view



   .. py:method:: GetWidget()

      Return the TWidget underlying this view.

      :returns: The TWidget underlying this view, or None.



.. py:function:: plgform_new() -> PyObject *

.. py:function:: plgform_show(*args) -> bool

.. py:function:: plgform_close(py_link: PyObject *, options: int) -> None

.. py:function:: plgform_get_widget(py_link: PyObject *) -> TWidget *

.. py:class:: PluginForm

   Bases: :py:obj:`object`


   PluginForm class.

   This form can be used to host additional controls. Please check the PyQt example.


   .. py:attribute:: WOPN_MDI
      :value: 1



   .. py:attribute:: WOPN_TAB
      :value: 2



   .. py:attribute:: WOPN_RESTORE

      if the widget was the only widget in a floating area the last time it was closed, it will be restored as floating, with the same position+size as before 
              



   .. py:attribute:: WOPN_ONTOP
      :value: 8



   .. py:attribute:: WOPN_MENU
      :value: 16



   .. py:attribute:: WOPN_CENTERED
      :value: 32



   .. py:attribute:: WOPN_PERSIST

      widget will remain available when starting or stopping debugger sessions



   .. py:attribute:: WOPN_DP_LEFT

      Dock widget to the left of dest_ctrl.



   .. py:attribute:: WOPN_DP_TOP

      Dock widget above dest_ctrl.



   .. py:attribute:: WOPN_DP_RIGHT

      Dock widget to the right of dest_ctrl.



   .. py:attribute:: WOPN_DP_BOTTOM

      Dock widget below dest_ctrl.



   .. py:attribute:: WOPN_DP_INSIDE

      Create a new tab bar with both widget and dest_ctrl.



   .. py:attribute:: WOPN_DP_TAB

      Place widget into a tab next to dest_ctrl, if dest_ctrl is in a tab bar (otherwise the same as WOPN_DP_INSIDE) 
              



   .. py:attribute:: WOPN_DP_BEFORE

      Place widget before dst_form in the tab bar instead of after; used with WOPN_DP_INSIDE and WOPN_DP_TAB 
              



   .. py:attribute:: WOPN_DP_FLOATING

      Make widget floating.



   .. py:attribute:: WOPN_DP_SZHINT

      when floating or in a splitter (i.e., not tabbed), use the widget's size hint to determine the best geometry (Qt only) 
              



   .. py:attribute:: WOPN_DP_INSIDE_BEFORE


   .. py:attribute:: WOPN_DP_TAB_BEFORE


   .. py:attribute:: WOPN_CREATE_ONLY


   .. py:method:: Show(caption, options=0)

      Creates the form if not was not created or brings to front if it was already created

      :param caption: The form caption
      :param options: One of PluginForm.WOPN_ constants



   .. py:attribute:: VALID_CAPSULE_NAME
      :value: b'$valid$'



   .. py:method:: TWidgetToQtPythonWidget(tw, ctx=sys.modules['__main__'])
      :staticmethod:


      Convert a TWidget* to a QWidget to be used by the Qt Python bindings



   .. py:attribute:: TWidgetToPyQtWidget


   .. py:attribute:: FormToPyQtWidget


   .. py:method:: QtWidgetToTWidget(w, ctx=sys.modules['__main__'])
      :staticmethod:


      Convert a QWidget to a TWidget* to be used by IDA

      :param ctx: Context. Reference to a module that already imported SIP and QtWidgets modules



   .. py:method:: TWidgetToPySideWidget(tw, ctx=sys.modules['__main__'])
      :staticmethod:


      Use this method to convert a TWidget* to a QWidget to be used by PySide

      :param ctx: Context. Reference to a module that already imported QtWidgets module



   .. py:attribute:: FormToPySideWidget


   .. py:method:: OnCreate(form)

      This event is called when the plugin form is created.
      The programmer should populate the form when this event is triggered.

      :returns: None



   .. py:method:: OnClose(form)

      Called when the plugin form is closed

      :returns: None



   .. py:method:: Close(options)

      Closes the form.

      :param options: Close options (WCLS_SAVE, WCLS_NO_CONTEXT, ...)

      :returns: None



   .. py:method:: GetWidget()

      Return the TWidget underlying this view.

      :returns: The TWidget underlying this view, or None.



   .. py:attribute:: WCLS_SAVE

      save state in desktop config



   .. py:attribute:: WCLS_NO_CONTEXT

      don't change the current context (useful for toolbars)



   .. py:attribute:: WCLS_DONT_SAVE_SIZE

      don't save size of the window



   .. py:attribute:: WCLS_DELETE_LATER

      assign the deletion of the widget to the UI loop ///<



   .. py:attribute:: WCLS_CLOSE_LATER


.. py:data:: place_t_as_idaplace_t

.. py:data:: place_t_as_simpleline_place_t

.. py:data:: place_t_as_tiplace_t

