about summary refs log tree commit diff stats
path: root/example
diff options
context:
space:
mode:
Diffstat (limited to 'example')
-rw-r--r--example/ida/symbol_exec.py60
-rw-r--r--example/ida/utils.py56
2 files changed, 58 insertions, 58 deletions
diff --git a/example/ida/symbol_exec.py b/example/ida/symbol_exec.py
index 1ff75f41..b1601cef 100644
--- a/example/ida/symbol_exec.py
+++ b/example/ida/symbol_exec.py
@@ -4,64 +4,8 @@ import idaapi
 import idc
 from miasm2.expression.expression_helper import Variables_Identifier
 from miasm2.expression.expression import ExprAff
-from miasm2.ir.translators import Translator
-
-from utils import expr2colorstr
-
-
-class translatorForm(Form):
-    """Translator Form.
-
-    Offer a ComboBox with available languages (ie. IR translators) and the
-    corresponding translation."""
-
-    flags = (Form.MultiLineTextControl.TXTF_FIXEDFONT | \
-                 Form.MultiLineTextControl.TXTF_READONLY)
-
-    def __init__(self, expr):
-        "@expr: Expr instance"
-
-        # Init
-        self.languages = list(Translator.available_languages())
-        self.expr = expr
-
-        # Initial translation
-        text = Translator.to_language(self.languages[0]).from_expr(self.expr)
-
-        # Create the Form
-        Form.__init__(self, r"""STARTITEM 0
-Python Expression
-{FormChangeCb}
-<Language:{cbLanguage}>
-<Translation:{result}>
-""", {
-            'result': Form.MultiLineTextControl(text=text,
-                                                flags=translatorForm.flags),
-            'cbLanguage': Form.DropdownListControl(
-                    items=self.languages,
-                    readonly=True,
-                    selval=0),
-            'FormChangeCb': Form.FormChangeCb(self.OnFormChange),
-        })
-
-    def OnFormChange(self, fid):
-        if fid == self.cbLanguage.id:
-            # Display the Field (may be hide)
-            self.ShowField(self.result, True)
-
-            # Translate the expression
-            dest_lang = self.languages[self.GetControlValue(self.cbLanguage)]
-            try:
-                text = Translator.to_language(dest_lang).from_expr(self.expr)
-            except Exception, error:
-                self.ShowField(self.result, False)
-                return -1
-
-            # Update the form
-            self.SetControlValue(self.result,
-                                 textctrl_info_t(text=str(text),
-                                                 flags=translatorForm.flags))
-        return 1
+
+from utils import expr2colorstr, translatorForm
 
 
 class symbolicexec_t(idaapi.simplecustviewer_t):
diff --git a/example/ida/utils.py b/example/ida/utils.py
index 6b42cd83..8b9dcf6a 100644
--- a/example/ida/utils.py
+++ b/example/ida/utils.py
@@ -2,6 +2,7 @@ import idaapi
 from idc import *
 
 from miasm2.analysis.machine import Machine
+from miasm2.ir.translators import Translator
 import miasm2.expression.expression as m2_expr
 
 
@@ -111,3 +112,58 @@ def expr2colorstr(regs_ids, expr):
         s = str(expr)
 
     return s
+
+
+class translatorForm(idaapi.Form):
+    """Translator Form.
+
+    Offer a ComboBox with available languages (ie. IR translators) and the
+    corresponding translation."""
+
+    flags = (idaapi.Form.MultiLineTextControl.TXTF_FIXEDFONT | \
+                 idaapi.Form.MultiLineTextControl.TXTF_READONLY)
+
+    def __init__(self, expr):
+        "@expr: Expr instance"
+
+        # Init
+        self.languages = list(Translator.available_languages())
+        self.expr = expr
+
+        # Initial translation
+        text = Translator.to_language(self.languages[0]).from_expr(self.expr)
+
+        # Create the Form
+        idaapi.Form.__init__(self, r"""STARTITEM 0
+Python Expression
+{FormChangeCb}
+<Language:{cbLanguage}>
+<Translation:{result}>
+""", {
+            'result': idaapi.Form.MultiLineTextControl(text=text,
+                                                       flags=translatorForm.flags),
+            'cbLanguage': idaapi.Form.DropdownListControl(
+                    items=self.languages,
+                    readonly=True,
+                    selval=0),
+            'FormChangeCb': idaapi.Form.FormChangeCb(self.OnFormChange),
+        })
+
+    def OnFormChange(self, fid):
+        if fid == self.cbLanguage.id:
+            # Display the Field (may be hide)
+            self.ShowField(self.result, True)
+
+            # Translate the expression
+            dest_lang = self.languages[self.GetControlValue(self.cbLanguage)]
+            try:
+                text = Translator.to_language(dest_lang).from_expr(self.expr)
+            except Exception, error:
+                self.ShowField(self.result, False)
+                return -1
+
+            # Update the form
+            self.SetControlValue(self.result,
+                                 idaapi.textctrl_info_t(text=str(text),
+                                                        flags=translatorForm.flags))
+        return 1