From a62a05d565767d52cd7122d422c7e413baa4aee8 Mon Sep 17 00:00:00 2001 From: sbkelley Date: Sun, 30 Nov 2025 00:58:12 -0500 Subject: [PATCH] move text_readout to its own file --- src/obs_ctl/__init__.py | 3 +- src/obs_ctl/widget/__init__.py | 34 -------------------- src/obs_ctl/widget/element/text_readout.py | 36 ++++++++++++++++++++++ 3 files changed, 38 insertions(+), 35 deletions(-) create mode 100644 src/obs_ctl/widget/element/text_readout.py diff --git a/src/obs_ctl/__init__.py b/src/obs_ctl/__init__.py index 6ffced8..440cccd 100644 --- a/src/obs_ctl/__init__.py +++ b/src/obs_ctl/__init__.py @@ -11,9 +11,10 @@ from textual.widgets import Footer, Header, Label, Placeholder, TabbedContent, T from textual.css.query import NoMatches from . import log, data -from .widget import TextReadout, OBSSettingsPane +from .widget import OBSSettingsPane from .widget.element.bool_control import BoolControl +from .widget.element.text_readout import TextReadout logger = log.getLogger(__name__) obs_req_client = obs.ReqClient() diff --git a/src/obs_ctl/widget/__init__.py b/src/obs_ctl/widget/__init__.py index 4d20454..6d1f0e0 100644 --- a/src/obs_ctl/widget/__init__.py +++ b/src/obs_ctl/widget/__init__.py @@ -51,37 +51,3 @@ class OBSSettingsPane(VerticalScroll): def watch_record_path(self, value): input: Input = self.query_exactly_one("#input_record_path") input.value = value - - -class TextReadout(Container): - COMPONENT_CLASSES = { - "text_readout--label", - "text_readout--text", - } - text = reactive("Text") - label = reactive("Label") - readout_layout = reactive("vertical") - - def __init__(self, label, text, *children, layout = "vertical", name = None, id = None, classes = None, disabled = False, markup = True): - super().__init__(*children, name=name, id=id, classes=classes, disabled=disabled, markup=markup) - self.set_reactive(TextReadout.label, label) - self.set_reactive(TextReadout.text, text) - self.set_reactive(TextReadout.readout_layout, layout) - - - def compose(self): - yield Container(Label(self.label, id="label"), classes="text_readout--label") - yield Container(Label(self.text, id="text"), classes="text_readout--text") - - def watch_text(self, value: str): - text: Label = self.query_exactly_one("#text") - text.update(value) - - - def watch_label(self, value): - label: Label = self.query_exactly_one("#label") - label.update(value) - - - def watch_readout_layout(self, value): - self.set_styles(layout=value) \ No newline at end of file diff --git a/src/obs_ctl/widget/element/text_readout.py b/src/obs_ctl/widget/element/text_readout.py new file mode 100644 index 0000000..55ede6b --- /dev/null +++ b/src/obs_ctl/widget/element/text_readout.py @@ -0,0 +1,36 @@ +from textual.containers import Container +from textual.reactive import reactive +from textual.widgets import Label + +class TextReadout(Container): + COMPONENT_CLASSES = { + "text_readout--label", + "text_readout--text", + } + text = reactive("Text") + label = reactive("Label") + readout_layout = reactive("vertical") + + def __init__(self, label, text, *children, layout = "vertical", name = None, id = None, classes = None, disabled = False, markup = True): + super().__init__(*children, name=name, id=id, classes=classes, disabled=disabled, markup=markup) + self.set_reactive(TextReadout.label, label) + self.set_reactive(TextReadout.text, text) + self.set_reactive(TextReadout.readout_layout, layout) + + + def compose(self): + yield Container(Label(self.label, id="label"), classes="text_readout--label") + yield Container(Label(self.text, id="text"), classes="text_readout--text") + + def watch_text(self, value: str): + text: Label = self.query_exactly_one("#text") + text.update(value) + + + def watch_label(self, value): + label: Label = self.query_exactly_one("#label") + label.update(value) + + + def watch_readout_layout(self, value): + self.set_styles(layout=value) \ No newline at end of file -- 2.47.3