e72c25b0bc
Create infrastructure for input event handling and add i3bar event processing. For each event, callbacks can be registered in the input module. Modules and widgets both identify themselves using a unique ID (the module name for modules, a generated UUID for the widgets). This ID is then used for registering the callbacks. This is possible since both widgets and modules are statically allocated & do not change their IDs. Callback actions can be either callable Python objects (in which case the event is passed as parameter), or strings, in which case the string is interpreted as a shell command. see #23
96 lines
2 KiB
Python
96 lines
2 KiB
Python
# pylint: disable=C0103,C0111,W0613
|
|
|
|
from bumblebee.output import Widget
|
|
|
|
def assertWidgetAttributes(test, widget):
|
|
test.assertTrue(isinstance(widget, Widget))
|
|
test.assertTrue(hasattr(widget, "full_text"))
|
|
|
|
class MockInput(object):
|
|
def start(self):
|
|
pass
|
|
|
|
def stop(self):
|
|
pass
|
|
|
|
def register_callback(self, obj, button, cmd):
|
|
pass
|
|
|
|
class MockEngine(object):
|
|
def __init__(self):
|
|
self.input = MockInput()
|
|
|
|
class MockOutput(object):
|
|
def start(self):
|
|
pass
|
|
|
|
def stop(self):
|
|
pass
|
|
|
|
def draw(self, widget, engine, module):
|
|
engine.stop()
|
|
|
|
def begin(self):
|
|
pass
|
|
|
|
def flush(self):
|
|
pass
|
|
|
|
def end(self):
|
|
pass
|
|
|
|
class MockModule(object):
|
|
def __init__(self, engine=None, config=None):
|
|
self.id = None
|
|
|
|
class MockWidget(Widget):
|
|
def __init__(self, text):
|
|
super(MockWidget, self).__init__(text)
|
|
self._text = text
|
|
self.module = None
|
|
self.attr_state = "state-default"
|
|
self.id = "none"
|
|
|
|
def state(self):
|
|
return self.attr_state
|
|
|
|
def update(self, widgets):
|
|
pass
|
|
|
|
def full_text(self):
|
|
return self._text
|
|
|
|
class MockTheme(object):
|
|
def __init__(self):
|
|
self.attr_prefix = None
|
|
self.attr_suffix = None
|
|
self.attr_fg = None
|
|
self.attr_bg = None
|
|
self.attr_separator = None
|
|
self.attr_separator_block_width = 0
|
|
|
|
def padding(self, widget):
|
|
return ""
|
|
|
|
def reset(self):
|
|
pass
|
|
|
|
def separator_block_width(self, widget):
|
|
return self.attr_separator_block_width
|
|
|
|
def separator(self, widget):
|
|
return self.attr_separator
|
|
|
|
def prefix(self, widget, default=None):
|
|
return self.attr_prefix
|
|
|
|
def suffix(self, widget, default=None):
|
|
return self.attr_suffix
|
|
|
|
def fg(self, widget):
|
|
return self.attr_fg
|
|
|
|
def bg(self, widget):
|
|
return self.attr_bg
|
|
|
|
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
|