Skip to content

Commit

Permalink
Switch OBS plugin to using SettingsModel and add start/stop buttons
Browse files Browse the repository at this point in the history
  • Loading branch information
DaelonSuzuka committed Jun 10, 2024
1 parent 1933be4 commit 13e69c4
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 16 deletions.
11 changes: 11 additions & 0 deletions app/plugins/godot/godot_settings_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ def __init__(self, name='', changed=None, data=None):
self.set_data(data)

godot = GodotStatusWidget()

self.start = QPushButton('Start')
self.start.clicked.connect(godot.open)
self.stop = QPushButton('Stop')
self.stop.clicked.connect(godot.close)
self.stop.setEnabled(False)

self.status = QLabel(godot.status_label.text())
self.url = QLineEdit(godot.settings.url)
Expand All @@ -39,6 +45,7 @@ def __init__(self, name='', changed=None, data=None):
with CVBoxLayout(self) as layout:
with layout.form():
layout.setFieldGrowthPolicy(QFormLayout.FieldsStayAtSizeHint)
layout.addRow(self.start, self.stop)
layout.addRow('Status:', self.status)
layout.addRow('Url:', self.url)
layout.addRow('Port:', self.port)
Expand All @@ -54,7 +61,11 @@ def status_changed(self, status, message=''):
self.url.setEnabled(False)
self.port.setEnabled(False)
# self.password.setEnabled(False)
self.start.setEnabled(False)
self.stop.setEnabled(True)
elif status == 'inactive':
self.url.setEnabled(True)
self.port.setEnabled(True)
# self.password.setEnabled(True)
self.start.setEnabled(True)
self.stop.setEnabled(False)
4 changes: 2 additions & 2 deletions app/plugins/godot/godot_status_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ def __init__(self, *args, **kwargs):
self.status_label = QLabel('Not Connected')

self.settings = GodotSettings()
self.connect_at_start = PersistentCheckableAction('godot/connect_at_start', 'Connect on Startup')

self.connect_at_start = PersistentCheckableAction('godot/connect_at_start', 'Connect on Startup')
if self.connect_at_start.isChecked():
self.open()

Expand Down Expand Up @@ -83,7 +83,7 @@ def open_settings(self):

def open(self):
self.set_status('pending')
self.socket.open(self.url, self.port)
self.socket.open(self.settings.url, self.settings.port)

def close(self):
self.socket.we_closed = True
Expand Down
17 changes: 14 additions & 3 deletions app/plugins/obs_core/obs_settings_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,16 @@ def __init__(self, name='', changed=None, data=None):

obs = ObsStatusWidget()

self.start = QPushButton('Start')
self.start.clicked.connect(obs.open)
self.stop = QPushButton('Stop')
self.stop.clicked.connect(obs.close)
self.stop.setEnabled(False)

self.status = QLabel(obs.status_label.text())
self.url = QLineEdit(obs.url)
self.port = QLineEdit(obs.port)
self.password = QLineEdit(obs.password)
self.url = QLineEdit(obs.settings.url)
self.port = QLineEdit(obs.settings.port)
self.password = QLineEdit(obs.settings.password)
self.password.setEchoMode(QLineEdit.PasswordEchoOnEdit)
self.connect_at_start = QCheckBox()
self.connect_at_start.setChecked(obs.connect_at_start.isChecked())
Expand All @@ -37,6 +43,7 @@ def __init__(self, name='', changed=None, data=None):
with CVBoxLayout(self) as layout:
with layout.form():
layout.setFieldGrowthPolicy(QFormLayout.FieldsStayAtSizeHint)
layout.addRow(self.start, self.stop)
layout.addRow('Status:', self.status)
layout.addRow('Url:', self.url)
layout.addRow('Port:', self.port)
Expand All @@ -52,7 +59,11 @@ def status_changed(self, status, message=''):
self.url.setEnabled(False)
self.port.setEnabled(False)
self.password.setEnabled(False)
self.start.setEnabled(False)
self.stop.setEnabled(True)
elif status == 'inactive':
self.url.setEnabled(True)
self.port.setEnabled(True)
self.password.setEnabled(True)
self.start.setEnabled(True)
self.stop.setEnabled(False)
27 changes: 16 additions & 11 deletions app/plugins/obs_core/obs_status_widget.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
from qtstrap import *
from qtstrap.extras.command_palette import Command
from qtstrap.extras.settings_model import SettingsModel
from stagehand.components import StagehandStatusBarItem
from stagehand.main_window import MainWindow
from .obs_socket import ObsSocket


class ObsSettings(SettingsModel):
url: str = 'localhost'
port: str = '4444'
password: str = 'websocketpassword'
connect_at_start: bool = False

class Config:
prefix = 'plugins/obs'


@singleton
class ObsStatusWidget(StagehandStatusBarItem):
status_changed = Signal(str, str)
Expand All @@ -17,12 +28,9 @@ def __init__(self, *args, **kwargs):
self.status = ''
self.status_label = QLabel('Not Connected')

self.url = QSettings().value('obs/url', 'localhost')
self.port = QSettings().value('obs/port', '4444')
self.password = QSettings().value('obs/password', 'websocketpassword')
self.settings = ObsSettings()

self.connect_at_start = PersistentCheckableAction('obs/connect_at_start', 'Connect on Startup')

if self.connect_at_start.isChecked():
self.open()

Expand All @@ -41,16 +49,13 @@ def setText(self, text):
self.status_label.setText(text)

def set_url(self, url):
QSettings().setValue('obs/url', url)
self.url = url
self.settings.url = url

def set_port(self, port):
QSettings().setValue('obs/port', port)
self.port = port
self.settings.port = port

def set_password(self, password):
QSettings().setValue('obs/password', password)
self.password = password
self.settings.password = password

def set_status(self, status):
self.status = status
Expand Down Expand Up @@ -81,7 +86,7 @@ def open_settings(self):

def open(self):
self.set_status('pending')
self.socket.open(self.url, self.port, self.password)
self.socket.open(self.settings.url, self.settings.port, self.settings.password)

def close(self):
self.socket.we_closed = True
Expand Down

0 comments on commit 13e69c4

Please sign in to comment.