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')