diff --git a/examples/widgets/forms/askusingform.py b/examples/widgets/forms/askusingform.py index 17eba92..69a4ea1 100644 --- a/examples/widgets/forms/askusingform.py +++ b/examples/widgets/forms/askusingform.py @@ -124,6 +124,8 @@ The end! self.rBlue.id : 0xFF0000, } self.SetControlValue(self.iColor1, color[fid]) + elif fid == self.iColor1.id: + print("Color changed: %06x" % self.GetControlValue(self.iColor1)) else: print(">>fid:%d" % fid) return 1 diff --git a/out_of_tree/parsed_notifications.zip b/out_of_tree/parsed_notifications.zip index 05ec806..5e959d2 100644 Binary files a/out_of_tree/parsed_notifications.zip and b/out_of_tree/parsed_notifications.zip differ diff --git a/pywraps/py_kernwin_askform.py b/pywraps/py_kernwin_askform.py index c78e92e..94513d9 100644 --- a/pywraps/py_kernwin_askform.py +++ b/pywraps/py_kernwin_askform.py @@ -302,7 +302,7 @@ class Form(object): """ String label control """ - def __init__(self, value, tp=None, size=1024): + def __init__(self, value, tp=None, size=ida_pro.MAXSTR): """ Type field can be one of: A - ascii string @@ -524,7 +524,7 @@ class Form(object): """ def __init__(self, tp=None, - width=1024, + width=ida_pro.MAXSTR, swidth=40, hlp=None, value=None, @@ -1356,7 +1356,7 @@ class Form(object): elif isinstance(ctrl, (Form.GroupItemControl, Form.GroupControl)): return (2, 0) elif isinstance(ctrl, Form.StringLabel): - return (3, min(_ida_kernwin.MAXSTR, ctrl.size)) + return (3, min(ida_pro.MAXSTR, ctrl.size)) elif isinstance(ctrl, Form.ColorInput): return (4, 0) elif isinstance(ctrl, Form.NumericInput): diff --git a/release_api_contents2.txt b/release_api_contents2.txt index a1f4ccc..d2793e4 100644 --- a/release_api_contents2.txt +++ b/release_api_contents2.txt @@ -2610,6 +2610,7 @@ 'delete_rect_t', 'delete_refinfo_t', 'delete_reg_info_t', + 'delete_regarg_array', 'delete_regarg_t', 'delete_reginfovec_t', 'delete_register_info_t', @@ -3289,6 +3290,7 @@ 'func_parent_iterator_t_reset_fnt', 'func_parent_iterator_t_set', 'func_t___get_points__', + 'func_t___get_regargs__', 'func_t___get_regvars__', 'func_t___get_tails__', 'func_t__from_ptrval__', @@ -3309,10 +3311,6 @@ 'func_t_frsize_get', 'func_t_frsize_set', 'func_t_is_far', - 'func_t_llabelqty_get', - 'func_t_llabelqty_set', - 'func_t_llabels_get', - 'func_t_llabels_set', 'func_t_need_prolog_analysis', 'func_t_owner_get', 'func_t_owner_set', @@ -6993,6 +6991,7 @@ 'new_rect_t__SWIG_2', 'new_refinfo_t', 'new_reg_info_t', + 'new_regarg_array', 'new_regarg_t', 'new_reginfovec_t', 'new_reginfovec_t__SWIG_0', @@ -8310,6 +8309,11 @@ 'reg_write_bool', 'reg_write_int', 'reg_write_string', + 'regarg_array___getitem__', + 'regarg_array___len__', + 'regarg_array___setitem__', + 'regarg_array_count_get', + 'regarg_array_data_get', 'regarg_t_name_get', 'regarg_t_name_set', 'regarg_t_reg_get', diff --git a/release_api_contents3.txt b/release_api_contents3.txt index 21114b2..9ed84bc 100644 --- a/release_api_contents3.txt +++ b/release_api_contents3.txt @@ -2610,6 +2610,7 @@ 'delete_rect_t', 'delete_refinfo_t', 'delete_reg_info_t', + 'delete_regarg_array', 'delete_regarg_t', 'delete_reginfovec_t', 'delete_register_info_t', @@ -3289,6 +3290,7 @@ 'func_parent_iterator_t_reset_fnt', 'func_parent_iterator_t_set', 'func_t___get_points__', + 'func_t___get_regargs__', 'func_t___get_regvars__', 'func_t___get_tails__', 'func_t__from_ptrval__', @@ -3309,10 +3311,6 @@ 'func_t_frsize_get', 'func_t_frsize_set', 'func_t_is_far', - 'func_t_llabelqty_get', - 'func_t_llabelqty_set', - 'func_t_llabels_get', - 'func_t_llabels_set', 'func_t_need_prolog_analysis', 'func_t_owner_get', 'func_t_owner_set', @@ -6997,6 +6995,7 @@ 'new_rect_t__SWIG_2', 'new_refinfo_t', 'new_reg_info_t', + 'new_regarg_array', 'new_regarg_t', 'new_reginfovec_t', 'new_reginfovec_t__SWIG_0', @@ -8314,6 +8313,11 @@ 'reg_write_bool', 'reg_write_int', 'reg_write_string', + 'regarg_array___getitem__', + 'regarg_array___len__', + 'regarg_array___setitem__', + 'regarg_array_count_get', + 'regarg_array_data_get', 'regarg_t_name_get', 'regarg_t_name_set', 'regarg_t_reg_get', @@ -10485,4 +10489,4 @@ 'xreflist_t_swap', 'xreflist_t_truncate', 'yword_flag', - 'zword_flag']} + 'zword_flag']} \ No newline at end of file diff --git a/release_pydoc_injections2.txt b/release_pydoc_injections2.txt index ebe2d75..0647ca7 100644 --- a/release_pydoc_injections2.txt +++ b/release_pydoc_injections2.txt @@ -11874,6 +11874,9 @@ class func_t(ida_range.range_t) | __get_points__(self, *args) | __get_points__(self) -> stkpnt_array | + | __get_regargs__(self, *args) + | __get_regargs__(self) -> regarg_array + | | __get_regvars__(self, *args) | __get_regvars__(self) -> regvar_array | @@ -11921,12 +11924,6 @@ class func_t(ida_range.range_t) | frsize | func_t_frsize_get(self) -> asize_t | - | llabelqty - | func_t_llabelqty_get(self) -> int - | - | llabels - | func_t_llabels_get(self) -> llabel_t * - | | owner | func_t_owner_get(self) -> ea_t | @@ -11946,7 +11943,7 @@ class func_t(ida_range.range_t) | func_t_regargqty_get(self) -> int | | regargs - | func_t_regargs_get(self) -> regarg_t + | __get_regargs__(self) -> regarg_array | | regvarqty | func_t_regvarqty_get(self) -> int @@ -12601,6 +12598,54 @@ reanalyze_noret_flag(*args) @param ea (C++: ea_t) +Help on class regarg_array in module ida_funcs: + +class regarg_array(__builtin__.object) + | Proxy of C++ dynamic_wrapped_array_t< regarg_t > class. + | + | Methods defined here: + | + | __getitem__(self, *args) + | __getitem__(self, i) -> regarg_t + | + | __init__(self, *args) + | __init__(self, _data, _count) -> regarg_array + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) + | __len__(self) -> size_t + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) + | __setitem__(self, i, v) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | count + | regarg_array_count_get(self) -> size_t + | + | data + | regarg_array_data_get(self) -> regarg_t + | + | thisown + | The membership flag + | + | ---------------------------------------------------------------------- + | Data and other attributes defined here: + | + | __swig_destroy__ = + | delete_regarg_array(self) + Help on class regarg_t in module ida_funcs: class regarg_t(__builtin__.object) diff --git a/release_pydoc_injections3.txt b/release_pydoc_injections3.txt index 058ae4c..79da563 100644 --- a/release_pydoc_injections3.txt +++ b/release_pydoc_injections3.txt @@ -11818,6 +11818,9 @@ class func_t(ida_range.range_t) | __get_points__(self, *args) -> 'dynamic_wrapped_array_t< stkpnt_t >' | __get_points__(self) -> stkpnt_array | + | __get_regargs__(self, *args) -> 'dynamic_wrapped_array_t< regarg_t >' + | __get_regargs__(self) -> regarg_array + | | __get_regvars__(self, *args) -> 'dynamic_wrapped_array_t< regvar_t >' | __get_regvars__(self) -> regvar_array | @@ -11868,12 +11871,6 @@ class func_t(ida_range.range_t) | frsize | func_t_frsize_get(self) -> asize_t | - | llabelqty - | func_t_llabelqty_get(self) -> int - | - | llabels - | func_t_llabels_get(self) -> llabel_t * - | | owner | func_t_owner_get(self) -> ea_t | @@ -11893,7 +11890,7 @@ class func_t(ida_range.range_t) | func_t_regargqty_get(self) -> int | | regargs - | func_t_regargs_get(self) -> regarg_t + | __get_regargs__(self) -> regarg_array | | regvarqty | func_t_regvarqty_get(self) -> int @@ -12538,6 +12535,51 @@ reanalyze_noret_flag(*args) -> 'bool' @param ea (C++: ea_t) +Help on class regarg_array in module ida_funcs: + +class regarg_array(builtins.object) + | Proxy of C++ dynamic_wrapped_array_t< regarg_t > class. + | + | Methods defined here: + | + | __getitem__(self, *args) -> 'regarg_t const &' + | __getitem__(self, i) -> regarg_t + | + | __init__(self, *args) + | __init__(self, _data, _count) -> regarg_array + | + | __iter__ = _bounded_getitem_iterator(self) + | Helper function, to be set as __iter__ method for qvector-, or array-based classes. + | + | __len__(self, *args) -> 'size_t' + | __len__(self) -> size_t + | + | __repr__ = _swig_repr(self) + | + | __setitem__(self, *args) -> 'void' + | __setitem__(self, i, v) + | + | __swig_destroy__ = delete_regarg_array(...) + | delete_regarg_array(self) + | + | ---------------------------------------------------------------------- + | Data descriptors defined here: + | + | __dict__ + | dictionary for instance variables (if defined) + | + | __weakref__ + | list of weak references to the object (if defined) + | + | count + | regarg_array_count_get(self) -> size_t + | + | data + | regarg_array_data_get(self) -> regarg_t + | + | thisown + | The membership flag + Help on class regarg_t in module ida_funcs: class regarg_t(builtins.object) diff --git a/swig/funcs.i b/swig/funcs.i index f6d311d..84cca2f 100644 --- a/swig/funcs.i +++ b/swig/funcs.i @@ -19,14 +19,20 @@ %ignore func_md_t::cbsize; %ignore func_pat_t::cbsize; +%ignore func_t::llabelqty; +%ignore func_t::llabels; %template (stkpnt_array) dynamic_wrapped_array_t; %template (regvar_array) dynamic_wrapped_array_t; %template (range_array) dynamic_wrapped_array_t; +%template (regarg_array) dynamic_wrapped_array_t; + %extend func_t { dynamic_wrapped_array_t __get_points__() { + if ( $self->pntqty > 0 && $self->points == NULL ) // force load + get_sp_delta($self, $self->start_ea); return dynamic_wrapped_array_t($self->points, $self->pntqty); } @@ -42,10 +48,19 @@ return dynamic_wrapped_array_t($self->tails, $self->tailqty); } + + dynamic_wrapped_array_t __get_regargs__() + { + if ( $self->regargqty > 0 && $self->regargs == NULL ) // force load + read_regargs($self); + return dynamic_wrapped_array_t($self->regargs, $self->regargqty); + } + %pythoncode { points = property(__get_points__) regvars = property(__get_regvars__) tails = property(__get_tails__) + regargs = property(__get_regargs__) } }