mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-12-03 12:23:46 +00:00
24cf8da27e
The primary motivation here (and for all the other moving around) is to present a clean "front of house" to library users, and to migrate primary objects to the top of the module hierarchy.
86 lines
2.2 KiB
Python
86 lines
2.2 KiB
Python
import urwid
|
|
|
|
from mitmproxy.tools.console import common
|
|
from mitmproxy.tools.console import palettes
|
|
from mitmproxy.tools.console import select
|
|
from mitmproxy.tools.console import signals
|
|
|
|
footer = [
|
|
('heading_key', "enter/space"), ":select",
|
|
]
|
|
|
|
|
|
def _mkhelp():
|
|
text = []
|
|
keys = [
|
|
("enter/space", "select"),
|
|
]
|
|
text.extend(common.format_keyvals(keys, key="key", val="text", indent=4))
|
|
return text
|
|
help_context = _mkhelp()
|
|
|
|
|
|
class PalettePicker(urwid.WidgetWrap):
|
|
|
|
def __init__(self, master):
|
|
self.master = master
|
|
low, high = [], []
|
|
for k, v in palettes.palettes.items():
|
|
if v.high:
|
|
high.append(k)
|
|
else:
|
|
low.append(k)
|
|
high.sort()
|
|
low.sort()
|
|
|
|
options = [
|
|
select.Heading("High Colour")
|
|
]
|
|
|
|
def mkopt(name):
|
|
return select.Option(
|
|
i,
|
|
None,
|
|
lambda: self.master.palette == name,
|
|
lambda: self.select(name)
|
|
)
|
|
|
|
for i in high:
|
|
options.append(mkopt(i))
|
|
options.append(select.Heading("Low Colour"))
|
|
for i in low:
|
|
options.append(mkopt(i))
|
|
|
|
options.extend(
|
|
[
|
|
select.Heading("Options"),
|
|
select.Option(
|
|
"Transparent",
|
|
"T",
|
|
lambda: master.palette_transparent,
|
|
self.toggle_palette_transparent
|
|
)
|
|
]
|
|
)
|
|
|
|
self.lb = select.Select(options)
|
|
title = urwid.Text("Palettes")
|
|
title = urwid.Padding(title, align="left", width=("relative", 100))
|
|
title = urwid.AttrWrap(title, "heading")
|
|
self._w = urwid.Frame(
|
|
self.lb,
|
|
header = title
|
|
)
|
|
signals.update_settings.connect(self.sig_update_settings)
|
|
|
|
def sig_update_settings(self, sender):
|
|
self.lb.walker._modified()
|
|
|
|
def select(self, name):
|
|
self.master.set_palette(name)
|
|
|
|
def toggle_palette_transparent(self):
|
|
self.master.palette_transparent = not self.master.palette_transparent
|
|
self.master.set_palette(self.master.palette)
|
|
signals.update_settings.send(self)
|