| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- """Settings dialog for monitor selection."""
- from PyQt6.QtWidgets import (QDialog, QVBoxLayout, QHBoxLayout, QLabel,
- QComboBox, QPushButton, QGroupBox)
- from PyQt6.QtGui import QScreen
- from PyQt6.QtCore import QSettings
- from PyQt6.QtWidgets import QApplication
- class SettingsDialog(QDialog):
- def __init__(self, parent=None):
- super().__init__(parent)
- self.settings = QSettings()
- self.init_ui()
-
- def init_ui(self):
- self.setWindowTitle("Settings")
- self.setMinimumWidth(400)
-
- layout = QVBoxLayout(self)
-
- # Monitor selection group
- monitor_group = QGroupBox("Display Settings")
- monitor_layout = QVBoxLayout()
-
- monitor_label = QLabel("Select Monitor for Timers:")
- monitor_layout.addWidget(monitor_label)
-
- self.monitor_combo = QComboBox()
- self.populate_monitors()
- monitor_layout.addWidget(self.monitor_combo)
-
- # Load saved monitor
- saved_monitor = self.settings.value("monitor_index", 0, type=int)
- if saved_monitor < self.monitor_combo.count():
- self.monitor_combo.setCurrentIndex(saved_monitor)
-
- monitor_group.setLayout(monitor_layout)
- layout.addWidget(monitor_group)
-
- # Buttons
- button_layout = QHBoxLayout()
- save_btn = QPushButton("Save")
- cancel_btn = QPushButton("Cancel")
-
- save_btn.clicked.connect(self.save_settings)
- cancel_btn.clicked.connect(self.reject)
-
- button_layout.addStretch()
- button_layout.addWidget(save_btn)
- button_layout.addWidget(cancel_btn)
-
- layout.addLayout(button_layout)
-
- def populate_monitors(self):
- screens = QApplication.screens()
- for i, screen in enumerate(screens):
- geometry = screen.geometry()
- screen_info = f"Monitor {i + 1}: {geometry.width()}x{geometry.height()} at ({geometry.x()}, {geometry.y()})"
- self.monitor_combo.addItem(screen_info, i)
-
- def save_settings(self):
- monitor_index = self.monitor_combo.currentData()
- self.settings.setValue("monitor_index", monitor_index)
- self.accept()
|