[core] Add ability to "hide" a module with all its widgets
* A module can override the method "hidden" to specify when all it's widgets should be hidden. * Implement hidden for cmus and spotify * Fix problem that cmus widgets were not displayed correctly fixes #157
This commit is contained in:
parent
8376e406e5
commit
9f69cc6ae9
4 changed files with 15 additions and 2 deletions
|
@ -11,6 +11,7 @@ import bumblebee.store
|
|||
def scrollable(func):
|
||||
def wrapper(module, widget):
|
||||
text = func(module, widget)
|
||||
if not text: return text
|
||||
width = widget.get("theme.width", module.parameter("width", 30))
|
||||
widget.set("theme.minwidth", "A"*width)
|
||||
if len(text) <= width:
|
||||
|
@ -39,6 +40,9 @@ class Widget(bumblebee.store.Store):
|
|||
self.name = name
|
||||
self.id = str(uuid.uuid4())
|
||||
|
||||
def get_module(self):
|
||||
return self._module
|
||||
|
||||
def link_module(self, module):
|
||||
"""Set the module that spawned this widget
|
||||
|
||||
|
@ -93,8 +97,7 @@ class I3BarOutput(object):
|
|||
def draw(self, widget, module=None, engine=None):
|
||||
"""Draw a single widget"""
|
||||
full_text = widget.full_text()
|
||||
"""Don't draw it when we only have an empty text"""
|
||||
if full_text == "":
|
||||
if widget.get_module() and widget.get_module().hidden():
|
||||
return
|
||||
padding = self._theme.padding(widget)
|
||||
prefix = self._theme.prefix(widget, padding)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue