#!/usr/bin/python3 from PyQt6.QtCore import Qt from PyQt6.QtWidgets import QWidget, QDockWidget, QTabWidget, QPushButton, QVBoxLayout from .file import FileSettings 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.file_settings = FileSettings() self.tabs.addTab(self.file_settings, "Files") self.content_layout.addWidget(self.tabs) 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) def update_settings(self, key, value): match key: case "library_path": self.file_settings.library_path_input.setText(value) def write_settings(self): self.app.settings.library_path = self.file_settings.library_path_input.text()