Make fonts configurable.
This commit is contained in:
parent
9636432bd5
commit
1af78272bb
@ -105,28 +105,31 @@ tab.bg = grey
|
|||||||
tab.bg.selected = black
|
tab.bg.selected = black
|
||||||
tab.fg = white
|
tab.fg = white
|
||||||
tab.seperator = white
|
tab.seperator = white
|
||||||
|
|
||||||
|
[fonts]
|
||||||
|
_monospace = Monospace, "DejaVu Sans Mono", Consolas, Monaco,
|
||||||
|
"Bitstream Vera Sans Mono", "Andale Mono", "Liberation Mono",
|
||||||
|
"Courier New", Courier, monospace, Fixed, Terminal
|
||||||
|
completion = 8pt ${_monospace}
|
||||||
|
tabbar = 8pt ${_monospace}
|
||||||
|
statusbar = 8pt ${_monospace}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_MONOSPACE = ['Monospace', 'DejaVu Sans Mono', 'Consolas', 'Monaco',
|
|
||||||
'Bitstream Vera Sans Mono', 'Andale Mono', 'Liberation Mono',
|
|
||||||
'Courier New', 'Courier', 'monospace', 'Fixed', 'Terminal']
|
|
||||||
|
|
||||||
MONOSPACE = ', '.join(_MONOSPACE)
|
|
||||||
|
|
||||||
|
|
||||||
def init(confdir):
|
def init(confdir):
|
||||||
"""Initialize the global objects based on the config in configdir."""
|
"""Initialize the global objects based on the config in configdir."""
|
||||||
global config, colordict
|
global config, colordict, fontdict
|
||||||
config = Config(confdir)
|
config = Config(confdir)
|
||||||
try:
|
try:
|
||||||
colordict = ColorDict(config['colors'])
|
colordict = ColorDict(config['colors'])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
colordict = ColorDict()
|
colordict = ColorDict()
|
||||||
|
fontdict = FontDict(config['fonts'])
|
||||||
|
|
||||||
|
|
||||||
def get_stylesheet(template):
|
def get_stylesheet(template):
|
||||||
"""Return a formatted stylesheet based on a template."""
|
"""Return a formatted stylesheet based on a template."""
|
||||||
return template.strip().format(color=colordict, monospace=MONOSPACE)
|
return template.strip().format(color=colordict, font=fontdict)
|
||||||
|
|
||||||
|
|
||||||
class ColorDict(dict):
|
class ColorDict(dict):
|
||||||
@ -168,6 +171,38 @@ class ColorDict(dict):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
class FontDict(dict):
|
||||||
|
|
||||||
|
"""A dict aimed at Qt stylesheet fonts."""
|
||||||
|
|
||||||
|
def __getitem__(self, key):
|
||||||
|
"""Override dict __getitem__.
|
||||||
|
|
||||||
|
If a value wasn't found, return an empty string.
|
||||||
|
(Color not defined, so no output in the stylesheet)
|
||||||
|
|
||||||
|
In all other cases, return font: <value>.
|
||||||
|
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
val = super().__getitem__(key)
|
||||||
|
except KeyError:
|
||||||
|
return ''
|
||||||
|
else:
|
||||||
|
return 'font: {};'.format(val)
|
||||||
|
|
||||||
|
def getraw(self, key):
|
||||||
|
"""Get a value without the transformations done in __getitem__.
|
||||||
|
|
||||||
|
Returns a value, or None if the value wasn't found.
|
||||||
|
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
return super().__getitem__(key)
|
||||||
|
except KeyError:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
class Config(ConfigParser):
|
class Config(ConfigParser):
|
||||||
|
|
||||||
"""Our own ConfigParser subclass."""
|
"""Our own ConfigParser subclass."""
|
||||||
|
@ -49,7 +49,7 @@ class CompletionView(QTreeView):
|
|||||||
|
|
||||||
_stylesheet = """
|
_stylesheet = """
|
||||||
QTreeView {{
|
QTreeView {{
|
||||||
font-family: {monospace};
|
{font[completion]}
|
||||||
{color[completion.fg]}
|
{color[completion.fg]}
|
||||||
{color[completion.bg]}
|
{color[completion.bg]}
|
||||||
outline: 0;
|
outline: 0;
|
||||||
@ -59,7 +59,6 @@ class CompletionView(QTreeView):
|
|||||||
{color[completion.item.bg]}
|
{color[completion.item.bg]}
|
||||||
}}
|
}}
|
||||||
QTreeView::item:has-children {{
|
QTreeView::item:has-children {{
|
||||||
font-weight: bold;
|
|
||||||
{color[completion.category.fg]}
|
{color[completion.category.fg]}
|
||||||
{color[completion.category.bg]}
|
{color[completion.category.bg]}
|
||||||
border-top: 1px solid {color[completion.category.border.top]};
|
border-top: 1px solid {color[completion.category.border.top]};
|
||||||
|
@ -42,8 +42,7 @@ class StatusBar(QWidget):
|
|||||||
* {{
|
* {{
|
||||||
{color[statusbar.bg.__cur__]}
|
{color[statusbar.bg.__cur__]}
|
||||||
{color[statusbar.fg.__cur__]}
|
{color[statusbar.fg.__cur__]}
|
||||||
font-family: {monospace};
|
{font[statusbar]}
|
||||||
font-size: 8pt;
|
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -37,8 +37,7 @@ class TabWidget(QTabWidget):
|
|||||||
}}
|
}}
|
||||||
|
|
||||||
QTabBar {{
|
QTabBar {{
|
||||||
font-family: {monospace};
|
{font[tabbar]}
|
||||||
font-size: 8pt;
|
|
||||||
}}
|
}}
|
||||||
|
|
||||||
QTabBar::tab {{
|
QTabBar::tab {{
|
||||||
|
Loading…
Reference in New Issue
Block a user