139 lines
4.5 KiB
Python
139 lines
4.5 KiB
Python
# Copyright 2020 Canonical, Ltd.
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, version 3.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
|
COLORS = [
|
|
# black
|
|
("bg", (0x11, 0x11, 0x11)),
|
|
# dark red
|
|
("danger", (0xFF, 0x00, 0x00)),
|
|
# dark green
|
|
("good", (0x0E, 0x84, 0x20)),
|
|
# brown
|
|
("orange", (0xE9, 0x54, 0x20)),
|
|
# dark blue
|
|
("neutral", (0x00, 0x7A, 0xA6)),
|
|
# dark magenta
|
|
("brand", (0x33, 0x33, 0x33)),
|
|
# dark cyan
|
|
("gray", (0x80, 0x80, 0x80)),
|
|
# light gray
|
|
("fg", (0xFF, 0xFF, 0xFF)),
|
|
]
|
|
|
|
PALETTE_COLOR = [
|
|
("frame_header_fringe", "orange", "bg"),
|
|
("frame_header", "fg", "orange"),
|
|
("body", "fg", "bg"),
|
|
("done_button", "fg", "bg"),
|
|
("danger_button", "fg", "bg"),
|
|
("other_button", "fg", "bg"),
|
|
("done_button focus", "fg", "good"),
|
|
("danger_button focus", "fg", "danger"),
|
|
("other_button focus", "fg", "gray"),
|
|
("menu_button", "fg", "bg"),
|
|
("menu_button focus", "fg", "gray"),
|
|
("frame_button", "fg", "orange"),
|
|
("frame_button focus", "orange", "fg"),
|
|
("info_primary", "fg", "bg"),
|
|
("info_minor", "gray", "bg"),
|
|
("info_minor header", "gray", "orange"),
|
|
("info_error", "danger", "bg"),
|
|
("string_input", "bg", "fg"),
|
|
("string_input focus", "fg", "gray"),
|
|
("progress_incomplete", "fg", "gray"),
|
|
("progress_complete", "fg", "neutral"),
|
|
("scrollbar", "brand", "bg"),
|
|
("scrollbar focus", "gray", "bg"),
|
|
("verified", "good", "bg"),
|
|
("verified focus", "good", "gray"),
|
|
("verified invisible", "bg", "bg"),
|
|
("verified inv focus", "gray", "gray"),
|
|
("starred", "orange", "bg"),
|
|
("starred focus", "orange", "gray"),
|
|
("user_code", "fg", "good"),
|
|
]
|
|
|
|
PALETTE_MONO = [
|
|
("frame_header_fringe", "white", "black"),
|
|
("frame_header", "black", "white"),
|
|
("body", "white", "black"),
|
|
("done_button", "white", "black"),
|
|
("danger_button", "white", "black"),
|
|
("other_button", "white", "black"),
|
|
("done_button focus", "black", "white"),
|
|
("danger_button focus", "black", "white"),
|
|
("other_button focus", "black", "white"),
|
|
("menu_button", "white", "black"),
|
|
("menu_button focus", "black", "white"),
|
|
("frame_button", "black", "white"),
|
|
("frame_button focus", "white", "black"),
|
|
("info_primary", "white", "black"),
|
|
("info_minor", "white", "black"),
|
|
("info_minor header", "black", "white"),
|
|
("info_error", "white", "black"),
|
|
("string_input", "white", "black"),
|
|
("string_input focus", "black", "white"),
|
|
("progress_incomplete", "white", "black"),
|
|
("progress_complete", "black", "white"),
|
|
("scrollbar_fg", "white", "black"),
|
|
("scrollbar_bg", "white", "black"),
|
|
("verified", "white", "black"),
|
|
("verified focus", "black", "white"),
|
|
("verified invisible", "white", "black"),
|
|
("verified inv focus", "black", "white"),
|
|
("starred", "white", "black"),
|
|
("starred focus", "black", "white"),
|
|
("user_code", "white", "black"),
|
|
]
|
|
|
|
urwid_8_names = (
|
|
"black",
|
|
"dark red",
|
|
"dark green",
|
|
"brown",
|
|
"dark blue",
|
|
"dark magenta",
|
|
"dark cyan",
|
|
"light gray",
|
|
)
|
|
|
|
|
|
def _urwidize_palette(colors, styles):
|
|
"""Return a palette to be passed to MainLoop.
|
|
|
|
colors is a list of exactly 8 tuples (name, (r, g, b))
|
|
|
|
styles is a list of tuples (stylename, fg_color, bg_color) where
|
|
fg_color and bg_color are defined in 'colors'
|
|
"""
|
|
# The part that makes this "fun" is that urwid insists on referring
|
|
# to the basic colors by their "standard" names but we overwrite
|
|
# these colors to mean different things. So we convert styles into
|
|
# an urwid palette by mapping the names in colors to the standard
|
|
# name.
|
|
if len(colors) != 8:
|
|
raise Exception("make_palette must be passed a list of exactly 8 colors")
|
|
urwid_name = dict(zip([c[0] for c in colors], urwid_8_names))
|
|
|
|
urwid_palette = []
|
|
for name, fg, bg in styles:
|
|
urwid_fg, urwid_bg = urwid_name[fg], urwid_name[bg]
|
|
urwid_palette.append((name, urwid_fg, urwid_bg))
|
|
|
|
return urwid_palette
|
|
|
|
|
|
PALETTE_COLOR = _urwidize_palette(COLORS, PALETTE_COLOR)
|