#!/usr/bin/python3 from PyQt6.QtCore import Qt from PyQt6.QtWidgets import QWidget, QDockWidget, QTabWidget, QPushButton, QVBoxLayout from .file import FileSettings from .behavior import BehaviourSettings class Settings(QDockWidget): def __init__(self, app, parent=None): super().__init__(parent) self.app = app self.setAllowedAreas( Qt.DockWidgetArea.LeftDockWidgetArea | Qt.DockWidgetArea.RightDockWidgetArea | Qt.DockWidgetArea.BottomDockWidgetArea ) self.setWindowTitle("Settings") self.content = QWidget(self) self.content_layout = QVBoxLayout() self.content.setLayout(self.content_layout) self.tabs = QTabWidget(self.content) self.content_layout.addWidget(self.tabs) self.file_settings = FileSettings() self.tabs.addTab(self.file_settings, "Files") self.behavior_settings = BehaviourSettings() self.tabs.addTab(self.behavior_settings, "Behavior") self.save_button = QPushButton("&Save", self.content) self.content_layout.addWidget(self.save_button) self.setWidget(self.content) self.visibilityChanged.connect(self.update_all) self.save_button.pressed.connect(self.write_settings) def update_all(self, _=True): # ignore visible parameter passed by visibilityChanged event self.file_settings.library_path_input.setText(self.app.settings.library_path) self.behavior_settings.clear_track_cache.setChecked(self.app.settings.clear_track_cache) self.behavior_settings.load_on_start.setChecked(self.app.settings.load_on_start) def update_settings(self, key, value): match key: case "library_path": self.file_settings.library_path_input.setText(value) case "clear_track_cache": self.behavior_settings.clear_track_cache.setDown(value) case "load_on_start": self.behavior_settings.load_on_start.setChecked(value) def write_settings(self): self.app.settings.library_path = self.file_settings.library_path_input.text() self.app.settings.clear_track_cache = self.behavior_settings.clear_track_cache.isChecked() self.app.settings.load_on_start = self.behavior_settings.load_on_start.isChecked()