64f5fc100e
Add a way to specify prefix and postfix strings to the full text of a widget's text. Currently, the theme does not fill those yet. see #23
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""Theme support"""
|
|
|
|
import os
|
|
import json
|
|
|
|
import bumblebee.error
|
|
|
|
def theme_path():
|
|
"""Return the path of the theme directory"""
|
|
return os.path.dirname("{}/../themes/".format(os.path.dirname(os.path.realpath(__file__))))
|
|
|
|
class Theme(object):
|
|
"""Represents a collection of icons and colors"""
|
|
def __init__(self, name):
|
|
self._theme = self.load(name)
|
|
|
|
def prefix(self):
|
|
"""Return the theme prefix for a widget's full text"""
|
|
return None
|
|
|
|
def suffix(self):
|
|
"""Return the theme suffix for a widget's full text"""
|
|
return None
|
|
|
|
def load(self, name):
|
|
"""Load and parse a theme file"""
|
|
path = theme_path()
|
|
themefile = "{}/{}.json".format(path, name)
|
|
if os.path.isfile(themefile):
|
|
try:
|
|
with open(themefile) as data:
|
|
return json.load(data)
|
|
except ValueError as exception:
|
|
raise bumblebee.error.ThemeLoadError("JSON error: {}".format(exception))
|
|
else:
|
|
raise bumblebee.error.ThemeLoadError("no such theme: {}".format(name))
|
|
|
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|