diff --git a/rare/components/tabs/settings/legendary.py b/rare/components/tabs/settings/legendary.py
index 45a457e3..5d888551 100644
--- a/rare/components/tabs/settings/legendary.py
+++ b/rare/components/tabs/settings/legendary.py
@@ -1,9 +1,12 @@
import os.path
import platform
+import re
from logging import getLogger
+from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QVBoxLayout, QDialog, QCheckBox, QLabel, \
QHBoxLayout, QPushButton, QGroupBox, QWidget
+from qtawesome import icon
from legendary.core import LegendaryCore
from rare.ui.components.tabs.settings.legendary import Ui_LegendarySettings
@@ -81,6 +84,22 @@ class LegendarySettings(QWidget, Ui_LegendarySettings):
self.enable_sync_button.clicked.connect(self.enable_sync)
self.sync_once_button.clicked.connect(self.core.egl_sync)
+ self.locale_lineedit.setText(self.core.lgd.config.get("Legendary", "locale"))
+
+ self.locale_lineedit.textChanged.connect(self.save_locale)
+
+ def save_locale(self, text):
+ if re.match("^[a-z]{2}-[A-Z]{2}$", text):
+ self.core.egs.language_code = text[:2]
+ self.core.egs.country_code = text[-2:]
+ self.core.lgd.config.set("Legendary", "locale", text)
+ self.core.lgd.save_config()
+ self.indicator_label.setPixmap(icon("ei.ok-sign", color="green").pixmap(16, 16))
+ elif re.match("^[a-zA-Z]{2}[-_][a-zA-Z]{2}$", text):
+ self.locale_lineedit.setText(text[:2].lower() + "-" + text[-2:].upper())
+ else:
+ self.indicator_label.setPixmap(icon("fa.warning", color="red").pixmap(16, 16))
+
def enable_sync(self):
if not self.core.egl.programdata_path:
if os.path.exists(path := self.manifest_path_edit.text()):
diff --git a/rare/ui/components/tabs/settings/legendary.py b/rare/ui/components/tabs/settings/legendary.py
index 9344119b..f75f5344 100644
--- a/rare/ui/components/tabs/settings/legendary.py
+++ b/rare/ui/components/tabs/settings/legendary.py
@@ -119,7 +119,7 @@ class Ui_LegendarySettings(object):
self.export_scroll.setWidgetResizable(True)
self.export_scroll.setObjectName("export_scroll")
self.export_contents = QtWidgets.QWidget()
- self.export_contents.setGeometry(QtCore.QRect(0, 0, 264, 16))
+ self.export_contents.setGeometry(QtCore.QRect(0, 0, 248, 18))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -146,7 +146,7 @@ class Ui_LegendarySettings(object):
self.import_scroll.setWidgetResizable(True)
self.import_scroll.setObjectName("import_scroll")
self.import_contents = QtWidgets.QWidget()
- self.import_contents.setGeometry(QtCore.QRect(0, 0, 264, 16))
+ self.import_contents.setGeometry(QtCore.QRect(0, 0, 247, 18))
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
@@ -198,6 +198,34 @@ class Ui_LegendarySettings(object):
self.egl_sync_button.setObjectName("egl_sync_button")
self.egl_sync_layout_3.addWidget(self.egl_sync_button)
self.right_layout.addWidget(self.egl_sync)
+ self.locale_gb = QtWidgets.QGroupBox(LegendarySettings)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.locale_gb.sizePolicy().hasHeightForWidth())
+ self.locale_gb.setSizePolicy(sizePolicy)
+ self.locale_gb.setObjectName("locale_gb")
+ self.horizontalLayout = QtWidgets.QHBoxLayout(self.locale_gb)
+ self.horizontalLayout.setObjectName("horizontalLayout")
+ self.locale_lineedit = QtWidgets.QLineEdit(self.locale_gb)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.locale_lineedit.sizePolicy().hasHeightForWidth())
+ self.locale_lineedit.setSizePolicy(sizePolicy)
+ self.locale_lineedit.setPlaceholderText("")
+ self.locale_lineedit.setObjectName("locale_lineedit")
+ self.horizontalLayout.addWidget(self.locale_lineedit)
+ self.indicator_label = QtWidgets.QLabel(self.locale_gb)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.indicator_label.sizePolicy().hasHeightForWidth())
+ self.indicator_label.setSizePolicy(sizePolicy)
+ self.indicator_label.setText("")
+ self.indicator_label.setObjectName("indicator_label")
+ self.horizontalLayout.addWidget(self.indicator_label)
+ self.right_layout.addWidget(self.locale_gb)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.right_layout.addItem(spacerItem1)
self.settings_layout.addLayout(self.right_layout)
@@ -234,6 +262,7 @@ class Ui_LegendarySettings(object):
self.clean_button.setText(_translate("LegendarySettings", "Remove everything"))
self.egl_sync.setTitle(_translate("LegendarySettings", "EGL Sync"))
self.egl_sync_button.setText(_translate("LegendarySettings", "Sync Settings"))
+ self.locale_gb.setTitle(_translate("LegendarySettings", "Locale"))
if __name__ == "__main__":
diff --git a/rare/ui/components/tabs/settings/legendary.ui b/rare/ui/components/tabs/settings/legendary.ui
index c8115dd4..bb18c87f 100644
--- a/rare/ui/components/tabs/settings/legendary.ui
+++ b/rare/ui/components/tabs/settings/legendary.ui
@@ -204,8 +204,8 @@
0
0
- 264
- 16
+ 248
+ 18
@@ -254,8 +254,8 @@
0
0
- 264
- 16
+ 247
+ 18
@@ -362,6 +362,47 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Locale
+
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
+
+
-