codekingpro/portable-devtools
114k
1import urwid2 3from mitmproxy.tools.console import signals4from mitmproxy.tools.console.grideditor import base5from mitmproxy.utils import strutils6 7 8class Column(base.Column):9 def Display(self, data):10 return Display(data)11 12 def Edit(self, data):13 return Edit(data)14 15 def blank(self):16 return b""17 18 def keypress(self, key, editor):19 if key in ["m_select"]:20 editor.walker.start_edit()21 else:22 return key23 24 25class Display(base.Cell):26 def __init__(self, data: bytes) -> None:27 self.data = data28 escaped = strutils.bytes_to_escaped_str(data)29 w = urwid.Text(escaped, wrap="any")30 super().__init__(w)31 32 def get_data(self) -> bytes:33 return self.data34 35 36class Edit(base.Cell):37 def __init__(self, data: bytes) -> None:38 d = strutils.bytes_to_escaped_str(data)39 w = urwid.Edit(edit_text=d, wrap="any", multiline=True)40 w = urwid.AttrMap(w, "editfield")41 super().__init__(w)42 43 def get_data(self) -> bytes:44 txt = self._w.base_widget.get_text()[0].strip()45 try:46 return strutils.escaped_str_to_bytes(txt)47 except ValueError:48 signals.status_message.send(message="Invalid data.")49 raise50 