1
0
Fork 0
mirror of synced 2024-06-02 10:44:40 +12:00

Refactor, Settings bug with env vars

This commit is contained in:
Dummerle 2020-12-28 22:22:12 +01:00
parent a5ae192800
commit 5419d40843
4 changed files with 12 additions and 121 deletions

View file

@ -6,16 +6,15 @@ from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QFormLayout, QGroupB
from Rare.utils import legendaryConfig
logger = getLogger("Legendary Settings")
class LegendarySettingsForm(QGroupBox):
class SettingsForm(QGroupBox):
config: dict
def __init__(self, app_name: str):
self.app_name = app_name
self.logger = getLogger(f"{app_name} Settings")
config: dict
super(LegendarySettingsForm, self).__init__(f"Settings for Game: {self.app_name}")
super(SettingsForm, self).__init__(f"{'Legendary Settings' if app_name=='Legendary' else f'Settings for Game {self.app_name}'}")
self.config = legendaryConfig.get_config()
if not self.config.get(self.app_name):
self.config[self.app_name] = {}
@ -74,7 +73,7 @@ class LegendarySettingsForm(QGroupBox):
self.table.removeRow(self.table.currentRow())
def update_legendary_settings(self):
logger.info("Updating Game Settings")
self.logger.info("Updating Game Settings")
# Wine exec
if not self.config.get(self.app_name):
@ -97,15 +96,13 @@ class LegendarySettingsForm(QGroupBox):
self.config[self.app_name].pop("locale")
# Env vars
if self.table.rowCount() != 0:
if self.table.rowCount() > 0:
self.config[f"{self.app_name}.env"] = {}
for row in range(self.table.rowCount()):
self.config[f"{self.app_name}.env"][self.table.item(row, 0).text()] = self.table.item(row, 1).text()
elif f"{self.app_name}.env" in self.config[self.app_name]:
elif f"{self.app_name}.env" in self.config:
self.config.pop(f"{self.app_name}.env")
print("pop")
if self.config.get(self.app_name) == {}:
self.config.pop(self.app_name)
legendaryConfig.set_config(self.config)
print(self.config)

View file

@ -3,7 +3,7 @@ import os
from PyQt5.QtWidgets import *
from Rare.Dialogs import AcceptDialog
from Rare.Tabs.GamesInstalled.SettingsForm import LegendarySettingsForm
from Rare.SettingsForm import SettingsForm
class GameSettingsDialog(QDialog):
@ -20,10 +20,10 @@ class GameSettingsDialog(QDialog):
self.wine_prefix.setPlaceholderText("Wineprefix")
self.uninstall_button = QPushButton("Uninstall Game")
self.settings = LegendarySettingsForm(self.game.app_name)
self.settings = SettingsForm(self.game.app_name)
self.uninstall_button.clicked.connect(self.uninstall)
self.exit_button = QPushButton("Exit withot save")
self.exit_button = QPushButton("Exit")
self.exit_button.clicked.connect(self.close)
self.layout.addWidget(self.settings)

View file

@ -1,106 +0,0 @@
import os
from logging import getLogger
from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QFormLayout, QGroupBox, QLineEdit, QPushButton, \
QLabel
from Rare.utils import legendaryConfig
logger = getLogger("Legendary Settings")
class LegendarySettingsForm(QGroupBox):
config: dict
def __init__(self, app_name):
config: dict
self.app_name = app_name
super(LegendarySettingsForm, self).__init__("Legendary Settings")
self.config = legendaryConfig.get_config()
if not self.config.get(self.app_name):
self.config[self.app_name] = {}
if not self.config[self.app_name].get("wine_executable"):
self.config[self.app_name]["wine_executable"] = ""
if not self.config[self.app_name].get("wine_prefix"):
self.config[self.app_name]["wine_prefix"] = ""
if not self.config[self.app_name].get("locale"):
self.config[self.app_name]["locale"] = ""
env_vars = self.config.get("default.env")
if env_vars:
self.table = QTableWidget(len(env_vars), 2)
for i, label in enumerate(env_vars):
self.table.setItem(i, 0, QTableWidgetItem(label))
self.table.setItem(i, 1, QTableWidgetItem(env_vars[label]))
else:
self.table = QTableWidget(0, 2)
self.table.setHorizontalHeaderLabels(["Variable", "Value"])
self.form = QFormLayout()
self.lgd_conf_wine_prefix = QLineEdit(self.config[self.app_name]["wine_prefix"])
self.lgd_conf_wine_prefix.setPlaceholderText("Default")
self.lgd_conf_wine_exec = QLineEdit(self.config[self.app_name]["wine_executable"])
self.lgd_conf_wine_exec.setPlaceholderText("Default")
self.lgd_conf_locale = QLineEdit(self.config[self.app_name]["locale"])
self.lgd_conf_locale.setPlaceholderText("Default")
self.add_button = QPushButton("Add Environment Variable")
self.delete_env_var = QPushButton("Delete selected Variable")
self.delete_env_var.clicked.connect(self.delete_var)
self.add_button.clicked.connect(self.add_variable)
if os.name != "nt":
self.form.addRow(QLabel("Default Wineprefix"), self.lgd_conf_wine_prefix)
self.form.addRow(QLabel("Wine executable"), self.lgd_conf_wine_exec)
self.form.addRow(QLabel("Environment Variables"), self.table)
self.form.addRow(QLabel("Add Variable"), self.add_button)
self.form.addRow(QLabel("Delete Variable"), self.delete_env_var)
self.form.addRow(QLabel("Locale"), self.lgd_conf_locale)
self.submit_button = QPushButton("Update")
self.submit_button.clicked.connect(self.update_legendary_settings)
self.form.addRow(self.submit_button)
self.setLayout(self.form)
def add_variable(self):
print("add row")
self.table.insertRow(self.table.rowCount())
self.table.setItem(self.table.rowCount(), 0, QTableWidgetItem(""))
self.table.setItem(self.table.rowCount(), 1, QTableWidgetItem(""))
def delete_var(self):
self.table.removeRow(self.table.currentRow())
def update_legendary_settings(self):
logger.info("Updating Legendary Settings")
# Wine exec
if self.lgd_conf_wine_exec.text() != "":
self.config[self.app_name]["wine_executable"] = self.lgd_conf_wine_exec.text()
elif "wine_executable" in self.config[self.app_name]:
self.config[self.app_name].pop("wine_executable")
# Wineprefix
if self.lgd_conf_wine_prefix.text() != '':
self.config[self.app_name]["wine_prefix"] = self.lgd_conf_wine_prefix.text()
elif "wine_prefix" in self.config[self.app_name]:
self.config[self.app_name].pop("wine_prefix")
# Locale
if self.lgd_conf_locale.text() != "":
self.config[self.app_name]["locale"] = self.lgd_conf_locale.text()
elif "locale" in self.config[self.app_name]:
self.config[self.app_name].pop("locale")
# Env vars
if self.table.rowCount() != 0:
self.config["default.env"] = {}
for row in range(self.table.rowCount()):
self.config["default.env"][self.table.item(row, 0).text()] = self.table.item(row, 1).text()
elif "default.env" in self.config[self.app_name]:
self.config.pop("default.env")
print("pop")
legendaryConfig.set_config(self.config)
print(self.config)

View file

@ -3,9 +3,9 @@ from logging import getLogger
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QVBoxLayout, QLabel, QPushButton, QScrollArea
from Rare.Tabs.Settings.Legendary import LegendarySettingsForm
from Rare.SettingsForm import SettingsForm
from Rare.Tabs.Settings.Rare import RareSettingsForm
from Rare.utils.legendaryUtils import get_name, logout
from Rare.utils.legendaryUtils import get_name
from legendary.core import LegendaryCore
logger = getLogger("Settings")
@ -21,7 +21,7 @@ class SettingsTab(QScrollArea):
self.layout = QVBoxLayout()
self.layout.addWidget(QLabel("<h1>Rare Settings</h1>"))
self.logged_in_as = QLabel(f"Logged in as {get_name()}")
self.legendary_form = LegendarySettingsForm("Legendary")
self.legendary_form = SettingsForm("Legendary")
self.rare_form = RareSettingsForm()
self.logout_button = QPushButton("Logout")