From 2a6bd47d62d9c8c685bd159552f213806efd92b3 Mon Sep 17 00:00:00 2001 From: sbkelley Date: Tue, 2 Dec 2025 11:04:10 -0500 Subject: [PATCH] Add obsws_control to RecordControls --- .../interface/molecule/record_controls.py | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/src/obs_ctl/interface/molecule/record_controls.py b/src/obs_ctl/interface/molecule/record_controls.py index ecb1293..9289b9a 100644 --- a/src/obs_ctl/interface/molecule/record_controls.py +++ b/src/obs_ctl/interface/molecule/record_controls.py @@ -14,10 +14,10 @@ class RecordControls(ScrollableContainer): height:10; } """ - recording: reactive[bool] = reactive(False) paused: reactive[bool] = reactive(False) streaming: reactive[bool] = reactive(False) + obsws_connected: reactive[bool] = reactive(False) class RecordStarted(MSGBase): ... class RecordStopped(MSGBase): ... @@ -25,10 +25,21 @@ class RecordControls(ScrollableContainer): class RecordUnpaused(MSGBase): ... class StreamStarted(MSGBase): ... class StreamStopped(MSGBase): ... + class OBSWSConnected(MSGBase): ... + class OBSWSDisconnected(MSGBase): ... + def compose(self): with Grid(): + yield BoolControl( + False, + label="OBS WS", + true_label="Connect", + false_label="Disconnect", + id="obsws_control", + ) yield BoolControl(False, label="Record", id="record_control") + yield BoolControl(False, label="Stream", id="stream_control") yield BoolControl( False, label="Pause", @@ -37,8 +48,8 @@ class RecordControls(ScrollableContainer): swap_red=True, id="pause_control" ) - yield BoolControl(False, label="Stream", id="stream_control") - + + def on_bool_control_set_true(self, message: BoolControl.SetTrue): match message.control.id: case "record_control": @@ -47,6 +58,8 @@ class RecordControls(ScrollableContainer): self.post_message(RecordControls.RecordPaused(self)) case "stream_control": self.post_message(RecordControls.StreamStarted(self)) + case "obsws_control": + self.post_message(RecordControls.OBSWSConnected(self)) def on_bool_control_set_false(self, message: BoolControl.SetFalse): @@ -57,15 +70,26 @@ class RecordControls(ScrollableContainer): self.post_message(RecordControls.RecordUnpaused(self)) case "stream_control": self.post_message(RecordControls.StreamStopped(self)) - + case "obsws_control": + self.post_message(RecordControls.OBSWSDisconnected(self)) + + def watch_recording(self, value): - control: BoolControl = self.query_exactly_one("#record_control") - control.value = value - + self._set_control_value("#record_control", value) + + def watch_paused(self, value): - control: BoolControl = self.query_exactly_one("#pause_control") - control.value = value + self._set_control_value("#pause_control", value) + def watch_streaming(self, value): - control: BoolControl = self.query_exactly_one("#stream_control") + self._set_control_value("#stream_control", value) + + + def watch_obsws_connected(self, value): + self._set_control_value("#obsws_control", value) + + + def _set_control_value(self, control_id: str, value): + control: BoolControl = self.query_exactly_one(control_id) control.value = value \ No newline at end of file -- 2.47.3