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)
@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)
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
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")