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