From 1d5fcc6e0eb050b67ff743b3428ed1de3700fbd5 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Thu, 19 Mar 2015 18:05:30 +1300 Subject: Revamp palette specification - Split low-color and high-color specifications in palettes. - Split off light, dark, lowlight and lowdark palettes. Lowlight and lowdark will be the low-color base for most subsequent palettes. - Add a small script that makes test pattern requests to pathod. --- libmproxy/console/palettes.py | 439 ++++++++++++++++++++++++------------------ 1 file changed, 250 insertions(+), 189 deletions(-) (limited to 'libmproxy/console/palettes.py') diff --git a/libmproxy/console/palettes.py b/libmproxy/console/palettes.py index 650cf261..b8a66bec 100644 --- a/libmproxy/console/palettes.py +++ b/libmproxy/console/palettes.py @@ -1,192 +1,253 @@ -palettes = { -# Default palette for dark background - 'dark': [ - # name, foreground, background, mono, foreground_high, background_high - # For details on the meaning of the elements refer to - # http://excess.org/urwid/reference.html#Screen-register_palette - - ('body', 'black', 'dark cyan'), - ('foot', 'light gray', 'default'), - ('title', 'white,bold', 'default',), - ('editline', 'white', 'default',), - - # Status bar & heading - ('heading', 'light gray', 'dark blue', None, 'g85', 'dark blue'), - ('heading_key', 'light cyan', 'dark blue', None, 'light cyan', 'dark blue'), - ('heading_inactive', 'white', 'dark gray', None, 'g58', 'g11'), - - # Help - ('key', 'light cyan', 'default'), - ('head', 'white,bold', 'default'), - ('text', 'light gray', 'default'), - - # List and Connections - ('method', 'dark cyan', 'default'), - ('focus', 'yellow', 'default'), - - ('code_200', 'light green', 'default'), - ('code_300', 'light blue', 'default'), - ('code_400', 'light red', 'default', None, '#f60', 'default'), - ('code_500', 'light red', 'default'), - ('code_other', 'dark red', 'default'), - - ('error', 'light red', 'default'), - - ('header', 'dark cyan', 'default'), - ('highlight', 'white,bold', 'default'), - ('intercept', 'brown', 'default', None, '#f60', 'default'), - ('replay', 'light green', 'default', None, '#0f0', 'default'), - ('ack', 'light red', 'default'), - - # Hex view - ('offset', 'dark cyan', 'default'), - - # Grid Editor - ('focusfield', 'black', 'light gray'), - ('focusfield_error', 'dark red', 'light gray'), - ('field_error', 'dark red', 'black'), - ('editfield', 'black', 'light cyan'), - ], - -# Palette for light background - 'light': [ - ('body', 'black', 'dark cyan'), - ('foot', 'dark gray', 'default'), - ('title', 'white,bold', 'light blue',), - ('editline', 'white', 'default',), - - # Status bar & heading - ('heading', 'white', 'light gray', None, 'g85', 'dark blue'), - ('heading_key', 'dark blue', 'light gray', None, 'light cyan', 'dark blue'), - ('heading_inactive', 'light gray', 'dark gray', None, 'dark gray', 'dark blue'), - - # Help - ('key', 'dark blue,bold', 'default'), - ('head', 'black,bold', 'default'), - ('text', 'dark gray', 'default'), - - # List and Connections - ('method', 'dark cyan', 'default'), - ('focus', 'black', 'default'), - - ('code_200', 'dark green', 'default'), - ('code_300', 'light blue', 'default'), - ('code_400', 'dark red', 'default', None, '#f60', 'default'), - ('code_500', 'dark red', 'default'), - ('code_other', 'light red', 'default'), - - ('error', 'light red', 'default'), - - ('header', 'dark blue', 'default'), - ('highlight', 'black,bold', 'default'), - ('intercept', 'brown', 'default', None, '#f60', 'default'), - ('replay', 'dark green', 'default', None, '#0f0', 'default'), - ('ack', 'dark red', 'default'), - - # Hex view - ('offset', 'dark blue', 'default'), - - # Grid Editor - ('focusfield', 'black', 'light gray'), - ('focusfield_error', 'dark red', 'light gray'), - ('field_error', 'dark red', 'black'), - ('editfield', 'black', 'light cyan'), - ], - -# Palettes for terminals that use the Solarized precision colors -# (http://ethanschoonover.com/solarized#the-values) - -# For dark backgrounds - 'solarized_dark': [ - ('body', 'dark cyan', 'default'), - ('foot', 'dark gray', 'default'), - ('title', 'white,bold', 'default',), - ('editline', 'white', 'default',), - - # Status bar & heading - ('heading', 'light gray', 'light cyan',), - ('heading_key', 'dark blue', 'white',), - ('heading_inactive', 'light cyan', 'light gray',), - - # Help - ('key', 'dark blue', 'default',), - ('head', 'white,underline', 'default'), - ('text', 'light cyan', 'default'), - - # List and Connections - ('method', 'dark cyan', 'default'), - ('focus', 'white', 'default'), - - ('code_200', 'dark green', 'default'), - ('code_300', 'light blue', 'default'), - ('code_400', 'dark red', 'default',), - ('code_500', 'dark red', 'default'), - ('code_other', 'light red', 'default'), - - ('error', 'light red', 'default'), - - ('header', 'yellow', 'default'), - ('highlight', 'white', 'default'), - ('intercept', 'brown', 'default',), - ('replay', 'dark green', 'default',), - ('ack', 'dark red', 'default'), - - # Hex view - ('offset', 'yellow', 'default'), - ('text', 'light cyan', 'default'), - - # Grid Editor - ('focusfield', 'white', 'light cyan'), - ('focusfield_error', 'dark red', 'light gray'), - ('field_error', 'dark red', 'black'), - ('editfield', 'black', 'light gray'), - ], - -# For light backgrounds - 'solarized_light': [ - ('body', 'dark cyan', 'default'), - ('foot', 'dark gray', 'default'), - ('title', 'white,bold', 'light cyan',), - ('editline', 'white', 'default',), - - # Status bar & heading - ('heading', 'light cyan', 'light gray',), - ('heading_key', 'dark blue', 'white',), - ('heading_inactive', 'white', 'light gray',), - - # Help - ('key', 'dark blue', 'default',), - ('head', 'black,underline', 'default'), - ('text', 'light cyan', 'default'), - - # List and Connections - ('method', 'dark cyan', 'default'), - ('focus', 'black', 'default'), - - ('code_200', 'dark green', 'default'), - ('code_300', 'light blue', 'default'), - ('code_400', 'dark red', 'default',), - ('code_500', 'dark red', 'default'), - ('code_other', 'light red', 'default'), - - ('error', 'light red', 'default'), - - ('header', 'light cyan', 'default'), - ('highlight', 'black,bold', 'default'), - ('intercept', 'brown', 'default',), - ('replay', 'dark green', 'default',), - ('ack', 'dark red', 'default'), - - # Hex view - ('offset', 'light cyan', 'default'), - ('text', 'yellow', 'default'), - - # Grid Editor - ('focusfield', 'black', 'light gray'), - ('focusfield_error', 'dark red', 'light gray'), - ('field_error', 'dark red', 'black'), - ('editfield', 'white', 'light cyan'), - ], +# Low-color themes should ONLY use the standard foreground and background +# colours listed here: +# +# http://urwid.org/manual/displayattributes.html +# + + + +class Palette: + _fields = [ + 'body', 'foot', 'title', 'editline', + + # Status bar & heading + 'heading', 'heading_key', 'heading_inactive', + + # Help + 'key', 'head', 'text', + + # List and Connections + 'method', 'focus', + 'code_200', 'code_300', 'code_400', 'code_500', 'code_other', + 'error', + 'header', 'highlight', 'intercept', 'replay', 'ack', + + # Hex view + 'offset', + + # Grid Editor + 'focusfield', 'focusfield_error', 'field_error', 'editfield', + ] + high = None + + def palette(self): + l = [] + for i in self._fields: + v = [i] + v.extend(self.low[i]) + if self.high and i in self.high: + v.append(None) + v.extend(self.high[i]) + l.append(tuple(v)) + return l + + +class LowDark(Palette): + """ + Low-color dark background + """ + low = dict( + body = ('black', 'dark cyan'), + foot = ('light gray', 'default'), + title = ('white,bold', 'default'), + editline = ('white', 'default'), + + # Status bar & heading + heading = ('light gray', 'dark blue'), + heading_key = ('light cyan', 'dark blue'), + heading_inactive = ('white', 'dark gray'), + + # Help + key = ('light cyan', 'default'), + head = ('white,bold', 'default'), + text = ('light gray', 'default'), + + # List and Connections + method = ('dark cyan', 'default'), + focus = ('yellow', 'default'), + + code_200 = ('dark green', 'default'), + code_300 = ('light blue', 'default'), + code_400 = ('light red', 'default'), + code_500 = ('light red', 'default'), + code_other = ('dark red', 'default'), + + error = ('light red', 'default'), + + header = ('dark cyan', 'default'), + highlight = ('white,bold', 'default'), + intercept = ('brown', 'default'), + replay = ('light green', 'default'), + ack = ('light red', 'default'), + + # Hex view + offset = ('dark cyan', 'default'), + + # Grid Editor + focusfield = ('black', 'light gray'), + focusfield_error = ('dark red', 'light gray'), + field_error = ('dark red', 'default'), + editfield = ('white', 'default'), + ) + + +class Dark(LowDark): + high = dict( + heading_inactive = ('g58', 'g11'), + intercept = ('#f60', 'default'), + ) + + +class LowLight(Palette): + """ + Low-color light background + """ + low = dict( + body = ('black', 'dark cyan'), + foot = ('dark gray', 'default'), + title = ('dark magenta,bold', 'light blue'), + editline = ('white', 'default'), + + # Status bar & heading + heading = ('light gray', 'dark blue'), + heading_key = ('light cyan', 'black'), + heading_inactive = ('black', 'light gray'), + + # Help + key = ('dark blue,bold', 'default'), + head = ('black,bold', 'default'), + text = ('dark gray', 'default'), + + # List and Connections + method = ('dark cyan', 'default'), + focus = ('black', 'default'), + + code_200 = ('dark green', 'default'), + code_300 = ('light blue', 'default'), + code_400 = ('dark red', 'default'), + code_500 = ('dark red', 'default'), + code_other = ('light red', 'default'), + + error = ('light red', 'default'), + + header = ('dark blue', 'default'), + highlight = ('black,bold', 'default'), + intercept = ('brown', 'default'), + replay = ('dark green', 'default'), + ack = ('dark red', 'default'), + + # Hex view + offset = ('dark blue', 'default'), + + # Grid Editor + focusfield = ('black', 'light gray'), + focusfield_error = ('dark red', 'light gray'), + field_error = ('dark red', 'black'), + editfield = ('black', 'default'), + ) + + +class Light(LowLight): + pass + + +palettes = { + "lowlight": LowLight(), + "lowdark": LowDark(), + "light": Light(), + "dark": Dark(), + +# # For dark backgrounds +# 'solarized_dark': [ +# ('body', 'dark cyan', 'default'), +# ('foot', 'dark gray', 'default'), +# ('title', 'white,bold', 'default',), +# ('editline', 'white', 'default',), +# +# # Status bar & heading +# ('heading', 'light gray', 'light cyan',), +# ('heading_key', 'dark blue', 'white',), +# ('heading_inactive', 'light cyan', 'light gray',), +# +# # Help +# ('key', 'dark blue', 'default',), +# ('head', 'white,underline', 'default'), +# ('text', 'light cyan', 'default'), +# +# # List and Connections +# ('method', 'dark cyan', 'default'), +# ('focus', 'white', 'default'), +# +# ('code_200', 'dark green', 'default'), +# ('code_300', 'light blue', 'default'), +# ('code_400', 'dark red', 'default',), +# ('code_500', 'dark red', 'default'), +# ('code_other', 'light red', 'default'), +# +# ('error', 'light red', 'default'), +# +# ('header', 'yellow', 'default'), +# ('highlight', 'white', 'default'), +# ('intercept', 'brown', 'default',), +# ('replay', 'dark green', 'default',), +# ('ack', 'dark red', 'default'), +# +# # Hex view +# ('offset', 'yellow', 'default'), +# ('text', 'light cyan', 'default'), +# +# # Grid Editor +# ('focusfield', 'white', 'light cyan'), +# ('focusfield_error', 'dark red', 'light gray'), +# ('field_error', 'dark red', 'black'), +# ('editfield', 'black', 'light gray'), +# ], +# +# # For light backgrounds +# 'solarized_light': [ +# ('body', 'dark cyan', 'default'), +# ('foot', 'dark gray', 'default'), +# ('title', 'white,bold', 'light cyan',), +# ('editline', 'white', 'default',), +# +# # Status bar & heading +# ('heading', 'light cyan', 'light gray',), +# ('heading_key', 'dark blue', 'white',), +# ('heading_inactive', 'white', 'light gray',), +# +# # Help +# ('key', 'dark blue', 'default',), +# ('head', 'black,underline', 'default'), +# ('text', 'light cyan', 'default'), +# +# # List and Connections +# ('method', 'dark cyan', 'default'), +# ('focus', 'black', 'default'), +# +# ('code_200', 'dark green', 'default'), +# ('code_300', 'light blue', 'default'), +# ('code_400', 'dark red', 'default',), +# ('code_500', 'dark red', 'default'), +# ('code_other', 'light red', 'default'), +# +# ('error', 'light red', 'default'), +# +# ('header', 'light cyan', 'default'), +# ('highlight', 'black,bold', 'default'), +# ('intercept', 'brown', 'default',), +# ('replay', 'dark green', 'default',), +# ('ack', 'dark red', 'default'), +# +# # Hex view +# ('offset', 'light cyan', 'default'), +# ('text', 'yellow', 'default'), +# +# # Grid Editor +# ('focusfield', 'black', 'light gray'), +# ('focusfield_error', 'dark red', 'light gray'), +# ('field_error', 'dark red', 'black'), +# ('editfield', 'white', 'light cyan'), +# ], } -- cgit v1.2.3