From 7152bb17f2536edd807b143517073205369d51f7 Mon Sep 17 00:00:00 2001 From: Tobias Witek Date: Sat, 15 Sep 2018 14:40:52 +0200 Subject: [PATCH] [core] Generic collapsible widgets Each widget can now be collapsed and expanded using the middle mouse click, by default. --- bumblebee/engine.py | 28 ++++------------------------ bumblebee/output.py | 6 ++++++ 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/bumblebee/engine.py b/bumblebee/engine.py index 85dc90f..526b629 100644 --- a/bumblebee/engine.py +++ b/bumblebee/engine.py @@ -41,9 +41,6 @@ class Module(object): 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")]: @@ -59,12 +56,6 @@ class Module(object): 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 @@ -77,9 +68,6 @@ class Module(object): if widget.name == name: return widget - def minimizedWidget(self): - return self._minimizedWidget - def errorWidget(self): msg = self.error if len(msg) > 10: @@ -90,8 +78,6 @@ class Module(object): 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): @@ -174,9 +160,10 @@ class Engine(object): 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) @@ -289,16 +276,9 @@ class Engine(object): 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() diff --git a/bumblebee/output.py b/bumblebee/output.py index 79efb49..2569fae 100644 --- a/bumblebee/output.py +++ b/bumblebee/output.py @@ -37,12 +37,16 @@ class Widget(bumblebee.store.Store): 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 @@ -70,6 +74,8 @@ class Widget(bumblebee.store.Store): if value: self._full_text = value else: + if self._minimized: + return u"\u2026" if callable(self._full_text): return self._full_text(self) else: