Source code for src.visuals.windows.settings

"""The Wrapper Class for handling the settingsdialog."""

from __future__ import annotations

from PySide6.QtWidgets import QDialog
from src.visuals.ui.generated.ui_neosettings import Ui_settings_dialog
from src.visuals.windows.profile_dialog import ProfileDialog
from src.core.process.pipelines.client import labellistclient
from src.core.io.mariadb import databaseSetup
from src.core.process.manager import centralmanager
from src.core.meta import GameTable

from src.core.config import config, Configs
from loguru import logger

[docs] class SettingsDialog(QDialog): """Wrapper class for the general settings window Attributes ---------- ui : Ui_settings_dialog the raw SettingsDialog Class, produced by compilation _init_fields : function initializes all fields with the provided values through the configs _start_profiles : function this starts the dialog, for creating a new profile _change_API : function function, which executes in order to update api fields _change_label : function function, which executes in order to update label fields _change_paths : function function, which executes in order to update path fields saveSettings : function saves the current settings to ram """ def __init__(self, parent) -> None: super().__init__(parent) self.ui = Ui_settings_dialog() self.ui.setupUi(self) self._init_fields() logger.debug("Build the SettingsDialog Window") # hooks for functionality self.ui.checkBox_API.stateChanged.connect(self._change_API) self.ui.checkBox_imported.stateChanged.connect(self._change_label) self.ui.checkBox_paths.stateChanged.connect(self._change_paths) self.ui.pushButton_profile.clicked.connect(self._start_profiles)
[docs] def _init_fields(self) -> None: logger.trace("Start init_fields function for object: "+str(self)) list_of_profiles: list[str] = config.getFiles(Configs.PROF) self.ui.comboBox_profile.addItems(list_of_profiles) self.ui.comboBox_profile.setCurrentText(config.general_settings[Configs.MAIN]["current_prof"]) csv = config.general_settings[Configs.MAIN]["csv_directory"] meta = config.general_settings[Configs.MAIN]["metadata_directory"] dir_dif = csv != "data" or meta != "meta" self.ui.checkBox_paths.setChecked(dir_dif) self.ui.lineEdit_csv.setText(csv) self.ui.lineEdit_meta.setText(meta) self.ui.lineEdit_csv.setDisabled(not dir_dif) self.ui.lineEdit_meta.setDisabled(not dir_dif) self.ui.toolButton_csv.setDisabled(not dir_dif) self.ui.toolButton_meta.setDisabled(not dir_dif) api = config.general_settings[Configs.MAIN]["API_key"] self.ui.checkBox_API.setChecked(bool(api)) self.ui.lineEdit_API.setText(api) self.ui.lineEdit_API.setDisabled(not bool(api)) label = config.general_settings[Configs.MAIN]["import_label"] self.ui.checkBox_imported.setChecked(bool(label)) metacols = list(centralmanager.recent_tables[GameTable.META].iloc[0,:]) if not label: self.ui.comboBox_imported.addItems([""]) else: self.ui.comboBox_imported.addItems(metacols) self.ui.comboBox_imported.setCurrentText(label) logger.trace("Finished init_fields function.")
[docs] def _start_profiles(self) -> None: dlg = ProfileDialog(self) if dlg.exec(): dlg._add_prof() self.ui.comboBox_profile.clear() self.ui.comboBox_imported.clear() self._init_fields()
[docs] def _change_API(self) -> None: logger.trace("Started change_maria_setting function for object: " + str(self)) isChecked = self.ui.checkBox_API.isChecked() self.ui.lineEdit_API.setDisabled(not isChecked) if not isChecked: self.ui.lineEdit_API.setText("") logger.trace("Finished change_maria_setting function")
[docs] def _change_label(self) -> None: self.ui.comboBox_imported.clear() logger.trace("Started change_maria_setting function for object: " + str(self)) isChecked = self.ui.checkBox_imported.isChecked() self.ui.comboBox_imported.setDisabled(not isChecked) metacols = list(centralmanager.recent_tables[GameTable.META].iloc[0,:]) if isChecked: self.ui.comboBox_imported.addItems(metacols) else: self.ui.comboBox_imported.addItems([""]) logger.trace("Finished change_maria_setting function")
[docs] def _change_paths(self) -> None: logger.trace("Started change_maria_setting function for object: " + str(self)) isChecked = self.ui.checkBox_paths.isChecked() self.ui.lineEdit_csv.setDisabled(not isChecked) self.ui.lineEdit_meta.setDisabled(not isChecked) self.ui.toolButton_csv.setDisabled(not isChecked) self.ui.toolButton_meta.setDisabled(not isChecked) if not isChecked: self.ui.lineEdit_csv.setText("data") self.ui.lineEdit_meta.setText("meta") logger.trace("Finished change_maria_setting function")
[docs] def saveSettings(self) -> None: config.general_settings[Configs.MAIN]["csv_directory"] = self.ui.lineEdit_meta.text() config.general_settings[Configs.MAIN]["current_prof"] = self.ui.comboBox_profile.currentText() config.general_settings[Configs.MAIN]["import_label"] = self.ui.comboBox_imported.currentText() config.general_settings[Configs.MAIN]["API_key"] = self.ui.lineEdit_API.text() config.general_settings[Configs.MAIN]["csv_directory"] = self.ui.lineEdit_csv.text() config.setProfile(self.ui.comboBox_profile.currentText()) centralmanager.updateManager() databaseSetup() logger.debug("Saved Settings via SettingsDialog to RAM.")