def __init__(self, items=[], readonly=True, selval=0, width=50, swidth=50, hlp=None): """ @param items: A string list of items used to prepopulate the control @param readonly: Specifies whether the dropdown list is editable or not @param selval: The preselected item index (when readonly) or text value (when editable) @param width: the control width (n/a if the dropdown list is readonly) @param swidth: string width """ # Ignore the width if readonly was set if readonly: width = 0 # Init the input control base class Form.InputControl.__init__(self, Form.FT_DROPDOWN_LIST, width, swidth, hlp) # Init the associated qstrvec ida_pro._qstrvec_t.__init__(self, items) # Remember if readonly or not self.readonly = readonly if readonly: # Create a C integer and remember it self.__selval = ctypes.c_int(selval) val_addr = ctypes.addressof(self.__selval) else: # Create an strvec with one qstring self.__selval = ida_pro._qstrvec_t([selval]) # Get address of the first element val_addr = self.__selval.addressof(0) # Two arguments: # - argument #1: a pointer to the qstrvec containing the items # - argument #2: an integer to hold the selection # or # #2: a qstring to hold the dropdown text control value self.arg = (ctypes.pointer( ctypes.c_void_p.from_address(self.clink_ptr)), ctypes.pointer(ctypes.c_void_p.from_address(val_addr)))
def __init__(self, items=[], readonly=True, selval=0, width=50, swidth=50, hlp = None): """ @param items: A string list of items used to prepopulate the control @param readonly: Specifies whether the dropdown list is editable or not @param selval: The preselected item index (when readonly) or text value (when editable) @param width: the control width (n/a if the dropdown list is readonly) @param swidth: string width """ # Ignore the width if readonly was set if readonly: width = 0 # Init the input control base class Form.InputControl.__init__( self, Form.FT_DROPDOWN_LIST, width, swidth, hlp) # Init the associated qstrvec ida_pro._qstrvec_t.__init__(self, items) # Remember if readonly or not self.readonly = readonly if readonly: # Create a C integer and remember it self.__selval = ctypes.c_int(selval) val_addr = ctypes.addressof(self.__selval) else: # Create an strvec with one qstring self.__selval = ida_pro._qstrvec_t([selval]) # Get address of the first element val_addr = self.__selval.addressof(0) # Two arguments: # - argument #1: a pointer to the qstrvec containing the items # - argument #2: an integer to hold the selection # or # #2: a qstring to hold the dropdown text control value self.arg = ( ctypes.pointer(ctypes.c_void_p.from_address(self.clink_ptr)), ctypes.pointer(ctypes.c_void_p.from_address(val_addr)) )