[themes] Add cycling for individual elements
Add functionality to provide lists of values for individual elements of a theme (e.g. the prefix) and those will be cycled for each call. This can be used, for example, to show a "charging" symbol for the battery that continuously goes throw all the battery stages to "animate" the charging icon.
This commit is contained in:
parent
14bce293eb
commit
83bb1deb52
2 changed files with 13 additions and 0 deletions
|
@ -28,5 +28,7 @@ class Module(bumblebee.module.Module):
|
||||||
return "discharging_high"
|
return "discharging_high"
|
||||||
return "discharging_full"
|
return "discharging_full"
|
||||||
else:
|
else:
|
||||||
|
if self._capacity > 95:
|
||||||
|
return "charged"
|
||||||
return "charging"
|
return "charging"
|
||||||
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|
||||||
|
|
|
@ -11,6 +11,7 @@ class Theme:
|
||||||
self._data = json.load(f)
|
self._data = json.load(f)
|
||||||
self._defaults = self._data.get("defaults", {})
|
self._defaults = self._data.get("defaults", {})
|
||||||
self._cycle = self._defaults.get("cycle", [])
|
self._cycle = self._defaults.get("cycle", [])
|
||||||
|
self._modules = {}
|
||||||
|
|
||||||
self.reset()
|
self.reset()
|
||||||
|
|
||||||
|
@ -30,6 +31,16 @@ class Theme:
|
||||||
|
|
||||||
value = state_theme.get(key, value)
|
value = state_theme.get(key, value)
|
||||||
|
|
||||||
|
if type(value) is list:
|
||||||
|
# cycle through the values
|
||||||
|
if not obj in self._modules:
|
||||||
|
self._modules[obj] = { "idx": 0 }
|
||||||
|
else:
|
||||||
|
self._modules[obj]["idx"] += 1
|
||||||
|
if self._modules[obj]["idx"] >= len(value):
|
||||||
|
self._modules[obj]["idx"] = 0
|
||||||
|
value = value[self._modules[obj]["idx"]]
|
||||||
|
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
|
|
Loading…
Reference in a new issue