1
0
Fork 0
mirror of synced 2024-06-02 02:34:40 +12:00
Rare/Rare/Components/Tabs/Settings/Rare.py

87 lines
3.2 KiB
Python
Raw Normal View History

2021-02-20 00:57:55 +13:00
import os
import shutil
from logging import getLogger
2021-02-20 06:09:00 +13:00
from PyQt5.QtCore import QSettings
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QFileDialog, QComboBox, QPushButton
2021-02-20 00:57:55 +13:00
2021-02-20 06:09:00 +13:00
from Rare.Components.Tabs.Settings.SettingsWidget import SettingsWidget
2021-02-20 00:57:55 +13:00
from Rare.utils.QtExtensions import PathEdit
from Rare.utils.utils import get_lang, get_possible_langs
logger = getLogger("RareSettings")
2021-02-20 06:09:00 +13:00
2021-02-20 00:57:55 +13:00
class RareSettings(QWidget):
def __init__(self):
super(RareSettings, self).__init__()
self.layout = QVBoxLayout()
2021-03-19 00:45:59 +13:00
self.title = QLabel("<h2>" + self.tr("Rare settings") + "</h2>")
2021-02-20 00:57:55 +13:00
self.layout.addWidget(self.title)
settings = QSettings()
img_dir = settings.value("img_dir", type=str)
language = settings.value("language", type=str)
# default settings
if not img_dir:
settings.setValue("img_dir", os.path.expanduser("~/.cache/rare/"))
if not language:
settings.setValue("language", get_lang())
del settings
# select Image dir
self.select_path = PathEdit(img_dir, type_of_file=QFileDialog.DirectoryOnly)
self.select_path.text_edit.textChanged.connect(lambda t: self.save_path_button.setDisabled(False))
self.save_path_button = QPushButton(self.tr("Save"))
2021-02-20 00:57:55 +13:00
self.save_path_button.clicked.connect(self.save_path)
2021-03-01 08:01:15 +13:00
self.img_dir = SettingsWidget(self.tr("Image Directory"), self.select_path, self.save_path_button)
2021-02-20 00:57:55 +13:00
self.layout.addWidget(self.img_dir)
# Select lang
self.select_lang = QComboBox()
languages = ["English", "Deutsch"]
self.select_lang.addItems(languages)
if language in get_possible_langs():
if language == "de":
self.select_lang.setCurrentIndex(1)
elif language == "en":
self.select_lang.setCurrentIndex(0)
else:
self.select_lang.setCurrentIndex(0)
self.lang_widget = SettingsWidget(self.tr("Language"), self.select_lang)
2021-02-20 00:57:55 +13:00
self.select_lang.currentIndexChanged.connect(self.update_lang)
self.layout.addWidget(self.lang_widget)
self.layout.addStretch()
self.setLayout(self.layout)
def save_path(self):
self.save_path_button.setDisabled(True)
self.update_path()
def update_lang(self, i: int):
settings = QSettings()
if i == 0:
settings.setValue("language", "en")
elif i == 1:
settings.setValue("language", "de")
del settings
2021-03-01 08:01:15 +13:00
self.lang_widget.info_text.setText(self.tr("Restart Application to activate changes"))
2021-02-20 00:57:55 +13:00
def update_path(self):
settings = QSettings()
old_path = settings.value("img_dir", type=str)
new_path = self.select_path.text()
2021-03-01 00:56:13 +13:00
2021-02-20 00:57:55 +13:00
print(old_path, new_path)
if old_path != new_path:
2021-02-28 03:31:14 +13:00
if not os.path.exists(new_path):
2021-02-20 00:57:55 +13:00
os.makedirs(new_path)
2021-03-01 00:56:13 +13:00
elif len(os.listdir(new_path)) > 0:
logger.warning("New directory is not empty")
return
2021-02-20 00:57:55 +13:00
logger.info("Move Images")
2021-03-01 00:56:13 +13:00
for i in os.listdir(old_path):
shutil.move(os.path.join(old_path, i), os.path.join(new_path, i))
os.rmdir(old_path)
settings.setValue("img_dir", new_path)