Skip to content

Commit

Permalink
layout update, theme revert, made displayswitch settings more explicit
Browse files Browse the repository at this point in the history
  • Loading branch information
Odizinne committed Jul 25, 2024
1 parent de02bc4 commit 2b1d9fd
Show file tree
Hide file tree
Showing 5 changed files with 231 additions and 252 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Place the directory wherever you like (`%localappdata%\Programs` is a good one)
## Usage

Specify your audio and video outputs for both modes.
If you have a two monitors setup (Main monitor + TV), i do recommend you keep `Use old screen switch` checked and do not bother with manual screen select.
If you have a two monitors setup (Main monitor + TV), i do recommend you keep `legacy screen control` checked and do not bother with manual screen select.

For audio, you can use a short name. BigPictureTV will try to find the correct audio output from keywords. Less is more.

Expand Down
7 changes: 2 additions & 5 deletions src/BigPictureTV.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
from PyQt6.QtGui import QIcon, QAction
from PyQt6.QtCore import QTimer, QSharedMemory
from design import Ui_MainWindow
from color_utils import set_frame_color_based_on_window
from steam_language_reader import get_big_picture_window_title

SETTINGS_FILE = os.path.join(os.environ['APPDATA'], "BigPictureTV", "settings.json")
Expand Down Expand Up @@ -55,9 +54,6 @@ def __init__(self):
self.first_run = False

def initialize_ui(self):
set_frame_color_based_on_window(self, self.ui.settingsFrame)
set_frame_color_based_on_window(self, self.ui.videoFrame)
set_frame_color_based_on_window(self, self.ui.audioFrame)
self.ui.disableAudioCheckbox.stateChanged.connect(self.on_disableAudioCheckbox_stateChanged)
self.ui.startupCheckBox.stateChanged.connect(self.on_startupCheckBox_stateChanged)
self.ui.gamemodeEntry.textChanged.connect(self.save_settings)
Expand Down Expand Up @@ -125,12 +121,14 @@ def toggle_audio_settings(self, enabled):
self.ui.desktopLabel.setEnabled(enabled)
self.ui.gamemodeEntry.setEnabled(enabled)
self.ui.gamemodeLabel.setEnabled(enabled)
self.ui.audioOutputLabel.setEnabled(enabled)

def toggle_video_settings(self, enabled):
self.ui.desktopVideoBox.setEnabled(enabled)
self.ui.gamemodeVideoBox.setEnabled(enabled)
self.ui.desktopVideoLabel.setEnabled(enabled)
self.ui.gamemodeVideoLabel.setEnabled(enabled)
self.ui.videoOutputLabel.setEnabled(enabled)

def create_default_settings(self):
self.settings = {
Expand Down Expand Up @@ -378,6 +376,5 @@ def check_startup_shortcut(self):
if shared_memory.attach() or not shared_memory.create(1):
sys.exit(0)
app = QApplication(sys.argv)
app.setStyle('Fusion')
big_picture_tv = BigPictureTV()
sys.exit(app.exec())
26 changes: 0 additions & 26 deletions src/color_utils.py

This file was deleted.

159 changes: 83 additions & 76 deletions src/design.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Form implementation generated from reading ui file '.\src\ui\design.ui'
# Form implementation generated from reading ui file '.\ui\design.ui'
#
# Created by: PyQt6 UI code generator 6.7.0
#
Expand All @@ -12,7 +12,7 @@
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(495, 437)
MainWindow.resize(459, 324)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
Expand All @@ -22,20 +22,13 @@ def setupUi(self, MainWindow):
self.centralwidget.setObjectName("centralwidget")
self.gridLayout_2 = QtWidgets.QGridLayout(self.centralwidget)
self.gridLayout_2.setObjectName("gridLayout_2")
self.label_7 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_7.setMinimumSize(QtCore.QSize(0, 25))
self.videoOutputLabel = QtWidgets.QLabel(parent=self.centralwidget)
self.videoOutputLabel.setMinimumSize(QtCore.QSize(0, 25))
font = QtGui.QFont()
font.setBold(True)
self.label_7.setFont(font)
self.label_7.setObjectName("label_7")
self.gridLayout_2.addWidget(self.label_7, 8, 0, 1, 1)
self.label_3 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_3.setMinimumSize(QtCore.QSize(0, 25))
font = QtGui.QFont()
font.setBold(True)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.gridLayout_2.addWidget(self.label_3, 2, 0, 1, 1)
self.videoOutputLabel.setFont(font)
self.videoOutputLabel.setObjectName("videoOutputLabel")
self.gridLayout_2.addWidget(self.videoOutputLabel, 2, 1, 1, 1)
self.audioFrame = QtWidgets.QFrame(parent=self.centralwidget)
self.audioFrame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.audioFrame.setObjectName("audioFrame")
Expand Down Expand Up @@ -63,39 +56,7 @@ def setupUi(self, MainWindow):
self.gamemodeEntry.setFrame(True)
self.gamemodeEntry.setObjectName("gamemodeEntry")
self.gridLayout.addWidget(self.gamemodeEntry, 0, 1, 1, 1)
self.gridLayout_2.addWidget(self.audioFrame, 7, 0, 1, 1)
self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_2.setMinimumSize(QtCore.QSize(0, 25))
font = QtGui.QFont()
font.setBold(True)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.gridLayout_2.addWidget(self.label_2, 0, 0, 1, 1)
self.videoFrame = QtWidgets.QFrame(parent=self.centralwidget)
self.videoFrame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.videoFrame.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.videoFrame.setObjectName("videoFrame")
self.gridLayout_6 = QtWidgets.QGridLayout(self.videoFrame)
self.gridLayout_6.setContentsMargins(9, 9, 9, 9)
self.gridLayout_6.setHorizontalSpacing(12)
self.gridLayout_6.setObjectName("gridLayout_6")
self.desktopVideoLabel = QtWidgets.QLabel(parent=self.videoFrame)
self.desktopVideoLabel.setMinimumSize(QtCore.QSize(0, 25))
self.desktopVideoLabel.setObjectName("desktopVideoLabel")
self.gridLayout_6.addWidget(self.desktopVideoLabel, 1, 0, 1, 1)
self.desktopVideoBox = QtWidgets.QComboBox(parent=self.videoFrame)
self.desktopVideoBox.setMinimumSize(QtCore.QSize(0, 25))
self.desktopVideoBox.setObjectName("desktopVideoBox")
self.gridLayout_6.addWidget(self.desktopVideoBox, 1, 1, 1, 1)
self.gamemodeVideoLabel = QtWidgets.QLabel(parent=self.videoFrame)
self.gamemodeVideoLabel.setMinimumSize(QtCore.QSize(0, 25))
self.gamemodeVideoLabel.setObjectName("gamemodeVideoLabel")
self.gridLayout_6.addWidget(self.gamemodeVideoLabel, 0, 0, 1, 1)
self.gamemodeVideoBox = QtWidgets.QComboBox(parent=self.videoFrame)
self.gamemodeVideoBox.setMinimumSize(QtCore.QSize(0, 25))
self.gamemodeVideoBox.setObjectName("gamemodeVideoBox")
self.gridLayout_6.addWidget(self.gamemodeVideoBox, 0, 1, 1, 1)
self.gridLayout_2.addWidget(self.videoFrame, 9, 0, 1, 1)
self.gridLayout_2.addWidget(self.audioFrame, 3, 0, 1, 1)
self.settingsFrame = QtWidgets.QFrame(parent=self.centralwidget)
self.settingsFrame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.settingsFrame.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
Expand All @@ -106,50 +67,96 @@ def setupUi(self, MainWindow):
self.gridLayout_5.setObjectName("gridLayout_5")
self.checkRateSpinBox = QtWidgets.QSpinBox(parent=self.settingsFrame)
self.checkRateSpinBox.setMinimumSize(QtCore.QSize(90, 25))
self.checkRateSpinBox.setFrame(True)
self.checkRateSpinBox.setFrame(False)
self.checkRateSpinBox.setMinimum(1)
self.checkRateSpinBox.setMaximum(1000)
self.checkRateSpinBox.setProperty("value", 1000)
self.checkRateSpinBox.setObjectName("checkRateSpinBox")
self.gridLayout_5.addWidget(self.checkRateSpinBox, 3, 2, 1, 1)
self.label_4 = QtWidgets.QLabel(parent=self.settingsFrame)
self.label_4.setMinimumSize(QtCore.QSize(0, 25))
self.label_4.setObjectName("label_4")
self.gridLayout_5.addWidget(self.label_4, 3, 0, 1, 1)
self.label_6 = QtWidgets.QLabel(parent=self.settingsFrame)
self.label_6.setMinimumSize(QtCore.QSize(0, 25))
self.label_6.setObjectName("label_6")
self.gridLayout_5.addWidget(self.label_6, 1, 0, 1, 1)
self.displayswitchBox = QtWidgets.QCheckBox(parent=self.settingsFrame)
self.displayswitchBox.setMinimumSize(QtCore.QSize(0, 25))
self.displayswitchBox.setLayoutDirection(QtCore.Qt.LayoutDirection.RightToLeft)
self.displayswitchBox.setText("")
self.displayswitchBox.setChecked(True)
self.displayswitchBox.setObjectName("displayswitchBox")
self.gridLayout_5.addWidget(self.displayswitchBox, 2, 2, 1, 1)
self.displayswitchLabel = QtWidgets.QLabel(parent=self.settingsFrame)
self.displayswitchLabel.setMinimumSize(QtCore.QSize(0, 25))
self.displayswitchLabel.setObjectName("displayswitchLabel")
self.gridLayout_5.addWidget(self.displayswitchLabel, 2, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(0, 25, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.gridLayout_5.addItem(spacerItem, 3, 1, 1, 1)
self.startupCheckBox = QtWidgets.QCheckBox(parent=self.settingsFrame)
self.startupCheckBox.setMinimumSize(QtCore.QSize(0, 25))
self.startupCheckBox.setLayoutDirection(QtCore.Qt.LayoutDirection.RightToLeft)
self.startupCheckBox.setText("")
self.startupCheckBox.setObjectName("startupCheckBox")
self.gridLayout_5.addWidget(self.startupCheckBox, 0, 1, 1, 2)
self.label_6 = QtWidgets.QLabel(parent=self.settingsFrame)
self.label_6.setMinimumSize(QtCore.QSize(0, 25))
self.label_6.setObjectName("label_6")
self.gridLayout_5.addWidget(self.label_6, 1, 0, 1, 1)
self.label_5 = QtWidgets.QLabel(parent=self.settingsFrame)
self.label_5.setMinimumSize(QtCore.QSize(0, 25))
self.label_5.setObjectName("label_5")
self.gridLayout_5.addWidget(self.label_5, 0, 0, 1, 1)
self.disableAudioCheckbox = QtWidgets.QCheckBox(parent=self.settingsFrame)
self.disableAudioCheckbox.setMinimumSize(QtCore.QSize(0, 25))
self.disableAudioCheckbox.setLayoutDirection(QtCore.Qt.LayoutDirection.RightToLeft)
self.disableAudioCheckbox.setText("")
self.disableAudioCheckbox.setObjectName("disableAudioCheckbox")
self.gridLayout_5.addWidget(self.disableAudioCheckbox, 1, 1, 1, 2)
self.label_4 = QtWidgets.QLabel(parent=self.settingsFrame)
self.label_4.setMinimumSize(QtCore.QSize(0, 25))
self.label_4.setObjectName("label_4")
self.gridLayout_5.addWidget(self.label_4, 3, 0, 1, 1)
self.gridLayout_2.addWidget(self.settingsFrame, 1, 0, 1, 1)
self.label_5 = QtWidgets.QLabel(parent=self.settingsFrame)
self.label_5.setMinimumSize(QtCore.QSize(0, 25))
self.label_5.setObjectName("label_5")
self.gridLayout_5.addWidget(self.label_5, 0, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Policy.Expanding, QtWidgets.QSizePolicy.Policy.Minimum)
self.gridLayout_5.addItem(spacerItem, 3, 1, 1, 1)
self.displayswitchLabel = QtWidgets.QLabel(parent=self.settingsFrame)
self.displayswitchLabel.setMinimumSize(QtCore.QSize(0, 25))
font = QtGui.QFont()
font.setKerning(True)
font.setStyleStrategy(QtGui.QFont.StyleStrategy.PreferDefault)
self.displayswitchLabel.setFont(font)
self.displayswitchLabel.setObjectName("displayswitchLabel")
self.gridLayout_5.addWidget(self.displayswitchLabel, 2, 0, 1, 1)
self.gridLayout_2.addWidget(self.settingsFrame, 1, 0, 1, 2)
self.label_2 = QtWidgets.QLabel(parent=self.centralwidget)
self.label_2.setMinimumSize(QtCore.QSize(0, 25))
font = QtGui.QFont()
font.setBold(True)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.gridLayout_2.addWidget(self.label_2, 0, 0, 1, 2)
self.videoFrame = QtWidgets.QFrame(parent=self.centralwidget)
self.videoFrame.setFrameShape(QtWidgets.QFrame.Shape.StyledPanel)
self.videoFrame.setFrameShadow(QtWidgets.QFrame.Shadow.Sunken)
self.videoFrame.setObjectName("videoFrame")
self.gridLayout_6 = QtWidgets.QGridLayout(self.videoFrame)
self.gridLayout_6.setContentsMargins(9, 9, 9, 9)
self.gridLayout_6.setHorizontalSpacing(12)
self.gridLayout_6.setObjectName("gridLayout_6")
self.desktopVideoLabel = QtWidgets.QLabel(parent=self.videoFrame)
self.desktopVideoLabel.setMinimumSize(QtCore.QSize(0, 25))
self.desktopVideoLabel.setObjectName("desktopVideoLabel")
self.gridLayout_6.addWidget(self.desktopVideoLabel, 1, 0, 1, 1)
self.desktopVideoBox = QtWidgets.QComboBox(parent=self.videoFrame)
self.desktopVideoBox.setMinimumSize(QtCore.QSize(0, 25))
self.desktopVideoBox.setObjectName("desktopVideoBox")
self.gridLayout_6.addWidget(self.desktopVideoBox, 1, 1, 1, 1)
self.gamemodeVideoLabel = QtWidgets.QLabel(parent=self.videoFrame)
self.gamemodeVideoLabel.setMinimumSize(QtCore.QSize(0, 25))
self.gamemodeVideoLabel.setObjectName("gamemodeVideoLabel")
self.gridLayout_6.addWidget(self.gamemodeVideoLabel, 0, 0, 1, 1)
self.gamemodeVideoBox = QtWidgets.QComboBox(parent=self.videoFrame)
self.gamemodeVideoBox.setMinimumSize(QtCore.QSize(0, 25))
self.gamemodeVideoBox.setObjectName("gamemodeVideoBox")
self.gridLayout_6.addWidget(self.gamemodeVideoBox, 0, 1, 1, 1)
self.gridLayout_6.setColumnStretch(1, 1)
self.gridLayout_2.addWidget(self.videoFrame, 3, 1, 1, 1)
self.audioOutputLabel = QtWidgets.QLabel(parent=self.centralwidget)
self.audioOutputLabel.setMinimumSize(QtCore.QSize(0, 25))
font = QtGui.QFont()
font.setBold(True)
self.audioOutputLabel.setFont(font)
self.audioOutputLabel.setObjectName("audioOutputLabel")
self.gridLayout_2.addWidget(self.audioOutputLabel, 2, 0, 1, 1)
self.gridLayout_2.setColumnStretch(0, 1)
self.gridLayout_2.setColumnStretch(1, 1)
MainWindow.setCentralWidget(self.centralwidget)

self.retranslateUi(MainWindow)
Expand All @@ -165,21 +172,21 @@ def setupUi(self, MainWindow):
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label_7.setText(_translate("MainWindow", "Video output"))
self.label_3.setText(_translate("MainWindow", "Audio output"))
self.videoOutputLabel.setText(_translate("MainWindow", "Video output"))
self.gamemodeLabel.setText(_translate("MainWindow", "Gamemode"))
self.desktopLabel.setText(_translate("MainWindow", "Desktop"))
self.label_2.setText(_translate("MainWindow", "Settings"))
self.desktopVideoLabel.setText(_translate("MainWindow", "Desktop"))
self.gamemodeVideoLabel.setText(_translate("MainWindow", "Gamemode"))
self.label_4.setText(_translate("MainWindow", "Window check rate"))
self.label_6.setText(_translate("MainWindow", "Disable audio switching"))
self.label_5.setText(_translate("MainWindow", "Run at startup"))
self.displayswitchLabel.setToolTip(_translate("MainWindow", "Use windows built in displayswitch.exe to switch monitors.\n"
"\n"
"This should offer a smoother transition.\n"
"\n"
"You should use it if you only have 2 monitors.\n"
"\n"
"For 3 monitors or more, it is recommended to specify your outputs."))
self.displayswitchLabel.setText(_translate("MainWindow", "Use old screen switch ⚠️"))
self.label_6.setText(_translate("MainWindow", "Disable audio switching"))
self.label_5.setText(_translate("MainWindow", "Run at startup"))
self.label_4.setText(_translate("MainWindow", "Window check rate"))
self.displayswitchLabel.setText(_translate("MainWindow", "Legacy screen control"))
self.label_2.setText(_translate("MainWindow", "Settings"))
self.desktopVideoLabel.setText(_translate("MainWindow", "Desktop"))
self.gamemodeVideoLabel.setText(_translate("MainWindow", "Gamemode"))
self.audioOutputLabel.setText(_translate("MainWindow", "Audio output"))
Loading

0 comments on commit 2b1d9fd

Please sign in to comment.