]> skyeroc.xyz Git - obs-ctl/commitdiff
Add obsws_control to RecordControls
authorsbkelley <sb24kelley@gmail.com>
Tue, 2 Dec 2025 16:04:10 +0000 (11:04 -0500)
committersbkelley <sb24kelley@gmail.com>
Tue, 2 Dec 2025 16:04:10 +0000 (11:04 -0500)
src/obs_ctl/interface/molecule/record_controls.py

index ecb129366f00d4aa91c30777c18a7ae22b3b23ca..9289b9a591bb759b923af7532fce35d182a0276a 100644 (file)
@@ -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