[theme] Re-implement rotation of values for theme entries
Allow theme entries to be lists that are then iterated. For this purpose, extend the Config class so that it can serve as generic store for data items. That makes it easy to centralize code used for rotation etc. in a single place.
This commit is contained in:
parent
98acd15edf
commit
998db40a2d
2 changed files with 23 additions and 8 deletions
|
@ -10,6 +10,7 @@ class Config(object):
|
||||||
self._raw = args
|
self._raw = args
|
||||||
self._parser = self._parser()
|
self._parser = self._parser()
|
||||||
self._indent = " "*4
|
self._indent = " "*4
|
||||||
|
self._store = {}
|
||||||
|
|
||||||
if len(args) == 0:
|
if len(args) == 0:
|
||||||
self._parser.print_help()
|
self._parser.print_help()
|
||||||
|
@ -24,6 +25,20 @@ class Config(object):
|
||||||
if self._args.list:
|
if self._args.list:
|
||||||
self._parser.exit()
|
self._parser.exit()
|
||||||
|
|
||||||
|
def getstore(self, name, default=None):
|
||||||
|
if not name in self._store:
|
||||||
|
self._store[name] = default
|
||||||
|
return self._store.get(name, default)
|
||||||
|
|
||||||
|
def store(self, name, value):
|
||||||
|
self._store[name] = value
|
||||||
|
|
||||||
|
def increase(self, name, limit, default):
|
||||||
|
self._store[name] += 1
|
||||||
|
if self._store[name] >= limit:
|
||||||
|
self._store[name] = default
|
||||||
|
return self._store[name]
|
||||||
|
|
||||||
def parameter(self, name, default):
|
def parameter(self, name, default):
|
||||||
# TODO
|
# TODO
|
||||||
return default
|
return default
|
||||||
|
|
|
@ -11,6 +11,7 @@ def themes():
|
||||||
|
|
||||||
class Theme:
|
class Theme:
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
|
self._config = config
|
||||||
with open("{}/{}.json".format(getpath(), config.theme())) as f:
|
with open("{}/{}.json".format(getpath(), config.theme())) as f:
|
||||||
self._data = json.load(f)
|
self._data = json.load(f)
|
||||||
self._defaults = self._data.get("defaults", {})
|
self._defaults = self._data.get("defaults", {})
|
||||||
|
@ -18,16 +19,14 @@ class Theme:
|
||||||
self.begin()
|
self.begin()
|
||||||
|
|
||||||
def begin(self):
|
def begin(self):
|
||||||
self._cycleidx = 0
|
self._config.store("theme.cycleidx", 0)
|
||||||
self._cycle = self._cycles[0] if len(self._cycles) > 0 else {}
|
self._cycle = self._cycles[0] if len(self._cycles) > 0 else {}
|
||||||
self._background = [ None, None ]
|
self._background = [ None, None ]
|
||||||
|
|
||||||
def next_widget(self):
|
def next_widget(self):
|
||||||
self._background[1] = self._background[0]
|
self._background[1] = self._background[0]
|
||||||
self._cycleidx += 1
|
idx = self._config.increase("theme.cycleidx", len(self._cycles), 0)
|
||||||
if self._cycleidx >= len(self._cycles):
|
self._cycle = self._cycles[idx] if len(self._cycles) > idx else {}
|
||||||
self._cycleidx = 0
|
|
||||||
self._cycle = self._cycles[self._cycleidx] if len(self._cycles) > self._cycleidx else {}
|
|
||||||
|
|
||||||
def prefix(self, widget):
|
def prefix(self, widget):
|
||||||
return self._get(widget, "prefix")
|
return self._get(widget, "prefix")
|
||||||
|
@ -80,9 +79,10 @@ class Theme:
|
||||||
value = state_theme.get(name, value)
|
value = state_theme.get(name, value)
|
||||||
|
|
||||||
if type(value) is list:
|
if type(value) is list:
|
||||||
# if the value is a list, cycle through it
|
key = "{}{}".format(repr(widget), value)
|
||||||
# TODO
|
idx = self._config.getstore(key, 0)
|
||||||
pass
|
self._config.increase(key, len(value), 0)
|
||||||
|
value = value[idx]
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue