From: sbkelley Date: Sat, 6 Dec 2025 01:18:17 +0000 (-0500) Subject: Disable websocket settings on connect X-Git-Url: https://skyeroc.xyz/gitweb/?a=commitdiff_plain;h=1a5a0a1a32ebff1e1e0ef408dab54123f91e1c2d;p=obs-ctl Disable websocket settings on connect --- diff --git a/src/obs_ctl/app.py b/src/obs_ctl/app.py index f4643ee..2660c23 100644 --- a/src/obs_ctl/app.py +++ b/src/obs_ctl/app.py @@ -36,6 +36,10 @@ class OBSCtlApp(App): yield StatsDisplay(id="stats_display", classes="section") + def on_mount(self, message): + self.on_obs_ws_connected(None) + + @on(obs.API.Report, "#api") def on_api_report(self, message: obs.API.Report): self.update_monitors(message.data) @@ -75,19 +79,31 @@ class OBSCtlApp(App): @on(RecordControls.OBSWSConnected, "#record_controls") def on_obs_ws_connected(self, message: RecordControls.OBSWSConnected): - self._query_api("connect") + api: obs.API = self.query_exactly_one("#api") + obs_websocket_pane = self.query_exactly_one("#obs_websocket_pane") + host_setting = obs_websocket_pane.host + port_setting = obs_websocket_pane.port + password_setting = obs_websocket_pane.password + timeout_setting = obs_websocket_pane.timeout + self._query_api("connect", host=host_setting, port=port_setting, password=password_setting, timeout=timeout_setting) + if api.is_connected: + obs_websocket_pane.disabled = True @on(RecordControls.OBSWSDisconnected, "#record_controls") def on_obs_ws_disconnected(self, message: RecordControls.OBSWSDisconnected): + api: obs.API = self.query_exactly_one("#api") + obs_websocket_pane = self.query_exactly_one("#obs_websocket_pane") self._query_api("disconnect") + if not api.is_connected: + obs_websocket_pane.disabled = False def _query_api(self, query: str, *args, **kwargs): api: obs.API = self.query_exactly_one("#api") - getattr(api, query)(*args, **kwargs) + return getattr(api, query)(*args, **kwargs) - @on(settings_block.OBSSettingsPane.RecordPathChanged, "#settings-content") + @on(OBSSettingsPane.RecordPathChanged, "#obs_settings_pane") def on_settings_block_record_path_changed(self, message): api: obs.API = self.query_exactly_one("#api") api.set_record_path(message.value) @@ -95,7 +111,7 @@ class OBSCtlApp(App): def update_monitors(self, obs_stats: obs.OBSStats): record_controls: RecordControls = self.query_exactly_one("#record_controls") - obs_settings = self.query_exactly_one("#settings-content") + obs_settings = self.query_exactly_one("#obs_settings_pane") stats_display: StatsDisplay = self.query_exactly_one("#stats_display") record_controls.obsws_connected = obs_stats.obsws_connection_active diff --git a/src/obs_ctl/interface/molecule/settings_block/settings_block.py b/src/obs_ctl/interface/molecule/settings_block/settings_block.py index f4e6c3b..b0fb940 100644 --- a/src/obs_ctl/interface/molecule/settings_block/settings_block.py +++ b/src/obs_ctl/interface/molecule/settings_block/settings_block.py @@ -31,6 +31,6 @@ OBSCTLPane = pane.make_pane_subclass( class SettingsBlock(Container): def compose(self): with TabbedContent(classes="settings_block--tabbed-content"): - yield OBSSettingsPane("OBS Settings", id="settings-content") - yield OBSWebSocketPane("OBS WebSocket", id="websocket-content") - yield OBSCTLPane("obs-ctl Settings", id="obs-ctl-content") + yield OBSSettingsPane("OBS Settings", id="obs_settings_pane") + yield OBSWebSocketPane("OBS WebSocket", id="obs_websocket_pane") + yield OBSCTLPane("obs-ctl Settings", id="obs_ctl_pane") diff --git a/src/obs_ctl/interface/obs/obs.py b/src/obs_ctl/interface/obs/obs.py index 6c77f6c..b49a5d8 100644 --- a/src/obs_ctl/interface/obs/obs.py +++ b/src/obs_ctl/interface/obs/obs.py @@ -214,7 +214,7 @@ class API(Static): self.set_reactive(API.ws_port, ws_port) self.set_reactive(API.ws_password, ws_password) self.set_reactive(API.ws_timeout, ws_timeout) - self.connect(host=ws_host, port=ws_port, password=ws_password, timeout=ws_timeout) + # self.connect(host=ws_host, port=ws_port, password=ws_password, timeout=ws_timeout) def on_mount(self):