| 1168 | # Search form |
| 1169 | class Keypatch_Search(Keypatch_Form): |
| 1170 | def __init__(self, kp_asm, address, assembly=None): |
| 1171 | self.setup(kp_asm, address, assembly) |
| 1172 | |
| 1173 | # create Search form |
| 1174 | Form.__init__(self, |
| 1175 | r"""STARTITEM {id:c_assembly} |
| 1176 | BUTTON YES* Search |
| 1177 | KEYPATCH:: Search |
| 1178 | |
| 1179 | {FormChangeCb} |
| 1180 | <A~r~ch :{c_arch}> |
| 1181 | <E~n~dian :{c_endian}> |
| 1182 | <~S~yntax :{c_syntax}> |
| 1183 | <A~d~dress :{c_addr}> |
| 1184 | <~A~ssembly :{c_assembly}> |
| 1185 | <- Fixup :{c_raw_assembly}> |
| 1186 | <- Encode:{c_encoding}> |
| 1187 | <- Size :{c_encoding_len}> |
| 1188 | """, { |
| 1189 | 'c_addr': Form.NumericInput(value=address, swidth=MAX_ADDRESS_LEN, tp=Form.FT_ADDR), |
| 1190 | 'c_assembly': Form.StringInput(value=self.asm[:MAX_INSTRUCTION_STRLEN], width=MAX_INSTRUCTION_STRLEN), |
| 1191 | 'c_raw_assembly': Form.StringInput(value='', width=MAX_INSTRUCTION_STRLEN), |
| 1192 | 'c_encoding': Form.StringInput(value='', width=MAX_ENCODING_LEN), |
| 1193 | 'c_encoding_len': Form.NumericInput(value=0, swidth=8, tp=Form.FT_DEC), |
| 1194 | 'c_arch': Form.DropdownListControl( |
| 1195 | items = self.arch_keys, |
| 1196 | readonly = True, |
| 1197 | selval = self.arch_id, |
| 1198 | width = 32), |
| 1199 | 'c_endian': Form.DropdownListControl( |
| 1200 | items = self.kp_asm.endian_lists.keys(), |
| 1201 | readonly = True, |
| 1202 | selval = self.endian_id), |
| 1203 | 'c_syntax': Form.DropdownListControl( |
| 1204 | items = self.syntax_keys, |
| 1205 | readonly = True, |
| 1206 | selval = self.syntax_id), |
| 1207 | 'FormChangeCb': Form.FormChangeCb(self.OnFormChange), |
| 1208 | }) |
| 1209 | |
| 1210 | self.Compile() |
| 1211 | |
| 1212 | # callback to be executed when any form control changed |
| 1213 | def OnFormChange(self, fid): |