More Settings
This commit is contained in:
parent
2e67eea56a
commit
549a4f335c
6 changed files with 188 additions and 32 deletions
|
@ -1,4 +1,4 @@
|
||||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QFormLayout, QLabel
|
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
|
||||||
|
|
||||||
|
|
||||||
class About(QWidget):
|
class About(QWidget):
|
||||||
|
@ -9,4 +9,22 @@ class About(QWidget):
|
||||||
self.title = QLabel("<h2>About</h2>")
|
self.title = QLabel("<h2>About</h2>")
|
||||||
self.layout.addWidget(self.title)
|
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)
|
||||||
|
|
|
@ -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):
|
class LegendarySettings(QWidget):
|
||||||
def __init__(self):
|
def __init__(self, core: LegendaryCore):
|
||||||
super(LegendarySettings, self).__init__()
|
super(LegendarySettings, self).__init__()
|
||||||
self.layout = QVBoxLayout()
|
self.layout = QVBoxLayout()
|
||||||
|
self.core = core
|
||||||
self.title = QLabel("<h2>Legendary settings</h2>")
|
self.title = QLabel("<h2>Legendary settings</h2>")
|
||||||
self.layout.addWidget(self.title)
|
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()
|
||||||
|
|
|
@ -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):
|
class LinuxSettings(QWidget):
|
||||||
def __init__(self):
|
def __init__(self, core: LegendaryCore):
|
||||||
super(LinuxSettings, self).__init__()
|
super(LinuxSettings, self).__init__()
|
||||||
self.layout = QVBoxLayout()
|
self.layout = QVBoxLayout()
|
||||||
|
self.core = core
|
||||||
self.title = QLabel("<h2>Linux settings (Wine, dxvk)</h2>")
|
self.title = QLabel("<h2>Linux settings</h2>")
|
||||||
self.layout.addWidget(self.title)
|
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)
|
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
|
|
@ -2,13 +2,16 @@ import os
|
||||||
import shutil
|
import shutil
|
||||||
from logging import getLogger
|
from logging import getLogger
|
||||||
|
|
||||||
from PyQt5.QtCore import QSettings, QTranslator
|
from PyQt5.QtCore import QSettings
|
||||||
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QFileDialog, QComboBox, QApplication, QPushButton
|
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.QtExtensions import PathEdit
|
||||||
from Rare.utils.utils import get_lang, get_possible_langs
|
from Rare.utils.utils import get_lang, get_possible_langs
|
||||||
|
|
||||||
logger = getLogger("RareSettings")
|
logger = getLogger("RareSettings")
|
||||||
|
|
||||||
|
|
||||||
class RareSettings(QWidget):
|
class RareSettings(QWidget):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(RareSettings, self).__init__()
|
super(RareSettings, self).__init__()
|
||||||
|
@ -76,20 +79,3 @@ class RareSettings(QWidget):
|
||||||
os.makedirs(new_path)
|
os.makedirs(new_path)
|
||||||
logger.info("Move Images")
|
logger.info("Move Images")
|
||||||
shutil.move(old_path, new_path)
|
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)
|
|
||||||
|
|
|
@ -16,9 +16,9 @@ class SettingsTab(QTabWidget):
|
||||||
self.setTabBar(TabBar())
|
self.setTabBar(TabBar())
|
||||||
self.setTabPosition(QTabWidget.West)
|
self.setTabPosition(QTabWidget.West)
|
||||||
self.addTab(RareSettings(), "Rare")
|
self.addTab(RareSettings(), "Rare")
|
||||||
self.addTab(LegendarySettings(), "Legendary")
|
self.addTab(LegendarySettings(core), "Legendary")
|
||||||
if os.name != "nt":
|
if os.name != "nt":
|
||||||
self.addTab(LinuxSettings(), "Linux")
|
self.addTab(LinuxSettings(core), "Linux")
|
||||||
self.addTab(About(), "About")
|
self.addTab(About(), "About")
|
||||||
|
|
||||||
|
|
||||||
|
|
15
Rare/Components/Tabs/Settings/SettingsWidget.py
Normal file
15
Rare/Components/Tabs/Settings/SettingsWidget.py
Normal 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)
|
Loading…
Reference in a new issue