diff --git a/Rare/Components/Tabs/CloudSaves/CloudSaves.py b/Rare/Components/Tabs/CloudSaves/CloudSaves.py
index 72b52b6f..9dc45abb 100644
--- a/Rare/Components/Tabs/CloudSaves/CloudSaves.py
+++ b/Rare/Components/Tabs/CloudSaves/CloudSaves.py
@@ -48,12 +48,9 @@ class SyncSaves(QScrollArea):
def setup_ui(self, saves: list):
self.start_thread.disconnect()
-
-
self.main_layout = QVBoxLayout()
self.title = QLabel(
f"
" + self.tr("Cloud Saves") + "
\n" + self.tr("Found Saves for folowing Games"))
-
self.main_layout.addWidget(self.title)
saves_games = []
@@ -78,7 +75,6 @@ class SyncSaves(QScrollArea):
logger.info(f'Got {len(latest_save)} remote save game(s)')
self.widgets = []
-
for igame in self.igames:
game = self.core.get_game(igame.app_name)
if not game.supports_cloud_saves:
@@ -92,7 +88,9 @@ class SyncSaves(QScrollArea):
self.widgets.append(sync_widget)
self.widget = QWidget()
+ self.main_layout.addStretch(1)
self.widget.setLayout(self.main_layout)
+ self.setWidgetResizable(True)
self.setWidget(self.widget)
def reload(self):
diff --git a/Rare/Components/Tabs/CloudSaves/SyncWidget.py b/Rare/Components/Tabs/CloudSaves/SyncWidget.py
index 7b4f6956..1f24795c 100644
--- a/Rare/Components/Tabs/CloudSaves/SyncWidget.py
+++ b/Rare/Components/Tabs/CloudSaves/SyncWidget.py
@@ -2,7 +2,7 @@ import os
from logging import getLogger
from PyQt5.QtCore import QThread, pyqtSignal, Qt
-from PyQt5.QtWidgets import QWidget, QVBoxLayout, QPushButton, QHBoxLayout, QLabel
+from PyQt5.QtWidgets import QVBoxLayout, QPushButton, QHBoxLayout, QLabel, QGroupBox
from Rare.Components.Dialogs.PathInputDialog import PathInputDialog
from custom_legendary.core import LegendaryCore
@@ -37,12 +37,14 @@ class _DownloadThread(QThread):
self.core.download_saves(self.app_name, self.latest_save.manifest_name, self.save_path, clean_dir=True)
-class SyncWidget(QWidget):
+class SyncWidget(QGroupBox):
reload = pyqtSignal()
def __init__(self, igame: InstalledGame, save, core: LegendaryCore):
- super(SyncWidget, self).__init__()
+ super(SyncWidget, self).__init__(igame.title)
+ self.setObjectName("group")
self.layout = QVBoxLayout()
+ self.setContentsMargins(10, 20, 10, 20)
self.thr = None
self.core = core
self.save = save
@@ -70,7 +72,7 @@ class SyncWidget(QWidget):
self.logger.info('No cloud or local savegame found.')
return
- game_title = QLabel(f"{igame.title}
")
+ # game_title = QLabel(f"{igame.title}
")
if self.dt_local:
local_save_date = QLabel(
@@ -124,7 +126,7 @@ class SyncWidget(QWidget):
self.upload_button.clicked.connect(self.upload)
self.download_button.clicked.connect(self.download)
self.info_text = QLabel(status)
- self.layout.addWidget(game_title)
+ # self.layout.addWidget(game_title)
self.layout.addWidget(local_save_date)
self.layout.addWidget(cloud_save_date)
@@ -133,6 +135,7 @@ class SyncWidget(QWidget):
self.save_path_text.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.save_path_text.setWordWrap(True)
self.change_save_path = QPushButton(self.tr("Change path"))
+ self.change_save_path.setFixedWidth(100)
self.change_save_path.clicked.connect(self.change_path)
save_path_layout.addWidget(self.save_path_text)
save_path_layout.addWidget(self.change_save_path)
@@ -142,7 +145,7 @@ class SyncWidget(QWidget):
button_layout.addWidget(self.upload_button)
button_layout.addWidget(self.download_button)
self.layout.addLayout(button_layout)
-
+ self.layout.addStretch(1)
self.setLayout(self.layout)
def change_path(self):
diff --git a/Rare/Components/Tabs/Games/ImportWidget.py b/Rare/Components/Tabs/Games/ImportWidget.py
index 454ce669..a4c149a6 100644
--- a/Rare/Components/Tabs/Games/ImportWidget.py
+++ b/Rare/Components/Tabs/Games/ImportWidget.py
@@ -111,6 +111,7 @@ class ImportWidget(QWidget):
if not path:
path = self.path_edit.text()
if not app_name:
+ # try to find app name
if a_n := self.find_app_name(path):
app_name = a_n
else:
@@ -141,7 +142,7 @@ class ImportWidget(QWidget):
continue
app_name = self.find_app_name(json_path)
if not app_name:
- logger.warning("Could not find app name")
+ logger.warning("Could not find app name at " + game_path)
continue
if LegendaryApi.import_game(self.core, app_name, game_path + path):
@@ -166,4 +167,4 @@ class ImportWidget(QWidget):
QMessageBox.information(self, "Imported Games", self.tr("Successfully imported {} Games. Reloading Library").format(imported))
self.update_list.emit()
else:
- QMessageBox.information(self, "Imported Games", "No Games were found")
+ QMessageBox.information(self, "Imported Games", self.tr("No Games were found"))
diff --git a/Rare/Components/Tabs/Settings/Legendary.py b/Rare/Components/Tabs/Settings/Legendary.py
index fcc2c428..64cb402b 100644
--- a/Rare/Components/Tabs/Settings/Legendary.py
+++ b/Rare/Components/Tabs/Settings/Legendary.py
@@ -39,8 +39,7 @@ class LegendarySettings(QWidget):
#cleanup
self.clean_layout = QVBoxLayout()
- self.cleanup_widget = QGroupBox()
- self.cleanup_widget.setTitle(self.tr("Cleanup"))
+ self.cleanup_widget = QGroupBox(self.tr("Cleanup"))
self.clean_button = QPushButton(self.tr("Remove everything"))
self.clean_button.clicked.connect(lambda: self.cleanup(False))
self.clean_layout.addWidget(self.clean_button)
@@ -92,7 +91,7 @@ class LegendarySettings(QWidget):
after = self.core.lgd.get_dir_size()
logger.info(f'Cleanup complete! Removed {(before - after) / 1024 / 1024:.02f} MiB.')
- if cleaned := (before-after) != 0:
+ if cleaned := (before-after) > 0:
QMessageBox.information(self, "Cleanup", self.tr("Cleanup complete! Successfully removed {} MB").format(round(cleaned / 1024 / 1024, 3)))
else:
QMessageBox.information(self, "Cleanup", "Nothing to clean")
diff --git a/Rare/Styles/RareStyle.qss b/Rare/Styles/RareStyle.qss
index addacfa3..672096d1 100644
--- a/Rare/Styles/RareStyle.qss
+++ b/Rare/Styles/RareStyle.qss
@@ -31,14 +31,22 @@ QTabBar::tab:hover#main_tab_bar {
}
QGroupBox{
+ padding: 4px;
+ margin: 8px;
+}
+
+QGroupBox#game_widget_icon{
border: none;
+ padding: 0;
+ margin: 0;
}
QGroupBox#group{
font-size: 15px;
+ font-weight: bold;
border: 1px solid white;
- padding: 8px;
margin-top: 10px;
+ padding: 8px;
}
QTabBar::tab:disabled {
diff --git a/Rare/languages/de.qm b/Rare/languages/de.qm
index c3cc547d..e7d7940b 100644
Binary files a/Rare/languages/de.qm and b/Rare/languages/de.qm differ
diff --git a/Rare/languages/de.ts b/Rare/languages/de.ts
index 04d4deed..dc0d4079 100644
--- a/Rare/languages/de.ts
+++ b/Rare/languages/de.ts
@@ -27,7 +27,7 @@
BaseInstalledWidget
-
+
Do you want to launch {}
Möchtest du {} starten
@@ -83,40 +83,45 @@
Die Größe des Downloads ist 0. Spiel existiert bereits
-
+
Installation finished
Installation abgeschlossen
-
+
Installing Game: No active download
Installierendes Spiel: Kein aktiver Download
-
+
Download speed
Geschwindigkeit
-
+
Cache used
Benutzter Cache
-
+
Downloaded
Runtergeladen
-
+
Time left:
Zeit übrig:
-
+
Finished Download of game {}
Downlaod von {} abgeschlossen
+
+
+ Download finished. Reload library
+ Download abgeschlossen. Spiele neu laden
+
DxvkWidget
@@ -159,32 +164,32 @@
GameActions
-
+
Uninstall game
Spiel deinstallieren
-
+
Uninstall
Deinstallieren
-
+
Verify Game
Spieldateien überprüfen
-
+
Verify
Überprüfen
-
+
Repair Game
Spiel reparieren
-
+
Repair
Reparieren
@@ -192,50 +197,50 @@
GameInfo
-
+
Repair file does not exist or game does not need a repair. Please verify game first
Reparationsdatei existiert nicht oder das Spiel braucht keine Reperatur. Bitte das spiel zuerst überprüfen
-
+
Verification failed, {} file(s) corrupted, {} file(s) are missing. Do you want to repair them?
Überprüfung fehlgeschlagen, {} Datei(en) fehlerhaft, {} Datei(en) fehlen. Willst du das Spiel reparieren?
-
+
Developer:
Entwickler:
-
+
Install size:
Größe:
-
+
Install path:
Installationsordner:
Are you sure to uninstall {}
- Möchtest du {} wirklich deinstallieren
+ Möchtest du {} wirklich deinstallieren
GameList
-
+
Launch
Starten
-
+
Game running
Spiel läuft
-
+
Installed Games: {} Available Games: {}
Installierte Spiele: {} Verfügbare Spiele: {}
@@ -360,22 +365,22 @@
Keine valide Session gefunden
-
+
Back
Zurück
-
+
Select path to game
Wähle den Pfad zum Spiel
-
+
Import Game
Spiel importieren
-
+
Import all games from Epic Games Launcher
Alle Spiele aus dem Epic Games Launcher importieren
@@ -385,45 +390,55 @@
{} Spiele erfolgreich importiert
-
+
Override app name (Only if imported game from legendary or the app could not find the app name)
App Name überschreiben (Nur falls das Spiel von Legendary importiert wird oder der App Name nicht gefunden wird
-
+
Could not find app name
Konnte den Appnamen nicht finden
-
+
Successfully imported {}. Reload library
Erfolgreich {} importiert. Spiele neu laden
-
+
Failed to import {}
{} Konnte nicht importiert werden
-
+
Successfully imported {} Games. Reloading Library
Erfolgreich {} Spiele importiert. Spiele neu laden
+
+
+ Import existing game from Epic Games Launcher
+ Ein bereits existierendes Spiel aus dem Epic Games Launcher importieren
+
+
+
+ No Games were found
+ Keine Spiele wurden gefunden
+
InfoTabs
-
+
Back
Zurück
-
+
Game Info
Spielinfo
-
+
Settings
Einstellungen
@@ -431,27 +446,42 @@
InstallDialog
-
+
Max workers (0: Default)
Maximale Anzahl Downloadprozessen(Standard: 0)
+
+
+ <h3>Install {}</h3>
+ <h3>Installiere {}</h3>
+
+
+
+ Force download
+ Download erzwingen
+
+
+
+ Ignore free space (Warning!)
+ Freien Speicherplatz ignorieren (Achtung!)
+
InstallInfoDialog
-
+
Download size: {}GB
Install size: {}GB
Downloadgröße: {}GB
Installationsgröße: {} GB
-
+
Install
Installieren
-
+
Cancel
Abbruch
@@ -518,22 +548,22 @@ Installationsgröße: {} GB
Maximale Anzahl Downloadprozesse (Weniger: langsamer)(Standard: 0)
-
+
Cleanup
Aufräumen
-
+
Remove everything
Alles aufräumen
-
+
Clean, but keep manifests
Aufräumen, aber Manifests behalten
-
+
Cleanup complete! Successfully removed {} MB
Fertig! Es wurden {} MB entfernt
@@ -695,97 +725,97 @@ Installationsgröße: {} GB
SyncWidget
-
+
Path not found
Ordner nicht gefunden
-
+
Local Save date:
Lokales Speicherdatum:
-
+
No Local Save files
Keine Lokalen Dateien
-
+
Cloud save date:
Online Speicherdatum:
-
+
No Cloud saves
Keine Online Speicherstände
-
+
Game is up to date
Spiel ist aktuell
-
+
Upload anyway
Trotzdem hochladen
-
+
Download anyway
Trotzdem herunterladen
-
+
Cloud save is newer
Online Speicherstand ist aktueller
-
+
Download Cloud saves
Online Speicherstand herunterladen
-
+
Upload Saves
Spielstände hochladen
-
+
Local save is newer
Lokaler Speicher ist aktueller
-
+
Upload saves
Spielstände hochladen
-
+
Download saves
Spielstand herunterladen
-
+
Change path
Pfad ändern
-
+
Uploading...
Hochladen...
-
+
Upload finished
Hochladen abgeschlossen
-
+
Downloading...
Runterladen...
-
+
Download finished
Download abgeschlossen
@@ -798,10 +828,38 @@ Installationsgröße: {} GB
Spiele
+
+ UninstallDialog
+
+
+ Do you really want to uninstall {}
+ Möchtest du wirklich {} deinstallieren
+
+
+
+ Keep Files
+ Dateien behalten
+
+
+
+ Do you want to keep files?
+ Willst du die Dateien behalten?
+
+
+
+ Uninstall
+ Deinstallieren
+
+
+
+ Cancel
+ Abbruch
+
+
UpdateWidget
-
+
Update Game
Spiel updaten