1
0
Fork 0
mirror of synced 2024-05-18 19:42:54 +12:00

More Settings

This commit is contained in:
Dummerle 2021-02-19 18:09:00 +01:00
parent 2e67eea56a
commit 549a4f335c
6 changed files with 188 additions and 32 deletions

View file

@ -1,4 +1,4 @@
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QFormLayout, QLabel
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
class About(QWidget):
@ -9,4 +9,22 @@ class About(QWidget):
self.title = QLabel("<h2>About</h2>")
self.layout.addWidget(self.title)
self.setLayout(self.layout)
self.dev = QLabel("Developer: <a href='https://github.com/Dummerle'>Dummerle</a>")
self.dev.setToolTip("Github")
self.dev.setOpenExternalLinks(True)
self.dev.setWordWrap(True)
self.layout.addWidget(self.dev)
self.lgd_dev = QLabel("Legendary developer: <a href='https://github.com/derrod/'>derrod</a>")
self.lgd_dev.setOpenExternalLinks(True)
self.lgd_dev.setToolTip("Github")
self.layout.addWidget(self.lgd_dev)
self.license = QLabel("License: GNU General Public License v3.0")
self.layout.addWidget(self.license)
self.info_text = QLabel(
"This is a beta version, so you can get bugs. If you get a bug, please report it by creating a Issue on <a href='https://github.com/Dummerle/Rare/issues'>Github</a>. You can also contact me on Discord (Dummerle#7419). If you have a feature request, please contact me")
self.info_text.setWordWrap(True)
self.info_text.setOpenExternalLinks(True)
self.layout.addWidget(self.info_text)
self.layout.addStretch()
self.setLayout(self.layout)

View file

@ -1,12 +1,60 @@
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QFormLayout, QLabel
from logging import getLogger
from PyQt5.QtGui import QIntValidator
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QFileDialog, QPushButton, QLineEdit
from legendary.core import LegendaryCore
from Rare.Components.Tabs.Settings.SettingsWidget import SettingsWidget
from Rare.utils.QtExtensions import PathEdit
logger = getLogger("LegendarySettings")
class LegendarySettings(QWidget):
def __init__(self):
def __init__(self, core: LegendaryCore):
super(LegendarySettings, self).__init__()
self.layout = QVBoxLayout()
self.core = core
self.title = QLabel("<h2>Legendary settings</h2>")
self.layout.addWidget(self.title)
self.setLayout(self.layout)
# Default installation directory
self.select_path = PathEdit(core.get_default_install_dir(), type_of_file=QFileDialog.DirectoryOnly,
infotext="Default")
self.select_path.text_edit.textChanged.connect(lambda t: self.save_path_button.setDisabled(False))
self.save_path_button = QPushButton("Save")
self.save_path_button.clicked.connect(self.save_path)
self.install_dir_widget = SettingsWidget("Default installation directory", self.select_path, self.save_path_button)
self.layout.addWidget(self.install_dir_widget)
# Max Workers
self.max_worker_select = QLineEdit(self.core.lgd.config["Legendary"].get("max_workers"))
self.max_worker_select.setValidator(QIntValidator())
self.max_worker_select.setPlaceholderText("Default")
self.max_worker_select.textChanged.connect(self.max_worker_save)
self.max_worker_widget = SettingsWidget("Max workers for Download (Less: slower download)(0: Default)",
self.max_worker_select)
self.layout.addWidget(self.max_worker_widget)
self.layout.addStretch(1)
self.setLayout(self.layout)
def save_path(self):
self.core.lgd.config["Legendary"]["install_dir"] = self.select_path.text()
if self.select_path.text() == "" and "install_dir" in self.core.lgd.config["Legendary"].keys():
self.core.lgd.config["Legendary"].pop("install_dir")
logger.info("Remove install_dir section")
else:
logger.info("Set config install_dir to " + self.select_path.text())
self.core.lgd.save_config()
def max_worker_save(self, num_workers: str):
self.core.lgd.config["Legendary"]["max_workers"] = num_workers
if num_workers == "":
self.core.lgd.config["Legendary"].pop("max_workers")
return
num_workers = int(num_workers)
if num_workers == 0:
self.core.lgd.config["Legendary"].pop("max_workers")
logger.info("Updating config for max_workers")
self.core.lgd.save_config()

View file

@ -1,12 +1,101 @@
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
from logging import getLogger
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton, QFileDialog, QCheckBox, QHBoxLayout, QToolButton
from legendary.core import LegendaryCore
from Rare.Components.Tabs.Settings.SettingsWidget import SettingsWidget
from Rare.utils.QtExtensions import PathEdit
logger = getLogger("LinuxSettings")
class LinuxSettings(QWidget):
def __init__(self):
def __init__(self, core: LegendaryCore):
super(LinuxSettings, self).__init__()
self.layout = QVBoxLayout()
self.title = QLabel("<h2>Linux settings (Wine, dxvk)</h2>")
self.core = core
self.title = QLabel("<h2>Linux settings</h2>")
self.layout.addWidget(self.title)
# Wineprefix
self.select_path = PathEdit(self.core.lgd.config.get("default", "wine_prefix", fallback=""),
type_of_file=QFileDialog.DirectoryOnly,
infotext="Default")
self.select_path.text_edit.textChanged.connect(lambda t: self.save_path_button.setDisabled(False))
self.save_path_button = QPushButton("Save")
self.save_path_button.clicked.connect(self.save_wineprefix)
self.install_dir_widget = SettingsWidget("Default Wine Prefix", self.select_path, self.save_path_button)
self.layout.addWidget(self.install_dir_widget)
# Wine executable
self.select_wine_exec = PathEdit(self.core.lgd.config.get("default", "wine_executable", fallback=""),
type_of_file=QFileDialog.DirectoryOnly,
infotext="Default")
self.select_wine_exec.text_edit.textChanged.connect(lambda t: self.save_path_button.setDisabled(False))
self.save_wine_exec = QPushButton("Save")
self.save_wine_exec.clicked.connect(self.save_wineexec)
self.install_dir_widget = SettingsWidget("Default Wine executable", self.select_wine_exec, self.save_wine_exec)
self.layout.addWidget(self.install_dir_widget)
# dxvk
self.dxvk_widget = DxvkWidget(core)
self.layout.addWidget(self.dxvk_widget)
self.layout.addStretch(1)
self.setLayout(self.layout)
def save_wineprefix(self):
if not "default" in self.core.lgd.config.sections():
self.core.lgd.config["default"] = dict()
self.core.lgd.config["default"]["wine_prefix"] = self.select_path.text()
if self.select_path.text() == "":
self.core.lgd.config["default"].pop("wine_prefix")
logger.info("Remove wine_prefix section")
else:
logger.info("Set config of wine_prefix to " + self.select_path.text())
if self.core.lgd.config["default"] == {}:
self.core.lgd.config.remove_section("default")
self.core.lgd.save_config()
def save_wineexec(self):
if not "default" in self.core.lgd.config.sections():
self.core.lgd.config["default"] = dict()
self.core.lgd.config["default"]["wine_executable"] = self.select_wine_exec.text()
if self.select_wine_exec.text() == "":
self.core.lgd.config["default"].pop("wine_executable")
logger.info("Remove wine executable section")
else:
logger.info("Set config of wine executable to " + self.select_wine_exec.text())
if self.core.lgd.config["default"] == {}:
self.core.lgd.config.remove_section("default")
self.core.lgd.save_config()
class DxvkWidget(QWidget):
def __init__(self, core: LegendaryCore):
super(DxvkWidget, self).__init__()
self.core = core
self.layout = QVBoxLayout()
self.child_layout = QHBoxLayout()
self.title = QLabel("dxvk settings")
self.show_dxvk = QCheckBox("Show Dxvk HUD")
self.more_settings = QPushButton()
self.more_settings.clicked.connect(self.show_more_settings)
active = not self.core.lgd.config.get("default.env", "DXVK_HUD", fallback="") == ""
self.more_settings.setDisabled(active)
self.show_dxvk.stateChanged.connect(lambda x: self.more_settings.setDisabled(x == 0))
self.show_dxvk.setChecked(active)
self.layout.addWidget(self.title)
self.child_layout.addWidget(self.show_dxvk)
self.child_layout.addWidget(self.more_settings)
self.layout.addLayout(self.child_layout)
self.setLayout(self.layout)
def update_dettings(self):
pass
def show_more_settings(self):
pass

View file

@ -2,13 +2,16 @@ import os
import shutil
from logging import getLogger
from PyQt5.QtCore import QSettings, QTranslator
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QFileDialog, QComboBox, QApplication, QPushButton
from PyQt5.QtCore import QSettings
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QFileDialog, QComboBox, QPushButton
from Rare.Components.Tabs.Settings.SettingsWidget import SettingsWidget
from Rare.utils.QtExtensions import PathEdit
from Rare.utils.utils import get_lang, get_possible_langs
logger = getLogger("RareSettings")
class RareSettings(QWidget):
def __init__(self):
super(RareSettings, self).__init__()
@ -76,20 +79,3 @@ class RareSettings(QWidget):
os.makedirs(new_path)
logger.info("Move Images")
shutil.move(old_path, new_path)
class SettingsWidget(QWidget):
def __init__(self, text: str, widget: QWidget, accept_button: QPushButton=None):
super(SettingsWidget, self).__init__()
self.setObjectName("settings_widget")
self.layout = QVBoxLayout()
self.info_text = QLabel("")
self.layout.addWidget(QLabel(text))
self.layout.addWidget(widget)
if accept_button:
self.layout.addWidget(accept_button)
self.layout.addWidget(self.info_text)
self.setLayout(self.layout)

View file

@ -16,9 +16,9 @@ class SettingsTab(QTabWidget):
self.setTabBar(TabBar())
self.setTabPosition(QTabWidget.West)
self.addTab(RareSettings(), "Rare")
self.addTab(LegendarySettings(), "Legendary")
self.addTab(LegendarySettings(core), "Legendary")
if os.name != "nt":
self.addTab(LinuxSettings(), "Linux")
self.addTab(LinuxSettings(core), "Linux")
self.addTab(About(), "About")

View file

@ -0,0 +1,15 @@
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QPushButton
class SettingsWidget(QWidget):
def __init__(self, text: str, widget: QWidget, accept_button: QPushButton=None):
super(SettingsWidget, self).__init__()
self.setObjectName("settings_widget")
self.layout = QVBoxLayout()
self.info_text = QLabel("")
self.layout.addWidget(QLabel(text))
self.layout.addWidget(widget)
if accept_button:
self.layout.addWidget(accept_button)
self.layout.addWidget(self.info_text)
self.setLayout(self.layout)