make it possible for subiquity and console_conf to use different colours

This commit is contained in:
Michael Hudson-Doyle 2017-09-07 21:37:48 +12:00
parent a9de883e0b
commit 34f1e67d49
5 changed files with 31 additions and 72 deletions

View File

@ -22,6 +22,8 @@ log = logging.getLogger('console_conf.core')
class ConsoleConf(Application): class ConsoleConf(Application):
from console_conf.palette import STYLES, STYLES_MONO
project = "console_conf" project = "console_conf"
controllers = [ controllers = [
"Welcome", "Welcome",

View File

@ -22,6 +22,8 @@ log = logging.getLogger('console_conf.core')
class Subiquity(Application): class Subiquity(Application):
from subiquity.palette import STYLES, STYLES_MONO
project = "subiquity" project = "subiquity"
controllers = [ controllers = [
"Welcome", "Welcome",

View File

@ -19,7 +19,6 @@ import logging
import urwid import urwid
from subiquitycore.signals import Signal from subiquitycore.signals import Signal
from subiquitycore.palette import STYLES, STYLES_MONO
from subiquitycore.prober import Prober, ProberException from subiquitycore.prober import Prober, ProberException
log = logging.getLogger('subiquitycore.core') log = logging.getLogger('subiquitycore.core')
@ -122,7 +121,7 @@ class Application:
def run(self): def run(self):
if not hasattr(self, 'loop'): if not hasattr(self, 'loop'):
palette = STYLES palette = self.STYLES
additional_opts = { additional_opts = {
'screen': urwid.raw_display.Screen(), 'screen': urwid.raw_display.Screen(),
'unhandled_input': self.header_hotkeys, 'unhandled_input': self.header_hotkeys,
@ -130,7 +129,7 @@ class Application:
'pop_ups': True, 'pop_ups': True,
} }
if self.common['opts'].run_on_serial: if self.common['opts'].run_on_serial:
palette = STYLES_MONO palette = self.STYLES_MONO
else: else:
additional_opts['screen'].set_terminal_properties(colors=256) additional_opts['screen'].set_terminal_properties(colors=256)
additional_opts['screen'].reset_default_terminal_palette() additional_opts['screen'].reset_default_terminal_palette()

View File

@ -1,60 +0,0 @@
# Copyright 2015 Canonical, Ltd.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
""" Palette definitions """
dark_magenta = 'dark magenta'
light_magenta = 'light magenta'
light_green = 'light green'
dark_green = 'dark green'
white = 'white'
black = 'black'
light_gray = 'light gray'
dark_gray = 'dark gray'
dark_red = 'dark red'
light_red = 'light red'
STYLES = [
('frame_header', '', '', '', white, ''),
('frame_footer', '', '', '', white, ''),
('body', '', '', '', white, ''),
('menu_button', '', '', '', white, ''),
('menu_button focus', '', '', '', black, light_gray),
('button', '', '', '', white, ''),
('button focus', '', '', '', black, dark_green),
('info_primary', '', '', '', white, ''),
('info_major', '', '', '', light_gray, ''),
('info_minor', '', '', '', dark_gray, ''),
('info_error', '', '', '', dark_red, ''),
('string_input', '', '', '', black, light_gray),
('string_input focus', '', '', '', white, dark_gray),
('progress_incomplete', '', '', '', white, dark_magenta),
('progress_complete', '', '', '', white, light_magenta)
]
STYLES_MONO = [
('frame_header', white, black, '', '', ''),
('frame_footer', white, black, '', '', ''),
('body', white, black, '', '', ''),
('info_minor', white, black, '', '', ''),
('menu_button', '', '', '', white, ''),
('menu_button focus', '', '', '', white, ''),
('button', white, black, '', '', ''),
('button focus', white, black, '', '', ''),
('string_input', '', '', '', white, ''),
('string_input focus', '', '', '', white, ''),
('progress_incomplete', '', '', '', '', black),
('progress_complete', '', '', '', '', white),
]

View File

@ -18,7 +18,6 @@
from urwid import Padding as _Padding from urwid import Padding as _Padding
from urwid import AttrMap, Text from urwid import AttrMap, Text
from functools import partialmethod from functools import partialmethod
from subiquitycore.palette import STYLES
def apply_padders(cls): def apply_padders(cls):
@ -124,6 +123,26 @@ class Padding:
""" """
line_break = partialmethod(Text) line_break = partialmethod(Text)
# This makes assumptions about the style names defined by both
# subiquity and console_conf. The fix is to stop using the Color class
# below, I think.
STYLE_NAMES = set([
'frame_header',
'frame_footer',
'body',
'menu_button',
'menu_button focus',
'button',
'button focus',
'info_primary',
'info_major',
'info_minor',
'info_error',
'string_input',
'string_input focus',
'progress_incomplete',
'progress_complete',
])
def apply_style_map(cls): def apply_style_map(cls):
""" Applies AttrMap attributes to Color class """ Applies AttrMap attributes to Color class
@ -133,15 +152,12 @@ def apply_style_map(cls):
Color.frame_header(Text("I'm text in the Orange frame header")) Color.frame_header(Text("I'm text in the Orange frame header"))
Color.body(Text("Im text in wrapped with the body color")) Color.body(Text("Im text in wrapped with the body color"))
""" """
style_names = set() for k in STYLE_NAMES:
for k in STYLES: kf = k + ' focus'
style_names.add(k[0]) if kf in STYLE_NAMES:
for k in STYLES: setattr(cls, k, partialmethod(AttrMap, attr_map=k[0], focus_map=kf))
kf = k[0] + ' focus'
if k[0] + ' focus' in style_names:
setattr(cls, k[0], partialmethod(AttrMap, attr_map=k[0], focus_map=kf))
else: else:
setattr(cls, k[0], partialmethod(AttrMap, attr_map=k[0])) setattr(cls, k, partialmethod(AttrMap, attr_map=k[0]))
return cls return cls