Skip to content

Commit

Permalink
[core] Generic collapsible widgets
Browse files Browse the repository at this point in the history
Each widget can now be collapsed and expanded using the middle mouse
click, by default.
  • Loading branch information
tobi-wan-kenobi committed Sep 15, 2018
1 parent 8bb1d14 commit 7152bb1
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 24 deletions.
28 changes: 4 additions & 24 deletions bumblebee/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,6 @@ def __init__(self, engine, config={}, widgets=[]):
self.error = None
self._next = int(time.time())
self._default_interval = 0
self._minimized = False

self._minimizedWidget = bumblebee.output.Widget(full_text=u"\u2026")

self._configFile = None
for cfg in [os.path.expanduser("~/.bumblebee-status.conf"), os.path.expanduser("~/.config/bumblebee-status.conf")]:
Expand All @@ -59,12 +56,6 @@ def __init__(self, engine, config={}, widgets=[]):
if widgets:
self._widgets = widgets if isinstance(widgets, list) else [widgets]

def toggle_minimize(self):
self._minimized = not self._minimized

def minimized(self):
return self._minimized

def widgets(self):
"""Return the widgets to draw for this module"""
return self._widgets
Expand All @@ -77,9 +68,6 @@ def widget(self, name):
if widget.name == name:
return widget

def minimizedWidget(self):
return self._minimizedWidget

def errorWidget(self):
msg = self.error
if len(msg) > 10:
Expand All @@ -90,8 +78,6 @@ def widget_by_id(self, uid):
for widget in self._widgets:
if widget.id == uid:
return widget
if self._minimizedWidget.id == uid:
return self._minimizedWidget
return None

def update(self, widgets):
Expand Down Expand Up @@ -174,9 +160,10 @@ def __init__(self, config, output=None, inp=None, theme=None):

def _toggle_minimize(self, event):
for module in self._modules:
if module.widget_by_id(event["instance"]):
widget = module.widget_by_id(event["instance"])
if widget:
log.debug("module {} found - toggle minimize".format(module.id))
module.toggle_minimize()
widget.toggle_minimize()

def _prev_workspace(self, event):
self._change_workspace(-1)
Expand Down Expand Up @@ -289,16 +276,9 @@ def write_output(self):
self._current_module = module
module.update_wrapper(module.widgets())
if module.error is None:
if module.minimized():
widget = module.minimizedWidget()
for widget in module.widgets():
widget.link_module(module)
if self._theme:
icon = self._theme.icon(widget)
self._output.draw(widget=widget, module=module, engine=self)
else:
for widget in module.widgets():
widget.link_module(module)
self._output.draw(widget=widget, module=module, engine=self)
else:
self._output.draw(widget=module.errorWidget(), module=module, engine=self)
self._output.flush()
Expand Down
6 changes: 6 additions & 0 deletions bumblebee/output.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,16 @@ def __init__(self, full_text="", name=""):
self._full_text = full_text
self.module = None
self._module = None
self._minimized = False
self.name = name
self.id = str(uuid.uuid4())

def get_module(self):
return self._module

def toggle_minimize(self):
self._minimized = not self._minimized

def link_module(self, module):
"""Set the module that spawned this widget
Expand Down Expand Up @@ -70,6 +74,8 @@ def full_text(self, value=None):
if value:
self._full_text = value
else:
if self._minimized:
return u"\u2026"
if callable(self._full_text):
return self._full_text(self)
else:
Expand Down

0 comments on commit 7152bb1

Please sign in to comment.