Skip to content

Commit

Permalink
added option to disable monitor managment
Browse files Browse the repository at this point in the history
  • Loading branch information
Odizinne committed Aug 8, 2024
1 parent db0b7c5 commit 3776c91
Show file tree
Hide file tree
Showing 10 changed files with 294 additions and 218 deletions.
Binary file modified assets/screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 25 additions & 9 deletions src/BigPictureTV.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ def setup_ui_connections(self):
self.ui.checkrate_slider.valueChanged.connect(self.handle_checkrate_slider_value_changed)
self.ui.checkrate_slider.sliderReleased.connect(self.save_settings)
self.ui.install_audio_button.clicked.connect(self.handle_audio_button_clicked)
self.ui.disable_monitor_checkbox.stateChanged.connect(self.handle_disablemonitor_checkbox_state_changed)

def populate_comboboxes(self):
self.ui.gamemode_monitor_combobox.addItem(self.tr("External"))
Expand Down Expand Up @@ -119,13 +120,24 @@ def handle_disableaudio_checkbox_state_changed(self, state):
self.toggle_audio_settings(not state)
self.save_settings()

def handle_disablemonitor_checkbox_state_changed(self, state):
self.toggle_monitor_settings(not state)
self.save_settings()

def toggle_audio_settings(self, enabled):
self.ui.desktopEntry.setEnabled(enabled)
self.ui.desktopLabel.setEnabled(enabled)
self.ui.gamemodeEntry.setEnabled(enabled)
self.ui.gamemodeLabel.setEnabled(enabled)
self.ui.audioOutputLabel.setEnabled(enabled)

def toggle_monitor_settings(self, enabled):
self.ui.gamemode_monitor_combobox.setEnabled(enabled)
self.ui.desktop_monitor_combobox.setEnabled(enabled)
self.ui.label.setEnabled(enabled)
self.ui.label_7.setEnabled(enabled)
self.ui.label_8.setEnabled(enabled)

def create_default_settings(self):
self.settings = {
"GAMEMODE_AUDIO": "TV",
Expand Down Expand Up @@ -156,6 +168,8 @@ def apply_settings(self):
self.ui.close_discord_checkbox.setChecked(self.settings.get("discord_action", False))
self.ui.gamemode_monitor_combobox.setCurrentIndex(self.settings.get("GAMEMODE_MONITOR", 0))
self.ui.desktop_monitor_combobox.setCurrentIndex(self.settings.get("DESKTOP_MONITOR", 0))
self.ui.disable_monitor_checkbox.setChecked(self.settings.get("DisableMonitorSwitch", False))
self.toggle_monitor_settings(not self.ui.disable_monitor_checkbox.isChecked())

def save_settings(self):
self.settings = {
Expand All @@ -166,6 +180,7 @@ def save_settings(self):
"discord_action": self.ui.close_discord_checkbox.isChecked(),
"GAMEMODE_MONITOR": self.ui.gamemode_monitor_combobox.currentIndex(),
"DESKTOP_MONITOR": self.ui.desktop_monitor_combobox.currentIndex(),
"DisableMonitorSwitch": self.ui.disable_monitor_checkbox.isChecked(),
}
os.makedirs(os.path.dirname(SETTINGS_FILE), exist_ok=True)
with open(SETTINGS_FILE, "w") as f:
Expand All @@ -176,15 +191,16 @@ def switch_mode(self, mode):
return

self.current_mode = mode

if self.current_mode == Mode.GAMEMODE and self.ui.gamemode_monitor_combobox.currentIndex() == 0:
run_displayswitch("/external")
elif self.current_mode == Mode.GAMEMODE and self.ui.gamemode_monitor_combobox.currentIndex() == 1:
run_displayswitch("/clone")
elif self.current_mode == Mode.DESKTOP and self.ui.desktop_monitor_combobox.currentIndex() == 0:
run_displayswitch("/internal")
elif self.current_mode == Mode.DESKTOP and self.ui.desktop_monitor_combobox.currentIndex() == 1:
run_displayswitch("/extend")
if not self.ui.disable_monitor_checkbox.isChecked():
if self.current_mode == Mode.GAMEMODE and self.ui.gamemode_monitor_combobox.currentIndex() == 0:
monitor_mode = "/external"
elif self.current_mode == Mode.GAMEMODE and self.ui.gamemode_monitor_combobox.currentIndex() == 1:
monitor_mode = "/clone"
elif self.current_mode == Mode.DESKTOP and self.ui.desktop_monitor_combobox.currentIndex() == 0:
monitor_mode = "/internal"
elif self.current_mode == Mode.DESKTOP and self.ui.desktop_monitor_combobox.currentIndex() == 1:
monitor_mode = "/extend"
run_displayswitch(monitor_mode)

if self.ui.close_discord_checkbox.isChecked():
close_discord() if self.current_mode == Mode.GAMEMODE else start_discord()
Expand Down
65 changes: 38 additions & 27 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 '.\ui\design.ui'
# Form implementation generated from reading ui file '.\src\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(452, 406)
MainWindow.resize(452, 443)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
Expand Down Expand Up @@ -127,16 +127,14 @@ def setupUi(self, MainWindow):
self.settings_layout.setContentsMargins(9, 9, 9, 9)
self.settings_layout.setSpacing(12)
self.settings_layout.setObjectName("settings_layout")
self.label_6 = QtWidgets.QLabel(parent=self.settingsFrame)
self.label_6.setMinimumSize(QtCore.QSize(0, 25))
self.label_6.setObjectName("label_6")
self.settings_layout.addWidget(self.label_6, 2, 0, 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.settings_layout.addWidget(self.startupCheckBox, 1, 1, 1, 1)
self.install_audio_button = QtWidgets.QPushButton(parent=self.settingsFrame)
self.install_audio_button.setMinimumSize(QtCore.QSize(0, 25))
self.install_audio_button.setObjectName("install_audio_button")
self.settings_layout.addWidget(self.install_audio_button, 0, 0, 1, 2)
self.checkrate_label = QtWidgets.QLabel(parent=self.settingsFrame)
self.checkrate_label.setMinimumSize(QtCore.QSize(0, 25))
self.checkrate_label.setObjectName("checkrate_label")
self.settings_layout.addWidget(self.checkrate_label, 4, 0, 1, 1)
self.checkrate_slider = QtWidgets.QSlider(parent=self.settingsFrame)
self.checkrate_slider.setMinimumSize(QtCore.QSize(0, 25))
self.checkrate_slider.setMinimum(100)
Expand All @@ -148,25 +146,37 @@ def setupUi(self, MainWindow):
self.checkrate_slider.setTickPosition(QtWidgets.QSlider.TickPosition.TicksBothSides)
self.checkrate_slider.setTickInterval(100)
self.checkrate_slider.setObjectName("checkrate_slider")
self.settings_layout.addWidget(self.checkrate_slider, 3, 1, 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.settings_layout.addWidget(self.label_5, 1, 0, 1, 1)
self.checkrate_label = QtWidgets.QLabel(parent=self.settingsFrame)
self.checkrate_label.setMinimumSize(QtCore.QSize(0, 25))
self.checkrate_label.setObjectName("checkrate_label")
self.settings_layout.addWidget(self.checkrate_label, 3, 0, 1, 1)
self.settings_layout.addWidget(self.checkrate_slider, 4, 1, 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.settings_layout.addWidget(self.disableAudioCheckbox, 2, 1, 1, 1)
self.install_audio_button = QtWidgets.QPushButton(parent=self.settingsFrame)
self.install_audio_button.setMinimumSize(QtCore.QSize(0, 25))
self.install_audio_button.setObjectName("install_audio_button")
self.settings_layout.addWidget(self.install_audio_button, 0, 0, 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.settings_layout.addWidget(self.label_6, 2, 0, 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.settings_layout.addWidget(self.startupCheckBox, 1, 1, 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.settings_layout.addWidget(self.label_5, 1, 0, 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.settings_layout.addWidget(self.label_4, 3, 0, 1, 1)
self.disable_monitor_checkbox = QtWidgets.QCheckBox(parent=self.settingsFrame)
self.disable_monitor_checkbox.setMinimumSize(QtCore.QSize(0, 25))
self.disable_monitor_checkbox.setLayoutDirection(QtCore.Qt.LayoutDirection.RightToLeft)
self.disable_monitor_checkbox.setText("")
self.disable_monitor_checkbox.setObjectName("disable_monitor_checkbox")
self.settings_layout.addWidget(self.disable_monitor_checkbox, 3, 1, 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))
Expand Down Expand Up @@ -196,8 +206,9 @@ def retranslateUi(self, MainWindow):
self.label.setText(_translate("MainWindow", "Monitor configuration"))
self.gamemodeLabel.setText(_translate("MainWindow", "Gamemode"))
self.desktopLabel.setText(_translate("MainWindow", "Desktop"))
self.install_audio_button.setText(_translate("MainWindow", "Install audio module"))
self.checkrate_label.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.checkrate_label.setText(_translate("MainWindow", "Window check rate"))
self.install_audio_button.setText(_translate("MainWindow", "Install audio module"))
self.label_4.setText(_translate("MainWindow", "Disable monitor switching"))
self.label_2.setText(_translate("MainWindow", "Settings"))
29 changes: 17 additions & 12 deletions src/tr/bigpicturetv_de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,42 @@
<context>
<name>BigPictureTV</name>
<message>
<location filename="..\BigPictureTV.py" line="78" />
<location filename="..\BigPictureTV.py" line="79" />
<source>External</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\BigPictureTV.py" line="79" />
<location filename="..\BigPictureTV.py" line="80" />
<source>Clone</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\BigPictureTV.py" line="80" />
<location filename="..\BigPictureTV.py" line="81" />
<source>Internal</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\BigPictureTV.py" line="81" />
<location filename="..\BigPictureTV.py" line="82" />
<source>Extend</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\BigPictureTV.py" line="235" />
<location filename="..\BigPictureTV.py" line="239" />
<source>Resume detection</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\BigPictureTV.py" line="235" />
<location filename="..\BigPictureTV.py" line="239" />
<source>Pause detection</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\BigPictureTV.py" line="237" />
<location filename="..\BigPictureTV.py" line="241" />
<source>Settings</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\BigPictureTV.py" line="239" />
<location filename="..\BigPictureTV.py" line="243" />
<source>Exit</source>
<translation type="unfinished" />
</message>
Expand Down Expand Up @@ -85,22 +85,27 @@
</message>
<message>
<location filename="..\ui\design.ui" line="0" />
<source>Disable audio switching</source>
<source>Install audio module</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\ui\design.ui" line="0" />
<source>Run at startup</source>
<source>Window check rate</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\ui\design.ui" line="0" />
<source>Window check rate</source>
<source>Disable audio switching</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\ui\design.ui" line="0" />
<source>Install audio module</source>
<source>Run at startup</source>
<translation type="unfinished" />
</message>
<message>
<location filename="..\ui\design.ui" line="0" />
<source>Disable monitor switching</source>
<translation type="unfinished" />
</message>
<message>
Expand Down
Binary file modified src/tr/bigpicturetv_en.qm
Binary file not shown.
Loading

0 comments on commit 3776c91

Please sign in to comment.