Source code for lolcatt.ui.lolcatt_device_info
from textual.containers import Container
from textual.reactive import reactive
from textual.widgets import Label
from textual.widgets import Static
from lolcatt.utils.utils import marquee
[docs]
class LolCattDeviceInfo(Static):
label_str = reactive('')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.label = Label('')
self._marquee_gen = None
def _get_device_info(self) -> str:
info = self.app.caster.get_device_name()
if info is not None:
msg = f'Connected to: "{info}"'
else:
msg = 'Not connected to a device. Try "lolcatt --scan".'
return msg
def _update_label(self):
self.label_str = self._get_device_info() + ' '
self.label.update(next(self._marquee_gen))
[docs]
def watch_label_str(self, value):
self._marquee_gen = marquee(value, self.size.width, 2)
[docs]
def on_resize(self, value):
self._marquee_gen = marquee(self.label_str, self.size.width, 2)
[docs]
def on_mount(self):
self._update_label()
self.set_interval(
interval=self.app.caster.get_update_interval(), callback=self._update_label
)
[docs]
def on_click(self, event):
self.app.push_screen('device')
[docs]
def compose(self):
yield Container(self.label, id='device_info')